From 145e923dce1f43e877b00f03a7ecbae7007b0ae6 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/library/core/src/test/java/com/google/android/exoplayer2/analytics/DefaultPlaybackSessionManagerTest.java b/library/core/src/test/java/com/google/android/exoplayer2/analytics/DefaultPlaybackSessionManagerTest.java index 1df3d64205..44aba86db3 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/analytics/DefaultPlaybackSessionManagerTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/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(); }