From 6f2f8e49b8b8aed4ebb6e25d86d204db3a4d2565 Mon Sep 17 00:00:00 2001 From: tonihei Date: Tue, 11 Jul 2017 04:56:05 -0700 Subject: [PATCH] Add rebuffer test metrics to ABR playback tests. This includes a metric logger class which logs events and generates metrics, and some changes to the Perfgate benchmark config to add the metrics. So far, only rebuffer counts, rebuffer time and startup time are measured, together with auxiliary values of total playback time used for testing and number of playback failures. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=161513672 --- .../android/exoplayer2/testutil/ExoHostedTest.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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 7af3e990af..610b5d1a84 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 @@ -78,6 +78,7 @@ public abstract class ExoHostedTest implements HostedTest, ExoPlayer.EventListen private SimpleExoPlayer player; private Surface surface; private ExoPlaybackException playerError; + private ExoPlayer.EventListener playerEventListener; private boolean playerWasPrepared; private boolean playerFinished; private boolean playing; @@ -129,6 +130,16 @@ public abstract class ExoHostedTest implements HostedTest, ExoPlayer.EventListen } } + /** + * Sets an {@link ExoPlayer.EventListener} to listen for ExoPlayer events during the test. + */ + public final void setEventListener(ExoPlayer.EventListener eventListener) { + this.playerEventListener = eventListener; + if (player != null) { + player.addListener(eventListener); + } + } + // HostedTest implementation @Override @@ -141,6 +152,9 @@ public abstract class ExoHostedTest implements HostedTest, ExoPlayer.EventListen DrmSessionManager drmSessionManager = buildDrmSessionManager(userAgent); player = buildExoPlayer(host, surface, trackSelector, drmSessionManager); player.prepare(buildSource(host, Util.getUserAgent(host, userAgent), bandwidthMeter)); + if (playerEventListener != null) { + player.addListener(playerEventListener); + } player.addListener(this); player.setAudioDebugListener(this); player.setVideoDebugListener(this);