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
This commit is contained in:
tonihei 2018-10-31 03:06:40 -07:00 committed by Oliver Woodman
parent 1094da2b61
commit 53e06e636d
2 changed files with 7 additions and 34 deletions

View file

@ -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 {

View file

@ -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<FrameworkMediaCrypto> 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.
}
}