From 66ecd7e12d7d86e8dbbb77916901c9bbaae31443 Mon Sep 17 00:00:00 2001 From: esrakartalOpt Date: Thu, 1 May 2025 12:56:22 -0500 Subject: [PATCH 01/13] [FSSDK-11448] Java Implementation: Add Experiment ID and Variation ID to Decision Notification --- .../java/com/optimizely/ab/Optimizely.java | 6 +++++ .../ab/notification/DecisionNotification.java | 26 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/core-api/src/main/java/com/optimizely/ab/Optimizely.java b/core-api/src/main/java/com/optimizely/ab/Optimizely.java index 4f942ff69..c04fd373b 100644 --- a/core-api/src/main/java/com/optimizely/ab/Optimizely.java +++ b/core-api/src/main/java/com/optimizely/ab/Optimizely.java @@ -1095,6 +1095,8 @@ private Variation getVariation(@Nonnull ProjectConfig projectConfig, .withExperimentKey(experiment.getKey()) .withVariation(variation) .withType(notificationType) + .withExperimentId(experiment.getId()) + .withVariationId(variation.getId()) .build(); notificationCenter.send(decisionNotification); @@ -1336,6 +1338,8 @@ private OptimizelyDecision createOptimizelyDecision( Boolean decisionEventDispatched = false; + String experimentId = flagDecision.experiment != null ? flagDecision.experiment.getId() : null; + String variationId = flagDecision.variation != null ? flagDecision.variation.getId() : null; Map attributes = user.getAttributes(); Map copiedAttributes = new HashMap<>(attributes); @@ -1362,6 +1366,8 @@ private OptimizelyDecision createOptimizelyDecision( .withRuleKey(ruleKey) .withReasons(reasonsToReport) .withDecisionEventDispatched(decisionEventDispatched) + .withExperimentId(experimentId) + .withVariationId(variationId) .build(); notificationCenter.send(decisionNotification); diff --git a/core-api/src/main/java/com/optimizely/ab/notification/DecisionNotification.java b/core-api/src/main/java/com/optimizely/ab/notification/DecisionNotification.java index d97e5bf40..acce51e67 100644 --- a/core-api/src/main/java/com/optimizely/ab/notification/DecisionNotification.java +++ b/core-api/src/main/java/com/optimizely/ab/notification/DecisionNotification.java @@ -97,9 +97,12 @@ public static ExperimentDecisionNotificationBuilder newExperimentDecisionNotific public static class ExperimentDecisionNotificationBuilder { public final static String EXPERIMENT_KEY = "experimentKey"; public final static String VARIATION_KEY = "variationKey"; + public final static String EXPERIMENT_ID = "experimentId"; + public final static String VARIATION_ID = "variationId"; private String type; private String experimentKey; + private String experimentId; private Variation variation; private String userId; private Map attributes; @@ -130,6 +133,11 @@ public ExperimentDecisionNotificationBuilder withVariation(Variation variation) return this; } + public ExperimentDecisionNotificationBuilder withExperimentId(Variation experimentId) { + this.experimentId = experimentId; + return this; + } + public DecisionNotification build() { if (type == null) { throw new OptimizelyRuntimeException("type not set"); @@ -141,7 +149,9 @@ public DecisionNotification build() { decisionInfo = new HashMap<>(); decisionInfo.put(EXPERIMENT_KEY, experimentKey); + decisionInfo.put(EXPERIMENT_ID, experimentId); decisionInfo.put(VARIATION_KEY, variation != null ? variation.getKey() : null); + decisionInfo.put(VARIATION_ID, variation != null ? variation.getId() : null); return new DecisionNotification( type, @@ -364,6 +374,8 @@ public static class FlagDecisionNotificationBuilder { public final static String RULE_KEY = "ruleKey"; public final static String REASONS = "reasons"; public final static String DECISION_EVENT_DISPATCHED = "decisionEventDispatched"; + public final static String EXPERIMENT_ID = "experimentId"; + public final static String VARIATION_ID = "variationId"; private String flagKey; private Boolean enabled; @@ -374,6 +386,8 @@ public static class FlagDecisionNotificationBuilder { private String ruleKey; private List reasons; private Boolean decisionEventDispatched; + private String experimentId; + private String variationId; private Map decisionInfo; @@ -422,6 +436,16 @@ public FlagDecisionNotificationBuilder withDecisionEventDispatched(Boolean dispa return this; } + public FlagDecisionNotificationBuilder withExperimentId(String experimentId) { + this.experimentId = experimentId; + return this; + } + + public FlagDecisionNotificationBuilder withVariationId(String variationId) { + this.variationId = variationId; + return this; + } + public DecisionNotification build() { if (flagKey == null) { throw new OptimizelyRuntimeException("flagKey not set"); @@ -439,6 +463,8 @@ public DecisionNotification build() { put(RULE_KEY, ruleKey); put(REASONS, reasons); put(DECISION_EVENT_DISPATCHED, decisionEventDispatched); + put(EXPERIMENT_ID, experimentId); + put(VARIATION_ID, variationId); }}; return new DecisionNotification( From 4bf0e2a9beea00f07ede37d451996f3f1fe46664 Mon Sep 17 00:00:00 2001 From: esrakartalOpt Date: Thu, 1 May 2025 13:06:36 -0500 Subject: [PATCH 02/13] Fix test --- .../com/optimizely/ab/notification/DecisionNotification.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-api/src/main/java/com/optimizely/ab/notification/DecisionNotification.java b/core-api/src/main/java/com/optimizely/ab/notification/DecisionNotification.java index acce51e67..709454e2f 100644 --- a/core-api/src/main/java/com/optimizely/ab/notification/DecisionNotification.java +++ b/core-api/src/main/java/com/optimizely/ab/notification/DecisionNotification.java @@ -133,7 +133,7 @@ public ExperimentDecisionNotificationBuilder withVariation(Variation variation) return this; } - public ExperimentDecisionNotificationBuilder withExperimentId(Variation experimentId) { + public ExperimentDecisionNotificationBuilder withExperimentId(String experimentId) { this.experimentId = experimentId; return this; } From 098f47a73404dbad380ad57c0cc2d67e7df1900d Mon Sep 17 00:00:00 2001 From: esrakartalOpt Date: Thu, 1 May 2025 13:47:59 -0500 Subject: [PATCH 03/13] Fix test --- .../optimizely/ab/notification/DecisionNotification.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/core-api/src/main/java/com/optimizely/ab/notification/DecisionNotification.java b/core-api/src/main/java/com/optimizely/ab/notification/DecisionNotification.java index 709454e2f..dd8026037 100644 --- a/core-api/src/main/java/com/optimizely/ab/notification/DecisionNotification.java +++ b/core-api/src/main/java/com/optimizely/ab/notification/DecisionNotification.java @@ -103,6 +103,7 @@ public static class ExperimentDecisionNotificationBuilder { private String type; private String experimentKey; private String experimentId; + private String variationId; private Variation variation; private String userId; private Map attributes; @@ -138,6 +139,11 @@ public ExperimentDecisionNotificationBuilder withExperimentId(String experimentI return this; } + public ExperimentDecisionNotificationBuilder withVariationId(String variationId) { + this.variationId = variationId; + return this; + } + public DecisionNotification build() { if (type == null) { throw new OptimizelyRuntimeException("type not set"); @@ -151,7 +157,7 @@ public DecisionNotification build() { decisionInfo.put(EXPERIMENT_KEY, experimentKey); decisionInfo.put(EXPERIMENT_ID, experimentId); decisionInfo.put(VARIATION_KEY, variation != null ? variation.getKey() : null); - decisionInfo.put(VARIATION_ID, variation != null ? variation.getId() : null); + decisionInfo.put(VARIATION_ID, variationId); return new DecisionNotification( type, From 332b87f48f327dc43a41a20fefc071794055c30c Mon Sep 17 00:00:00 2001 From: esrakartalOpt Date: Thu, 1 May 2025 14:08:18 -0500 Subject: [PATCH 04/13] Fix decision test --- .../ab/notification/DecisionNotificationTest.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java b/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java index 8ba0e7f7b..281ea37dd 100644 --- a/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java +++ b/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java @@ -37,6 +37,7 @@ public class DecisionNotificationTest { private static final Boolean FEATURE_ENABLED = Boolean.FALSE; private static final String EXPERIMENT_KEY = "experimentKey"; + private static final String EXPERIMENT_ID = "1234567"; private static final String FEATURE_KEY = "featureKey"; private static final String FEATURE_VARIABLE_KEY = "featureVariableKey"; private static final String FEATURE_TEST = "featureTest"; @@ -44,6 +45,7 @@ public class DecisionNotificationTest { private static final String USER_ID = "userID"; private static final Map USER_ATTRIBUTES = Collections.singletonMap("user", "attr"); private static final Variation VARIATION = mock(Variation.class); + private static final String VARIATION_ID = "1234567"; private FeatureTestSourceInfo featureTestSourceInfo; private RolloutSourceInfo rolloutSourceInfo; @@ -58,6 +60,8 @@ public void setUp() { .withAttributes(USER_ATTRIBUTES) .withExperimentKey(EXPERIMENT_KEY) .withVariation(VARIATION) + .withExperimentId(EXPERIMENT_ID) + .withVariationId(VARIATION_ID) .withType(NotificationCenter.DecisionNotificationType.AB_TEST.toString()) .build(); featureTestSourceInfo = new FeatureTestSourceInfo(FEATURE_TEST, FEATURE_TEST_VARIATION); @@ -107,6 +111,8 @@ public void testGetDecisionInfo() { HashMap expectedExperimentDecisionInfo = new HashMap<>(); expectedExperimentDecisionInfo.put(DecisionNotification.ExperimentDecisionNotificationBuilder.EXPERIMENT_KEY, EXPERIMENT_KEY); expectedExperimentDecisionInfo.put(DecisionNotification.ExperimentDecisionNotificationBuilder.VARIATION_KEY, VARIATION.getKey()); + expectedExperimentDecisionInfo.put(DecisionNotification.ExperimentDecisionNotificationBuilder.EXPERIMENT_ID, EXPERIMENT_ID); + expectedExperimentDecisionInfo.put(DecisionNotification.ExperimentDecisionNotificationBuilder.VARIATION_ID, VARIATION_ID); assertEquals(expectedExperimentDecisionInfo, experimentDecisionNotification.getDecisionInfo()); // Assert for Feature's DecisionInfo @@ -128,7 +134,7 @@ public void testGetDecisionInfo() { @Test public void testToString() { - assertEquals("DecisionNotification{type='ab-test', userId='userID', attributes={user=attr}, decisionInfo={experimentKey=experimentKey, variationKey=null}}", experimentDecisionNotification.toString()); + assertEquals("DecisionNotification{type='ab-test', userId='userID', attributes={user=attr}, decisionInfo={experimentKey=experimentKey, variationKey=null, experimentId='1234567', variationId='1234567'}}", experimentDecisionNotification.toString()); assertEquals("DecisionNotification{type='feature', userId='userID', attributes={user=attr}, decisionInfo={featureEnabled=false, sourceInfo={experimentKey=featureTest, variationKey=featureTestVariation}, source=feature-test, featureKey=featureKey}}", featureDecisionNotification.toString()); assertEquals("DecisionNotification{type='feature-variable', userId='userID', attributes={user=attr}, decisionInfo={variableType=string, featureEnabled=true, sourceInfo={}, variableValue=null, variableKey=featureVariableKey, source=rollout, featureKey=featureKey}}", featureVariableDecisionNotification.toString()); } From 1b393cb25ab784f623f97a70d66a3da3a35c6f65 Mon Sep 17 00:00:00 2001 From: esrakartalOpt Date: Mon, 5 May 2025 09:20:49 -0500 Subject: [PATCH 05/13] Fix test --- .../optimizely/ab/notification/DecisionNotificationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java b/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java index 281ea37dd..447721537 100644 --- a/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java +++ b/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java @@ -134,7 +134,7 @@ public void testGetDecisionInfo() { @Test public void testToString() { - assertEquals("DecisionNotification{type='ab-test', userId='userID', attributes={user=attr}, decisionInfo={experimentKey=experimentKey, variationKey=null, experimentId='1234567', variationId='1234567'}}", experimentDecisionNotification.toString()); + assertEquals("DecisionNotification{type='ab-test', userId='userID', attributes={user=attr}, decisionInfo={experimentKey=experimentKey, variationKey=null, experimentId=1234567, variationId=1234567}}", experimentDecisionNotification.toString()); assertEquals("DecisionNotification{type='feature', userId='userID', attributes={user=attr}, decisionInfo={featureEnabled=false, sourceInfo={experimentKey=featureTest, variationKey=featureTestVariation}, source=feature-test, featureKey=featureKey}}", featureDecisionNotification.toString()); assertEquals("DecisionNotification{type='feature-variable', userId='userID', attributes={user=attr}, decisionInfo={variableType=string, featureEnabled=true, sourceInfo={}, variableValue=null, variableKey=featureVariableKey, source=rollout, featureKey=featureKey}}", featureVariableDecisionNotification.toString()); } From 05d7d81e34dfdafaf4062499c80caa9534698f79 Mon Sep 17 00:00:00 2001 From: esrakartalOpt Date: Mon, 5 May 2025 11:27:14 -0500 Subject: [PATCH 06/13] Fix the tests --- core-api/src/main/java/com/optimizely/ab/Optimizely.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core-api/src/main/java/com/optimizely/ab/Optimizely.java b/core-api/src/main/java/com/optimizely/ab/Optimizely.java index c04fd373b..6eead11c6 100644 --- a/core-api/src/main/java/com/optimizely/ab/Optimizely.java +++ b/core-api/src/main/java/com/optimizely/ab/Optimizely.java @@ -1095,8 +1095,6 @@ private Variation getVariation(@Nonnull ProjectConfig projectConfig, .withExperimentKey(experiment.getKey()) .withVariation(variation) .withType(notificationType) - .withExperimentId(experiment.getId()) - .withVariationId(variation.getId()) .build(); notificationCenter.send(decisionNotification); @@ -1305,6 +1303,8 @@ private OptimizelyDecision createOptimizelyDecision( ProjectConfig projectConfig ) { String userId = user.getUserId(); + String experimentId = null; + String variationId = null; Boolean flagEnabled = false; if (flagDecision.variation != null) { @@ -1338,8 +1338,8 @@ private OptimizelyDecision createOptimizelyDecision( Boolean decisionEventDispatched = false; - String experimentId = flagDecision.experiment != null ? flagDecision.experiment.getId() : null; - String variationId = flagDecision.variation != null ? flagDecision.variation.getId() : null; + experimentId = flagDecision.experiment != null ? flagDecision.experiment.getId() : null; + variationId = flagDecision.variation != null ? flagDecision.variation.getId() : null; Map attributes = user.getAttributes(); Map copiedAttributes = new HashMap<>(attributes); From 7ac8437362da016737b479a2e11bef3c55c8d25f Mon Sep 17 00:00:00 2001 From: esrakartalOpt Date: Mon, 5 May 2025 11:38:05 -0500 Subject: [PATCH 07/13] Fix test --- .../java/com/optimizely/ab/OptimizelyUserContextTest.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core-api/src/test/java/com/optimizely/ab/OptimizelyUserContextTest.java b/core-api/src/test/java/com/optimizely/ab/OptimizelyUserContextTest.java index 34cf61543..bb2d36192 100644 --- a/core-api/src/test/java/com/optimizely/ab/OptimizelyUserContextTest.java +++ b/core-api/src/test/java/com/optimizely/ab/OptimizelyUserContextTest.java @@ -707,6 +707,8 @@ public void decisionNotification() { OptimizelyJSON variables = optimizely.getAllFeatureVariables(flagKey, userId); String ruleKey = "exp_no_audience"; List reasons = Collections.emptyList(); + String experimentId = "10420810910"; + String variationId = "10418551353"; final Map testDecisionInfoMap = new HashMap<>(); testDecisionInfoMap.put(FLAG_KEY, flagKey); @@ -715,6 +717,8 @@ public void decisionNotification() { testDecisionInfoMap.put(VARIABLES, variables.toMap()); testDecisionInfoMap.put(RULE_KEY, ruleKey); testDecisionInfoMap.put(REASONS, reasons); + testDecisionInfoMap.put(EXPERIMENT_ID, experimentId); + testDecisionInfoMap.put(VARIATION_ID, variationId); Map attributes = Collections.singletonMap("gender", "f"); OptimizelyUserContext user = optimizely.createUserContext(userId, attributes); From 295aacd461b00444530dd212cdb1f1351c7b3953 Mon Sep 17 00:00:00 2001 From: esrakartalOpt Date: Mon, 5 May 2025 11:58:17 -0500 Subject: [PATCH 08/13] Fix last test case --- .../optimizely/ab/notification/DecisionNotificationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java b/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java index 447721537..20b97e0dc 100644 --- a/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java +++ b/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java @@ -134,7 +134,7 @@ public void testGetDecisionInfo() { @Test public void testToString() { - assertEquals("DecisionNotification{type='ab-test', userId='userID', attributes={user=attr}, decisionInfo={experimentKey=experimentKey, variationKey=null, experimentId=1234567, variationId=1234567}}", experimentDecisionNotification.toString()); + assertEquals("DecisionNotification{type='ab-test', userId='userID', attributes={user=attr}, decisionInfo={experimentKey=experimentKey, variationKey=null, experimentId=null, variationId=null}}", experimentDecisionNotification.toString()); assertEquals("DecisionNotification{type='feature', userId='userID', attributes={user=attr}, decisionInfo={featureEnabled=false, sourceInfo={experimentKey=featureTest, variationKey=featureTestVariation}, source=feature-test, featureKey=featureKey}}", featureDecisionNotification.toString()); assertEquals("DecisionNotification{type='feature-variable', userId='userID', attributes={user=attr}, decisionInfo={variableType=string, featureEnabled=true, sourceInfo={}, variableValue=null, variableKey=featureVariableKey, source=rollout, featureKey=featureKey}}", featureVariableDecisionNotification.toString()); } From d813b3161ab5905871a21955b580d232831aed6a Mon Sep 17 00:00:00 2001 From: esrakartalOpt Date: Mon, 5 May 2025 13:01:52 -0500 Subject: [PATCH 09/13] Fix the test case --- .../optimizely/ab/notification/DecisionNotificationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java b/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java index 20b97e0dc..8fd2040a3 100644 --- a/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java +++ b/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java @@ -134,7 +134,7 @@ public void testGetDecisionInfo() { @Test public void testToString() { - assertEquals("DecisionNotification{type='ab-test', userId='userID', attributes={user=attr}, decisionInfo={experimentKey=experimentKey, variationKey=null, experimentId=null, variationId=null}}", experimentDecisionNotification.toString()); + assertEquals("DecisionNotification{type='ab-test', userId='userID', attributes={user=attr}, decisionInfo={variationId=1234567, experimentKey=experimentKey, experimentId=1234567, variationKey=null}}", experimentDecisionNotification.toString()); assertEquals("DecisionNotification{type='feature', userId='userID', attributes={user=attr}, decisionInfo={featureEnabled=false, sourceInfo={experimentKey=featureTest, variationKey=featureTestVariation}, source=feature-test, featureKey=featureKey}}", featureDecisionNotification.toString()); assertEquals("DecisionNotification{type='feature-variable', userId='userID', attributes={user=attr}, decisionInfo={variableType=string, featureEnabled=true, sourceInfo={}, variableValue=null, variableKey=featureVariableKey, source=rollout, featureKey=featureKey}}", featureVariableDecisionNotification.toString()); } From 7dc7c1476b0bb8d2ffbbeb47a20a003d7cae8d1e Mon Sep 17 00:00:00 2001 From: esrakartalOpt Date: Thu, 8 May 2025 19:12:56 -0500 Subject: [PATCH 10/13] Remove experiment decision changes --- .../ab/notification/DecisionNotification.java | 16 ---------------- .../notification/DecisionNotificationTest.java | 6 ------ 2 files changed, 22 deletions(-) diff --git a/core-api/src/main/java/com/optimizely/ab/notification/DecisionNotification.java b/core-api/src/main/java/com/optimizely/ab/notification/DecisionNotification.java index dd8026037..ab3fdc03d 100644 --- a/core-api/src/main/java/com/optimizely/ab/notification/DecisionNotification.java +++ b/core-api/src/main/java/com/optimizely/ab/notification/DecisionNotification.java @@ -97,13 +97,9 @@ public static ExperimentDecisionNotificationBuilder newExperimentDecisionNotific public static class ExperimentDecisionNotificationBuilder { public final static String EXPERIMENT_KEY = "experimentKey"; public final static String VARIATION_KEY = "variationKey"; - public final static String EXPERIMENT_ID = "experimentId"; - public final static String VARIATION_ID = "variationId"; private String type; private String experimentKey; - private String experimentId; - private String variationId; private Variation variation; private String userId; private Map attributes; @@ -134,16 +130,6 @@ public ExperimentDecisionNotificationBuilder withVariation(Variation variation) return this; } - public ExperimentDecisionNotificationBuilder withExperimentId(String experimentId) { - this.experimentId = experimentId; - return this; - } - - public ExperimentDecisionNotificationBuilder withVariationId(String variationId) { - this.variationId = variationId; - return this; - } - public DecisionNotification build() { if (type == null) { throw new OptimizelyRuntimeException("type not set"); @@ -155,9 +141,7 @@ public DecisionNotification build() { decisionInfo = new HashMap<>(); decisionInfo.put(EXPERIMENT_KEY, experimentKey); - decisionInfo.put(EXPERIMENT_ID, experimentId); decisionInfo.put(VARIATION_KEY, variation != null ? variation.getKey() : null); - decisionInfo.put(VARIATION_ID, variationId); return new DecisionNotification( type, diff --git a/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java b/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java index 8fd2040a3..5dacc81f7 100644 --- a/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java +++ b/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java @@ -37,7 +37,6 @@ public class DecisionNotificationTest { private static final Boolean FEATURE_ENABLED = Boolean.FALSE; private static final String EXPERIMENT_KEY = "experimentKey"; - private static final String EXPERIMENT_ID = "1234567"; private static final String FEATURE_KEY = "featureKey"; private static final String FEATURE_VARIABLE_KEY = "featureVariableKey"; private static final String FEATURE_TEST = "featureTest"; @@ -45,7 +44,6 @@ public class DecisionNotificationTest { private static final String USER_ID = "userID"; private static final Map USER_ATTRIBUTES = Collections.singletonMap("user", "attr"); private static final Variation VARIATION = mock(Variation.class); - private static final String VARIATION_ID = "1234567"; private FeatureTestSourceInfo featureTestSourceInfo; private RolloutSourceInfo rolloutSourceInfo; @@ -60,8 +58,6 @@ public void setUp() { .withAttributes(USER_ATTRIBUTES) .withExperimentKey(EXPERIMENT_KEY) .withVariation(VARIATION) - .withExperimentId(EXPERIMENT_ID) - .withVariationId(VARIATION_ID) .withType(NotificationCenter.DecisionNotificationType.AB_TEST.toString()) .build(); featureTestSourceInfo = new FeatureTestSourceInfo(FEATURE_TEST, FEATURE_TEST_VARIATION); @@ -111,8 +107,6 @@ public void testGetDecisionInfo() { HashMap expectedExperimentDecisionInfo = new HashMap<>(); expectedExperimentDecisionInfo.put(DecisionNotification.ExperimentDecisionNotificationBuilder.EXPERIMENT_KEY, EXPERIMENT_KEY); expectedExperimentDecisionInfo.put(DecisionNotification.ExperimentDecisionNotificationBuilder.VARIATION_KEY, VARIATION.getKey()); - expectedExperimentDecisionInfo.put(DecisionNotification.ExperimentDecisionNotificationBuilder.EXPERIMENT_ID, EXPERIMENT_ID); - expectedExperimentDecisionInfo.put(DecisionNotification.ExperimentDecisionNotificationBuilder.VARIATION_ID, VARIATION_ID); assertEquals(expectedExperimentDecisionInfo, experimentDecisionNotification.getDecisionInfo()); // Assert for Feature's DecisionInfo From e22632960850099bbe0a21cc4a6cbd69d074c262 Mon Sep 17 00:00:00 2001 From: esrakartalOpt Date: Thu, 8 May 2025 19:18:42 -0500 Subject: [PATCH 11/13] Fix test --- .../optimizely/ab/notification/DecisionNotificationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java b/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java index 5dacc81f7..8ba0e7f7b 100644 --- a/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java +++ b/core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java @@ -128,7 +128,7 @@ public void testGetDecisionInfo() { @Test public void testToString() { - assertEquals("DecisionNotification{type='ab-test', userId='userID', attributes={user=attr}, decisionInfo={variationId=1234567, experimentKey=experimentKey, experimentId=1234567, variationKey=null}}", experimentDecisionNotification.toString()); + assertEquals("DecisionNotification{type='ab-test', userId='userID', attributes={user=attr}, decisionInfo={experimentKey=experimentKey, variationKey=null}}", experimentDecisionNotification.toString()); assertEquals("DecisionNotification{type='feature', userId='userID', attributes={user=attr}, decisionInfo={featureEnabled=false, sourceInfo={experimentKey=featureTest, variationKey=featureTestVariation}, source=feature-test, featureKey=featureKey}}", featureDecisionNotification.toString()); assertEquals("DecisionNotification{type='feature-variable', userId='userID', attributes={user=attr}, decisionInfo={variableType=string, featureEnabled=true, sourceInfo={}, variableValue=null, variableKey=featureVariableKey, source=rollout, featureKey=featureKey}}", featureVariableDecisionNotification.toString()); } From 11f7daf208b79be129b78ca6d2cd843f058c8a9c Mon Sep 17 00:00:00 2001 From: esrakartalOpt Date: Fri, 9 May 2025 10:25:44 -0500 Subject: [PATCH 12/13] Fix test --- .../java/com/optimizely/ab/OptimizelyUserContextTest.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/core-api/src/test/java/com/optimizely/ab/OptimizelyUserContextTest.java b/core-api/src/test/java/com/optimizely/ab/OptimizelyUserContextTest.java index bb2d36192..34cf61543 100644 --- a/core-api/src/test/java/com/optimizely/ab/OptimizelyUserContextTest.java +++ b/core-api/src/test/java/com/optimizely/ab/OptimizelyUserContextTest.java @@ -707,8 +707,6 @@ public void decisionNotification() { OptimizelyJSON variables = optimizely.getAllFeatureVariables(flagKey, userId); String ruleKey = "exp_no_audience"; List reasons = Collections.emptyList(); - String experimentId = "10420810910"; - String variationId = "10418551353"; final Map testDecisionInfoMap = new HashMap<>(); testDecisionInfoMap.put(FLAG_KEY, flagKey); @@ -717,8 +715,6 @@ public void decisionNotification() { testDecisionInfoMap.put(VARIABLES, variables.toMap()); testDecisionInfoMap.put(RULE_KEY, ruleKey); testDecisionInfoMap.put(REASONS, reasons); - testDecisionInfoMap.put(EXPERIMENT_ID, experimentId); - testDecisionInfoMap.put(VARIATION_ID, variationId); Map attributes = Collections.singletonMap("gender", "f"); OptimizelyUserContext user = optimizely.createUserContext(userId, attributes); From d8465440b505a46929df80479689ff1dd73edba2 Mon Sep 17 00:00:00 2001 From: esrakartalOpt Date: Fri, 9 May 2025 10:38:11 -0500 Subject: [PATCH 13/13] Fix test --- .../java/com/optimizely/ab/OptimizelyUserContextTest.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core-api/src/test/java/com/optimizely/ab/OptimizelyUserContextTest.java b/core-api/src/test/java/com/optimizely/ab/OptimizelyUserContextTest.java index 34cf61543..bb2d36192 100644 --- a/core-api/src/test/java/com/optimizely/ab/OptimizelyUserContextTest.java +++ b/core-api/src/test/java/com/optimizely/ab/OptimizelyUserContextTest.java @@ -707,6 +707,8 @@ public void decisionNotification() { OptimizelyJSON variables = optimizely.getAllFeatureVariables(flagKey, userId); String ruleKey = "exp_no_audience"; List reasons = Collections.emptyList(); + String experimentId = "10420810910"; + String variationId = "10418551353"; final Map testDecisionInfoMap = new HashMap<>(); testDecisionInfoMap.put(FLAG_KEY, flagKey); @@ -715,6 +717,8 @@ public void decisionNotification() { testDecisionInfoMap.put(VARIABLES, variables.toMap()); testDecisionInfoMap.put(RULE_KEY, ruleKey); testDecisionInfoMap.put(REASONS, reasons); + testDecisionInfoMap.put(EXPERIMENT_ID, experimentId); + testDecisionInfoMap.put(VARIATION_ID, variationId); Map attributes = Collections.singletonMap("gender", "f"); OptimizelyUserContext user = optimizely.createUserContext(userId, attributes);