2020
2121# Storage
2222from splitio .storage .inmemmory import InMemorySplitStorage , InMemorySegmentStorage , \
23- InMemoryImpressionStorage , InMemoryEventStorage , InMemoryTelemetryStorage
23+ InMemoryImpressionStorage , InMemoryEventStorage , InMemoryTelemetryStorage , LocalhostTelemetryStorage
2424from splitio .storage .adapters import redis
2525from splitio .storage .redis import RedisSplitStorage , RedisSegmentStorage , RedisImpressionsStorage , \
2626 RedisEventsStorage
3232from splitio .api .impressions import ImpressionsAPI
3333from splitio .api .events import EventsAPI
3434from splitio .api .auth import AuthAPI
35- from splitio .api .telemetry import TelemetryAPI
35+ from splitio .api .telemetry import TelemetryAPI , LocalhostTelemetryAPI
3636from splitio .api .commons import get_current_epoch_time
3737
3838# Tasks
@@ -126,9 +126,8 @@ def __init__( # pylint: disable=too-many-arguments
126126 self ._preforked_initialization = preforked_initialization
127127 self ._telemetry_evaluation_producer = None
128128 self ._telemetry_init_producer = None
129- if not telemetry_producer == None :
130- self ._telemetry_evaluation_producer = telemetry_producer .get_telemetry_evaluation_producer ()
131- self ._telemetry_init_producer = telemetry_producer .get_telemetry_init_producer ()
129+ self ._telemetry_evaluation_producer = telemetry_producer .get_telemetry_evaluation_producer ()
130+ self ._telemetry_init_producer = telemetry_producer .get_telemetry_init_producer ()
132131 self ._telemetry_init_consumer = telemetry_init_consumer
133132 self ._telemetry_api = telemetry_api
134133 self ._ready_time = get_current_epoch_time ()
@@ -159,14 +158,13 @@ def _update_status_when_ready(self):
159158 self ._sdk_internal_ready_flag .wait ()
160159 self ._status = Status .READY
161160 self ._sdk_ready_flag .set ()
162- if not self ._telemetry_init_producer == None :
163- self ._telemetry_init_producer .record_ready_time (get_current_epoch_time () - self ._ready_time )
164- redundant_factory_count , active_factory_count = _get_active_and_redundant_count ()
165- self ._telemetry_init_producer .record_active_and_redundant_factories (active_factory_count , redundant_factory_count )
161+ self ._telemetry_init_producer .record_ready_time (get_current_epoch_time () - self ._ready_time )
162+ redundant_factory_count , active_factory_count = _get_active_and_redundant_count ()
163+ self ._telemetry_init_producer .record_active_and_redundant_factories (active_factory_count , redundant_factory_count )
166164
167- config_post_thread = threading .Thread (target = self ._telemetry_api .record_init (self ._telemetry_init_consumer .get_config_stats ()), name = "PostConfigData" )
168- config_post_thread .setDaemon (True )
169- config_post_thread .start ()
165+ config_post_thread = threading .Thread (target = self ._telemetry_api .record_init (self ._telemetry_init_consumer .get_config_stats ()), name = "PostConfigData" )
166+ config_post_thread .setDaemon (True )
167+ config_post_thread .start ()
170168
171169
172170 def _get_storage (self , name ):
@@ -510,6 +508,11 @@ def _build_redis_factory(api_key, cfg):
510508
511509def _build_localhost_factory (cfg ):
512510 """Build and return a localhost factory for testing/development purposes."""
511+ telemetry_storage = LocalhostTelemetryStorage ()
512+ telemetry_producer = TelemetryStorageProducer (telemetry_storage )
513+ telemetry_consumer = TelemetryStorageConsumer (telemetry_storage )
514+ telemetry_runtime_producer = telemetry_producer .get_telemetry_runtime_producer ()
515+
513516 storages = {
514517 'splits' : InMemorySplitStorage (),
515518 'segments' : InMemorySegmentStorage (), # not used, just to avoid possible future errors.
@@ -535,7 +538,7 @@ def _build_localhost_factory(cfg):
535538 manager = Manager (ready_event , synchronizer , None , False , sdk_metadata )
536539 manager .start ()
537540 recorder = StandardRecorder (
538- ImpressionsManager (StrategyDebugMode ()),
541+ ImpressionsManager (StrategyDebugMode (), telemetry_runtime_producer ),
539542 storages ['events' ],
540543 storages ['impressions' ],
541544 )
@@ -546,6 +549,9 @@ def _build_localhost_factory(cfg):
546549 recorder ,
547550 manager ,
548551 ready_event ,
552+ telemetry_producer = telemetry_producer ,
553+ telemetry_init_consumer = telemetry_consumer .get_telemetry_init_consumer (),
554+ telemetry_api = LocalhostTelemetryAPI ()
549555 )
550556
551557def get_factory (api_key , ** kwargs ):
0 commit comments