mirror of
https://github.com/samsonjs/media.git
synced 2026-03-30 10:15:48 +00:00
Use JUnit's Assume to skip Widevine GTS tests on non-GMS devices
DashTestRunner.setWidevineInfo instantiates a Widevine MediaDrm to check for L1 support, which fails on GMS devices that don't support Widevine. The Widevine tests should be skipped on these devices, but the setWidevineInfo call happens in @Before before the skipping logic inside the test. This change moves the skipping logic to the beginning of @Before, and uses Assume to ensure the test isn't run. This will also report the test as 'skipped due to unmet assumption' which is more precise than 'passed'. PiperOrigin-RevId: 399452734
This commit is contained in:
parent
d9cfebd895
commit
b6b39cf7cf
4 changed files with 88 additions and 111 deletions
|
|
@ -16,6 +16,8 @@
|
|||
package com.google.android.exoplayer2.playbacktests.gts;
|
||||
|
||||
import static com.google.android.exoplayer2.playbacktests.gts.GtsTestUtil.shouldSkipWidevineTest;
|
||||
import static org.junit.Assume.assumeFalse;
|
||||
import static org.junit.Assume.assumeTrue;
|
||||
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
import androidx.test.rule.ActivityTestRule;
|
||||
|
|
@ -59,6 +61,8 @@ public final class CommonEncryptionDrmTest {
|
|||
|
||||
@Before
|
||||
public void setUp() {
|
||||
assumeFalse(shouldSkipWidevineTest(testRule.getActivity()));
|
||||
|
||||
testRunner =
|
||||
new DashTestRunner(TAG, testRule.getActivity())
|
||||
.setWidevineInfo(MimeTypes.VIDEO_H264, false)
|
||||
|
|
@ -74,10 +78,6 @@ public final class CommonEncryptionDrmTest {
|
|||
|
||||
@Test
|
||||
public void cencSchemeTypeV18() {
|
||||
if (Util.SDK_INT < 18 || shouldSkipWidevineTest(testRule.getActivity())) {
|
||||
// Pass.
|
||||
return;
|
||||
}
|
||||
testRunner
|
||||
.setStreamName("test_widevine_h264_scheme_cenc")
|
||||
.setManifestUrl(DashTestData.WIDEVINE_SCHEME_CENC)
|
||||
|
|
@ -86,12 +86,9 @@ public final class CommonEncryptionDrmTest {
|
|||
|
||||
@Test
|
||||
public void cbcsSchemeTypeV25() {
|
||||
if (Util.SDK_INT < 25 || shouldSkipWidevineTest(testRule.getActivity())) {
|
||||
// cbcs support was added in API 24, but it is stable from API 25 onwards.
|
||||
// See [internal: b/65634809].
|
||||
// Pass.
|
||||
return;
|
||||
}
|
||||
// cbcs support was added in API 24, but it is stable from API 25 onwards.
|
||||
// See [internal: b/65634809].
|
||||
assumeTrue(Util.SDK_INT >= 25);
|
||||
testRunner
|
||||
.setStreamName("test_widevine_h264_scheme_cbcs")
|
||||
.setManifestUrl(DashTestData.WIDEVINE_SCHEME_CBCS)
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ package com.google.android.exoplayer2.playbacktests.gts;
|
|||
|
||||
import static com.google.android.exoplayer2.playbacktests.gts.GtsTestUtil.shouldSkipWidevineTest;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.junit.Assume.assumeFalse;
|
||||
import static org.junit.Assume.assumeTrue;
|
||||
|
||||
import android.content.pm.PackageManager;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
|
@ -387,10 +389,8 @@ public final class DashStreamingTest {
|
|||
|
||||
@Test
|
||||
public void widevineH264FixedV18() throws Exception {
|
||||
if (Util.SDK_INT < 18 || shouldSkipWidevineTest(testRule.getActivity())) {
|
||||
// Pass.
|
||||
return;
|
||||
}
|
||||
assumeFalse(shouldSkipWidevineTest(testRule.getActivity()));
|
||||
|
||||
testRunner
|
||||
.setStreamName("test_widevine_h264_fixed")
|
||||
.setManifestUrl(DashTestData.WIDEVINE_H264_MANIFEST)
|
||||
|
|
@ -404,12 +404,9 @@ public final class DashStreamingTest {
|
|||
|
||||
@Test
|
||||
public void widevineH264AdaptiveV18() throws Exception {
|
||||
if (Util.SDK_INT < 18
|
||||
|| shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264)
|
||||
|| shouldSkipWidevineTest(testRule.getActivity())) {
|
||||
// Pass.
|
||||
return;
|
||||
}
|
||||
assumeFalse(shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264));
|
||||
assumeFalse(shouldSkipWidevineTest(testRule.getActivity()));
|
||||
|
||||
testRunner
|
||||
.setStreamName("test_widevine_h264_adaptive")
|
||||
.setManifestUrl(DashTestData.WIDEVINE_H264_MANIFEST)
|
||||
|
|
@ -424,12 +421,9 @@ public final class DashStreamingTest {
|
|||
|
||||
@Test
|
||||
public void widevineH264AdaptiveWithSeekingV18() throws Exception {
|
||||
if (Util.SDK_INT < 18
|
||||
|| shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264)
|
||||
|| shouldSkipWidevineTest(testRule.getActivity())) {
|
||||
// Pass.
|
||||
return;
|
||||
}
|
||||
assumeFalse(shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264));
|
||||
assumeFalse(shouldSkipWidevineTest(testRule.getActivity()));
|
||||
|
||||
testRunner
|
||||
.setStreamName("test_widevine_h264_adaptive_with_seeking")
|
||||
.setManifestUrl(DashTestData.WIDEVINE_H264_MANIFEST)
|
||||
|
|
@ -445,12 +439,9 @@ public final class DashStreamingTest {
|
|||
|
||||
@Test
|
||||
public void widevineH264AdaptiveWithRendererDisablingV18() throws Exception {
|
||||
if (Util.SDK_INT < 18
|
||||
|| shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264)
|
||||
|| GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) {
|
||||
// Pass.
|
||||
return;
|
||||
}
|
||||
assumeFalse(shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264));
|
||||
assumeFalse(shouldSkipWidevineTest(testRule.getActivity()));
|
||||
|
||||
testRunner
|
||||
.setStreamName("test_widevine_h264_adaptive_with_renderer_disabling")
|
||||
.setManifestUrl(DashTestData.WIDEVINE_H264_MANIFEST)
|
||||
|
|
@ -468,10 +459,10 @@ public final class DashStreamingTest {
|
|||
|
||||
@Test
|
||||
public void widevineH265FixedV23() throws Exception {
|
||||
if (Util.SDK_INT < 23 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity()) || isPc()) {
|
||||
// Pass.
|
||||
return;
|
||||
}
|
||||
assumeTrue(Util.SDK_INT >= 23);
|
||||
assumeFalse(shouldSkipWidevineTest(testRule.getActivity()));
|
||||
assumeFalse(isPc());
|
||||
|
||||
testRunner
|
||||
.setStreamName("test_widevine_h265_fixed")
|
||||
.setManifestUrl(DashTestData.WIDEVINE_H265_MANIFEST)
|
||||
|
|
@ -485,10 +476,10 @@ public final class DashStreamingTest {
|
|||
|
||||
@Test
|
||||
public void widevineH265AdaptiveV24() throws Exception {
|
||||
if (Util.SDK_INT < 24 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity()) || isPc()) {
|
||||
// Pass.
|
||||
return;
|
||||
}
|
||||
assumeTrue(Util.SDK_INT >= 24);
|
||||
assumeFalse(shouldSkipWidevineTest(testRule.getActivity()));
|
||||
assumeFalse(isPc());
|
||||
|
||||
testRunner
|
||||
.setStreamName("test_widevine_h265_adaptive")
|
||||
.setManifestUrl(DashTestData.WIDEVINE_H265_MANIFEST)
|
||||
|
|
@ -503,10 +494,10 @@ public final class DashStreamingTest {
|
|||
|
||||
@Test
|
||||
public void widevineH265AdaptiveWithSeekingV24() throws Exception {
|
||||
if (Util.SDK_INT < 24 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity()) || isPc()) {
|
||||
// Pass.
|
||||
return;
|
||||
}
|
||||
assumeTrue(Util.SDK_INT >= 24);
|
||||
assumeFalse(shouldSkipWidevineTest(testRule.getActivity()));
|
||||
assumeFalse(isPc());
|
||||
|
||||
testRunner
|
||||
.setStreamName("test_widevine_h265_adaptive_with_seeking")
|
||||
.setManifestUrl(DashTestData.WIDEVINE_H265_MANIFEST)
|
||||
|
|
@ -522,10 +513,10 @@ public final class DashStreamingTest {
|
|||
|
||||
@Test
|
||||
public void widevineH265AdaptiveWithRendererDisablingV24() throws Exception {
|
||||
if (Util.SDK_INT < 24 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity()) || isPc()) {
|
||||
// Pass.
|
||||
return;
|
||||
}
|
||||
assumeTrue(Util.SDK_INT >= 24);
|
||||
assumeFalse(shouldSkipWidevineTest(testRule.getActivity()));
|
||||
assumeFalse(isPc());
|
||||
|
||||
testRunner
|
||||
.setStreamName("test_widevine_h265_adaptive_with_renderer_disabling")
|
||||
.setManifestUrl(DashTestData.WIDEVINE_H265_MANIFEST)
|
||||
|
|
@ -543,10 +534,9 @@ public final class DashStreamingTest {
|
|||
|
||||
@Test
|
||||
public void widevineVp9Fixed360pV23() throws Exception {
|
||||
if (Util.SDK_INT < 23 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) {
|
||||
// Pass.
|
||||
return;
|
||||
}
|
||||
assumeTrue(Util.SDK_INT >= 23);
|
||||
assumeFalse(shouldSkipWidevineTest(testRule.getActivity()));
|
||||
|
||||
testRunner
|
||||
.setStreamName("test_widevine_vp9_fixed_360p")
|
||||
.setManifestUrl(DashTestData.WIDEVINE_VP9_MANIFEST)
|
||||
|
|
@ -561,10 +551,9 @@ public final class DashStreamingTest {
|
|||
|
||||
@Test
|
||||
public void widevineVp9AdaptiveV24() throws Exception {
|
||||
if (Util.SDK_INT < 24 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) {
|
||||
// Pass.
|
||||
return;
|
||||
}
|
||||
assumeTrue(Util.SDK_INT >= 24);
|
||||
assumeFalse(shouldSkipWidevineTest(testRule.getActivity()));
|
||||
|
||||
testRunner
|
||||
.setStreamName("test_widevine_vp9_adaptive")
|
||||
.setManifestUrl(DashTestData.WIDEVINE_VP9_MANIFEST)
|
||||
|
|
@ -579,10 +568,9 @@ public final class DashStreamingTest {
|
|||
|
||||
@Test
|
||||
public void widevineVp9AdaptiveWithSeekingV24() throws Exception {
|
||||
if (Util.SDK_INT < 24 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) {
|
||||
// Pass.
|
||||
return;
|
||||
}
|
||||
assumeTrue(Util.SDK_INT >= 24);
|
||||
assumeFalse(shouldSkipWidevineTest(testRule.getActivity()));
|
||||
|
||||
testRunner
|
||||
.setStreamName("test_widevine_vp9_adaptive_with_seeking")
|
||||
.setManifestUrl(DashTestData.WIDEVINE_VP9_MANIFEST)
|
||||
|
|
@ -598,10 +586,9 @@ public final class DashStreamingTest {
|
|||
|
||||
@Test
|
||||
public void widevineVp9AdaptiveWithRendererDisablingV24() throws Exception {
|
||||
if (Util.SDK_INT < 24 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) {
|
||||
// Pass.
|
||||
return;
|
||||
}
|
||||
assumeTrue(Util.SDK_INT >= 24);
|
||||
assumeFalse(shouldSkipWidevineTest(testRule.getActivity()));
|
||||
|
||||
testRunner
|
||||
.setStreamName("test_widevine_vp9_adaptive_with_renderer_disabling")
|
||||
.setManifestUrl(DashTestData.WIDEVINE_VP9_MANIFEST)
|
||||
|
|
@ -620,10 +607,9 @@ public final class DashStreamingTest {
|
|||
// 23.976 fps.
|
||||
@Test
|
||||
public void widevine23FpsH264FixedV23() throws Exception {
|
||||
if (Util.SDK_INT < 23 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) {
|
||||
// Pass.
|
||||
return;
|
||||
}
|
||||
assumeTrue(Util.SDK_INT >= 23);
|
||||
assumeFalse(shouldSkipWidevineTest(testRule.getActivity()));
|
||||
|
||||
testRunner
|
||||
.setStreamName("test_widevine_23fps_h264_fixed")
|
||||
.setManifestUrl(DashTestData.WIDEVINE_H264_23_MANIFEST)
|
||||
|
|
@ -639,10 +625,9 @@ public final class DashStreamingTest {
|
|||
// 24 fps.
|
||||
@Test
|
||||
public void widevine24FpsH264FixedV23() throws Exception {
|
||||
if (Util.SDK_INT < 23 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) {
|
||||
// Pass.
|
||||
return;
|
||||
}
|
||||
assumeTrue(Util.SDK_INT >= 23);
|
||||
assumeFalse(shouldSkipWidevineTest(testRule.getActivity()));
|
||||
|
||||
testRunner
|
||||
.setStreamName("test_widevine_24fps_h264_fixed")
|
||||
.setManifestUrl(DashTestData.WIDEVINE_H264_24_MANIFEST)
|
||||
|
|
@ -658,10 +643,9 @@ public final class DashStreamingTest {
|
|||
// 29.97 fps.
|
||||
@Test
|
||||
public void widevine29FpsH264FixedV23() throws Exception {
|
||||
if (Util.SDK_INT < 23 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) {
|
||||
// Pass.
|
||||
return;
|
||||
}
|
||||
assumeTrue(Util.SDK_INT >= 23);
|
||||
assumeFalse(shouldSkipWidevineTest(testRule.getActivity()));
|
||||
|
||||
testRunner
|
||||
.setStreamName("test_widevine_29fps_h264_fixed")
|
||||
.setManifestUrl(DashTestData.WIDEVINE_H264_29_MANIFEST)
|
||||
|
|
@ -687,10 +671,9 @@ public final class DashStreamingTest {
|
|||
|
||||
@Test
|
||||
public void decoderInfoH265V24() throws Exception {
|
||||
if (Util.SDK_INT < 24 || isPc()) {
|
||||
// Pass.
|
||||
return;
|
||||
}
|
||||
assumeTrue(Util.SDK_INT >= 24);
|
||||
assumeFalse(isPc());
|
||||
|
||||
assertThat(
|
||||
MediaCodecUtil.getDecoderInfo(
|
||||
MimeTypes.VIDEO_H265, /* secure= */ false, /* tunneling= */ false)
|
||||
|
|
@ -700,10 +683,8 @@ public final class DashStreamingTest {
|
|||
|
||||
@Test
|
||||
public void decoderInfoVP9V24() throws Exception {
|
||||
if (Util.SDK_INT < 24) {
|
||||
// Pass.
|
||||
return;
|
||||
}
|
||||
assumeTrue(Util.SDK_INT >= 24);
|
||||
|
||||
assertThat(
|
||||
MediaCodecUtil.getDecoderInfo(
|
||||
MimeTypes.VIDEO_VP9, /* secure= */ false, /* tunneling= */ false)
|
||||
|
|
|
|||
|
|
@ -15,9 +15,12 @@
|
|||
*/
|
||||
package com.google.android.exoplayer2.playbacktests.gts;
|
||||
|
||||
import static com.google.android.exoplayer2.playbacktests.gts.GtsTestUtil.shouldSkipWidevineTest;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static com.google.common.truth.Truth.assertWithMessage;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.junit.Assume.assumeFalse;
|
||||
import static org.junit.Assume.assumeTrue;
|
||||
|
||||
import android.media.MediaDrm.MediaDrmStateException;
|
||||
import android.net.Uri;
|
||||
|
|
@ -61,6 +64,8 @@ public final class DashWidevineOfflineTest {
|
|||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
assumeFalse(shouldSkipWidevineTest(testRule.getActivity()));
|
||||
|
||||
testRunner =
|
||||
new DashTestRunner(TAG, testRule.getActivity())
|
||||
.setStreamName("test_widevine_h264_fixed_offline")
|
||||
|
|
@ -75,13 +80,11 @@ public final class DashWidevineOfflineTest {
|
|||
boolean useL1Widevine = DashTestRunner.isL1WidevineAvailable(MimeTypes.VIDEO_H264);
|
||||
String widevineLicenseUrl = DashTestData.getWidevineLicenseUrl(true, useL1Widevine);
|
||||
httpDataSourceFactory = new DefaultHttpDataSource.Factory();
|
||||
if (Util.SDK_INT >= 18) {
|
||||
offlineLicenseHelper =
|
||||
OfflineLicenseHelper.newWidevineInstance(
|
||||
widevineLicenseUrl,
|
||||
httpDataSourceFactory,
|
||||
new DrmSessionEventListener.EventDispatcher());
|
||||
}
|
||||
offlineLicenseHelper =
|
||||
OfflineLicenseHelper.newWidevineInstance(
|
||||
widevineLicenseUrl,
|
||||
httpDataSourceFactory,
|
||||
new DrmSessionEventListener.EventDispatcher());
|
||||
}
|
||||
|
||||
@After
|
||||
|
|
@ -90,9 +93,7 @@ public final class DashWidevineOfflineTest {
|
|||
if (offlineLicenseKeySetId != null) {
|
||||
releaseLicense();
|
||||
}
|
||||
if (offlineLicenseHelper != null) {
|
||||
offlineLicenseHelper.release();
|
||||
}
|
||||
offlineLicenseHelper.release();
|
||||
offlineLicenseHelper = null;
|
||||
httpDataSourceFactory = null;
|
||||
}
|
||||
|
|
@ -104,9 +105,8 @@ public final class DashWidevineOfflineTest {
|
|||
"Needs to be reconfigured/rewritten with an offline-compatible licence [internal"
|
||||
+ " b/176960595].")
|
||||
public void widevineOfflineLicenseV22() throws Exception {
|
||||
if (Util.SDK_INT < 22 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) {
|
||||
return; // Pass.
|
||||
}
|
||||
assumeTrue(Util.SDK_INT >= 22);
|
||||
|
||||
downloadLicense();
|
||||
testRunner.run();
|
||||
|
||||
|
|
@ -120,11 +120,8 @@ public final class DashWidevineOfflineTest {
|
|||
"Needs to be reconfigured/rewritten with an offline-compatible licence [internal"
|
||||
+ " b/176960595].")
|
||||
public void widevineOfflineReleasedLicenseV22() throws Throwable {
|
||||
if (Util.SDK_INT < 22
|
||||
|| Util.SDK_INT > 28
|
||||
|| GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) {
|
||||
return; // Pass.
|
||||
}
|
||||
assumeTrue(Util.SDK_INT >= 22 && Util.SDK_INT <= 28);
|
||||
|
||||
downloadLicense();
|
||||
releaseLicense(); // keySetId no longer valid.
|
||||
|
||||
|
|
@ -148,9 +145,8 @@ public final class DashWidevineOfflineTest {
|
|||
"Needs to be reconfigured/rewritten with an offline-compatible licence [internal"
|
||||
+ " b/176960595].")
|
||||
public void widevineOfflineReleasedLicenseV29() throws Throwable {
|
||||
if (Util.SDK_INT < 29 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) {
|
||||
return; // Pass.
|
||||
}
|
||||
assumeTrue(Util.SDK_INT >= 29);
|
||||
|
||||
downloadLicense();
|
||||
releaseLicense(); // keySetId no longer valid.
|
||||
|
||||
|
|
@ -174,9 +170,8 @@ public final class DashWidevineOfflineTest {
|
|||
"Needs to be reconfigured/rewritten with an offline-compatible licence [internal"
|
||||
+ " b/176960595].")
|
||||
public void widevineOfflineExpiredLicenseV22() throws Exception {
|
||||
if (Util.SDK_INT < 22 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) {
|
||||
return; // Pass.
|
||||
}
|
||||
assumeTrue(Util.SDK_INT >= 22);
|
||||
|
||||
downloadLicense();
|
||||
|
||||
// Wait until the license expires
|
||||
|
|
@ -207,9 +202,8 @@ public final class DashWidevineOfflineTest {
|
|||
"Needs to be reconfigured/rewritten with an offline-compatible licence [internal"
|
||||
+ " b/176960595].")
|
||||
public void widevineOfflineLicenseExpiresOnPauseV22() throws Exception {
|
||||
if (Util.SDK_INT < 22 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) {
|
||||
return; // Pass.
|
||||
}
|
||||
assumeTrue(Util.SDK_INT >= 22);
|
||||
|
||||
downloadLicense();
|
||||
|
||||
// During playback pause until the license expires then continue playback
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import static com.google.android.exoplayer2.C.WIDEVINE_UUID;
|
|||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.media.MediaDrm;
|
||||
import com.google.android.exoplayer2.util.Util;
|
||||
|
||||
/** Utility methods for GTS tests. */
|
||||
public final class GtsTestUtil {
|
||||
|
|
@ -29,6 +30,10 @@ public final class GtsTestUtil {
|
|||
|
||||
/** Returns true if the device doesn't support Widevine and this is permitted. */
|
||||
public static boolean shouldSkipWidevineTest(Context context) {
|
||||
if (Util.SDK_INT < 18) {
|
||||
// MediaDrm isn't present until API 18
|
||||
return true;
|
||||
}
|
||||
if (isGmsInstalled(context)) {
|
||||
// GMS devices are required to support Widevine.
|
||||
return false;
|
||||
|
|
|
|||
Loading…
Reference in a new issue