From 53e06e636df1c63ae8de35a3470861b019b9753e Mon Sep 17 00:00:00 2001 From: tonihei Date: Wed, 31 Oct 2018 03:06:40 -0700 Subject: [PATCH] Clean up ExoHostedTest. Some test specific things, like adding an extra listener or adding decoder counters are currently handled by ExoHostedTest. They can be moved to the classes actually using them to clean up ExoHostedTest. This also adds more flexibility to further generic clean-up in onTestFinished. Also, reorder player setup to what ExoPlayerTestRunner is doing. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=219446276 --- .../playbacktests/gts/DashTestRunner.java | 6 +--- .../exoplayer2/testutil/ExoHostedTest.java | 35 ++++--------------- 2 files changed, 7 insertions(+), 34 deletions(-) diff --git a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestRunner.java b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestRunner.java index 1a43a70f25..6ec2a825c3 100644 --- a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestRunner.java +++ b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestRunner.java @@ -323,7 +323,7 @@ public final class DashTestRunner { } @Override - protected void logMetrics(DecoderCounters audioCounters, DecoderCounters videoCounters) { + protected void onTestFinished(DecoderCounters audioCounters, DecoderCounters videoCounters) { metricsLogger.logMetric(MetricsLogger.KEY_TEST_NAME, streamName); metricsLogger.logMetric(MetricsLogger.KEY_IS_CDD_LIMITED_RETRY, isCddLimitedRetry); metricsLogger.logMetric(MetricsLogger.KEY_FRAMES_DROPPED_COUNT, @@ -335,10 +335,7 @@ public final class DashTestRunner { metricsLogger.logMetric(MetricsLogger.KEY_FRAMES_RENDERED_COUNT, videoCounters.renderedOutputBufferCount); metricsLogger.close(); - } - @Override - protected void assertPassed(DecoderCounters audioCounters, DecoderCounters videoCounters) { if (fullPlaybackNoSeeking) { // We shouldn't have skipped any output buffers. DecoderCountersUtil @@ -372,7 +369,6 @@ public final class DashTestRunner { } } } - } private static final class DashTestTrackSelector extends DefaultTrackSelector { diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java index ad59ca7152..74c0d4bb43 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java @@ -74,7 +74,6 @@ public abstract class ExoHostedTest implements AnalyticsListener, HostedTest { private SimpleExoPlayer player; private Surface surface; private ExoPlaybackException playerError; - private AnalyticsListener analyticsListener; private boolean playerWasPrepared; private boolean playing; @@ -127,14 +126,6 @@ public abstract class ExoHostedTest implements AnalyticsListener, HostedTest { } } - /** Sets an {@link AnalyticsListener} to listen for events during the test. */ - public final void setAnalyticsListener(AnalyticsListener analyticsListener) { - this.analyticsListener = analyticsListener; - if (player != null) { - player.addAnalyticsListener(analyticsListener); - } - } - // HostedTest implementation @Override @@ -145,19 +136,16 @@ public abstract class ExoHostedTest implements AnalyticsListener, HostedTest { String userAgent = "ExoPlayerPlaybackTests"; DrmSessionManager drmSessionManager = buildDrmSessionManager(userAgent); player = buildExoPlayer(host, surface, trackSelector, drmSessionManager); - player.prepare(buildSource(host, Util.getUserAgent(host, userAgent))); + player.setPlayWhenReady(true); player.addAnalyticsListener(this); player.addAnalyticsListener(new EventLogger(trackSelector, tag)); - if (analyticsListener != null) { - player.addAnalyticsListener(analyticsListener); - } - player.setPlayWhenReady(true); - actionHandler = Clock.DEFAULT.createHandler(Looper.myLooper(), /* callback= */ null); // Schedule any pending actions. + actionHandler = Clock.DEFAULT.createHandler(Looper.myLooper(), /* callback= */ null); if (pendingSchedule != null) { pendingSchedule.start(player, trackSelector, surface, actionHandler, /* callback= */ null); pendingSchedule = null; } + player.prepare(buildSource(host, Util.getUserAgent(host, userAgent))); } @Override @@ -172,10 +160,10 @@ public abstract class ExoHostedTest implements AnalyticsListener, HostedTest { @Override public final void onFinished() { + onTestFinished(audioDecoderCounters, videoDecoderCounters); if (failOnPlayerError && playerError != null) { throw new Error(playerError); } - logMetrics(audioDecoderCounters, videoDecoderCounters); if (expectedPlayingTimeMs != EXPECTED_PLAYING_TIME_UNSET) { long playingTimeToAssertMs = expectedPlayingTimeMs == EXPECTED_PLAYING_TIME_MEDIA_DURATION_MS ? sourceDurationMs : expectedPlayingTimeMs; @@ -189,8 +177,6 @@ public abstract class ExoHostedTest implements AnalyticsListener, HostedTest { && totalPlayingTimeMs <= maxAllowedActualPlayingTimeMs) .isTrue(); } - // Make any additional assertions. - assertPassed(audioDecoderCounters, videoDecoderCounters); } // AnalyticsListener @@ -251,12 +237,10 @@ public abstract class ExoHostedTest implements AnalyticsListener, HostedTest { return null; } - @SuppressWarnings("unused") protected DefaultTrackSelector buildTrackSelector(HostActivity host) { return new DefaultTrackSelector(new AdaptiveTrackSelection.Factory()); } - @SuppressWarnings("unused") protected SimpleExoPlayer buildExoPlayer( HostActivity host, Surface surface, @@ -274,20 +258,13 @@ public abstract class ExoHostedTest implements AnalyticsListener, HostedTest { return player; } - @SuppressWarnings("unused") protected abstract MediaSource buildSource(HostActivity host, String userAgent); - @SuppressWarnings("unused") protected void onPlayerErrorInternal(ExoPlaybackException error) { // Do nothing. Interested subclasses may override. } - protected void logMetrics(DecoderCounters audioCounters, DecoderCounters videoCounters) { - // Do nothing. Subclasses may override to log metrics. + protected void onTestFinished(DecoderCounters audioCounters, DecoderCounters videoCounters) { + // Do nothing. Subclasses may override to add clean-up and assertions. } - - protected void assertPassed(DecoderCounters audioCounters, DecoderCounters videoCounters) { - // Do nothing. Subclasses may override to add additional assertions. - } - }