From 417970f7132ab9fd539ba692309e29050b7001d5 Mon Sep 17 00:00:00 2001 From: michaelkatz Date: Fri, 6 Oct 2023 08:48:58 -0700 Subject: [PATCH] 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 in https://github.com/androidx/media/commit/42c1846984fc8ebca5cdbdcf6df8d2dca44eea96 #minor-release PiperOrigin-RevId: 571349013 --- .../exoplayer/rtsp/RtspPlaybackTest.java | 29 +++++++------------ 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/libraries/exoplayer_rtsp/src/test/java/androidx/media3/exoplayer/rtsp/RtspPlaybackTest.java b/libraries/exoplayer_rtsp/src/test/java/androidx/media3/exoplayer/rtsp/RtspPlaybackTest.java index ee69958873..9bdab3e0db 100644 --- a/libraries/exoplayer_rtsp/src/test/java/androidx/media3/exoplayer/rtsp/RtspPlaybackTest.java +++ b/libraries/exoplayer_rtsp/src/test/java/androidx/media3/exoplayer/rtsp/RtspPlaybackTest.java @@ -57,7 +57,6 @@ import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.annotation.Config; -import org.robolectric.shadows.ShadowLooper; /** Playback testing for RTSP. */ @Config(sdk = 29) @@ -110,8 +109,7 @@ public final class RtspPlaybackTest { RtspMessageUtil.DEFAULT_RTSP_TIMEOUT_MS, /* optionsRequestCounter= */ Optional.empty()); rtspServer = new RtspServer(responseProvider); - ExoPlayer player = - createExoPlayer(clock, rtspServer.startAndGetPortNumber(), rtpDataChannelFactory); + ExoPlayer player = createExoPlayer(rtspServer.startAndGetPortNumber(), rtpDataChannelFactory); PlaybackOutput playbackOutput = PlaybackOutput.register(player, capturingRenderersFactory); player.prepare(); @@ -136,8 +134,7 @@ public final class RtspPlaybackTest { fakeRtpDataChannel, RtspMessageUtil.DEFAULT_RTSP_TIMEOUT_MS, /* optionsRequestCounter= */ Optional.empty())); - ExoPlayer player = - createExoPlayer(clock, rtspServer.startAndGetPortNumber(), rtpDataChannelFactory); + ExoPlayer player = createExoPlayer(rtspServer.startAndGetPortNumber(), rtpDataChannelFactory); AtomicReference playbackError = new AtomicReference<>(); player.prepare(); @@ -169,7 +166,7 @@ public final class RtspPlaybackTest { new UdpDataSourceRtpDataChannelFactory(DEFAULT_TIMEOUT_MS), rtpTcpDataChannelFactory); rtspServer = new RtspServer(responseProviderSupportingOnlyTcp); ExoPlayer player = - createExoPlayer(clock, rtspServer.startAndGetPortNumber(), forwardingRtpDataChannelFactory); + createExoPlayer(rtspServer.startAndGetPortNumber(), forwardingRtpDataChannelFactory); PlaybackOutput playbackOutput = PlaybackOutput.register(player, capturingRenderersFactory); player.prepare(); @@ -194,8 +191,7 @@ public final class RtspPlaybackTest { ImmutableList.of(aacRtpPacketStreamDump, mpeg2tsRtpPacketStreamDump), fakeUdpRtpDataChannel); rtspServer = new RtspServer(responseProvider); - ExoPlayer player = - createExoPlayer(clock, rtspServer.startAndGetPortNumber(), rtpDataChannelFactory); + ExoPlayer player = createExoPlayer(rtspServer.startAndGetPortNumber(), rtpDataChannelFactory); AtomicReference playbackError = new AtomicReference<>(); player.prepare(); @@ -232,7 +228,7 @@ public final class RtspPlaybackTest { new ForwardingRtpDataChannelFactory(rtpDataChannelFactory, rtpDataChannelFactory); rtspServer = new RtspServer(responseProviderSupportingOnlyTcp); ExoPlayer player = - createExoPlayer(clock, rtspServer.startAndGetPortNumber(), forwardingRtpDataChannelFactory); + createExoPlayer(rtspServer.startAndGetPortNumber(), forwardingRtpDataChannelFactory); AtomicReference playbackError = new AtomicReference<>(); player.prepare(); @@ -257,34 +253,29 @@ public final class RtspPlaybackTest { throws Exception { FakeUdpDataSourceRtpDataChannel fakeRtpDataChannel = new FakeUdpDataSourceRtpDataChannel(); RtpDataChannel.Factory rtpDataChannelFactory = (trackId) -> fakeRtpDataChannel; - FakeClock fakeClock = new FakeClock(/* initialTimeMs= */ 0, true); Optional optionsRequestCounter = Optional.of(new AtomicInteger()); ResponseProvider responseProvider = new ResponseProvider( - fakeClock, + clock, ImmutableList.of(aacRtpPacketStreamDump), fakeRtpDataChannel, - /* sessionTimeoutMs= */ 30_000L, + /* sessionTimeoutMs= */ 300L, optionsRequestCounter); rtspServer = new RtspServer(responseProvider); - ExoPlayer player = - createExoPlayer(fakeClock, rtspServer.startAndGetPortNumber(), rtpDataChannelFactory); + ExoPlayer player = createExoPlayer(rtspServer.startAndGetPortNumber(), rtpDataChannelFactory); player.prepare(); player.play(); TestPlayerRunHelper.runUntilPlaybackState(player, Player.STATE_READY); // Reset optionsRequestCounter to count requests made by the keep-alive monitor optionsRequestCounter.get().getAndSet(0); - fakeClock.advanceTime(/* timeDiffMs= */ 16_000L); - ShadowLooper.idleMainLooper(); - - assertThat(optionsRequestCounter.get().get()).isEqualTo(1); + RobolectricUtil.runMainLooperUntil(() -> optionsRequestCounter.get().get() != 0); player.release(); } private ExoPlayer createExoPlayer( - Clock clock, int serverRtspPortNumber, RtpDataChannel.Factory rtpDataChannelFactory) { + int serverRtspPortNumber, RtpDataChannel.Factory rtpDataChannelFactory) { ExoPlayer player = new ExoPlayer.Builder(applicationContext, capturingRenderersFactory) .setClock(clock)