Wait for Android core readiness before applying settings

This commit is contained in:
evgeny committed 2026-10-27 18:27:14 +01:00
1 parent 8e0090b54b
commit 11b3ceaa9b
3 files changed
+31 -62

No files matched your search

@@ -32,7 +32,7 @@ class CoreStartupTest {
@After fun release() { startup.stop(); scope.cancel() }
private fun start() = startup.start(config) { submitted.add(it); accepted }
private fun start() = startup.start({ config.await() }) { submitted.add(it); accepted }
private fun waiter() = scope.async(start = CoroutineStart.UNDISPATCHED) { startup.awaitReady(); readyCalls }
@Test fun acceptedNativeStartDoesNotReleaseSettingsBeforeReady() = runBlocking {
@@ -129,7 +129,7 @@ class CoreStartupTest {
@Test fun missingNativeReadySignalFailsWithBoundedTimeout() = runBlocking {
val timed = coordinator(timeout = 20)
timed.start(CompletableDeferred("config")) { true }
timed.start({ "config" }) { true }
val error = withTimeout(2_000) { runCatching { timed.awaitReady() }.exceptionOrNull() }
assertTrue(error is IllegalStateException)
assertTrue(error!!.message!!.contains("readiness timeout"))
@@ -137,18 +137,10 @@ class CoreStartupTest {
assertEquals(1, failures)
}
@Test fun nativeStopBeforeReadyFailsInitialStartup() = runBlocking {
start(); config.complete("config")
startup.coreStopped()
assertTrue(runCatching { startup.awaitReady() }.exceptionOrNull() is IllegalStateException)
assertEquals(1, failures)
}
@Test fun readyServiceContinuesResynchronizingLaterCoreInstances() = runBlocking {
nativeReady = true
start(); config.complete("config")
startup.awaitReady()
startup.coreStopped()
startup.coreStarted()
assertEquals(2, readyCalls)
assertEquals(0, failures)
@@ -189,7 +181,7 @@ class CoreStartupTest {
}
@Test fun synchronousReadySignalDuringNativeSubmissionIsRetained() = runBlocking {
startup.start(config) {
startup.start({ config.await() }) {
nativeReady = true
startup.coreStarted()
true