From 12cd1353f524ab7c07617079aa4646e8402685dd Mon Sep 17 00:00:00 2001 From: Nicky Bondarenko Date: Mon, 31 Jul 2023 15:29:09 +0200 Subject: [PATCH 1/2] handle ProviderStale event and remove ProviderConfigurationChanged event --- .../openfeature/sdk/events/EventHandler.kt | 1 + .../sdk/events/OpenFeatureEvents.kt | 1 - .../dev/openfeature/sdk/EventsHandlerTest.kt | 27 ++++++++++++++++--- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/OpenFeature/src/main/java/dev/openfeature/sdk/events/EventHandler.kt b/OpenFeature/src/main/java/dev/openfeature/sdk/events/EventHandler.kt index 45fa3fe..d5813a0 100644 --- a/OpenFeature/src/main/java/dev/openfeature/sdk/events/EventHandler.kt +++ b/OpenFeature/src/main/java/dev/openfeature/sdk/events/EventHandler.kt @@ -37,6 +37,7 @@ class EventHandler(dispatcher: CoroutineDispatcher) : EventObserver, EventsPubli sharedFlow.collect { when (it) { is OpenFeatureEvents.ProviderReady -> isProviderReady.value = true + is OpenFeatureEvents.ProviderStale -> isProviderReady.value = false is OpenFeatureEvents.ProviderShutDown -> { isProviderReady.value = false job.cancelChildren() diff --git a/OpenFeature/src/main/java/dev/openfeature/sdk/events/OpenFeatureEvents.kt b/OpenFeature/src/main/java/dev/openfeature/sdk/events/OpenFeatureEvents.kt index e6d0e79..90a1a8c 100644 --- a/OpenFeature/src/main/java/dev/openfeature/sdk/events/OpenFeatureEvents.kt +++ b/OpenFeature/src/main/java/dev/openfeature/sdk/events/OpenFeatureEvents.kt @@ -2,7 +2,6 @@ package dev.openfeature.sdk.events sealed class OpenFeatureEvents { object ProviderReady : OpenFeatureEvents() - object ProviderConfigurationChanged : OpenFeatureEvents() data class ProviderError(val error: Throwable) : OpenFeatureEvents() object ProviderStale : OpenFeatureEvents() object ProviderShutDown : OpenFeatureEvents() diff --git a/OpenFeature/src/test/java/dev/openfeature/sdk/EventsHandlerTest.kt b/OpenFeature/src/test/java/dev/openfeature/sdk/EventsHandlerTest.kt index 4b42af0..397e1dd 100644 --- a/OpenFeature/src/test/java/dev/openfeature/sdk/EventsHandlerTest.kt +++ b/OpenFeature/src/test/java/dev/openfeature/sdk/EventsHandlerTest.kt @@ -5,12 +5,10 @@ import dev.openfeature.sdk.async.toAsync import dev.openfeature.sdk.events.EventHandler import dev.openfeature.sdk.events.OpenFeatureEvents import dev.openfeature.sdk.events.observe -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.Job +import kotlinx.coroutines.* +import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.take import kotlinx.coroutines.flow.timeout -import kotlinx.coroutines.launch import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.runTest import org.junit.Assert @@ -151,6 +149,27 @@ class EventsHandlerTest { Assert.assertTrue(isProviderReady) } + @Test + fun the_provider_becomes_stale() = runTest { + val eventPublisher = EventHandler.eventsPublisher() + var isProviderStale = false + + val job = backgroundScope.launch(UnconfinedTestDispatcher(testScheduler)) { + EventHandler.eventsObserver() + .observe() + .take(1) + .collect { + isProviderStale = true + } + } + + eventPublisher.publish(OpenFeatureEvents.ProviderReady) + eventPublisher.publish(OpenFeatureEvents.ProviderStale) + job.join() + + Assert.assertTrue(isProviderStale) + } + @Test fun observe_string_value_from_client_works() = runTest { val testDispatcher = UnconfinedTestDispatcher(testScheduler) From a549249c4f9c245e207988d63c1e28d10140dfbc Mon Sep 17 00:00:00 2001 From: Nicky Bondarenko Date: Mon, 31 Jul 2023 15:45:35 +0200 Subject: [PATCH 2/2] remove wildcard import --- .../src/test/java/dev/openfeature/sdk/EventsHandlerTest.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/OpenFeature/src/test/java/dev/openfeature/sdk/EventsHandlerTest.kt b/OpenFeature/src/test/java/dev/openfeature/sdk/EventsHandlerTest.kt index 397e1dd..e019bc1 100644 --- a/OpenFeature/src/test/java/dev/openfeature/sdk/EventsHandlerTest.kt +++ b/OpenFeature/src/test/java/dev/openfeature/sdk/EventsHandlerTest.kt @@ -5,10 +5,12 @@ import dev.openfeature.sdk.async.toAsync import dev.openfeature.sdk.events.EventHandler import dev.openfeature.sdk.events.OpenFeatureEvents import dev.openfeature.sdk.events.observe -import kotlinx.coroutines.* -import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.Job import kotlinx.coroutines.flow.take import kotlinx.coroutines.flow.timeout +import kotlinx.coroutines.launch import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.runTest import org.junit.Assert