From cb3a6725083d4a1037c6081fe732ea999a5263c9 Mon Sep 17 00:00:00 2001 From: christosts Date: Mon, 10 Oct 2022 16:34:13 +0000 Subject: [PATCH] MediaControllerWithMediaSessionCompatTest Fix a race condition making test flaky. PiperOrigin-RevId: 480104467 --- .../MediaControllerWithMediaSessionCompatTest.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerWithMediaSessionCompatTest.java b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerWithMediaSessionCompatTest.java index 1ea60474e6..d5109f05af 100644 --- a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerWithMediaSessionCompatTest.java +++ b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerWithMediaSessionCompatTest.java @@ -168,6 +168,7 @@ public class MediaControllerWithMediaSessionCompatTest { @Test public void disconnected_byControllerReleaseRightAfterCreated() throws Exception { CountDownLatch latch = new CountDownLatch(1); + AtomicReference exception = new AtomicReference<>(); MediaController controller = controllerTestRule.createController( session.getSessionToken(), @@ -177,8 +178,16 @@ public class MediaControllerWithMediaSessionCompatTest { latch.countDown(); } }, - /* controllerCreationListener= */ MediaController::release); + /* controllerCreationListener= */ mediaController -> { + // We must release the controller on the app thread. + try { + threadTestRule.getHandler().postAndSync(() -> mediaController.release()); + } catch (Exception e) { + exception.set(e); + } + }); assertThat(latch.await(TIMEOUT_MS, MILLISECONDS)).isTrue(); + assertThat(exception.get()).isNull(); assertThat(controller.isConnected()).isFalse(); }