From 306ce6e3a1a1cb5df377cf42ac69d8921ea890db Mon Sep 17 00:00:00 2001 From: samrobinson Date: Thu, 19 Jan 2023 17:33:46 +0000 Subject: [PATCH] Don't use transformationResult with timeout/unexpected exceptions. PiperOrigin-RevId: 503187291 --- .../TransformerAndroidTestRunner.java | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerAndroidTestRunner.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerAndroidTestRunner.java index 1a7a2fda34..5731a116fb 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerAndroidTestRunner.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerAndroidTestRunner.java @@ -211,7 +211,10 @@ public class TransformerAndroidTestRunner { throw transformationTestResult.analysisException; } return transformationTestResult; - } catch (UnsupportedOperationException | InterruptedException | IOException e) { + } catch (InterruptedException + | IOException + | TimeoutException + | UnsupportedOperationException e) { resultJson.put( "transformationResult", new JSONObject().put("testException", AndroidTestUtil.exceptionAsJsonObject(e))); @@ -227,12 +230,16 @@ public class TransformerAndroidTestRunner { * @param testId An identifier for the test. * @param editedMediaItem The {@link EditedMediaItem} to transform. * @return The {@link TransformationTestResult}. + * @throws IllegalStateException See {@link Transformer#startTransformation(EditedMediaItem, + * String)}. * @throws InterruptedException If the thread is interrupted whilst waiting for transformer to * complete. * @throws IOException If an error occurs opening the output file for writing. + * @throws TimeoutException If the transformation has not completed after {@linkplain + * Builder#setTimeoutSeconds(int) the given timeout}. */ private TransformationTestResult runInternal(String testId, EditedMediaItem editedMediaItem) - throws InterruptedException, IOException { + throws InterruptedException, IOException, TimeoutException { MediaItem mediaItem = editedMediaItem.mediaItem; if (!mediaItem.clippingConfiguration.equals(MediaItem.ClippingConfiguration.UNSET) && requestCalculateSsim) { @@ -319,31 +326,25 @@ public class TransformerAndroidTestRunner { }); // Block here until timeout reached or latch is counted down. - boolean timeoutReached = !countDownLatch.await(timeoutSeconds, SECONDS); - long elapsedTimeMs = SystemClock.DEFAULT.elapsedRealtime() - startTimeMs; - - @Nullable FallbackDetails fallbackDetails = fallbackDetailsReference.get(); + if (!countDownLatch.await(timeoutSeconds, SECONDS)) { + throw new TimeoutException("Transformer timed out after " + timeoutSeconds + " seconds."); + } @Nullable Exception unexpectedException = unexpectedExceptionReference.get(); + if (unexpectedException != null) { + throw new IllegalStateException( + "Unexpected exception starting the transformer.", unexpectedException); + } + + long elapsedTimeMs = SystemClock.DEFAULT.elapsedRealtime() - startTimeMs; + @Nullable FallbackDetails fallbackDetails = fallbackDetailsReference.get(); @Nullable TransformationException transformationException = transformationExceptionReference.get(); - @Nullable Exception testException = null; - if (timeoutReached) { - testException = - new TimeoutException("Transformer timed out after " + timeoutSeconds + " seconds."); - } else if (unexpectedException != null) { - testException = - new IllegalStateException( - "Unexpected exception starting the transformer.", unexpectedException); - } else if (transformationException != null) { - testException = transformationException; - } - - if (testException != null) { + if (transformationException != null) { return new TransformationTestResult.Builder(checkNotNull(transformationResultReference.get())) .setElapsedTimeMs(elapsedTimeMs) .setFallbackDetails(fallbackDetails) - .setTestException(testException) + .setTestException(transformationException) .build(); }