Skip to content

Commit c830bc3

Browse files
authored
Merge pull request #574 from splitio/T-FME-4182-prereq-localhost-json
Updated localhostjson sync
2 parents 249d9c6 + c174578 commit c830bc3

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

splitio/sync/split.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,8 @@ def _make_feature_flag(feature_flag_name, conditions, configs=None):
433433
'defaultTreatment': 'control',
434434
'algo': 2,
435435
'conditions': conditions,
436-
'configurations': configs
436+
'configurations': configs,
437+
'prerequisites': []
437438
})
438439

439440
@staticmethod
@@ -542,6 +543,8 @@ def _sanitize_feature_flag_elements(self, parsed_feature_flags):
542543
if 'sets' not in feature_flag:
543544
feature_flag['sets'] = []
544545
feature_flag['sets'] = validate_flag_sets(feature_flag['sets'], 'Localhost Validator')
546+
if 'prerequisites' not in feature_flag:
547+
feature_flag['prerequisites'] = []
545548
sanitized_feature_flags.append(feature_flag)
546549
return sanitized_feature_flags
547550

@@ -560,6 +563,7 @@ def _sanitize_rb_segment_elements(self, parsed_rb_segments):
560563
if 'name' not in rb_segment or rb_segment['name'].strip() == '':
561564
_LOGGER.warning("A rule based segment in json file does not have (Name) or property is empty, skipping.")
562565
continue
566+
563567
for element in [('trafficTypeName', 'user', None, None, None, None),
564568
('status', splits.Status.ACTIVE.value, None, None, [e.value for e in splits.Status], None),
565569
('changeNumber', 0, 0, None, None, None)]:

tests/integration/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
rbsegments_json = [{"changeNumber": 12, "name": "some_segment", "status": "ACTIVE","trafficTypeName": "user","excluded":{"keys":[],"segments":[]},"conditions": []}]
44

55
split11 = {"ff": {"t": 1675443569027, "s": -1, "d": [
6-
{"trafficTypeName": "user", "name": "SPLIT_2","trafficAllocation": 100,"trafficAllocationSeed": 1057590779, "seed": -113875324, "status": "ACTIVE","killed": False, "defaultTreatment": "off", "changeNumber": 1675443569027,"algo": 2, "configurations": {},"conditions": [{"conditionType": "ROLLOUT","matcherGroup": {"combiner": "AND","matchers": [{"keySelector": { "trafficType": "user", "attribute": None },"matcherType": "ALL_KEYS","negate": False,"userDefinedSegmentMatcherData": None,"whitelistMatcherData": None,"unaryNumericMatcherData": None,"betweenMatcherData": None,"booleanMatcherData": None,"dependencyMatcherData": None,"stringMatcherData": None}]},"partitions": [{ "treatment": "on", "size": 100 },{ "treatment": "off", "size": 0 }],"label": "default rule"}], "sets": ["set_1"], "impressionsDisabled": False},
6+
{"trafficTypeName": "user", "name": "SPLIT_2","trafficAllocation": 100,"trafficAllocationSeed": 1057590779, "seed": -113875324, "status": "ACTIVE","killed": False, "defaultTreatment": "off", "changeNumber": 1675443569027,"algo": 2, "configurations": {},"conditions": [{"conditionType": "ROLLOUT","matcherGroup": {"combiner": "AND","matchers": [{"keySelector": { "trafficType": "user", "attribute": None },"matcherType": "ALL_KEYS","negate": False,"userDefinedSegmentMatcherData": None,"whitelistMatcherData": None,"unaryNumericMatcherData": None,"betweenMatcherData": None,"booleanMatcherData": None,"dependencyMatcherData": None,"stringMatcherData": None}]},"partitions": [{ "treatment": "on", "size": 100 },{ "treatment": "off", "size": 0 }],"label": "default rule"}], "sets": ["set_1"], "impressionsDisabled": False, 'prerequisites': []},
77
{"trafficTypeName": "user", "name": "SPLIT_1", "trafficAllocation": 100, "trafficAllocationSeed": -1780071202,"seed": -1442762199, "status": "ACTIVE","killed": False, "defaultTreatment": "off", "changeNumber": 1675443537882,"algo": 2, "configurations": {},"conditions": [{"conditionType": "ROLLOUT", "matcherGroup": {"combiner": "AND","matchers": [{"keySelector": { "trafficType": "user", "attribute": None },"matcherType": "ALL_KEYS","negate": False,"userDefinedSegmentMatcherData": None,"whitelistMatcherData": None,"unaryNumericMatcherData": None,"betweenMatcherData": None,"booleanMatcherData": None,"dependencyMatcherData": None,"stringMatcherData": None}]},"partitions": [{ "treatment": "on", "size": 0 },{ "treatment": "off", "size": 100 }],"label": "default rule"}], "sets": ["set_1", "set_2"]},
88
{"trafficTypeName": "user", "name": "SPLIT_3","trafficAllocation": 100,"trafficAllocationSeed": 1057590779, "seed": -113875324, "status": "ACTIVE","killed": False, "defaultTreatment": "off", "changeNumber": 1675443569027,"algo": 2, "configurations": {},"conditions": [{"conditionType": "ROLLOUT","matcherGroup": {"combiner": "AND","matchers": [{"keySelector": { "trafficType": "user", "attribute": None },"matcherType": "ALL_KEYS","negate": False,"userDefinedSegmentMatcherData": None,"whitelistMatcherData": None,"unaryNumericMatcherData": None,"betweenMatcherData": None,"booleanMatcherData": None,"dependencyMatcherData": None,"stringMatcherData": None}]},"partitions": [{ "treatment": "on", "size": 100 },{ "treatment": "off", "size": 0 }],"label": "default rule"}], "sets": ["set_1"], "impressionsDisabled": True}
99
]}, "rbs": {"t": -1, "s": -1, "d": rbsegments_json}}

tests/sync/test_splits_synchronizer.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1185,6 +1185,10 @@ def test_elements_sanitization(self, mocker):
11851185
split[0]['algo'] = 1
11861186
assert (split_synchronizer._sanitize_feature_flag_elements(split)[0]['algo'] == 2)
11871187

1188+
split = splits_json["splitChange1_1"]['ff']['d'].copy()
1189+
del split[0]['prerequisites']
1190+
assert (split_synchronizer._sanitize_feature_flag_elements(split)[0]['prerequisites'] == [])
1191+
11881192
# test 'status' is set to ACTIVE when None
11891193
rbs = copy.deepcopy(json_body["rbs"]["d"])
11901194
rbs[0]['status'] = None

0 commit comments

Comments
 (0)