Exemple #1
0
    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)