|
8 | 8 | from splitio.client.config import DEFAULT_CONFIG |
9 | 9 | from splitio.storage import redis, inmemmory, uwsgi |
10 | 10 | from splitio.tasks import events_sync, impressions_sync, split_sync, segment_sync, telemetry_sync |
11 | | -from splitio.tasks.util import asynctask, workerpool |
| 11 | +from splitio.tasks.util import asynctask |
12 | 12 | from splitio.api.splits import SplitsAPI |
13 | 13 | from splitio.api.segments import SegmentsAPI |
14 | 14 | from splitio.api.impressions import ImpressionsAPI |
@@ -161,9 +161,8 @@ def _split_task_init_mock(self, synchronize_splits, period): |
161 | 161 | segment_async_task_mock = mocker.Mock(spec=asynctask.AsyncTask) |
162 | 162 | segment_async_task_mock.stop.side_effect = stop_mock |
163 | 163 |
|
164 | | - def _segment_task_init_mock(self, synchronize_segments, worker_pool, period): |
| 164 | + def _segment_task_init_mock(self, synchronize_segments, period): |
165 | 165 | self._task = segment_async_task_mock |
166 | | - self._worker_pool = mocker.Mock() |
167 | 166 | self._period = period |
168 | 167 | mocker.patch('splitio.client.factory.SegmentSynchronizationTask.__init__', |
169 | 168 | new=_segment_task_init_mock) |
@@ -256,9 +255,8 @@ def _split_task_init_mock(self, synchronize_splits, period): |
256 | 255 | segment_async_task_mock = mocker.Mock(spec=asynctask.AsyncTask) |
257 | 256 | segment_async_task_mock.stop.side_effect = stop_mock_2 |
258 | 257 |
|
259 | | - def _segment_task_init_mock(self, synchronize_segments, worker_pool, period): |
| 258 | + def _segment_task_init_mock(self, synchronize_segments, period): |
260 | 259 | self._task = segment_async_task_mock |
261 | | - self._worker_pool = mocker.Mock() |
262 | 260 | self._period = period |
263 | 261 | mocker.patch('splitio.client.factory.SegmentSynchronizationTask.__init__', |
264 | 262 | new=_segment_task_init_mock) |
@@ -332,6 +330,35 @@ def _split_synchronizer(self, ready_flag, some, auth_api, streaming_enabled, sse |
332 | 330 | assert len(imp_count_async_task_mock.stop.mock_calls) == 1 |
333 | 331 | assert factory.destroyed is True |
334 | 332 |
|
| 333 | + def test_destroy_with_event_redis(self, mocker): |
| 334 | + def _make_factory_with_apikey(apikey, *_, **__): |
| 335 | + return SplitFactory(apikey, {}, True, mocker.Mock(spec=ImpressionsManager), None) |
| 336 | + |
| 337 | + factory_module_logger = mocker.Mock() |
| 338 | + build_redis = mocker.Mock() |
| 339 | + build_redis.side_effect = _make_factory_with_apikey |
| 340 | + mocker.patch('splitio.client.factory._LOGGER', new=factory_module_logger) |
| 341 | + mocker.patch('splitio.client.factory._build_redis_factory', new=build_redis) |
| 342 | + |
| 343 | + config = { |
| 344 | + 'redisDb': 0, |
| 345 | + 'redisHost': 'localhost', |
| 346 | + 'redisPosrt': 6379, |
| 347 | + } |
| 348 | + |
| 349 | + factory = get_factory("none", config=config) |
| 350 | + event = threading.Event() |
| 351 | + factory.destroy(event) |
| 352 | + event.wait() |
| 353 | + assert factory.destroyed |
| 354 | + assert len(build_redis.mock_calls) == 1 |
| 355 | + |
| 356 | + factory = get_factory("none", config=config) |
| 357 | + factory.destroy(None) |
| 358 | + time.sleep(0.1) |
| 359 | + assert factory.destroyed |
| 360 | + assert len(build_redis.mock_calls) == 2 |
| 361 | + |
335 | 362 | def test_multiple_factories(self, mocker): |
336 | 363 | """Test multiple factories instantiation and tracking.""" |
337 | 364 | sdk_ready_flag = threading.Event() |
|
0 commit comments