Skip to content

Commit bcd67de

Browse files
committed
fix tests
1 parent 13edab5 commit bcd67de

File tree

3 files changed

+66
-38
lines changed

3 files changed

+66
-38
lines changed

CHANGES.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
10.5.0 (Sep 12, 2025)
22
- Changed the log level from error to debug when renewing the token for Streaming service in asyncio mode.
33
- Added new configuration for Fallback Treatments, which allows setting a treatment value and optional config to be returned in place of "control", either globally or by flag. Read more in our docs.
4+
- Deprecated config parameter `redisErrors` as it is removed in redis lib since 6.0.0 version (https://github.com/redis/redis-py/releases/tag/v6.0.0).
45

56
10.4.0 (Aug 4, 2025)
67
- Added a new optional argument to the client `getTreatment` methods to allow passing additional evaluation options, such as a map of properties to append to the generated impressions sent to Split backend. Read more in our docs.

tests/client/test_factory.py

Lines changed: 47 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -27,32 +27,37 @@
2727
class SplitFactoryTests(object):
2828
"""Split factory test cases."""
2929

30-
def test_flag_sets_counts(self):
30+
def test_flag_sets_counts(self):
3131
factory = get_factory("none", config={
3232
'flagSetsFilter': ['set1', 'set2', 'set3']
3333
})
3434

3535
assert factory._telemetry_init_producer._telemetry_storage._tel_config._flag_sets == 3
3636
assert factory._telemetry_init_producer._telemetry_storage._tel_config._flag_sets_invalid == 0
37-
factory.destroy()
38-
37+
event = threading.Event()
38+
factory.destroy(event)
39+
event.wait()
40+
3941
factory = get_factory("none", config={
4042
'flagSetsFilter': ['s#et1', 'set2', 'set3']
4143
})
4244
assert factory._telemetry_init_producer._telemetry_storage._tel_config._flag_sets == 3
4345
assert factory._telemetry_init_producer._telemetry_storage._tel_config._flag_sets_invalid == 1
44-
factory.destroy()
46+
event = threading.Event()
47+
factory.destroy(event)
48+
event.wait()
4549

4650
factory = get_factory("none", config={
4751
'flagSetsFilter': ['s#et1', 22, 'set3']
4852
})
4953
assert factory._telemetry_init_producer._telemetry_storage._tel_config._flag_sets == 3
5054
assert factory._telemetry_init_producer._telemetry_storage._tel_config._flag_sets_invalid == 2
51-
factory.destroy()
55+
event = threading.Event()
56+
factory.destroy(event)
57+
event.wait()
5258

5359
def test_inmemory_client_creation_streaming_false(self, mocker):
5460
"""Test that a client with in-memory storage is created correctly."""
55-
5661
# Setup synchronizer
5762
def _split_synchronizer(self, ready_flag, some, auth_api, streaming_enabled, sdk_matadata, telemetry_runtime_producer, sse_url=None, client_key=None):
5863
synchronizer = mocker.Mock(spec=Synchronizer)
@@ -518,9 +523,15 @@ def synchronize_config(*_):
518523
event.wait()
519524
assert _INSTANTIATED_FACTORIES['some_other_api_key'] == 1
520525
assert _INSTANTIATED_FACTORIES['some_api_key'] == 2
521-
factory2.destroy()
522-
factory3.destroy()
523-
factory4.destroy()
526+
event = threading.Event()
527+
factory2.destroy(event)
528+
event.wait()
529+
event = threading.Event()
530+
factory3.destroy(event)
531+
event.wait()
532+
event = threading.Event()
533+
factory4.destroy(event)
534+
event.wait()
524535

525536
def test_uwsgi_preforked(self, mocker):
526537
"""Test preforked initializations."""
@@ -740,47 +751,53 @@ async def test_flag_sets_counts(self):
740751
@pytest.mark.asyncio
741752
async def test_inmemory_client_creation_streaming_false_async(self, mocker):
742753
"""Test that a client with in-memory storage is created correctly for async."""
743-
744754
# Setup synchronizer
745755
def _split_synchronizer(self, ready_flag, some, auth_api, streaming_enabled, sdk_matadata, telemetry_runtime_producer, sse_url=None, client_key=None):
746756
synchronizer = mocker.Mock(spec=SynchronizerAsync)
747757
async def sync_all(*_):
748758
return None
749759
synchronizer.sync_all = sync_all
760+
761+
def start_periodic_fetching():
762+
pass
763+
synchronizer.start_periodic_fetching = start_periodic_fetching
764+
750765
self._ready_flag = ready_flag
751766
self._synchronizer = synchronizer
752767
self._streaming_enabled = False
753768
self._telemetry_runtime_producer = telemetry_runtime_producer
769+
754770
mocker.patch('splitio.sync.manager.ManagerAsync.__init__', new=_split_synchronizer)
755771

756772
async def synchronize_config(*_):
757773
pass
758774
mocker.patch('splitio.sync.telemetry.InMemoryTelemetrySubmitterAsync.synchronize_config', new=synchronize_config)
759775

760776
# Start factory and make assertions
761-
factory = await get_factory_async('some_api_key', config={'streamingEmabled': False})
762-
assert isinstance(factory, SplitFactoryAsync)
763-
assert isinstance(factory._storages['splits'], inmemmory.InMemorySplitStorageAsync)
764-
assert isinstance(factory._storages['segments'], inmemmory.InMemorySegmentStorageAsync)
765-
assert isinstance(factory._storages['impressions'], inmemmory.InMemoryImpressionStorageAsync)
766-
assert factory._storages['impressions']._impressions.maxsize == 10000
767-
assert isinstance(factory._storages['events'], inmemmory.InMemoryEventStorageAsync)
768-
assert factory._storages['events']._events.maxsize == 10000
777+
factory2 = await get_factory_async('some_api_key', config={'streamingEmabled': False})
769778

770-
assert isinstance(factory._sync_manager, ManagerAsync)
779+
assert isinstance(factory2, SplitFactoryAsync)
780+
assert isinstance(factory2._storages['splits'], inmemmory.InMemorySplitStorageAsync)
781+
assert isinstance(factory2._storages['segments'], inmemmory.InMemorySegmentStorageAsync)
782+
assert isinstance(factory2._storages['impressions'], inmemmory.InMemoryImpressionStorageAsync)
783+
assert factory2._storages['impressions']._impressions.maxsize == 10000
784+
assert isinstance(factory2._storages['events'], inmemmory.InMemoryEventStorageAsync)
785+
assert factory2._storages['events']._events.maxsize == 10000
771786

772-
assert isinstance(factory._recorder, StandardRecorderAsync)
773-
assert isinstance(factory._recorder._impressions_manager, ImpressionsManager)
774-
assert isinstance(factory._recorder._event_sotrage, inmemmory.EventStorage)
775-
assert isinstance(factory._recorder._impression_storage, inmemmory.ImpressionStorage)
787+
assert isinstance(factory2._sync_manager, ManagerAsync)
776788

777-
assert factory._labels_enabled is True
789+
assert isinstance(factory2._recorder, StandardRecorderAsync)
790+
assert isinstance(factory2._recorder._impressions_manager, ImpressionsManager)
791+
assert isinstance(factory2._recorder._event_sotrage, inmemmory.EventStorage)
792+
assert isinstance(factory2._recorder._impression_storage, inmemmory.ImpressionStorage)
793+
794+
assert factory2._labels_enabled is True
778795
try:
779-
await factory.block_until_ready(1)
796+
await factory2.block_until_ready(1)
780797
except:
781798
pass
782-
assert factory.ready
783-
await factory.destroy()
799+
assert factory2._status == Status.READY
800+
await factory2.destroy()
784801

785802
@pytest.mark.asyncio
786803
async def test_destroy_async(self, mocker):
@@ -884,7 +901,7 @@ async def start(*_):
884901
await factory.block_until_ready(1)
885902
except:
886903
pass
887-
assert factory.ready
904+
assert factory._status == Status.READY
888905
assert factory.destroyed is False
889906

890907
await factory.destroy()
@@ -925,7 +942,7 @@ async def test_pluggable_client_creation_async(self, mocker):
925942
await factory.block_until_ready(1)
926943
except:
927944
pass
928-
assert factory.ready
945+
assert factory._status == Status.READY
929946
await factory.destroy()
930947

931948
@pytest.mark.asyncio
@@ -954,3 +971,4 @@ async def _make_factory_with_apikey(apikey, *_, **__):
954971
await asyncio.sleep(0.5)
955972
assert factory.destroyed
956973
assert len(build_redis.mock_calls) == 2
974+

tests/client/test_input_validator.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1705,7 +1705,8 @@ async def get_change_number(*_):
17051705
impmanager,
17061706
telemetry_producer,
17071707
telemetry_producer.get_telemetry_init_producer(),
1708-
mocker.Mock()
1708+
mocker.Mock(),
1709+
None
17091710
)
17101711
ready_mock = mocker.PropertyMock()
17111712
ready_mock.return_value = True
@@ -1967,7 +1968,8 @@ async def get_change_number(*_):
19671968
impmanager,
19681969
telemetry_producer,
19691970
telemetry_producer.get_telemetry_init_producer(),
1970-
mocker.Mock()
1971+
mocker.Mock(),
1972+
None
19711973
)
19721974
ready_mock = mocker.PropertyMock()
19731975
ready_mock.return_value = True
@@ -2211,7 +2213,8 @@ async def put(*_):
22112213
impmanager,
22122214
telemetry_producer,
22132215
telemetry_producer.get_telemetry_init_producer(),
2214-
mocker.Mock()
2216+
mocker.Mock(),
2217+
None
22152218
)
22162219
factory._sdk_key = 'some-test'
22172220

@@ -2501,7 +2504,8 @@ async def fetch_many_rbs(*_):
25012504
impmanager,
25022505
telemetry_producer,
25032506
telemetry_producer.get_telemetry_init_producer(),
2504-
mocker.Mock()
2507+
mocker.Mock(),
2508+
None
25052509
)
25062510
ready_mock = mocker.PropertyMock()
25072511
ready_mock.return_value = True
@@ -2665,7 +2669,8 @@ async def fetch_many_rbs(*_):
26652669
impmanager,
26662670
telemetry_producer,
26672671
telemetry_producer.get_telemetry_init_producer(),
2668-
mocker.Mock()
2672+
mocker.Mock(),
2673+
None
26692674
)
26702675
split_mock.name = 'some_feature'
26712676

@@ -2832,7 +2837,8 @@ async def fetch_many_rbs(*_):
28322837
mocker.Mock(),
28332838
telemetry_producer,
28342839
telemetry_producer.get_telemetry_init_producer(),
2835-
mocker.Mock()
2840+
mocker.Mock(),
2841+
None
28362842
)
28372843
ready_mock = mocker.PropertyMock()
28382844
ready_mock.return_value = True
@@ -2978,7 +2984,8 @@ async def get_feature_flags_by_sets(*_):
29782984
mocker.Mock(),
29792985
telemetry_producer,
29802986
telemetry_producer.get_telemetry_init_producer(),
2981-
mocker.Mock()
2987+
mocker.Mock(),
2988+
None
29822989
)
29832990
ready_mock = mocker.PropertyMock()
29842991
ready_mock.return_value = True
@@ -3133,7 +3140,8 @@ async def get_feature_flags_by_sets(*_):
31333140
mocker.Mock(),
31343141
telemetry_producer,
31353142
telemetry_producer.get_telemetry_init_producer(),
3136-
mocker.Mock()
3143+
mocker.Mock(),
3144+
None
31373145
)
31383146
ready_mock = mocker.PropertyMock()
31393147
ready_mock.return_value = True
@@ -3282,7 +3290,8 @@ async def get_feature_flags_by_sets(*_):
32823290
mocker.Mock(),
32833291
telemetry_producer,
32843292
telemetry_producer.get_telemetry_init_producer(),
3285-
mocker.Mock()
3293+
mocker.Mock(),
3294+
None
32863295
)
32873296
ready_mock = mocker.PropertyMock()
32883297
ready_mock.return_value = True

0 commit comments

Comments
 (0)