public void TrackWithoutCustomerListener_Optimized() { // Arrange. var impressionsObserver = new ImpressionsObserver(new ImpressionHasher()); var impressionsCounter = new ImpressionsCounter(); var impressionsManager = new ImpressionsManager(_impressionsLog.Object, null, impressionsCounter, true, ImpressionsMode.Optimized, impressionsObserver); var impTime = CurrentTimeHelper.CurrentTimeMillis(); var impressions = new List <KeyImpression> { impressionsManager.BuildImpression("matching-key", "feature", "off", impTime, 432543, "label", "bucketing-key"), impressionsManager.BuildImpression("matching-key-2", "feature-2", "off", impTime, 432543, "label-2", "bucketing-key"), impressionsManager.BuildImpression("matching-key-2", "feature-2", "off", impTime, 432543, "label-2", "bucketing-key"), impressionsManager.BuildImpression("matching-key-2", "feature-2", "off", impTime, 432543, "label-2", "bucketing-key") }; var optimizedImpressions = impressions.Where(i => impressionsManager.ShouldQueueImpression(i)).ToList(); // Act. impressionsManager.Track(impressions); // Assert. Thread.Sleep(1000); Assert.AreEqual(2, optimizedImpressions.Count()); _impressionsLog.Verify(mock => mock.Log(optimizedImpressions), Times.Once); _impressionsLog.Verify(mock => mock.Log(impressions), Times.Never); _customerImpressionListener.Verify(mock => mock.Log(It.IsAny <KeyImpression>()), Times.Never); }
public void TrackWithoutCustomerListener_Debug() { // Arrange. var impressionsObserver = new ImpressionsObserver(new ImpressionHasher()); var impressionsCounter = new ImpressionsCounter(); var impressionsManager = new ImpressionsManager(_impressionsLog.Object, null, impressionsCounter, true, ImpressionsMode.Debug, _telemetryRuntimeProducer.Object, _tasksManager, impressionsObserver); var impTime = CurrentTimeHelper.CurrentTimeMillis(); var impressions = new List <KeyImpression> { impressionsManager.BuildImpression("matching-key", "feature", "off", impTime, 432543, "label", "bucketing-key"), impressionsManager.BuildImpression("matching-key-2", "feature-2", "off", impTime, 432543, "label-2", "bucketing-key"), impressionsManager.BuildImpression("matching-key-2", "feature-2", "off", impTime, 432543, "label-2", "bucketing-key"), impressionsManager.BuildImpression("matching-key-2", "feature-2", "off", impTime, 432543, "label-2", "bucketing-key") }; // Act. impressionsManager.Track(impressions); // Assert. Thread.Sleep(1000); _impressionsLog.Verify(mock => mock.Log(impressions), Times.Once); _customerImpressionListener.Verify(mock => mock.Log(It.IsAny <KeyImpression>()), Times.Never); _telemetryRuntimeProducer.Verify(mock => mock.RecordImpressionsStats(ImpressionsEnum.ImpressionsDeduped, 0), Times.Once); _telemetryRuntimeProducer.Verify(mock => mock.RecordImpressionsStats(ImpressionsEnum.ImpressionsDropped, 0), Times.Once); _telemetryRuntimeProducer.Verify(mock => mock.RecordImpressionsStats(ImpressionsEnum.ImpressionsQueued, 4), Times.Once); }
public void Track_Optimized_WithOneImpressionDropped() { // Arrange. var impressionsManager = new ImpressionsManager(_impressionsLog.Object, _customerImpressionListener.Object, _impressionsCounter.Object, true, ImpressionsMode.Optimized, _telemetryRuntimeProducer.Object, _tasksManager, _impressionsObserver.Object); var impTime = CurrentTimeHelper.CurrentTimeMillis(); var impressions = new List <KeyImpression> { new KeyImpression("matching-key", "feature", "off", impTime, 432543, "label", "bucketing-key", optimized: true), new KeyImpression("matching-key-2", "feature-2", "off", impTime, 432543, "label-2", "bucketing-key", optimized: true) }; _impressionsLog .Setup(mock => mock.Log(It.IsAny <List <KeyImpression> >())) .Returns(1); // Act. impressionsManager.Track(impressions); // Assert. Thread.Sleep(1000); _impressionsLog.Verify(mock => mock.Log(impressions), Times.Once); _customerImpressionListener.Verify(mock => mock.Log(It.IsAny <KeyImpression>()), Times.Exactly(2)); _telemetryRuntimeProducer.Verify(mock => mock.RecordImpressionsStats(ImpressionsEnum.ImpressionsDeduped, 0), Times.Once); _telemetryRuntimeProducer.Verify(mock => mock.RecordImpressionsStats(ImpressionsEnum.ImpressionsDropped, 1), Times.Once); _telemetryRuntimeProducer.Verify(mock => mock.RecordImpressionsStats(ImpressionsEnum.ImpressionsQueued, 1), Times.Once); }
public void Track() { // Arrange. var impressionsManager = new ImpressionsManager(_impressionsLog.Object, _customerImpressionListener.Object, _impressionsCounter.Object, true, ImpressionsMode.Optimized, _impressionsObserver.Object); var impTime = CurrentTimeHelper.CurrentTimeMillis(); var impressions = new List <KeyImpression> { new KeyImpression("matching-key", "feature", "off", impTime, 432543, "label", "bucketing-key"), new KeyImpression("matching-key-2", "feature-2", "off", impTime, 432543, "label-2", "bucketing-key") }; // Act. impressionsManager.Track(impressions); // Assert. Thread.Sleep(1000); _impressionsLog.Verify(mock => mock.Log(impressions), Times.Once); _customerImpressionListener.Verify(mock => mock.Log(It.IsAny <KeyImpression>()), Times.Exactly(2)); }