From 3755a1762831f1bf31d215a6675570d7b8d8c94b Mon Sep 17 00:00:00 2001 From: Jamie Lynch Date: Wed, 13 Mar 2024 15:14:03 +0000 Subject: [PATCH] add remote config for controlling whether v2 payload is sent or not --- .../android/embracesdk/config/behavior/SessionBehavior.kt | 5 +++++ .../android/embracesdk/config/remote/SessionRemoteConfig.kt | 3 +++ .../embrace/android/embracesdk/EmbraceGatingServiceTest.kt | 6 +++--- .../embracesdk/config/behavior/SessionBehaviorTest.kt | 4 ++++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/config/behavior/SessionBehavior.kt b/embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/config/behavior/SessionBehavior.kt index c414501f7..ef719f029 100644 --- a/embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/config/behavior/SessionBehavior.kt +++ b/embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/config/behavior/SessionBehavior.kt @@ -115,6 +115,11 @@ internal class SessionBehavior( fun shouldSendFullForErrorLog() = getFullSessionEvents().contains(SessionGatingKeys.FULL_SESSION_ERROR_LOGS) + /** + * Whether to use the V2 payload format for sending sessions. + */ + fun useV2Payload() = remote?.sessionConfig?.useV2Payload ?: false + /** * Checks whether a feature should be gated. * If [getSessionComponents] is null, this will return false. diff --git a/embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/config/remote/SessionRemoteConfig.kt b/embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/config/remote/SessionRemoteConfig.kt index beb93949f..d9515fc32 100644 --- a/embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/config/remote/SessionRemoteConfig.kt +++ b/embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/config/remote/SessionRemoteConfig.kt @@ -13,6 +13,9 @@ internal data class SessionRemoteConfig( @Json(name = "enable") val isEnabled: Boolean? = null, + @Json(name = "use_v2_payload") + val useV2Payload: Boolean? = null, + /** * A list of session components (i.e. Breadcrumbs, Session properties, etc) that will be * included in the session payload. If components list exists, the services should restrict diff --git a/embrace-android-sdk/src/test/java/io/embrace/android/embracesdk/EmbraceGatingServiceTest.kt b/embrace-android-sdk/src/test/java/io/embrace/android/embracesdk/EmbraceGatingServiceTest.kt index a2208b2fd..2f90727f8 100644 --- a/embrace-android-sdk/src/test/java/io/embrace/android/embracesdk/EmbraceGatingServiceTest.kt +++ b/embrace-android-sdk/src/test/java/io/embrace/android/embracesdk/EmbraceGatingServiceTest.kt @@ -478,9 +478,9 @@ internal class EmbraceGatingServiceTest { private fun buildCustomRemoteConfig(components: Set?, fullSessionEvents: Set?) = RemoteConfig( sessionConfig = SessionRemoteConfig( - true, - components, - fullSessionEvents + isEnabled = true, + sessionComponents = components, + fullSessionEvents = fullSessionEvents ) ) } diff --git a/embrace-android-sdk/src/test/java/io/embrace/android/embracesdk/config/behavior/SessionBehaviorTest.kt b/embrace-android-sdk/src/test/java/io/embrace/android/embracesdk/config/behavior/SessionBehaviorTest.kt index 6daa115d5..4d4c3bf91 100644 --- a/embrace-android-sdk/src/test/java/io/embrace/android/embracesdk/config/behavior/SessionBehaviorTest.kt +++ b/embrace-android-sdk/src/test/java/io/embrace/android/embracesdk/config/behavior/SessionBehaviorTest.kt @@ -21,6 +21,7 @@ internal class SessionBehaviorTest { private val remote = RemoteConfig( sessionConfig = SessionRemoteConfig( isEnabled = true, + useV2Payload = true, sessionComponents = setOf("test"), fullSessionEvents = setOf("test2") ), @@ -36,6 +37,7 @@ internal class SessionBehaviorTest { assertFalse(isGatingFeatureEnabled()) assertFalse(isSessionControlEnabled()) assertEquals(10, getMaxSessionProperties()) + assertFalse(useV2Payload()) } } @@ -46,6 +48,7 @@ internal class SessionBehaviorTest { assertEquals(setOf("breadcrumbs"), getSessionComponents()) assertEquals(setOf("crash"), getFullSessionEvents()) assertTrue(isGatingFeatureEnabled()) + assertFalse(useV2Payload()) } } @@ -57,6 +60,7 @@ internal class SessionBehaviorTest { assertEquals(setOf("test"), getSessionComponents()) assertEquals(setOf("test2"), getFullSessionEvents()) assertEquals(57, getMaxSessionProperties()) + assertTrue(useV2Payload()) } }