Skip to content

Commit 74b450d

Browse files
committed
fix non-isolated test
1 parent 6c97010 commit 74b450d

File tree

4 files changed

+22
-10
lines changed

4 files changed

+22
-10
lines changed

splitio/sync/synchronizer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -389,4 +389,4 @@ def shutdown(self, blocking):
389389
:param blocking:flag to wait until tasks are stopped
390390
:type blocking: bool
391391
"""
392-
self.start_periodic_fetching()
392+
self.stop_periodic_fetching()

tests/client/test_localhost.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
"""Localhost mode test module."""
22
# pylint: disable=no-self-use,line-too-long,protected-access
3-
43
import os
5-
import tempfile
64

75
from splitio.client import localhost
86
from splitio.sync.split import LocalSplitSynchronizer

tests/integration/test_client_e2e.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#pylint: disable=protected-access,line-too-long,no-self-use
33
import json
44
import os
5-
import time
5+
import threading
66

77
from redis import StrictRedis
88

@@ -51,6 +51,12 @@ def setup_method(self):
5151
impmanager = ImpressionsManager(storages['impressions'].put, ImpressionsMode.DEBUG)
5252
self.factory = SplitFactory('some_api_key', storages, True, impmanager) #pylint:disable=attribute-defined-outside-init
5353

54+
def teardown_method(self):
55+
"""Shut down the factory."""
56+
event = threading.Event()
57+
self.factory.destroy(event)
58+
event.wait()
59+
5460
def _validate_last_impressions(self, client, *to_validate):
5561
"""Validate the last N impressions are present disregarding the order."""
5662
imp_storage = client._factory._get_storage('impressions')
@@ -789,7 +795,6 @@ def setup_method(self):
789795
impmanager = ImpressionsManager(storages['impressions'].put, ImpressionsMode.DEBUG)
790796
self.factory = SplitFactory('some_api_key', storages, True, impmanager) #pylint:disable=attribute-defined-outside-init
791797

792-
793798
class LocalhostIntegrationTests(object): #pylint: disable=too-few-public-methods
794799
"""Client & Manager integration tests."""
795800

@@ -818,3 +823,11 @@ def test_localhost_e2e(self):
818823
assert manager.split('other_feature').configs == {}
819824
assert manager.split('other_feature_2').configs == {}
820825
assert manager.split('other_feature_3').configs == {}
826+
event = threading.Event()
827+
factory.destroy(event)
828+
event.wait()
829+
830+
# hack to increase isolation and prevent conflicts with other tests
831+
thread = factory._sync_manager._synchronizer._split_tasks.split_task._task._thread
832+
if thread is not None and thread.is_alive():
833+
thread.join()

tests/storage/test_redis.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def test_get_split(self, mocker):
2121
adapter = mocker.Mock(spec=RedisAdapter)
2222
adapter.get.return_value = '{"name": "some_split"}'
2323
from_raw = mocker.Mock()
24-
mocker.patch('splitio.models.splits.from_raw', new=from_raw)
24+
mocker.patch('splitio.storage.redis.splits.from_raw', new=from_raw)
2525

2626
storage = RedisSplitStorage(adapter)
2727
storage.get('some_split')
@@ -43,7 +43,7 @@ def test_get_split_with_cache(self, mocker):
4343
adapter = mocker.Mock(spec=RedisAdapter)
4444
adapter.get.return_value = '{"name": "some_split"}'
4545
from_raw = mocker.Mock()
46-
mocker.patch('splitio.models.splits.from_raw', new=from_raw)
46+
mocker.patch('splitio.storage.redis.splits.from_raw', new=from_raw)
4747

4848
storage = RedisSplitStorage(adapter, True, 1)
4949
storage.get('some_split')
@@ -62,6 +62,7 @@ def test_get_split_with_cache(self, mocker):
6262
from_raw.reset_mock()
6363
adapter.get.return_value = None
6464

65+
# Still cached
6566
result = storage.get('some_split')
6667
assert result is not None
6768
time.sleep(1) # wait for expiration
@@ -75,7 +76,7 @@ def test_get_splits_with_cache(self, mocker):
7576
adapter = mocker.Mock(spec=RedisAdapter)
7677
storage = RedisSplitStorage(adapter)
7778
from_raw = mocker.Mock()
78-
mocker.patch('splitio.models.splits.from_raw', new=from_raw)
79+
mocker.patch('splitio.storage.redis.splits.from_raw', new=from_raw)
7980

8081
adapter.mget.return_value = ['{"name": "split1"}', '{"name": "split2"}', None]
8182

@@ -102,7 +103,7 @@ def test_get_all_splits(self, mocker):
102103
adapter = mocker.Mock(spec=RedisAdapter)
103104
storage = RedisSplitStorage(adapter)
104105
from_raw = mocker.Mock()
105-
mocker.patch('splitio.models.splits.from_raw', new=from_raw)
106+
mocker.patch('splitio.storage.redis.splits.from_raw', new=from_raw)
106107

107108
adapter.keys.return_value = [
108109
'SPLITIO.split.split1',
@@ -177,7 +178,7 @@ def test_fetch_segment(self, mocker):
177178
adapter.smembers.return_value = set(["key1", "key2", "key3"])
178179
adapter.get.return_value = '100'
179180
from_raw = mocker.Mock()
180-
mocker.patch('splitio.models.segments.from_raw', new=from_raw)
181+
mocker.patch('splitio.storage.redis.segments.from_raw', new=from_raw)
181182

182183
storage = RedisSegmentStorage(adapter)
183184
result = storage.get('some_segment')

0 commit comments

Comments
 (0)