1
1
/*
2
- * Copyright 2017, 2019, Optimizely
2
+ * Copyright 2017, 2019-2021 , Optimizely
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
@@ -61,7 +61,7 @@ public override string ToString()
61
61
public void Initialize ( )
62
62
{
63
63
LoggerMock = new Mock < ILogger > ( ) ;
64
- DecisionReasons = DefaultDecisionReasons . NewInstance ( ) ;
64
+ DecisionReasons = DefaultDecisionReasons . NewInstance ( new OptimizelyDecideOption [ ] { OptimizelyDecideOption . INCLUDE_REASONS } ) ;
65
65
Config = DatafileProjectConfig . Create ( TestData . Datafile , LoggerMock . Object , new ErrorHandler . NoOpErrorHandler ( ) ) ;
66
66
}
67
67
@@ -105,13 +105,16 @@ public void TestBucketValidExperimentNotInGroup()
105
105
LoggerMock . Verify ( l => l . Log ( It . IsAny < LogLevel > ( ) , It . IsAny < string > ( ) ) , Times . Exactly ( 2 ) ) ;
106
106
LoggerMock . Verify ( l => l . Log ( LogLevel . DEBUG , "Assigned bucket [3000] to user [testUserId] with bucketing ID [testBucketingIdControl!]." ) ) ;
107
107
LoggerMock . Verify ( l => l . Log ( LogLevel . INFO , "User [testUserId] is in variation [control] of experiment [test_experiment]." ) ) ;
108
+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 0 ] , "User [testUserId] is in variation [control] of experiment [test_experiment]." ) ;
109
+
108
110
// variation
109
111
Assert . AreEqual ( new Variation { Id = "7721010009" , Key = "variation" } ,
110
112
bucketer . Bucket ( Config , Config . GetExperimentFromKey ( "test_experiment" ) , TestBucketingIdControl , TestUserId , DecisionReasons ) ) ;
111
113
112
114
LoggerMock . Verify ( l => l . Log ( It . IsAny < LogLevel > ( ) , It . IsAny < string > ( ) ) , Times . Exactly ( 4 ) ) ;
113
115
LoggerMock . Verify ( l => l . Log ( LogLevel . DEBUG , "Assigned bucket [7000] to user [testUserId] with bucketing ID [testBucketingIdControl!]." ) ) ;
114
116
LoggerMock . Verify ( l => l . Log ( LogLevel . INFO , "User [testUserId] is in variation [variation] of experiment [test_experiment]." ) ) ;
117
+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 1 ] , "User [testUserId] is in variation [variation] of experiment [test_experiment]." ) ;
115
118
116
119
// no variation
117
120
Assert . AreEqual ( new Variation { } ,
@@ -120,7 +123,9 @@ public void TestBucketValidExperimentNotInGroup()
120
123
LoggerMock . Verify ( l => l . Log ( It . IsAny < LogLevel > ( ) , It . IsAny < string > ( ) ) , Times . Exactly ( 6 ) ) ;
121
124
LoggerMock . Verify ( l => l . Log ( LogLevel . DEBUG , "Assigned bucket [9000] to user [testUserId] with bucketing ID [testBucketingIdControl!]." ) ) ;
122
125
LoggerMock . Verify ( l => l . Log ( LogLevel . INFO , "User [testUserId] is in no variation." ) ) ;
123
- Assert . AreEqual ( DecisionReasons . ToReport ( ) . Count , 0 ) ;
126
+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 2 ] , "User [testUserId] is in no variation." ) ;
127
+
128
+ Assert . AreEqual ( DecisionReasons . ToReport ( ) . Count , 3 ) ;
124
129
}
125
130
126
131
[ Test ]
@@ -155,7 +160,12 @@ public void TestBucketValidExperimentInGroup()
155
160
LoggerMock . Verify ( l => l . Log ( LogLevel . INFO , "User [testUserId] is not in experiment [group_experiment_1] of group [7722400015]." ) ) ;
156
161
157
162
LoggerMock . Verify ( l => l . Log ( It . IsAny < LogLevel > ( ) , It . IsAny < string > ( ) ) , Times . Exactly ( 10 ) ) ;
158
- Assert . AreEqual ( DecisionReasons . ToReport ( ) . Count , 0 ) ;
163
+ Assert . AreEqual ( DecisionReasons . ToReport ( ) . Count , 5 ) ;
164
+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 0 ] , "User [testUserId] is in experiment [group_experiment_1] of group [7722400015]." ) ;
165
+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 1 ] , "User [testUserId] is in variation [group_exp_1_var_1] of experiment [group_experiment_1]." ) ;
166
+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 2 ] , "User [testUserId] is in experiment [group_experiment_1] of group [7722400015]." ) ;
167
+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 3 ] , "User [testUserId] is in variation [group_exp_1_var_2] of experiment [group_experiment_1]." ) ;
168
+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 4 ] , "User [testUserId] is not in experiment [group_experiment_1] of group [7722400015]." ) ;
159
169
}
160
170
161
171
[ Test ]
@@ -180,7 +190,8 @@ public void TestBucketWithBucketingId()
180
190
// make sure that the bucketing ID is used for the variation bucketing and not the user ID
181
191
Assert . AreEqual ( expectedVariation ,
182
192
bucketer . Bucket ( Config , experiment , TestBucketingIdControl , TestUserIdBucketsToVariation , DecisionReasons ) ) ;
183
- Assert . AreEqual ( DecisionReasons . ToReport ( ) . Count , 0 ) ;
193
+ Assert . AreEqual ( DecisionReasons . ToReport ( ) . Count , 1 ) ;
194
+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 0 ] , "User [bucketsToVariation!] is in variation [control] of experiment [test_experiment]." ) ;
184
195
}
185
196
186
197
// Test for invalid experiment keys, null variation should be returned
@@ -206,7 +217,9 @@ public void TestBucketVariationGroupedExperimentsWithBucketingId()
206
217
Assert . AreEqual ( expectedGroupVariation ,
207
218
bucketer . Bucket ( Config , Config . GetExperimentFromKey ( "group_experiment_2" ) ,
208
219
TestBucketingIdGroupExp2Var2 , TestUserIdBucketsToNoGroup , DecisionReasons ) ) ;
209
- Assert . AreEqual ( DecisionReasons . ToReport ( ) . Count , 0 ) ;
220
+ Assert . AreEqual ( DecisionReasons . ToReport ( ) . Count , 2 ) ;
221
+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 0 ] , "User [testUserId] is in experiment [group_experiment_2] of group [7722400015]." ) ;
222
+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 1 ] , "User [testUserId] is in variation [group_exp_2_var_2] of experiment [group_experiment_2]." ) ;
210
223
}
211
224
212
225
// Make sure that user gets bucketed into the rollout rule.
@@ -220,7 +233,8 @@ public void TestBucketRolloutRule()
220
233
221
234
Assert . True ( TestData . CompareObjects ( expectedVariation ,
222
235
bucketer . Bucket ( Config , rolloutRule , "testBucketingId" , TestUserId , DecisionReasons ) ) ) ;
223
- Assert . AreEqual ( DecisionReasons . ToReport ( ) . Count , 0 ) ;
236
+ Assert . AreEqual ( DecisionReasons . ToReport ( ) . Count , 1 ) ;
237
+ Assert . AreEqual ( DecisionReasons . ToReport ( ) [ 0 ] , "User [testUserId] is in variation [177773] of experiment [177772]." ) ;
224
238
}
225
239
}
226
240
}
0 commit comments