mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Deflake RTSP keep-alive monitor test
Alters RTSP KeepAlive monitor test to just make sure that keep-alive message is sent. The test was added in42c1846984#minor-release PiperOrigin-RevId: 571349013 (cherry picked from commit417970f713)
This commit is contained in:
parent
efb8c70a4b
commit
f776021dcc
1 changed files with 10 additions and 19 deletions
|
|
@ -57,7 +57,6 @@ import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
import org.robolectric.shadows.ShadowLooper;
|
|
||||||
|
|
||||||
/** Playback testing for RTSP. */
|
/** Playback testing for RTSP. */
|
||||||
@Config(sdk = 29)
|
@Config(sdk = 29)
|
||||||
|
|
@ -110,8 +109,7 @@ public final class RtspPlaybackTest {
|
||||||
RtspMessageUtil.DEFAULT_RTSP_TIMEOUT_MS,
|
RtspMessageUtil.DEFAULT_RTSP_TIMEOUT_MS,
|
||||||
/* optionsRequestCounter= */ Optional.empty());
|
/* optionsRequestCounter= */ Optional.empty());
|
||||||
rtspServer = new RtspServer(responseProvider);
|
rtspServer = new RtspServer(responseProvider);
|
||||||
ExoPlayer player =
|
ExoPlayer player = createExoPlayer(rtspServer.startAndGetPortNumber(), rtpDataChannelFactory);
|
||||||
createExoPlayer(clock, rtspServer.startAndGetPortNumber(), rtpDataChannelFactory);
|
|
||||||
|
|
||||||
PlaybackOutput playbackOutput = PlaybackOutput.register(player, capturingRenderersFactory);
|
PlaybackOutput playbackOutput = PlaybackOutput.register(player, capturingRenderersFactory);
|
||||||
player.prepare();
|
player.prepare();
|
||||||
|
|
@ -136,8 +134,7 @@ public final class RtspPlaybackTest {
|
||||||
fakeRtpDataChannel,
|
fakeRtpDataChannel,
|
||||||
RtspMessageUtil.DEFAULT_RTSP_TIMEOUT_MS,
|
RtspMessageUtil.DEFAULT_RTSP_TIMEOUT_MS,
|
||||||
/* optionsRequestCounter= */ Optional.empty()));
|
/* optionsRequestCounter= */ Optional.empty()));
|
||||||
ExoPlayer player =
|
ExoPlayer player = createExoPlayer(rtspServer.startAndGetPortNumber(), rtpDataChannelFactory);
|
||||||
createExoPlayer(clock, rtspServer.startAndGetPortNumber(), rtpDataChannelFactory);
|
|
||||||
|
|
||||||
AtomicReference<Throwable> playbackError = new AtomicReference<>();
|
AtomicReference<Throwable> playbackError = new AtomicReference<>();
|
||||||
player.prepare();
|
player.prepare();
|
||||||
|
|
@ -169,7 +166,7 @@ public final class RtspPlaybackTest {
|
||||||
new UdpDataSourceRtpDataChannelFactory(DEFAULT_TIMEOUT_MS), rtpTcpDataChannelFactory);
|
new UdpDataSourceRtpDataChannelFactory(DEFAULT_TIMEOUT_MS), rtpTcpDataChannelFactory);
|
||||||
rtspServer = new RtspServer(responseProviderSupportingOnlyTcp);
|
rtspServer = new RtspServer(responseProviderSupportingOnlyTcp);
|
||||||
ExoPlayer player =
|
ExoPlayer player =
|
||||||
createExoPlayer(clock, rtspServer.startAndGetPortNumber(), forwardingRtpDataChannelFactory);
|
createExoPlayer(rtspServer.startAndGetPortNumber(), forwardingRtpDataChannelFactory);
|
||||||
|
|
||||||
PlaybackOutput playbackOutput = PlaybackOutput.register(player, capturingRenderersFactory);
|
PlaybackOutput playbackOutput = PlaybackOutput.register(player, capturingRenderersFactory);
|
||||||
player.prepare();
|
player.prepare();
|
||||||
|
|
@ -194,8 +191,7 @@ public final class RtspPlaybackTest {
|
||||||
ImmutableList.of(aacRtpPacketStreamDump, mpeg2tsRtpPacketStreamDump),
|
ImmutableList.of(aacRtpPacketStreamDump, mpeg2tsRtpPacketStreamDump),
|
||||||
fakeUdpRtpDataChannel);
|
fakeUdpRtpDataChannel);
|
||||||
rtspServer = new RtspServer(responseProvider);
|
rtspServer = new RtspServer(responseProvider);
|
||||||
ExoPlayer player =
|
ExoPlayer player = createExoPlayer(rtspServer.startAndGetPortNumber(), rtpDataChannelFactory);
|
||||||
createExoPlayer(clock, rtspServer.startAndGetPortNumber(), rtpDataChannelFactory);
|
|
||||||
|
|
||||||
AtomicReference<PlaybackException> playbackError = new AtomicReference<>();
|
AtomicReference<PlaybackException> playbackError = new AtomicReference<>();
|
||||||
player.prepare();
|
player.prepare();
|
||||||
|
|
@ -232,7 +228,7 @@ public final class RtspPlaybackTest {
|
||||||
new ForwardingRtpDataChannelFactory(rtpDataChannelFactory, rtpDataChannelFactory);
|
new ForwardingRtpDataChannelFactory(rtpDataChannelFactory, rtpDataChannelFactory);
|
||||||
rtspServer = new RtspServer(responseProviderSupportingOnlyTcp);
|
rtspServer = new RtspServer(responseProviderSupportingOnlyTcp);
|
||||||
ExoPlayer player =
|
ExoPlayer player =
|
||||||
createExoPlayer(clock, rtspServer.startAndGetPortNumber(), forwardingRtpDataChannelFactory);
|
createExoPlayer(rtspServer.startAndGetPortNumber(), forwardingRtpDataChannelFactory);
|
||||||
|
|
||||||
AtomicReference<PlaybackException> playbackError = new AtomicReference<>();
|
AtomicReference<PlaybackException> playbackError = new AtomicReference<>();
|
||||||
player.prepare();
|
player.prepare();
|
||||||
|
|
@ -257,34 +253,29 @@ public final class RtspPlaybackTest {
|
||||||
throws Exception {
|
throws Exception {
|
||||||
FakeUdpDataSourceRtpDataChannel fakeRtpDataChannel = new FakeUdpDataSourceRtpDataChannel();
|
FakeUdpDataSourceRtpDataChannel fakeRtpDataChannel = new FakeUdpDataSourceRtpDataChannel();
|
||||||
RtpDataChannel.Factory rtpDataChannelFactory = (trackId) -> fakeRtpDataChannel;
|
RtpDataChannel.Factory rtpDataChannelFactory = (trackId) -> fakeRtpDataChannel;
|
||||||
FakeClock fakeClock = new FakeClock(/* initialTimeMs= */ 0, true);
|
|
||||||
Optional<AtomicInteger> optionsRequestCounter = Optional.of(new AtomicInteger());
|
Optional<AtomicInteger> optionsRequestCounter = Optional.of(new AtomicInteger());
|
||||||
ResponseProvider responseProvider =
|
ResponseProvider responseProvider =
|
||||||
new ResponseProvider(
|
new ResponseProvider(
|
||||||
fakeClock,
|
clock,
|
||||||
ImmutableList.of(aacRtpPacketStreamDump),
|
ImmutableList.of(aacRtpPacketStreamDump),
|
||||||
fakeRtpDataChannel,
|
fakeRtpDataChannel,
|
||||||
/* sessionTimeoutMs= */ 30_000L,
|
/* sessionTimeoutMs= */ 300L,
|
||||||
optionsRequestCounter);
|
optionsRequestCounter);
|
||||||
rtspServer = new RtspServer(responseProvider);
|
rtspServer = new RtspServer(responseProvider);
|
||||||
ExoPlayer player =
|
ExoPlayer player = createExoPlayer(rtspServer.startAndGetPortNumber(), rtpDataChannelFactory);
|
||||||
createExoPlayer(fakeClock, rtspServer.startAndGetPortNumber(), rtpDataChannelFactory);
|
|
||||||
player.prepare();
|
player.prepare();
|
||||||
player.play();
|
player.play();
|
||||||
TestPlayerRunHelper.runUntilPlaybackState(player, Player.STATE_READY);
|
TestPlayerRunHelper.runUntilPlaybackState(player, Player.STATE_READY);
|
||||||
// Reset optionsRequestCounter to count requests made by the keep-alive monitor
|
// Reset optionsRequestCounter to count requests made by the keep-alive monitor
|
||||||
optionsRequestCounter.get().getAndSet(0);
|
optionsRequestCounter.get().getAndSet(0);
|
||||||
|
|
||||||
fakeClock.advanceTime(/* timeDiffMs= */ 16_000L);
|
RobolectricUtil.runMainLooperUntil(() -> optionsRequestCounter.get().get() != 0);
|
||||||
ShadowLooper.idleMainLooper();
|
|
||||||
|
|
||||||
assertThat(optionsRequestCounter.get().get()).isEqualTo(1);
|
|
||||||
|
|
||||||
player.release();
|
player.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
private ExoPlayer createExoPlayer(
|
private ExoPlayer createExoPlayer(
|
||||||
Clock clock, int serverRtspPortNumber, RtpDataChannel.Factory rtpDataChannelFactory) {
|
int serverRtspPortNumber, RtpDataChannel.Factory rtpDataChannelFactory) {
|
||||||
ExoPlayer player =
|
ExoPlayer player =
|
||||||
new ExoPlayer.Builder(applicationContext, capturingRenderersFactory)
|
new ExoPlayer.Builder(applicationContext, capturingRenderersFactory)
|
||||||
.setClock(clock)
|
.setClock(clock)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue