Skip to content

Commit 24caef5

Browse files
committed
Revert "Remove two problematic EvaluatorTest test methods"
This reverts commit 1afe510. AI-Session-Id: c83b3557-2c02-4d13-aaa4-273b7340163d AI-Tool: claude-code AI-Model: unknown
1 parent 1afe510 commit 24caef5

1 file changed

Lines changed: 107 additions & 0 deletions

File tree

client/src/test/java/io/split/engine/evaluator/EvaluatorTest.java

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,4 +186,111 @@ public void evaluateWithSetsNotHaveFlags() {
186186
Map<String, EvaluatorImp.TreatmentLabelAndChangeNumber> result = _evaluator.evaluateFeaturesByFlagSets(MATCHING_KEY, BUCKETING_KEY, sets, null);
187187
Assert.assertTrue(result.isEmpty());
188188
}
189+
190+
@Test
191+
public void evaluateWithPrerequisites() {
192+
Partition partition = new Partition();
193+
partition.treatment = TREATMENT_VALUE;
194+
partition.size = 100;
195+
_partitions.add(partition);
196+
ParsedCondition condition = new ParsedCondition(ConditionType.WHITELIST, _matcher, _partitions, "test whitelist label");
197+
_conditions.add(condition);
198+
List<Prerequisite> prerequisites = Arrays.asList(new Prerequisite("split1", Arrays.asList(TREATMENT_VALUE)));
199+
200+
ParsedSplit split = new ParsedSplit(SPLIT_NAME, 0, false, DEFAULT_TREATMENT_VALUE, _conditions, TRAFFIC_TYPE_VALUE, CHANGE_NUMBER, 60, 18, 2, _configurations, new HashSet<>(), true, new PrerequisitesMatcher(prerequisites));
201+
ParsedSplit split1 = new ParsedSplit("split1", 0, false, DEFAULT_TREATMENT_VALUE, _conditions, TRAFFIC_TYPE_VALUE, CHANGE_NUMBER, 60, 18, 2, _configurations, new HashSet<>(), true, new PrerequisitesMatcher(null));
202+
203+
Mockito.when(_splitCacheConsumer.get(SPLIT_NAME)).thenReturn(split);
204+
Mockito.when(_splitCacheConsumer.get("split1")).thenReturn(split1);
205+
206+
EvaluatorImp.TreatmentLabelAndChangeNumber result = _evaluator.evaluateFeature(MATCHING_KEY, BUCKETING_KEY, SPLIT_NAME, null);
207+
assertEquals(TREATMENT_VALUE, result.treatment);
208+
assertEquals("test whitelist label", result.label);
209+
assertEquals(CHANGE_NUMBER, result.changeNumber);
210+
211+
result = _evaluator.evaluateFeature(MATCHING_KEY, BUCKETING_KEY, SPLIT_NAME, null);
212+
assertEquals(DEFAULT_TREATMENT_VALUE, result.treatment);
213+
assertEquals(Labels.PREREQUISITES_NOT_MET, result.label);
214+
assertEquals(CHANGE_NUMBER, result.changeNumber);
215+
216+
// if split is killed, label should be killed.
217+
split = new ParsedSplit(SPLIT_NAME, 0, true, DEFAULT_TREATMENT_VALUE, _conditions, TRAFFIC_TYPE_VALUE, CHANGE_NUMBER, 60, 18, 2, _configurations, new HashSet<>(), true, new PrerequisitesMatcher(prerequisites));
218+
Mockito.when(_splitCacheConsumer.get(SPLIT_NAME)).thenReturn(split);
219+
result = _evaluator.evaluateFeature(MATCHING_KEY, BUCKETING_KEY, SPLIT_NAME, null);
220+
assertEquals(DEFAULT_TREATMENT_VALUE, result.treatment);
221+
assertEquals(Labels.KILLED, result.label);
222+
assertEquals(CHANGE_NUMBER, result.changeNumber);
223+
}
224+
225+
@Test
226+
public void evaluateFallbackTreatmentWorks() {
227+
Mockito.when(_splitCacheConsumer.get(SPLIT_NAME)).thenReturn(null);
228+
FallbackTreatmentsConfiguration fallbackTreatmentsConfiguration = new FallbackTreatmentsConfiguration(new FallbackTreatment("on"));
229+
FallbackTreatmentCalculator fallbackTreatmentCalculator = new FallbackTreatmentCalculatorImp(fallbackTreatmentsConfiguration);
230+
_evaluator = new EvaluatorImp(_splitCacheConsumer, _segmentCacheConsumer, _ruleBasedSegmentCacheConsumer, fallbackTreatmentCalculator);
231+
232+
EvaluatorImp.TreatmentLabelAndChangeNumber result = _evaluator.evaluateFeature(MATCHING_KEY, BUCKETING_KEY, SPLIT_NAME, null);
233+
assertEquals("on", result.treatment);
234+
assertEquals("fallback - definition not found", result.label);
235+
236+
ParsedSplit split = new ParsedSplit(SPLIT_NAME, 0, false, DEFAULT_TREATMENT_VALUE, _conditions, null, CHANGE_NUMBER, 60, 18, 2, _configurations, new HashSet<>(), false, null);
237+
Mockito.when(_splitCacheConsumer.get(SPLIT_NAME)).thenReturn(split);
238+
result = _evaluator.evaluateFeature(MATCHING_KEY, BUCKETING_KEY, SPLIT_NAME, null);
239+
assertEquals("on", result.treatment);
240+
assertEquals("fallback - exception", result.label);
241+
242+
// using byflag only
243+
Mockito.when(_splitCacheConsumer.get(SPLIT_NAME)).thenReturn(null);
244+
Mockito.when(_splitCacheConsumer.get("another_name")).thenReturn(null);
245+
fallbackTreatmentsConfiguration = new FallbackTreatmentsConfiguration(new HashMap<String, FallbackTreatment>() {{ put(SPLIT_NAME, new FallbackTreatment("off")); }} );
246+
fallbackTreatmentCalculator = new FallbackTreatmentCalculatorImp(fallbackTreatmentsConfiguration);
247+
_evaluator = new EvaluatorImp(_splitCacheConsumer, _segmentCacheConsumer, _ruleBasedSegmentCacheConsumer, fallbackTreatmentCalculator);
248+
249+
result = _evaluator.evaluateFeature(MATCHING_KEY, BUCKETING_KEY, SPLIT_NAME, null);
250+
assertEquals("off", result.treatment);
251+
assertEquals("fallback - definition not found", result.label);
252+
253+
result = _evaluator.evaluateFeature(MATCHING_KEY, BUCKETING_KEY, "another_name", null);
254+
assertEquals("control", result.treatment);
255+
assertEquals("definition not found", result.label);
256+
257+
split = new ParsedSplit(SPLIT_NAME, 0, false, DEFAULT_TREATMENT_VALUE, _conditions, null, CHANGE_NUMBER, 60, 18, 2, _configurations, new HashSet<>(), false, null);
258+
Mockito.when(_splitCacheConsumer.get(SPLIT_NAME)).thenReturn(split);
259+
result = _evaluator.evaluateFeature(MATCHING_KEY, BUCKETING_KEY, SPLIT_NAME, null);
260+
assertEquals("off", result.treatment);
261+
assertEquals("fallback - exception", result.label);
262+
263+
split = new ParsedSplit("another_name", 0, false, DEFAULT_TREATMENT_VALUE, _conditions, null, CHANGE_NUMBER, 60, 18, 2, _configurations, new HashSet<>(), false, null);
264+
Mockito.when(_splitCacheConsumer.get("another_name")).thenReturn(split);
265+
result = _evaluator.evaluateFeature(MATCHING_KEY, BUCKETING_KEY, "another_name", null);
266+
assertEquals("control", result.treatment);
267+
assertEquals("exception", result.label);
268+
269+
// with byflag
270+
Mockito.when(_splitCacheConsumer.get(SPLIT_NAME)).thenReturn(null);
271+
Mockito.when(_splitCacheConsumer.get("another_name")).thenReturn(null);
272+
fallbackTreatmentsConfiguration = new FallbackTreatmentsConfiguration(new FallbackTreatment("on"), new HashMap<String, FallbackTreatment>() {{ put(SPLIT_NAME, new FallbackTreatment("off")); }} );
273+
fallbackTreatmentCalculator = new FallbackTreatmentCalculatorImp(fallbackTreatmentsConfiguration);
274+
_evaluator = new EvaluatorImp(_splitCacheConsumer, _segmentCacheConsumer, _ruleBasedSegmentCacheConsumer, fallbackTreatmentCalculator);
275+
276+
result = _evaluator.evaluateFeature(MATCHING_KEY, BUCKETING_KEY, SPLIT_NAME, null);
277+
assertEquals("off", result.treatment);
278+
assertEquals("fallback - definition not found", result.label);
279+
280+
result = _evaluator.evaluateFeature(MATCHING_KEY, BUCKETING_KEY, "another_name", null);
281+
assertEquals("on", result.treatment);
282+
assertEquals("fallback - definition not found", result.label);
283+
284+
split = new ParsedSplit(SPLIT_NAME, 0, false, DEFAULT_TREATMENT_VALUE, _conditions, null, CHANGE_NUMBER, 60, 18, 2, _configurations, new HashSet<>(), false, null);
285+
Mockito.when(_splitCacheConsumer.get(SPLIT_NAME)).thenReturn(split);
286+
result = _evaluator.evaluateFeature(MATCHING_KEY, BUCKETING_KEY, SPLIT_NAME, null);
287+
assertEquals("off", result.treatment);
288+
assertEquals("fallback - exception", result.label);
289+
290+
split = new ParsedSplit("another_name", 0, false, DEFAULT_TREATMENT_VALUE, _conditions, null, CHANGE_NUMBER, 60, 18, 2, _configurations, new HashSet<>(), false, null);
291+
Mockito.when(_splitCacheConsumer.get("another_name")).thenReturn(split);
292+
result = _evaluator.evaluateFeature(MATCHING_KEY, BUCKETING_KEY, "another_name", null);
293+
assertEquals("on", result.treatment);
294+
assertEquals("fallback - exception", result.label);
295+
}
189296
}

0 commit comments

Comments
 (0)