diff --git a/core/src/androidTest/java/io/github/thibaultbee/streampack/core/streamer/file/CameraStreamerFileTest.kt b/core/src/androidTest/java/io/github/thibaultbee/streampack/core/streamer/file/CameraStreamerFileTest.kt index 9e7b0d18..74cc47fe 100644 --- a/core/src/androidTest/java/io/github/thibaultbee/streampack/core/streamer/file/CameraStreamerFileTest.kt +++ b/core/src/androidTest/java/io/github/thibaultbee/streampack/core/streamer/file/CameraStreamerFileTest.kt @@ -15,8 +15,6 @@ */ package io.github.thibaultbee.streampack.core.streamer.file -import android.Manifest -import android.content.Context import android.media.MediaFormat.MIMETYPE_AUDIO_AAC import android.media.MediaFormat.MIMETYPE_AUDIO_OPUS import android.media.MediaFormat.MIMETYPE_VIDEO_AVC @@ -25,8 +23,6 @@ import android.util.Size import androidx.core.net.toFile import androidx.core.net.toUri import androidx.test.filters.LargeTest -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.rule.GrantPermissionRule import io.github.thibaultbee.streampack.core.configuration.mediadescriptor.MediaDescriptor import io.github.thibaultbee.streampack.core.configuration.mediadescriptor.UriMediaDescriptor import io.github.thibaultbee.streampack.core.elements.endpoints.IEndpointInternal @@ -36,9 +32,9 @@ import io.github.thibaultbee.streampack.core.elements.endpoints.composites.sinks import io.github.thibaultbee.streampack.core.streamers.single.AudioConfig import io.github.thibaultbee.streampack.core.streamers.single.CameraSingleStreamer import io.github.thibaultbee.streampack.core.streamers.single.VideoConfig +import io.github.thibaultbee.streampack.core.utils.DeviceTest import io.github.thibaultbee.streampack.core.utils.FileUtils import kotlinx.coroutines.test.runTest -import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.Parameterized @@ -51,16 +47,17 @@ class CameraStreamerFileTest( private val descriptor: MediaDescriptor, private val verify: Boolean, endpoint: IEndpointInternal? -) { - private val context: Context = InstrumentationRegistry.getInstrumentation().context - private val streamer = if (endpoint != null) { - CameraSingleStreamer(context, internalEndpoint = endpoint) - } else { - CameraSingleStreamer(context) +) : DeviceTest() { + private val streamer by lazy { + if (endpoint != null) { + CameraSingleStreamer(context, internalEndpoint = endpoint) + } else { + CameraSingleStreamer(context) + } } - private val info = streamer.getInfo(descriptor) + private val info by lazy { streamer.getInfo(descriptor) } - private val videoCodec = + private val videoCodec by lazy { if (info.video.supportedEncoders.contains(MIMETYPE_VIDEO_AVC)) { MIMETYPE_VIDEO_AVC } else if (info.video.supportedEncoders.contains(MIMETYPE_VIDEO_VP9)) { @@ -68,8 +65,9 @@ class CameraStreamerFileTest( } else { throw IllegalArgumentException("No supported video codec") } + } - private val audioCodec = + private val audioCodec by lazy { if (info.audio.supportedEncoders.contains(MIMETYPE_AUDIO_AAC)) { MIMETYPE_AUDIO_AAC } else if (info.audio.supportedEncoders.contains(MIMETYPE_AUDIO_OPUS)) { @@ -77,8 +75,9 @@ class CameraStreamerFileTest( } else { throw IllegalArgumentException("No supported audio codec") } + } - private val audioSampleRate = + private val audioSampleRate by lazy { if (info.audio.getSupportedSampleRates(audioCodec).contains(44_100)) { 44100 } else if (info.audio.getSupportedSampleRates(audioCodec).contains(48_000)) { @@ -86,10 +85,7 @@ class CameraStreamerFileTest( } else { throw IllegalArgumentException("No supported audio sample rate for $audioCodec") } - - @get:Rule - val runtimePermissionRule: GrantPermissionRule = - GrantPermissionRule.grant(Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO) + } @Test fun writeToFile() = runTest(timeout = 200.seconds) { diff --git a/core/src/androidTest/java/io/github/thibaultbee/streampack/core/streamer/file/CameraStreamerMultiEndpointTest.kt b/core/src/androidTest/java/io/github/thibaultbee/streampack/core/streamer/file/CameraStreamerMultiEndpointTest.kt index e4b5be8e..ed7937b9 100644 --- a/core/src/androidTest/java/io/github/thibaultbee/streampack/core/streamer/file/CameraStreamerMultiEndpointTest.kt +++ b/core/src/androidTest/java/io/github/thibaultbee/streampack/core/streamer/file/CameraStreamerMultiEndpointTest.kt @@ -15,22 +15,18 @@ */ package io.github.thibaultbee.streampack.core.streamer.file -import android.Manifest -import android.content.Context import android.util.Log import android.util.Size import androidx.core.net.toFile import androidx.core.net.toUri import androidx.test.filters.LargeTest -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.rule.GrantPermissionRule import io.github.thibaultbee.streampack.core.configuration.mediadescriptor.UriMediaDescriptor import io.github.thibaultbee.streampack.core.streamers.single.AudioConfig import io.github.thibaultbee.streampack.core.streamers.single.CameraSingleStreamer import io.github.thibaultbee.streampack.core.streamers.single.VideoConfig +import io.github.thibaultbee.streampack.core.utils.DeviceTest import io.github.thibaultbee.streampack.core.utils.FileUtils import kotlinx.coroutines.test.runTest -import org.junit.Rule import org.junit.Test import kotlin.time.Duration.Companion.milliseconds import kotlin.time.Duration.Companion.seconds @@ -39,9 +35,8 @@ import kotlin.time.Duration.Companion.seconds * Test [CameraSingleStreamer] with multiple streams. */ @LargeTest -class CameraStreamerMultiEndpointTest { - private val context: Context = InstrumentationRegistry.getInstrumentation().context - private val streamer = CameraSingleStreamer(context) +class CameraStreamerMultiEndpointTest : DeviceTest() { + private val streamer by lazy { CameraSingleStreamer(context) } private val descriptors = listOf( UriMediaDescriptor(FileUtils.createCacheFile("video.ts").toUri()), @@ -50,10 +45,6 @@ class CameraStreamerMultiEndpointTest { UriMediaDescriptor(FileUtils.createCacheFile("video2.mp4").toUri()), ) - @get:Rule - val runtimePermissionRule: GrantPermissionRule = - GrantPermissionRule.grant(Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO) - @Test fun writeToEndpoints() = runTest(timeout = 200.seconds) { val audioConfig = AudioConfig() diff --git a/core/src/androidTest/java/io/github/thibaultbee/streampack/core/streamer/state/AudioOnlyStreamerStateTest.kt b/core/src/androidTest/java/io/github/thibaultbee/streampack/core/streamer/state/AudioOnlyStreamerStateTest.kt index 0ec32c98..395713bd 100644 --- a/core/src/androidTest/java/io/github/thibaultbee/streampack/core/streamer/state/AudioOnlyStreamerStateTest.kt +++ b/core/src/androidTest/java/io/github/thibaultbee/streampack/core/streamer/state/AudioOnlyStreamerStateTest.kt @@ -15,32 +15,24 @@ */ package io.github.thibaultbee.streampack.core.streamer.state -import android.Manifest -import android.content.Context import androidx.core.net.toUri -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.rule.GrantPermissionRule import io.github.thibaultbee.streampack.core.configuration.mediadescriptor.MediaDescriptor import io.github.thibaultbee.streampack.core.configuration.mediadescriptor.UriMediaDescriptor import io.github.thibaultbee.streampack.core.streamers.single.AudioOnlySingleStreamer import io.github.thibaultbee.streampack.core.streamers.single.startStream +import io.github.thibaultbee.streampack.core.utils.DeviceTest import io.github.thibaultbee.streampack.core.utils.ConfigurationUtils import io.github.thibaultbee.streampack.core.utils.FileUtils import kotlinx.coroutines.test.runTest import org.junit.Assert.fail -import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.Parameterized @RunWith(Parameterized::class) -class AudioOnlyStreamerStateTest(private val descriptor: MediaDescriptor) { - private val context: Context = InstrumentationRegistry.getInstrumentation().context - private val streamer = AudioOnlySingleStreamer(context) - - @get:Rule - val runtimePermissionRule: GrantPermissionRule = - GrantPermissionRule.grant(Manifest.permission.RECORD_AUDIO) +class AudioOnlyStreamerStateTest(private val descriptor: MediaDescriptor) : + DeviceTest(withCamera = false) { + private val streamer by lazy { AudioOnlySingleStreamer(context) } @Test fun defaultUsageTest() = runTest { diff --git a/core/src/androidTest/java/io/github/thibaultbee/streampack/core/streamer/state/CameraStreamerStateTest.kt b/core/src/androidTest/java/io/github/thibaultbee/streampack/core/streamer/state/CameraStreamerStateTest.kt index 71812203..765c30c4 100644 --- a/core/src/androidTest/java/io/github/thibaultbee/streampack/core/streamer/state/CameraStreamerStateTest.kt +++ b/core/src/androidTest/java/io/github/thibaultbee/streampack/core/streamer/state/CameraStreamerStateTest.kt @@ -15,12 +15,8 @@ */ package io.github.thibaultbee.streampack.core.streamer.state -import android.Manifest -import android.content.Context import androidx.core.net.toUri import androidx.test.ext.junit.rules.ActivityScenarioRule -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.rule.GrantPermissionRule import io.github.thibaultbee.streampack.core.configuration.mediadescriptor.MediaDescriptor import io.github.thibaultbee.streampack.core.configuration.mediadescriptor.UriMediaDescriptor import io.github.thibaultbee.streampack.core.streamer.surface.SurfaceUtils @@ -41,12 +37,7 @@ class CameraStreamerStateTest(descriptor: MediaDescriptor) : StreamerStateTest( descriptor ) { - private val context: Context = InstrumentationRegistry.getInstrumentation().context - override val streamer = CameraSingleStreamer(context) - - @get:Rule - val runtimePermissionRule: GrantPermissionRule = - GrantPermissionRule.grant(Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO) + override val streamer by lazy { CameraSingleStreamer(context) } @get:Rule val activityScenarioRule = ActivityScenarioRule(SurfaceViewTestActivity::class.java) diff --git a/core/src/androidTest/java/io/github/thibaultbee/streampack/core/streamer/state/StreamerStateTest.kt b/core/src/androidTest/java/io/github/thibaultbee/streampack/core/streamer/state/StreamerStateTest.kt index 390e7766..a234e2ee 100644 --- a/core/src/androidTest/java/io/github/thibaultbee/streampack/core/streamer/state/StreamerStateTest.kt +++ b/core/src/androidTest/java/io/github/thibaultbee/streampack/core/streamer/state/StreamerStateTest.kt @@ -20,6 +20,7 @@ import io.github.thibaultbee.streampack.core.streamers.interfaces.releaseBlockin import io.github.thibaultbee.streampack.core.streamers.single.SingleStreamer import io.github.thibaultbee.streampack.core.streamers.single.startStream import io.github.thibaultbee.streampack.core.utils.ConfigurationUtils +import io.github.thibaultbee.streampack.core.utils.DeviceTest import kotlinx.coroutines.test.runTest import org.junit.After import org.junit.Assert.fail @@ -27,7 +28,7 @@ import org.junit.Test abstract class StreamerStateTest( protected val descriptor: MediaDescriptor -) { +) : DeviceTest() { protected abstract val streamer: SingleStreamer @After