Skip to content

Commit 0903bd9

Browse files
authored
Merge branch 'feature/mtkTracking' into ImpressionsSender
2 parents 5cc32c1 + e2e4dc8 commit 0903bd9

File tree

4 files changed

+18
-7
lines changed

4 files changed

+18
-7
lines changed

splitio/client/factory.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,14 @@ def _build_in_memory_factory(api_key, cfg, sdk_url=None, events_url=None, # pyl
332332
}
333333
imp_strategy = strategies[cfg['impressionsMode']]
334334

335+
imp_counter = ImpressionsCounter() if cfg['impressionsMode'] != ImpressionsMode.DEBUG else None
336+
337+
strategies = {
338+
ImpressionsMode.OPTIMIZED : StrategyOptimizedMode(imp_counter),
339+
ImpressionsMode.DEBUG : StrategyDebugMode(),
340+
}
341+
imp_strategy = strategies[cfg['impressionsMode']]
342+
335343
imp_manager = ImpressionsManager(
336344
_wrap_impression_listener(cfg['impressionListener'], sdk_metadata),
337345
imp_strategy)
@@ -344,6 +352,7 @@ def _build_in_memory_factory(api_key, cfg, sdk_url=None, events_url=None, # pyl
344352
EventSynchronizer(apis['events'], storages['events'], cfg['eventsBulkSize']),
345353
ImpressionsCountSynchronizer(apis['impressions'], imp_manager),
346354
)
355+
imp_count_sync_task = ImpressionsCountSyncTask(synchronizers.impressions_count_sync.synchronize_counters) if cfg['impressionsMode'] == 'OPTIMIZED' else None
347356

348357
tasks = SplitTasks(
349358
SplitSynchronizationTask(
@@ -429,7 +438,6 @@ def _build_redis_factory(api_key, cfg):
429438
recorder,
430439
)
431440

432-
433441
def _build_localhost_factory(cfg):
434442
"""Build and return a localhost factory for testing/development purposes."""
435443
storages = {
@@ -456,6 +464,7 @@ def _build_localhost_factory(cfg):
456464
synchronizer = LocalhostSynchronizer(synchronizers, tasks)
457465
manager = Manager(ready_event, synchronizer, None, False, sdk_metadata)
458466
manager.start()
467+
459468
recorder = StandardRecorder(
460469
ImpressionsManager(None, StrategyDebugMode()),
461470
storages['events'],

splitio/sync/impression.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import queue
33

44
from splitio.api import APIException
5+
from splitio.engine.strategies import Counter
56

67

78
_LOGGER = logging.getLogger(__name__)
@@ -68,18 +69,18 @@ def synchronize_impressions(self):
6869

6970

7071
class ImpressionsCountSynchronizer(object):
71-
def __init__(self, impressions_api, impressions_manager):
72+
def __init__(self, impressions_api, impressions_counter):
7273
"""
7374
Class constructor.
7475
7576
:param impressions_api: Impressions Api object to send data to the backend
7677
:type impressions_api: splitio.api.impressions.ImpressionsAPI
7778
:param impressions_manager: Impressions manager instance
78-
:type impressions_manager: splitio.engine.impressions.Manager
79+
:type impressions_counter: splitio.engine.strategies
7980
8081
"""
8182
self._impressions_api = impressions_api
82-
self._impressions_manager = impressions_manager
83+
self._impressions_counter = impressions_counter
8384

8485
def synchronize_counters(self):
8586
"""Send impressions from both the failed and new queues."""

splitio/sync/synchronizer.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,8 @@ def start_periodic_data_recording(self):
300300
_LOGGER.debug('Starting periodic data recording')
301301
self._split_tasks.impressions_task.start()
302302
self._split_tasks.events_task.start()
303-
self._split_tasks.impressions_count_task.start()
303+
if self._split_tasks.impressions_count_task is not None:
304+
self._split_tasks.impressions_count_task.start()
304305

305306
def stop_periodic_data_recording(self, blocking):
306307
"""
@@ -324,7 +325,8 @@ def stop_periodic_data_recording(self, blocking):
324325
else:
325326
self._split_tasks.impressions_task.stop()
326327
self._split_tasks.events_task.stop()
327-
self._split_tasks.impressions_count_task.stop()
328+
if self._split_tasks.impressions_count_task is not None:
329+
self._split_tasks.impressions_count_task.stop()
328330

329331
def kill_split(self, split_name, default_treatment, change_number):
330332
"""

tests/integration/test_client_e2e.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
from splitio.recorder.recorder import StandardRecorder, PipelinedRecorder
2222
from splitio.client.config import DEFAULT_CONFIG
2323

24-
2524
class InMemoryIntegrationTests(object):
2625
"""Inmemory storage-based integration tests."""
2726

0 commit comments

Comments
 (0)