From c9e2a9eb307c11a348dc24ecb6a1ef3290cc5626 Mon Sep 17 00:00:00 2001 From: tonihei Date: Thu, 27 Jan 2022 09:43:19 +0000 Subject: [PATCH] Fix flakiness in DefaultPlaybackSessionManagerTest Two of the sessions are finished at the same time in the test and the order of the corresponding callbacks depends on the randomly generated session string and the order these strings are stored in a HashSet. Update test to assert both callbacks are called and they contain the right arguments, but don't assert on the order of these two callbacks. PiperOrigin-RevId: 424548819 --- .../DefaultPlaybackSessionManagerTest.java | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManagerTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManagerTest.java index 20ba83eceb..dd74acd379 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManagerTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManagerTest.java @@ -788,18 +788,16 @@ public final class DefaultPlaybackSessionManagerTest { inOrder .verify(mockListener) .onSessionCreated(eq(eventTimeFirstTimelineWindowOnly2), thirdId.capture()); + // The sessions may finish at the same time, so the order of these two callbacks is undefined. + ArgumentCaptor finishedSessions = ArgumentCaptor.forClass(String.class); inOrder - .verify(mockListener) + .verify(mockListener, times(2)) .onSessionFinished( - eventTimeSecondTimeline, - firstId.getValue(), - /* automaticTransitionToNextPlayback= */ false); - inOrder - .verify(mockListener) - .onSessionFinished( - eventTimeSecondTimeline, - thirdId.getValue(), - /* automaticTransitionToNextPlayback= */ false); + eq(eventTimeSecondTimeline), + finishedSessions.capture(), + /* automaticTransitionToNextPlayback= */ eq(false)); + assertThat(finishedSessions.getAllValues()) + .containsExactly(firstId.getValue(), thirdId.getValue()); inOrder.verify(mockListener).onSessionActive(eventTimeSecondTimeline, secondId.getValue()); inOrder.verifyNoMoreInteractions(); }