Skip to content

Commit b0323c4

Browse files
Merge branch 'master' into ali/implement_if_modified
2 parents 82c63ea + 73a9d88 commit b0323c4

File tree

4 files changed

+41
-13
lines changed

4 files changed

+41
-13
lines changed

core-api/src/main/java/com/optimizely/ab/config/FeatureVariable.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,11 @@ public static VariableType fromString(String variableTypeString) {
9696

9797
return null;
9898
}
99+
100+
@Override
101+
public String toString() {
102+
return variableType;
103+
}
99104
}
100105

101106
private final String id;

core-api/src/main/java/com/optimizely/ab/notification/DecisionNotification.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,17 @@ public String getUserId() {
7979
return decisionInfo;
8080
}
8181

82+
@Override
83+
public String toString() {
84+
final StringBuilder sb = new StringBuilder("DecisionNotification{");
85+
sb.append("type='").append(type).append('\'');
86+
sb.append(", userId='").append(userId).append('\'');
87+
sb.append(", attributes=").append(attributes);
88+
sb.append(", decisionInfo=").append(decisionInfo);
89+
sb.append('}');
90+
return sb.toString();
91+
}
92+
8293
public static ExperimentDecisionNotificationBuilder newExperimentDecisionNotificationBuilder() {
8394
return new ExperimentDecisionNotificationBuilder();
8495
}
@@ -303,7 +314,7 @@ public DecisionNotification build() {
303314
decisionInfo.put(FEATURE_KEY, featureKey);
304315
decisionInfo.put(FEATURE_ENABLED, featureEnabled);
305316
decisionInfo.put(VARIABLE_KEY, variableKey);
306-
decisionInfo.put(VARIABLE_TYPE, variableType);
317+
decisionInfo.put(VARIABLE_TYPE, variableType.toString());
307318
decisionInfo.put(VARIABLE_VALUE, variableValue);
308319
SourceInfo sourceInfo = new RolloutSourceInfo();
309320

core-api/src/test/java/com/optimizely/ab/OptimizelyTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3074,7 +3074,7 @@ public void getFeatureVariableWithListenerUserInExperimentFeatureOn() throws Exc
30743074
testDecisionInfoMap.put(FEATURE_KEY, validFeatureKey);
30753075
testDecisionInfoMap.put(FEATURE_ENABLED, true);
30763076
testDecisionInfoMap.put(VARIABLE_KEY, validVariableKey);
3077-
testDecisionInfoMap.put(VARIABLE_TYPE, FeatureVariable.VariableType.STRING);
3077+
testDecisionInfoMap.put(VARIABLE_TYPE, FeatureVariable.VariableType.STRING.toString());
30783078
testDecisionInfoMap.put(VARIABLE_VALUE, expectedValue);
30793079
testDecisionInfoMap.put(SOURCE, FeatureDecision.DecisionSource.FEATURE_TEST.toString());
30803080
testDecisionInfoMap.put(SOURCE_INFO, testSourceInfo);
@@ -3127,7 +3127,7 @@ public void getFeatureVariableWithListenerUserInExperimentFeatureOff() {
31273127
testDecisionInfoMap.put(FEATURE_KEY, validFeatureKey);
31283128
testDecisionInfoMap.put(FEATURE_ENABLED, false);
31293129
testDecisionInfoMap.put(VARIABLE_KEY, validVariableKey);
3130-
testDecisionInfoMap.put(VARIABLE_TYPE, FeatureVariable.VariableType.STRING);
3130+
testDecisionInfoMap.put(VARIABLE_TYPE, FeatureVariable.VariableType.STRING.toString());
31313131
testDecisionInfoMap.put(VARIABLE_VALUE, expectedValue);
31323132
testDecisionInfoMap.put(SOURCE, FeatureDecision.DecisionSource.FEATURE_TEST.toString());
31333133
testDecisionInfoMap.put(SOURCE_INFO, testSourceInfo);
@@ -3177,7 +3177,7 @@ public void getFeatureVariableWithListenerUserInRollOutFeatureOn() throws Except
31773177
testDecisionInfoMap.put(FEATURE_KEY, validFeatureKey);
31783178
testDecisionInfoMap.put(FEATURE_ENABLED, true);
31793179
testDecisionInfoMap.put(VARIABLE_KEY, validVariableKey);
3180-
testDecisionInfoMap.put(VARIABLE_TYPE, FeatureVariable.VariableType.STRING);
3180+
testDecisionInfoMap.put(VARIABLE_TYPE, FeatureVariable.VariableType.STRING.toString());
31813181
testDecisionInfoMap.put(VARIABLE_VALUE, expectedValue);
31823182
testDecisionInfoMap.put(SOURCE, FeatureDecision.DecisionSource.ROLLOUT.toString());
31833183
testDecisionInfoMap.put(SOURCE_INFO, Collections.EMPTY_MAP);
@@ -3227,7 +3227,7 @@ public void getFeatureVariableWithListenerUserNotInRollOutFeatureOff() {
32273227
testDecisionInfoMap.put(FEATURE_KEY, validFeatureKey);
32283228
testDecisionInfoMap.put(FEATURE_ENABLED, false);
32293229
testDecisionInfoMap.put(VARIABLE_KEY, validVariableKey);
3230-
testDecisionInfoMap.put(VARIABLE_TYPE, FeatureVariable.VariableType.BOOLEAN);
3230+
testDecisionInfoMap.put(VARIABLE_TYPE, FeatureVariable.VariableType.BOOLEAN.toString());
32313231
testDecisionInfoMap.put(VARIABLE_VALUE, expectedValue);
32323232
testDecisionInfoMap.put(SOURCE, FeatureDecision.DecisionSource.ROLLOUT.toString());
32333233
testDecisionInfoMap.put(SOURCE_INFO, Collections.EMPTY_MAP);
@@ -3276,7 +3276,7 @@ public void getFeatureVariableIntegerWithListenerUserInRollOutFeatureOn() {
32763276
testDecisionInfoMap.put(FEATURE_KEY, validFeatureKey);
32773277
testDecisionInfoMap.put(FEATURE_ENABLED, true);
32783278
testDecisionInfoMap.put(VARIABLE_KEY, validVariableKey);
3279-
testDecisionInfoMap.put(VARIABLE_TYPE, FeatureVariable.VariableType.INTEGER);
3279+
testDecisionInfoMap.put(VARIABLE_TYPE, FeatureVariable.VariableType.INTEGER.toString());
32803280
testDecisionInfoMap.put(VARIABLE_VALUE, expectedValue);
32813281
testDecisionInfoMap.put(SOURCE, FeatureDecision.DecisionSource.ROLLOUT.toString());
32823282
testDecisionInfoMap.put(SOURCE_INFO, Collections.EMPTY_MAP);
@@ -3328,7 +3328,7 @@ public void getFeatureVariableDoubleWithListenerUserInExperimentFeatureOn() thro
33283328
testDecisionInfoMap.put(FEATURE_KEY, validFeatureKey);
33293329
testDecisionInfoMap.put(FEATURE_ENABLED, true);
33303330
testDecisionInfoMap.put(VARIABLE_KEY, validVariableKey);
3331-
testDecisionInfoMap.put(VARIABLE_TYPE, FeatureVariable.VariableType.DOUBLE);
3331+
testDecisionInfoMap.put(VARIABLE_TYPE, FeatureVariable.VariableType.DOUBLE.toString());
33323332
testDecisionInfoMap.put(VARIABLE_VALUE, 3.14);
33333333
testDecisionInfoMap.put(SOURCE, FeatureDecision.DecisionSource.FEATURE_TEST.toString());
33343334
testDecisionInfoMap.put(SOURCE_INFO, testSourceInfo);

core-api/src/test/java/com/optimizely/ab/notification/DecisionNotificationTest.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,14 @@ public class DecisionNotificationTest {
3939
private static final String EXPERIMENT_KEY = "experimentKey";
4040
private static final String FEATURE_KEY = "featureKey";
4141
private static final String FEATURE_VARIABLE_KEY = "featureVariableKey";
42+
private static final String FEATURE_TEST = "featureTest";
43+
private static final String FEATURE_TEST_VARIATION = "featureTestVariation";
4244
private static final String USER_ID = "userID";
4345
private static final Map<String, String> USER_ATTRIBUTES = Collections.singletonMap("user", "attr");
44-
private static final RolloutSourceInfo rolloutSourceInfo = mock(RolloutSourceInfo.class);
4546
private static final Variation VARIATION = mock(Variation.class);
4647

48+
private FeatureTestSourceInfo featureTestSourceInfo;
49+
private RolloutSourceInfo rolloutSourceInfo;
4750
private DecisionNotification experimentDecisionNotification;
4851
private DecisionNotification featureDecisionNotification;
4952
private DecisionNotification featureVariableDecisionNotification;
@@ -57,13 +60,15 @@ public void setUp() {
5760
.withVariation(VARIATION)
5861
.withType(NotificationCenter.DecisionNotificationType.AB_TEST.toString())
5962
.build();
63+
featureTestSourceInfo = new FeatureTestSourceInfo(FEATURE_TEST, FEATURE_TEST_VARIATION);
64+
rolloutSourceInfo = new RolloutSourceInfo();
6065
featureDecisionNotification = DecisionNotification.newFeatureDecisionNotificationBuilder()
6166
.withUserId(USER_ID)
6267
.withFeatureKey(FEATURE_KEY)
6368
.withFeatureEnabled(FEATURE_ENABLED)
64-
.withSource(FeatureDecision.DecisionSource.ROLLOUT)
69+
.withSource(FeatureDecision.DecisionSource.FEATURE_TEST)
6570
.withAttributes(USER_ATTRIBUTES)
66-
.withSourceInfo(rolloutSourceInfo)
71+
.withSourceInfo(featureTestSourceInfo)
6772
.build();
6873
featureVariableDecisionNotification = DecisionNotification.newFeatureVariableDecisionNotificationBuilder()
6974
.withUserId(USER_ID)
@@ -108,19 +113,26 @@ public void testGetDecisionInfo() {
108113
Map<String, ?> actualFeatureDecisionInfo = featureDecisionNotification.getDecisionInfo();
109114
assertFalse((Boolean) actualFeatureDecisionInfo.get(DecisionNotification.FeatureDecisionNotificationBuilder.FEATURE_ENABLED));
110115
assertEquals(FEATURE_KEY, actualFeatureDecisionInfo.get(DecisionNotification.FeatureDecisionNotificationBuilder.FEATURE_KEY));
111-
assertEquals(FeatureDecision.DecisionSource.ROLLOUT.toString(), actualFeatureDecisionInfo.get(DecisionNotification.FeatureDecisionNotificationBuilder.SOURCE));
112-
assertEquals(rolloutSourceInfo.get(), actualFeatureDecisionInfo.get(DecisionNotification.FeatureDecisionNotificationBuilder.SOURCE_INFO));
116+
assertEquals(FeatureDecision.DecisionSource.FEATURE_TEST.toString(), actualFeatureDecisionInfo.get(DecisionNotification.FeatureDecisionNotificationBuilder.SOURCE));
117+
assertEquals(featureTestSourceInfo.get(), actualFeatureDecisionInfo.get(DecisionNotification.FeatureDecisionNotificationBuilder.SOURCE_INFO));
113118

114119
// Assert for Feature Variable's DecisionInfo
115120
Map<String, ?> actualFeatureVariableDecisionInfo = featureVariableDecisionNotification.getDecisionInfo();
116121
assertTrue((Boolean) actualFeatureVariableDecisionInfo.get(DecisionNotification.FeatureVariableDecisionNotificationBuilder.FEATURE_ENABLED));
117122
assertEquals(FEATURE_KEY, actualFeatureVariableDecisionInfo.get(DecisionNotification.FeatureVariableDecisionNotificationBuilder.FEATURE_KEY));
118123
assertEquals(FEATURE_VARIABLE_KEY, actualFeatureVariableDecisionInfo.get(DecisionNotification.FeatureVariableDecisionNotificationBuilder.VARIABLE_KEY));
119-
assertEquals(FeatureVariable.VariableType.STRING, actualFeatureVariableDecisionInfo.get(DecisionNotification.FeatureVariableDecisionNotificationBuilder.VARIABLE_TYPE));
124+
assertEquals(FeatureVariable.VariableType.STRING.toString(), actualFeatureVariableDecisionInfo.get(DecisionNotification.FeatureVariableDecisionNotificationBuilder.VARIABLE_TYPE));
120125
assertEquals(FeatureDecision.DecisionSource.ROLLOUT.toString(), actualFeatureVariableDecisionInfo.get(DecisionNotification.FeatureVariableDecisionNotificationBuilder.SOURCE));
121126
assertEquals(rolloutSourceInfo.get(), actualFeatureVariableDecisionInfo.get(DecisionNotification.FeatureVariableDecisionNotificationBuilder.SOURCE_INFO));
122127
}
123128

129+
@Test
130+
public void testToString() {
131+
assertEquals("DecisionNotification{type='ab-test', userId='userID', attributes={user=attr}, decisionInfo={experimentKey=experimentKey, variationKey=null}}", experimentDecisionNotification.toString());
132+
assertEquals("DecisionNotification{type='feature', userId='userID', attributes={user=attr}, decisionInfo={featureEnabled=false, sourceInfo={experimentKey=featureTest, variationKey=featureTestVariation}, source=feature-test, featureKey=featureKey}}", featureDecisionNotification.toString());
133+
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());
134+
}
135+
124136
@Test(expected = OptimizelyRuntimeException.class)
125137
public void nullTypeFailsExperimentNotificationBuild() {
126138
DecisionNotification.newExperimentDecisionNotificationBuilder()

0 commit comments

Comments
 (0)