Exemplo n.º 1
0
        public void StartShouldPostConfigAndStats()
        {
            // Arrange.
            MockRecordStats();
            var config = MockConfigInit();

            _telemetrySyncTask = new TelemetrySyncTask(
                _telemetryStorage.Object,
                _telemetryAPI.Object,
                _splitCache.Object,
                _segmentCache.Object,
                config,
                _factoryInstantiationsService.Object,
                wrapperAdapter: _wrapperAdapter.Object,
                log: _log.Object,
                tasksManager: new TasksManager(_wrapperAdapter.Object)
                );

            // Act.
            _telemetrySyncTask.Start();
            _telemetrySyncTask.RecordConfigInit();
            Thread.Sleep(2000);

            // Assert.
            _telemetryAPI.Verify(mock => mock.RecordConfigInit(It.IsAny <Config>()), Times.Once);
            _telemetryAPI.Verify(mock => mock.RecordStats(It.IsAny <Stats>()), Times.AtLeastOnce);
            _telemetryStorage.Verify(mock => mock.PopAuthRejections(), Times.AtLeastOnce);
            _telemetryStorage.Verify(mock => mock.GetEventsStats(EventsEnum.EventsDropped), Times.AtLeastOnce);
            _telemetryStorage.Verify(mock => mock.GetEventsStats(EventsEnum.EventsQueued), Times.AtLeastOnce);
            _telemetryStorage.Verify(mock => mock.PopHttpErrors(), Times.AtLeastOnce);
            _telemetryStorage.Verify(mock => mock.PopHttpLatencies(), Times.AtLeastOnce);
            _telemetryStorage.Verify(mock => mock.GetImpressionsStats(ImpressionsEnum.ImpressionsDeduped), Times.AtLeastOnce);
            _telemetryStorage.Verify(mock => mock.GetImpressionsStats(ImpressionsEnum.ImpressionsDropped), Times.AtLeastOnce);
            _telemetryStorage.Verify(mock => mock.GetImpressionsStats(ImpressionsEnum.ImpressionsQueued), Times.AtLeastOnce);
            _telemetryStorage.Verify(mock => mock.GetLastSynchronizations(), Times.AtLeastOnce);
            _telemetryStorage.Verify(mock => mock.PopExceptions(), Times.AtLeastOnce);
            _telemetryStorage.Verify(mock => mock.PopLatencies(), Times.AtLeastOnce);
            _telemetryStorage.Verify(mock => mock.GetSessionLength(), Times.AtLeastOnce);
            _telemetryStorage.Verify(mock => mock.PopStreamingEvents(), Times.AtLeastOnce);
            _telemetryStorage.Verify(mock => mock.PopTags(), Times.AtLeastOnce);
            _telemetryStorage.Verify(mock => mock.PopTokenRefreshes(), Times.AtLeastOnce);
            _splitCache.Verify(mock => mock.SplitsCount(), Times.AtLeastOnce);
            _segmentCache.Verify(mock => mock.SegmentsCount(), Times.AtLeastOnce);
            _segmentCache.Verify(mock => mock.SegmentKeysCount(), Times.AtLeastOnce);
        }
Exemplo n.º 2
0
        public void Start()
        {
            _tasksManager.Start(() =>
            {
                try
                {
                    while (!_synchronizer.SyncAll(_shutdownCancellationTokenSource, asynchronous: false))
                    {
                        _wrapperAdapter.TaskDelay(500).Wait();
                    }

                    _statusManager.SetReady();
                    _telemetrySyncTask.RecordConfigInit();
                    _synchronizer.StartPeriodicDataRecording();

                    if (_streamingEnabled)
                    {
                        _log.Debug("Starting streaming mode...");
                        var connected = _pushManager.StartSse().Result;

                        if (connected)
                        {
                            return;
                        }
                    }

                    _log.Debug("Starting polling mode ...");
                    _synchronizer.StartPeriodicFetching();
                    _telemetryRuntimeProducer.RecordStreamingEvent(new StreamingEvent(EventTypeEnum.SyncMode, (int)SyncModeEnum.Polling));
                }
                catch (Exception ex)
                {
                    _log.Debug("Exception initialization SDK.", ex);
                }
            }, _shutdownCancellationTokenSource, "SDK Initialization");
        }