From c3ce98d67192ac9fcdef42a20d8418a2d970db9c Mon Sep 17 00:00:00 2001 From: Jae Kim Date: Tue, 17 Jan 2023 13:28:02 -0800 Subject: [PATCH 1/3] pass odp common data and identifiers to java core --- .../ab/android/sdk/OptimizelyManager.java | 9 ++---- .../sdk/OptimizelyManagerBuilderTest.java | 31 +++++++++++++++++++ 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/android-sdk/src/main/java/com/optimizely/ab/android/sdk/OptimizelyManager.java b/android-sdk/src/main/java/com/optimizely/ab/android/sdk/OptimizelyManager.java index e4f871da..5b24df6f 100644 --- a/android-sdk/src/main/java/com/optimizely/ab/android/sdk/OptimizelyManager.java +++ b/android-sdk/src/main/java/com/optimizely/ab/android/sdk/OptimizelyManager.java @@ -1043,7 +1043,7 @@ public OptimizelyManager build(Context context) { Map commonData = OptimizelyDefaultAttributes.buildODPCommonData(context, logger); // Pass common identifiers for android-sdk only to java-core sdk. All ODP events will include these identifiers. - Map commonIdentifiers = (vuid != null) ? Collections.singletonMap("vuid", vuid) : Collections.emptyMap(); + Map commonIdentifiers = (vuid != null) ? Collections.singletonMap("vuid", vuid) : Collections.emptyMap(); ODPApiManager odpApiManager = new DefaultODPApiManager( context, @@ -1058,11 +1058,8 @@ public OptimizelyManager build(Context context) { .withApiManager(odpApiManager) .withSegmentCacheSize(odpSegmentCacheSize) .withSegmentCacheTimeout(odpSegmentCacheTimeoutInSecs) - - // TODO: this will be fixed in a separate PR after java-sdk is extended for android-sdk support. - //.withExtraCommonData(commonData) - //.withExtraCommonIdentifiers(commonIdentifiers) - + .withUserCommonData(commonData) + .withUserCommonIdentifiers(commonIdentifiers) .build(); } diff --git a/android-sdk/src/test/java/com/optimizely/ab/android/sdk/OptimizelyManagerBuilderTest.java b/android-sdk/src/test/java/com/optimizely/ab/android/sdk/OptimizelyManagerBuilderTest.java index 3c8980a7..63eaf9c0 100644 --- a/android-sdk/src/test/java/com/optimizely/ab/android/sdk/OptimizelyManagerBuilderTest.java +++ b/android-sdk/src/test/java/com/optimizely/ab/android/sdk/OptimizelyManagerBuilderTest.java @@ -44,6 +44,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; import org.mockito.runners.MockitoJUnitRunner; import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; @@ -69,6 +70,7 @@ import static org.powermock.api.mockito.PowerMockito.whenNew; import java.sql.Time; +import java.util.Map; import java.util.concurrent.TimeUnit; @RunWith(PowerMockRunner.class) @@ -369,4 +371,33 @@ public void testBuildWithODP_customSegmentFetchTimeout() throws Exception { assertEquals(ODPEventClient.Companion.getCONNECTION_TIMEOUT(), 30*1000); } + @Test + public void testBuildWithODP_defaultCommonDataAndIdentifiers() throws Exception { + ODPEventManager mockEventManager = mock(ODPEventManager.class); + whenNew(ODPEventManager.class).withAnyArguments().thenReturn(mockEventManager); + whenNew(ODPSegmentManager.class).withAnyArguments().thenReturn(mock(ODPSegmentManager.class)); + whenNew(ODPManager.class).withAnyArguments().thenReturn(mock(ODPManager.class)); + + OptimizelyManager manager = OptimizelyManager.builder() + .withSDKKey(testSdkKey) + .withVuid("test-vuid") + .build(mockContext); + + ArgumentCaptor> captorData = ArgumentCaptor.forClass(Map.class); + ArgumentCaptor> captorIdentifiers = ArgumentCaptor.forClass(Map.class); + + verify(mockEventManager).setUserCommonData(captorData.capture()); + verify(mockEventManager).setUserCommonIdentifiers(captorIdentifiers.capture()); + + Map data = captorData.getValue(); + Map identifiers = captorIdentifiers.getValue(); + + // here we just validate if data is passed or not (all values are validated in other tests: OptimizelyDefaultAttributesTest) + assertEquals(data.get("os"), "Android"); + assertEquals(data.size(), 4); + + assertEquals(identifiers.get("vuid"), "test-vuid"); + assertEquals(identifiers.size(), 1); + } + } From 1a3097c99ba99610667c0d2a58368da8ea58399e Mon Sep 17 00:00:00 2001 From: Jae Kim Date: Tue, 17 Jan 2023 14:31:32 -0800 Subject: [PATCH 2/3] force gradle sync for SNAPSHOT --- build.gradle | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/build.gradle b/build.gradle index 43117043..761c9fed 100644 --- a/build.gradle +++ b/build.gradle @@ -36,6 +36,11 @@ buildscript { // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } + + configurations.all { + // no cache for SNAPSHOT dependency + resolutionStrategy.cacheChangingModulesFor 0, 'seconds' + } } plugins { From 4b3706a343c8be5387d12ffaa5162cdcf361bb18 Mon Sep 17 00:00:00 2001 From: Jae Kim Date: Tue, 17 Jan 2023 15:13:30 -0800 Subject: [PATCH 3/3] clean up gradle --- build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 761c9fed..7cbb75fb 100644 --- a/build.gradle +++ b/build.gradle @@ -36,11 +36,6 @@ buildscript { // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } - - configurations.all { - // no cache for SNAPSHOT dependency - resolutionStrategy.cacheChangingModulesFor 0, 'seconds' - } } plugins { @@ -63,6 +58,11 @@ allprojects { // SNAPSHOT support maven {url "https://oss.sonatype.org/content/repositories/snapshots/" } } + + configurations.all { + // no cache for SNAPSHOT dependency + resolutionStrategy.cacheChangingModulesFor 0, 'seconds' + } } ext {