Skip to content

Commit 065badf

Browse files
committed
added property to flagset filter to provide sorted flagsets
1 parent 9f22a20 commit 065badf

File tree

10 files changed

+19
-31
lines changed

10 files changed

+19
-31
lines changed

splitio/client/client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -404,9 +404,9 @@ def _get_treatments_by_flag_sets(self, key, flag_sets, method, attributes=None):
404404
:return: Dictionary with the result of all the feature flags provided
405405
:rtype: dict
406406
"""
407-
feature_flags_names = self._get_feature_flag_names_by_flag_sets(flag_sets, method)
407+
feature_flags_names = self._get_feature_flag_names_by_flag_sets(flag_sets, method.value)
408408
if feature_flags_names == []:
409-
_LOGGER.warning("%s: No valid Flag set or no feature flags found for evaluating treatments" % (method))
409+
_LOGGER.warning("%s: No valid Flag set or no feature flags found for evaluating treatments" % (method.value))
410410
return {}
411411

412412
if 'config' in method.value:

splitio/client/input_validator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -597,4 +597,4 @@ def validate_flag_sets(flag_sets, method_name):
597597

598598
sanitized_flag_sets.add(flag_set)
599599

600-
return sorted(list(sanitized_flag_sets))
600+
return list(sanitized_flag_sets)

splitio/storage/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import abc
33
import threading
44

5-
65
class SplitStorage(object, metaclass=abc.ABCMeta):
76
"""Split storage interface implemented as an abstract class."""
87

@@ -324,6 +323,7 @@ def __init__(self, flag_sets=[]):
324323
"""Constructor."""
325324
self.flag_sets = set(flag_sets)
326325
self.should_filter = any(flag_sets)
326+
self.sorted_flag_sets = sorted(flag_sets)
327327

328328
def set_exist(self, flag_set):
329329
"""

splitio/sync/split.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ def _get_config_sets(self):
123123
"""
124124
if self._feature_flag_storage.flag_set_filter.flag_sets == set({}):
125125
return None
126-
return ','.join(self._feature_flag_storage.flag_set_filter.flag_sets)
126+
return ','.join(self._feature_flag_storage.flag_set_filter.sorted_flag_sets)
127127

128128
def synchronize_splits(self, till=None):
129129
"""

splitio/util/storage_helper.py

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -70,27 +70,6 @@ def combine_valid_flag_sets(result_sets):
7070
to_return.update(result_set)
7171
return to_return
7272

73-
def _check_flag_sets(feature_flag_storage, feature_flag):
74-
"""
75-
Check each flag set in given array, return it if exist in a given config flag set array, if config array is empty return all
76-
77-
:param flag_sets: Flag sets array
78-
:type flag_sets: list(str)
79-
:param config_flag_sets: Config flag sets array
80-
:type config_flag_sets: list(str)
81-
82-
:return: array of flag sets
83-
:rtype: list(str)
84-
"""
85-
sets_to_fetch = []
86-
for flag_set in flag_sets:
87-
if not flag_set_filter.set_exist(flag_set) and flag_set_filter.should_filter:
88-
_LOGGER.warning("Flag set %s is not part of the configured flag set list, ignoring the request." % (flag_set))
89-
continue
90-
sets_to_fetch.append(flag_set)
91-
92-
return sets_to_fetch
93-
9473
def combine_valid_flag_sets(result_sets):
9574
"""
9675
Check each flag set in given array of sets, combine all flag sets in one unique set

tests/client/test_input_validator.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1296,19 +1296,19 @@ def test_validate_pluggable_adapter(self):
12961296
def test_sanitize_flag_sets(self):
12971297
"""Test sanitization for flag sets."""
12981298
flag_sets = input_validator.validate_flag_sets([' set1', 'set2 ', 'set3'], 'm')
1299-
assert flag_sets == ['set1', 'set2', 'set3']
1299+
assert sorted(flag_sets) == ['set1', 'set2', 'set3']
13001300

13011301
flag_sets = input_validator.validate_flag_sets(['1set', '_set2'], 'm')
13021302
assert flag_sets == ['1set']
13031303

13041304
flag_sets = input_validator.validate_flag_sets(['Set1', 'SET2'], 'm')
1305-
assert flag_sets == ['set1', 'set2']
1305+
assert sorted(flag_sets) == ['set1', 'set2']
13061306

13071307
flag_sets = input_validator.validate_flag_sets(['se\t1', 's/et2', 's*et3', 's!et4', 'se@t5', 'se#t5', 'se$t5', 'se^t5', 'se%t5', 'se&t5'], 'm')
13081308
assert flag_sets == []
13091309

13101310
flag_sets = input_validator.validate_flag_sets(['set4', 'set1', 'set3', 'set1'], 'm')
1311-
assert flag_sets == ['set1', 'set3', 'set4']
1311+
assert sorted(flag_sets) == ['set1', 'set3', 'set4']
13121312

13131313
flag_sets = input_validator.validate_flag_sets(['w' * 50, 's' * 51], 'm')
13141314
assert flag_sets == ['w' * 50]

tests/storage/test_flag_sets.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,6 @@ def test_flag_set_filter(self):
5858
assert not flag_set_filter.intersect(set({'set4'}))
5959
assert not flag_set_filter.set_exist('set4')
6060
assert flag_set_filter.set_exist('set1')
61+
62+
flag_set_filter = FlagSetsFilter(['set5', 'set2', 'set6', 'set1'])
63+
assert flag_set_filter.sorted_flag_sets == ['set1', 'set2', 'set5', 'set6']

tests/sync/test_splits_synchronizer.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ def intersect(sets):
7474
return True
7575
storage.flag_set_filter = flag_set_filter
7676
storage.flag_set_filter.flag_sets = {}
77+
storage.flag_set_filter.sorted_flag_sets = []
7778

7879
split_synchronizer = SplitSynchronizer(api, storage)
7980

@@ -100,6 +101,7 @@ def intersect(sets):
100101
return True
101102
storage.flag_set_filter = flag_set_filter
102103
storage.flag_set_filter.flag_sets = {}
104+
storage.flag_set_filter.sorted_flag_sets = []
103105

104106
api = mocker.Mock()
105107
def get_changes(*args, **kwargs):
@@ -143,6 +145,7 @@ def intersect(sets):
143145
return True
144146
storage.flag_set_filter = flag_set_filter
145147
storage.flag_set_filter.flag_sets = {}
148+
storage.flag_set_filter.sorted_flag_sets = []
146149

147150
def change_number_mock():
148151
return 2
@@ -206,6 +209,7 @@ def intersect(sets):
206209

207210
storage.flag_set_filter = flag_set_filter
208211
storage.flag_set_filter.flag_sets = {}
212+
storage.flag_set_filter.sorted_flag_sets = []
209213

210214
split_synchronizer = SplitSynchronizer(api, storage)
211215
split_synchronizer._backoff = Backoff(1, 1)

tests/sync/test_synchronizer.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ def intersect(sets):
3030
return True
3131
storage.flag_set_filter = flag_set_filter
3232
storage.flag_set_filter.flag_sets = {}
33+
storage.flag_set_filter.sorted_flag_sets = []
3334

3435
def run(x, c):
3536
raise APIException("something broke")
@@ -55,6 +56,7 @@ def intersect(sets):
5556
return True
5657
storage.flag_set_filter = flag_set_filter
5758
storage.flag_set_filter.flag_sets = {}
59+
storage.flag_set_filter.sorted_flag_sets = []
5860

5961
def run(x, c):
6062
raise APIException("something broke", 414)
@@ -182,6 +184,7 @@ def intersect(sets):
182184
return True
183185
split_storage.flag_set_filter = flag_set_filter
184186
split_storage.flag_set_filter.flag_sets = {}
187+
split_storage.flag_set_filter.sorted_flag_sets = []
185188

186189
split_api = mocker.Mock()
187190
split_api.fetch_splits.return_value = {'splits': self.splits, 'since': 123,

tests/tasks/test_split_sync.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ def intersect(sets):
3333
return True
3434
storage.flag_set_filter = flag_set_filter
3535
storage.flag_set_filter.flag_sets = {}
36+
storage.flag_set_filter.sorted_flag_sets = []
3637

3738
api = mocker.Mock()
3839
splits = [{
@@ -102,8 +103,6 @@ def get_changes(*args, **kwargs):
102103
assert api.fetch_splits.mock_calls[0][1][1].cache_control_headers == True
103104
assert api.fetch_splits.mock_calls[1][1][0] == 123
104105
assert api.fetch_splits.mock_calls[1][1][1].cache_control_headers == True
105-
# assert mocker.call(-1, fetch_options) in api.fetch_splits.mock_calls
106-
# assert mocker.call(123, fetch_options) in api.fetch_splits.mock_calls
107106

108107
inserted_split = storage.update.mock_calls[0][1][0][0]
109108
assert isinstance(inserted_split, Split)

0 commit comments

Comments
 (0)