Move playback tests off deprecated APIs

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=210077548
This commit is contained in:
olly 2018-08-24 03:31:11 -07:00 committed by Oliver Woodman
parent a71e28440d
commit 38f2f352f9
9 changed files with 71 additions and 135 deletions

View File

@ -298,7 +298,7 @@ public class DashDownloaderTest {
}
private DashDownloader getDashDownloader(FakeDataSet fakeDataSet, StreamKey... keys) {
return getDashDownloader(new Factory(null).setFakeDataSet(fakeDataSet), keys);
return getDashDownloader(new Factory().setFakeDataSet(fakeDataSet), keys);
}
private DashDownloader getDashDownloader(Factory factory, StreamKey... keys) {

View File

@ -235,8 +235,7 @@ public class DownloadManagerDashTest {
private void createDownloadManager() {
dummyMainThread.runOnMainThread(
() -> {
Factory fakeDataSourceFactory =
new FakeDataSource.Factory(null).setFakeDataSet(fakeDataSet);
Factory fakeDataSourceFactory = new FakeDataSource.Factory().setFakeDataSet(fakeDataSet);
downloadManager =
new DownloadManager(
new DownloaderConstructorHelper(cache, fakeDataSourceFactory),

View File

@ -101,7 +101,7 @@ public class DownloadServiceDashTest {
.setRandomData("text_segment_2", 2)
.setRandomData("text_segment_3", 3);
final DataSource.Factory fakeDataSourceFactory =
new FakeDataSource.Factory(null).setFakeDataSet(fakeDataSet);
new FakeDataSource.Factory().setFakeDataSet(fakeDataSet);
fakeStreamKey1 = new StreamKey(0, 0, 0);
fakeStreamKey2 = new StreamKey(0, 1, 0);

View File

@ -183,7 +183,7 @@ public class HlsDownloaderTest {
}
private HlsDownloader getHlsDownloader(String mediaPlaylistUri, List<StreamKey> keys) {
Factory factory = new Factory(null).setFakeDataSet(fakeDataSet);
Factory factory = new Factory().setFakeDataSet(fakeDataSet);
return new HlsDownloader(
Uri.parse(mediaPlaylistUri), keys, new DownloaderConstructorHelper(cache, factory));
}

View File

@ -25,6 +25,7 @@ import android.net.Uri;
import android.util.Log;
import android.view.Surface;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.DefaultLoadControl;
import com.google.android.exoplayer2.ExoPlaybackException;
import com.google.android.exoplayer2.ExoPlayerFactory;
import com.google.android.exoplayer2.Format;
@ -42,7 +43,6 @@ import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.TrackGroup;
import com.google.android.exoplayer2.source.TrackGroupArray;
import com.google.android.exoplayer2.source.dash.DashMediaSource;
import com.google.android.exoplayer2.source.dash.DefaultDashChunkSource;
import com.google.android.exoplayer2.testutil.ActionSchedule;
import com.google.android.exoplayer2.testutil.DebugRenderersFactory;
import com.google.android.exoplayer2.testutil.DecoderCountersUtil;
@ -55,11 +55,10 @@ import com.google.android.exoplayer2.trackselection.FixedTrackSelection;
import com.google.android.exoplayer2.trackselection.MappingTrackSelector;
import com.google.android.exoplayer2.trackselection.RandomTrackSelection;
import com.google.android.exoplayer2.trackselection.TrackSelection;
import com.google.android.exoplayer2.upstream.BandwidthMeter;
import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory;
import com.google.android.exoplayer2.upstream.TransferListener;
import com.google.android.exoplayer2.upstream.DefaultLoadErrorHandlingPolicy;
import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.Util;
import java.util.ArrayList;
@ -265,8 +264,7 @@ public final class DashTestRunner {
}
@Override
protected DefaultTrackSelector buildTrackSelector(
HostActivity host, BandwidthMeter bandwidthMeter) {
protected DefaultTrackSelector buildTrackSelector(HostActivity host) {
return trackSelector;
}
@ -296,30 +294,31 @@ public final class DashTestRunner {
}
@Override
protected SimpleExoPlayer buildExoPlayer(HostActivity host, Surface surface,
protected SimpleExoPlayer buildExoPlayer(
HostActivity host,
Surface surface,
MappingTrackSelector trackSelector,
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
SimpleExoPlayer player =
ExoPlayerFactory.newSimpleInstance(
host, new DebugRenderersFactory(host), trackSelector, drmSessionManager);
host,
new DebugRenderersFactory(host),
trackSelector,
new DefaultLoadControl(),
drmSessionManager);
player.setVideoSurface(surface);
return player;
}
@Override
protected MediaSource buildSource(
HostActivity host, String userAgent, TransferListener mediaTransferListener) {
DataSource.Factory manifestDataSourceFactory = dataSourceFactory != null
? dataSourceFactory : new DefaultDataSourceFactory(host, userAgent);
DataSource.Factory mediaDataSourceFactory = dataSourceFactory != null
? dataSourceFactory
: new DefaultDataSourceFactory(host, userAgent, mediaTransferListener);
protected MediaSource buildSource(HostActivity host, String userAgent) {
DataSource.Factory dataSourceFactory =
this.dataSourceFactory != null
? this.dataSourceFactory
: new DefaultDataSourceFactory(host, userAgent);
Uri manifestUri = Uri.parse(manifestUrl);
DefaultDashChunkSource.Factory chunkSourceFactory = new DefaultDashChunkSource.Factory(
mediaDataSourceFactory);
return new DashMediaSource.Factory(chunkSourceFactory, manifestDataSourceFactory)
.setMinLoadableRetryCount(MIN_LOADABLE_RETRY_COUNT)
.setLivePresentationDelayMs(0)
return new DashMediaSource.Factory(dataSourceFactory)
.setLoadErrorHandlingPolicy(new DefaultLoadErrorHandlingPolicy(MIN_LOADABLE_RETRY_COUNT))
.createMediaSource(manifestUri);
}

View File

@ -22,6 +22,7 @@ import android.os.Looper;
import android.os.SystemClock;
import android.util.Log;
import android.view.Surface;
import com.google.android.exoplayer2.DefaultLoadControl;
import com.google.android.exoplayer2.DefaultRenderersFactory;
import com.google.android.exoplayer2.ExoPlaybackException;
import com.google.android.exoplayer2.ExoPlayer;
@ -30,6 +31,7 @@ import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.RenderersFactory;
import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.analytics.AnalyticsListener;
import com.google.android.exoplayer2.audio.AudioRendererEventListener;
import com.google.android.exoplayer2.audio.DefaultAudioSink;
import com.google.android.exoplayer2.decoder.DecoderCounters;
@ -40,9 +42,6 @@ import com.google.android.exoplayer2.testutil.HostActivity.HostedTest;
import com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.trackselection.MappingTrackSelector;
import com.google.android.exoplayer2.upstream.BandwidthMeter;
import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter;
import com.google.android.exoplayer2.upstream.TransferListener;
import com.google.android.exoplayer2.util.Clock;
import com.google.android.exoplayer2.util.HandlerWrapper;
import com.google.android.exoplayer2.util.Util;
@ -80,9 +79,7 @@ public abstract class ExoHostedTest
private SimpleExoPlayer player;
private Surface surface;
private ExoPlaybackException playerError;
private Player.EventListener playerEventListener;
private VideoRendererEventListener videoDebugListener;
private AudioRendererEventListener audioDebugListener;
private AnalyticsListener analyticsListener;
private boolean playerWasPrepared;
private boolean playing;
@ -135,33 +132,11 @@ public abstract class ExoHostedTest
}
}
/**
* Sets an {@link Player.EventListener} to listen for ExoPlayer events during the test.
*/
public final void setEventListener(Player.EventListener eventListener) {
this.playerEventListener = eventListener;
/** Sets an {@link AnalyticsListener} to listen for events during the test. */
public final void setAnalyticsListener(AnalyticsListener analyticsListener) {
this.analyticsListener = analyticsListener;
if (player != null) {
player.addListener(eventListener);
}
}
/**
* Sets an {@link VideoRendererEventListener} to listen for video debug events during the test.
*/
public final void setVideoDebugListener(VideoRendererEventListener videoDebugListener) {
this.videoDebugListener = videoDebugListener;
if (player != null) {
player.addVideoDebugListener(videoDebugListener);
}
}
/**
* Sets an {@link AudioRendererEventListener} to listen for audio debug events during the test.
*/
public final void setAudioDebugListener(AudioRendererEventListener audioDebugListener) {
this.audioDebugListener = audioDebugListener;
if (player != null) {
player.addAudioDebugListener(audioDebugListener);
player.addAnalyticsListener(analyticsListener);
}
}
@ -171,20 +146,13 @@ public abstract class ExoHostedTest
public final void onStart(HostActivity host, Surface surface) {
this.surface = surface;
// Build the player.
DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
trackSelector = buildTrackSelector(host, bandwidthMeter);
trackSelector = buildTrackSelector(host);
String userAgent = "ExoPlayerPlaybackTests";
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager = buildDrmSessionManager(userAgent);
player = buildExoPlayer(host, surface, trackSelector, drmSessionManager);
player.prepare(buildSource(host, Util.getUserAgent(host, userAgent), bandwidthMeter));
if (playerEventListener != null) {
player.addListener(playerEventListener);
}
if (videoDebugListener != null) {
player.addVideoDebugListener(videoDebugListener);
}
if (audioDebugListener != null) {
player.addAudioDebugListener(audioDebugListener);
player.prepare(buildSource(host, Util.getUserAgent(host, userAgent)));
if (analyticsListener != null) {
player.addAnalyticsListener(analyticsListener);
}
player.addListener(this);
player.addAudioDebugListener(this);
@ -354,26 +322,30 @@ public abstract class ExoHostedTest
}
@SuppressWarnings("unused")
protected DefaultTrackSelector buildTrackSelector(
HostActivity host, BandwidthMeter bandwidthMeter) {
return new DefaultTrackSelector(new AdaptiveTrackSelection.Factory(bandwidthMeter));
protected DefaultTrackSelector buildTrackSelector(HostActivity host) {
return new DefaultTrackSelector(new AdaptiveTrackSelection.Factory());
}
@SuppressWarnings("unused")
protected SimpleExoPlayer buildExoPlayer(HostActivity host, Surface surface,
protected SimpleExoPlayer buildExoPlayer(
HostActivity host,
Surface surface,
MappingTrackSelector trackSelector,
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
RenderersFactory renderersFactory = new DefaultRenderersFactory(host, drmSessionManager,
DefaultRenderersFactory.EXTENSION_RENDERER_MODE_OFF, 0);
RenderersFactory renderersFactory =
new DefaultRenderersFactory(
host,
DefaultRenderersFactory.EXTENSION_RENDERER_MODE_OFF,
/* allowedVideoJoiningTimeMs= */ 0);
SimpleExoPlayer player =
ExoPlayerFactory.newSimpleInstance(host, renderersFactory, trackSelector);
ExoPlayerFactory.newSimpleInstance(
host, renderersFactory, trackSelector, new DefaultLoadControl(), drmSessionManager);
player.setVideoSurface(surface);
return player;
}
@SuppressWarnings("unused")
protected abstract MediaSource buildSource(
HostActivity host, String userAgent, TransferListener mediaTransferListener);
protected abstract MediaSource buildSource(HostActivity host, String userAgent);
@SuppressWarnings("unused")
protected void onPlayerErrorInternal(ExoPlaybackException error) {

View File

@ -32,17 +32,16 @@ import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.analytics.AnalyticsCollector;
import com.google.android.exoplayer2.analytics.AnalyticsListener;
import com.google.android.exoplayer2.audio.AudioRendererEventListener;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.TrackGroupArray;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.trackselection.TrackSelectionArray;
import com.google.android.exoplayer2.trackselection.TrackSelector;
import com.google.android.exoplayer2.upstream.BandwidthMeter;
import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter;
import com.google.android.exoplayer2.util.Clock;
import com.google.android.exoplayer2.util.HandlerWrapper;
import com.google.android.exoplayer2.util.MimeTypes;
import com.google.android.exoplayer2.video.VideoRendererEventListener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.concurrent.CountDownLatch;
@ -77,13 +76,12 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
private MediaSource mediaSource;
private DefaultTrackSelector trackSelector;
private LoadControl loadControl;
private BandwidthMeter bandwidthMeter;
private Format[] supportedFormats;
private Renderer[] renderers;
private RenderersFactory renderersFactory;
private ActionSchedule actionSchedule;
private Player.EventListener eventListener;
private VideoRendererEventListener videoRendererEventListener;
private AudioRendererEventListener audioRendererEventListener;
private AnalyticsListener analyticsListener;
private Integer expectedPlayerEndedCount;
@ -158,6 +156,18 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
return this;
}
/**
* Sets the {@link BandwidthMeter} to be used by the test runner. The default value is a {@link
* DefaultBandwidthMeter} in its default configuration.
*
* @param bandwidthMeter The {@link BandwidthMeter} to be used by the test runner.
* @return This builder.
*/
public Builder setBandwidthMeter(BandwidthMeter bandwidthMeter) {
this.bandwidthMeter = bandwidthMeter;
return this;
}
/**
* Sets a list of {@link Format}s to be used by a {@link FakeMediaSource} to create media
* periods and for setting up a {@link FakeRenderer}. The default value is a single
@ -238,28 +248,6 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
return this;
}
/**
* Sets a {@link VideoRendererEventListener} to be registered.
*
* @param eventListener A {@link VideoRendererEventListener} to be registered.
* @return This builder.
*/
public Builder setVideoRendererEventListener(VideoRendererEventListener eventListener) {
this.videoRendererEventListener = eventListener;
return this;
}
/**
* Sets an {@link AudioRendererEventListener} to be registered.
*
* @param eventListener An {@link AudioRendererEventListener} to be registered.
* @return This builder.
*/
public Builder setAudioRendererEventListener(AudioRendererEventListener eventListener) {
this.audioRendererEventListener = eventListener;
return this;
}
/**
* Sets an {@link AnalyticsListener} to be registered.
*
@ -298,6 +286,9 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
if (trackSelector == null) {
trackSelector = new DefaultTrackSelector();
}
if (bandwidthMeter == null) {
bandwidthMeter = new DefaultBandwidthMeter.Builder().build();
}
if (renderersFactory == null) {
if (renderers == null) {
renderers = new Renderer[] {new FakeRenderer(supportedFormats)};
@ -332,10 +323,9 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
renderersFactory,
trackSelector,
loadControl,
bandwidthMeter,
actionSchedule,
eventListener,
videoRendererEventListener,
audioRendererEventListener,
analyticsListener,
expectedPlayerEndedCount);
}
@ -347,10 +337,9 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
private final RenderersFactory renderersFactory;
private final DefaultTrackSelector trackSelector;
private final LoadControl loadControl;
private final BandwidthMeter bandwidthMeter;
private final @Nullable ActionSchedule actionSchedule;
private final @Nullable Player.EventListener eventListener;
private final @Nullable VideoRendererEventListener videoRendererEventListener;
private final @Nullable AudioRendererEventListener audioRendererEventListener;
private final @Nullable AnalyticsListener analyticsListener;
private final HandlerThread playerThread;
@ -375,10 +364,9 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
RenderersFactory renderersFactory,
DefaultTrackSelector trackSelector,
LoadControl loadControl,
BandwidthMeter bandwidthMeter,
@Nullable ActionSchedule actionSchedule,
@Nullable Player.EventListener eventListener,
@Nullable VideoRendererEventListener videoRendererEventListener,
@Nullable AudioRendererEventListener audioRendererEventListener,
@Nullable AnalyticsListener analyticsListener,
int expectedPlayerEndedCount) {
this.context = context;
@ -387,10 +375,9 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
this.renderersFactory = renderersFactory;
this.trackSelector = trackSelector;
this.loadControl = loadControl;
this.bandwidthMeter = bandwidthMeter;
this.actionSchedule = actionSchedule;
this.eventListener = eventListener;
this.videoRendererEventListener = videoRendererEventListener;
this.audioRendererEventListener = audioRendererEventListener;
this.analyticsListener = analyticsListener;
this.timelines = new ArrayList<>();
this.manifests = new ArrayList<>();
@ -419,17 +406,11 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
try {
player =
new TestSimpleExoPlayer(
context, renderersFactory, trackSelector, loadControl, clock);
context, renderersFactory, trackSelector, loadControl, bandwidthMeter, clock);
player.addListener(ExoPlayerTestRunner.this);
if (eventListener != null) {
player.addListener(eventListener);
}
if (videoRendererEventListener != null) {
player.addVideoDebugListener(videoRendererEventListener);
}
if (audioRendererEventListener != null) {
player.addAudioDebugListener(audioRendererEventListener);
}
if (analyticsListener != null) {
player.addAnalyticsListener(analyticsListener);
}
@ -648,6 +629,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
RenderersFactory renderersFactory,
TrackSelector trackSelector,
LoadControl loadControl,
BandwidthMeter bandwidthMeter,
Clock clock) {
super(
context,
@ -655,7 +637,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
trackSelector,
loadControl,
/* drmSessionManager= */ null,
new DefaultBandwidthMeter.Builder().build(),
bandwidthMeter,
new AnalyticsCollector.Factory(),
clock,
Looper.myLooper());

View File

@ -15,12 +15,10 @@
*/
package com.google.android.exoplayer2.testutil;
import android.os.Handler;
import android.support.annotation.Nullable;
import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.Timeline.Period;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.MediaSourceEventListener;
import com.google.android.exoplayer2.source.MediaSourceEventListener.EventDispatcher;
import com.google.android.exoplayer2.source.TrackGroupArray;
import com.google.android.exoplayer2.upstream.Allocator;
@ -38,12 +36,9 @@ public class FakeAdaptiveMediaSource extends FakeMediaSource {
Timeline timeline,
Object manifest,
TrackGroupArray trackGroupArray,
Handler eventHandler,
MediaSourceEventListener eventListener,
FakeChunkSource.Factory chunkSourceFactory) {
super(timeline, manifest, trackGroupArray);
this.chunkSourceFactory = chunkSourceFactory;
addEventListener(eventHandler, eventListener);
}
@Override

View File

@ -16,7 +16,6 @@
package com.google.android.exoplayer2.testutil;
import android.net.Uri;
import android.support.annotation.Nullable;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.testutil.FakeDataSet.FakeData;
import com.google.android.exoplayer2.testutil.FakeDataSet.FakeData.Segment;
@ -24,7 +23,6 @@ import com.google.android.exoplayer2.upstream.BaseDataSource;
import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DataSourceException;
import com.google.android.exoplayer2.upstream.DataSpec;
import com.google.android.exoplayer2.upstream.TransferListener;
import com.google.android.exoplayer2.util.Assertions;
import java.io.IOException;
import java.util.ArrayList;
@ -40,14 +38,9 @@ public class FakeDataSource extends BaseDataSource {
*/
public static class Factory implements DataSource.Factory {
protected final TransferListener transferListener;
protected FakeDataSet fakeDataSet;
protected boolean isNetwork;
public Factory(@Nullable TransferListener transferListener) {
this.transferListener = transferListener;
}
public final Factory setFakeDataSet(FakeDataSet fakeDataSet) {
this.fakeDataSet = fakeDataSet;
return this;
@ -60,11 +53,7 @@ public class FakeDataSource extends BaseDataSource {
@Override
public DataSource createDataSource() {
FakeDataSource dataSource = new FakeDataSource(fakeDataSet, isNetwork);
if (transferListener != null) {
dataSource.addTransferListener(transferListener);
}
return dataSource;
return new FakeDataSource(fakeDataSet, isNetwork);
}
}