From d6cddf9ac132ca089dbf5ae0b047b917c8d4b162 Mon Sep 17 00:00:00 2001 From: samrobinson Date: Mon, 22 Nov 2021 12:43:54 +0000 Subject: [PATCH] Add a 120s timeout to transformer running within instrumentation tests. PiperOrigin-RevId: 411526089 --- .../media3/transformer/AndroidTestUtil.java | 26 +++++++++++++++---- .../RemoveAudioTransformationTest.java | 4 +-- .../RemoveVideoTransformationTest.java | 4 +-- .../RepeatedTranscodeTransformationTest.java | 6 ++++- .../transformer/SefTransformationTest.java | 4 +-- .../transformer/TransformationTest.java | 4 +-- 6 files changed, 34 insertions(+), 14 deletions(-) diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java index 70b3275695..5497e878d0 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java @@ -15,6 +15,9 @@ */ package androidx.media3.transformer; +import static com.google.common.truth.Truth.assertWithMessage; +import static java.util.concurrent.TimeUnit.SECONDS; + import android.content.Context; import android.net.Uri; import androidx.annotation.Nullable; @@ -29,8 +32,8 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; /** Utilities for instrumentation tests. */ /* package */ final class AndroidTestUtil { - public static final String MP4_ASSET_URI = "asset:///media/mp4/sample.mp4"; - public static final String SEF_ASSET_URI = "asset:///media/mp4/sample_sef_slow_motion.mp4"; + public static final String MP4_ASSET_URI_STRING = "asset:///media/mp4/sample.mp4"; + public static final String SEF_ASSET_URI_STRING = "asset:///media/mp4/sample_sef_slow_motion.mp4"; public static final String REMOTE_MP4_10_SECONDS_URI_STRING = "https://storage.googleapis.com/exoplayer-test-media-1/mp4/android-screens-10s.mp4"; @@ -43,9 +46,19 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; } } - /** Transforms the {@code uriString} with the {@link Transformer}. */ + /** + * Transforms the {@code uriString} with the {@link Transformer}. + * + * @param context The {@link Context}. + * @param transformer The {@link Transformer} that performs the transformation. + * @param uriString The uri (as a {@link String}) that will be transformed. + * @param timeoutSeconds The transformer timeout. An assertion confirms this is not exceeded. + * @return The {@link TransformationResult}. + * @throws Exception The cause of the transformation not completing. + */ public static TransformationResult runTransformer( - Context context, Transformer transformer, String uriString) throws Exception { + Context context, Transformer transformer, String uriString, int timeoutSeconds) + throws Exception { AtomicReference<@NullableType Exception> exceptionReference = new AtomicReference<>(); CountDownLatch countDownLatch = new CountDownLatch(1); @@ -80,7 +93,10 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; exceptionReference.set(e); } }); - countDownLatch.await(); + + assertWithMessage("Transformer timed out after " + timeoutSeconds + " seconds.") + .that(countDownLatch.await(timeoutSeconds, SECONDS)) + .isTrue(); @Nullable Exception exception = exceptionReference.get(); if (exception != null) { throw exception; diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/RemoveAudioTransformationTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/RemoveAudioTransformationTest.java index fc8565d4a3..10939898ea 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/RemoveAudioTransformationTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/RemoveAudioTransformationTest.java @@ -15,7 +15,7 @@ */ package androidx.media3.transformer; -import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_URI; +import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_URI_STRING; import static androidx.media3.transformer.AndroidTestUtil.runTransformer; import android.content.Context; @@ -32,6 +32,6 @@ public class RemoveAudioTransformationTest { Context context = ApplicationProvider.getApplicationContext(); Transformer transformer = new Transformer.Builder().setContext(context).setRemoveAudio(true).build(); - runTransformer(context, transformer, MP4_ASSET_URI); + runTransformer(context, transformer, MP4_ASSET_URI_STRING, /* timeoutSeconds= */ 120); } } diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/RemoveVideoTransformationTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/RemoveVideoTransformationTest.java index c3ad13a7ae..819ad30762 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/RemoveVideoTransformationTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/RemoveVideoTransformationTest.java @@ -15,7 +15,7 @@ */ package androidx.media3.transformer; -import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_URI; +import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_URI_STRING; import static androidx.media3.transformer.AndroidTestUtil.runTransformer; import android.content.Context; @@ -32,6 +32,6 @@ public class RemoveVideoTransformationTest { Context context = ApplicationProvider.getApplicationContext(); Transformer transformer = new Transformer.Builder().setContext(context).setRemoveVideo(true).build(); - runTransformer(context, transformer, MP4_ASSET_URI); + runTransformer(context, transformer, MP4_ASSET_URI_STRING, /* timeoutSeconds= */ 120); } } diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/RepeatedTranscodeTransformationTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/RepeatedTranscodeTransformationTest.java index d6c57b6fc3..cb0f81b9a0 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/RepeatedTranscodeTransformationTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/RepeatedTranscodeTransformationTest.java @@ -47,7 +47,11 @@ public final class RepeatedTranscodeTransformationTest { for (int i = 0; i < TRANSCODE_COUNT; i++) { // Use a long video in case an error occurs a while after the start of the video. long outputSizeBytes = - runTransformer(context, transformer, AndroidTestUtil.REMOTE_MP4_10_SECONDS_URI_STRING) + runTransformer( + context, + transformer, + AndroidTestUtil.REMOTE_MP4_10_SECONDS_URI_STRING, + /* timeoutSeconds= */ 120) .outputSizeBytes; if (previousOutputSizeBytes != C.LENGTH_UNSET) { assertWithMessage("Unexpected output size on transcode " + i + " out of " + TRANSCODE_COUNT) diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/SefTransformationTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/SefTransformationTest.java index 1172aab34b..8efe0b96db 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/SefTransformationTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/SefTransformationTest.java @@ -15,7 +15,7 @@ */ package androidx.media3.transformer; -import static androidx.media3.transformer.AndroidTestUtil.SEF_ASSET_URI; +import static androidx.media3.transformer.AndroidTestUtil.SEF_ASSET_URI_STRING; import static androidx.media3.transformer.AndroidTestUtil.runTransformer; import android.content.Context; @@ -32,6 +32,6 @@ public class SefTransformationTest { Context context = ApplicationProvider.getApplicationContext(); Transformer transformer = new Transformer.Builder().setContext(context).setFlattenForSlowMotion(true).build(); - runTransformer(context, transformer, SEF_ASSET_URI); + runTransformer(context, transformer, SEF_ASSET_URI_STRING, /* timeoutSeconds= */ 120); } } diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformationTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformationTest.java index 19a1882814..1dc9218ce3 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformationTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformationTest.java @@ -15,7 +15,7 @@ */ package androidx.media3.transformer; -import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_URI; +import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_URI_STRING; import static androidx.media3.transformer.AndroidTestUtil.runTransformer; import android.content.Context; @@ -31,6 +31,6 @@ public class TransformationTest { public void transform() throws Exception { Context context = ApplicationProvider.getApplicationContext(); Transformer transformer = new Transformer.Builder().setContext(context).build(); - runTransformer(context, transformer, MP4_ASSET_URI); + runTransformer(context, transformer, MP4_ASSET_URI_STRING, /* timeoutSeconds= */ 120); } }