def __init__(self, inbox, config, http_client, diagnostic_accumulator=None): self._inbox = inbox self._config = config self._http = _http_factory(config).create_pool_manager( 1, config.events_uri) if http_client is None else http_client self._close_http = (http_client is None ) # so we know whether to close it later self._disabled = False self._outbox = EventBuffer(config.events_max_pending) self._user_keys = SimpleLRUCache(config.user_keys_capacity) self._formatter = EventOutputFormatter(config) self._last_known_past_time = 0 self._deduplicated_users = 0 self._diagnostic_accumulator = None if config.diagnostic_opt_out else diagnostic_accumulator self._flush_workers = FixedThreadPool(__MAX_FLUSH_THREADS__, "ldclient.flush") self._diagnostic_flush_workers = None if self._diagnostic_accumulator is None else FixedThreadPool( 1, "ldclient.diag_flush") if self._diagnostic_accumulator is not None: init_event = create_diagnostic_init( self._diagnostic_accumulator.data_since_date, self._diagnostic_accumulator.diagnostic_id, config) task = DiagnosticEventSendTask(self._http, self._config, init_event) self._diagnostic_flush_workers.execute(task.run) self._main_thread = Thread(target=self._run_main_loop) self._main_thread.daemon = True self._main_thread.start()
def test_create_diagnostic_init(): test_config = Config(sdk_key="SDK_KEY", wrapper_name='django', wrapper_version='5.1.1') diag_id = create_diagnostic_id(test_config) diag_init = create_diagnostic_init(100, diag_id, test_config) assert len(diag_init) == 6 assert diag_init['kind'] == 'diagnostic-init' assert diag_init['id'] == diag_id assert diag_init['creationDate'] == 100 assert diag_init['sdk']['name'] == 'python-server-sdk' assert diag_init['sdk']['version'] assert diag_init['sdk']['wrapperName'] == 'django' assert diag_init['sdk']['wrapperVersion'] == '5.1.1' assert len(diag_init['platform']) == 6 assert diag_init['platform']['name'] == 'python' assert all(x in diag_init['platform'].keys() for x in [ 'osArch', 'osName', 'osVersion', 'pythonVersion', 'pythonImplementation' ]) assert diag_init['configuration'] == _create_diagnostic_config_object( test_config) # Verify converts to json without failure json.dumps(diag_init)