Skip to content

Commit 3e27c40

Browse files
authored
Merge pull request #457 from splitio/flagsets-client-manager
added client.manager test, minor fix in models.splits and updated con…
2 parents 1ee5866 + f62b88a commit 3e27c40

File tree

3 files changed

+48
-6
lines changed

3 files changed

+48
-6
lines changed

splitio/client/config.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
'storageWrapper': None,
6161
'storagePrefix': None,
6262
'storageType': None,
63-
'FlagSets': None
63+
'FlagSetsFilter': None
6464
}
6565

6666
def _parse_operation_mode(sdk_key, config):
@@ -179,6 +179,6 @@ def sanitize(sdk_key, config):
179179
_LOGGER.warning('metricRefreshRate parameter minimum value is 60 seconds, defaulting to 3600 seconds.')
180180
processed['metricsRefreshRate'] = 3600
181181

182-
processed['FlagSets'] = _sanitize_flag_sets(processed['FlagSets']) if processed['FlagSets'] is not None else None
182+
processed['FlagSetsFilter'] = sanitize_flag_sets(processed['FlagSetsFilter']) if processed['FlagSetsFilter'] is not None else None
183183

184184
return processed

splitio/models/splits.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ def to_split_view(self):
200200
list(set(part.treatment for cond in self.conditions for part in cond.partitions)),
201201
self.change_number,
202202
self._configurations if self._configurations is not None else {},
203-
self._sets
203+
self._sets if self._sets is not None else []
204204
)
205205

206206
def local_kill(self, default_treatment, change_number):

tests/client/test_manager.py

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
"""SDK main manager test module."""
2+
import pytest
23

34
from splitio.client.factory import SplitFactory
45
from splitio.client.manager import SplitManager, _LOGGER as _logger
56
from splitio.storage import SplitStorage, EventStorage, ImpressionStorage, SegmentStorage
6-
from splitio.storage.inmemmory import InMemoryTelemetryStorage
7+
from splitio.storage.inmemmory import InMemoryTelemetryStorage, InMemorySplitStorage
8+
from splitio.models import splits
79
from splitio.engine.impressions.impressions import Manager as ImpressionManager
810
from splitio.engine.telemetry import TelemetryStorageProducer, TelemetryStorageConsumer
911
from splitio.recorder.recorder import StandardRecorder
10-
12+
from tests.models.test_splits import SplitTests
1113

1214
class ManagerTests(object): # pylint: disable=too-few-public-methods
1315
"""Split manager test cases."""
@@ -19,7 +21,6 @@ def test_evaluations_before_running_post_fork(self, mocker):
1921
impmanager = mocker.Mock(spec=ImpressionManager)
2022
telemetry_storage = InMemoryTelemetryStorage()
2123
telemetry_producer = TelemetryStorageProducer(telemetry_storage)
22-
telemetry_consumer = TelemetryStorageConsumer(telemetry_storage)
2324
recorder = StandardRecorder(impmanager, mocker.Mock(), mocker.Mock(), telemetry_producer.get_telemetry_evaluation_producer())
2425
factory = SplitFactory(mocker.Mock(),
2526
{'splits': mocker.Mock(),
@@ -55,3 +56,44 @@ def test_evaluations_before_running_post_fork(self, mocker):
5556
assert manager.splits() == []
5657
assert _logger.error.mock_calls == expected_msg
5758
_logger.reset_mock()
59+
60+
def test_manager_calls(self, mocker):
61+
split_storage = InMemorySplitStorage()
62+
split = splits.from_raw(SplitTests.raw)
63+
split_storage.update([split], [], 123)
64+
factory = SplitFactory(mocker.Mock(),
65+
{'splits': split_storage,
66+
'segments': mocker.Mock(),
67+
'impressions': mocker.Mock(),
68+
'events': mocker.Mock()},
69+
mocker.Mock(),
70+
mocker.Mock(),
71+
mocker.Mock(),
72+
mocker.Mock(),
73+
mocker.Mock(),
74+
mocker.Mock(),
75+
mocker.Mock(),
76+
False
77+
)
78+
manager = SplitManager(factory)
79+
splits_view = manager.splits()
80+
self._verify_split(splits_view[0])
81+
assert manager.split_names() == ['some_name']
82+
split_view = manager.split('some_name')
83+
self._verify_split(split_view)
84+
split2 = SplitTests.raw.copy()
85+
split2['sets'] = None
86+
split2['name'] = 'no_sets_split'
87+
split_storage.update([splits.from_raw(split2)], [], 123)
88+
89+
split_view = manager.split('no_sets_split')
90+
assert split_view.sets == []
91+
92+
def _verify_split(self, split):
93+
assert split.name == 'some_name'
94+
assert split.traffic_type == 'user'
95+
assert split.killed == False
96+
assert sorted(split.treatments) == ['off', 'on']
97+
assert split.change_number == 123
98+
assert split.configs == {'on': '{"color": "blue", "size": 13}'}
99+
assert split.sets == ['set1', 'set2']

0 commit comments

Comments
 (0)