public IEnumerator MaximumNumberOfEvents_ShouldntDropEventsWhenSpaceIsAvailable_DataShouldBeAvailable() { var requestHandler = new BacktraceHttpClientMock() { IsHttpError = true }; const int expectedMaximumNumberOfSummedEvents = 10; const int expectedNumberOfSummedEvents = 3; var backtraceMetrics = new BacktraceMetrics(_attributeProvider, 0, _defaultUniqueEventsSubmissionUrl, _defaultSummedEventsSubmissionUrl); backtraceMetrics.OverrideHttpClient(requestHandler); backtraceMetrics.MaximumSummedEvents = expectedMaximumNumberOfSummedEvents; for (int i = 0; i < expectedMaximumNumberOfSummedEvents - expectedNumberOfSummedEvents; i++) { backtraceMetrics.AddSummedEvent(MetricsEventName); } backtraceMetrics.Send(); for (int i = 0; i < expectedNumberOfSummedEvents; i++) { backtraceMetrics.AddSummedEvent(MetricsEventName); } for (int i = 0; i < BacktraceMetrics.MaxNumberOfAttempts; i++) { yield return(new WaitForSeconds(1)); // immidiately run next update var time = BacktraceMetrics.MaxTimeBetweenRequests + (BacktraceMetrics.MaxTimeBetweenRequests * i) + i + 1; backtraceMetrics.Tick(time); } yield return(new WaitForSeconds(1)); Assert.AreEqual(expectedNumberOfSummedEvents, backtraceMetrics.Count()); }
public IEnumerator MetricsSubmission_ShouldTry3TimesOn503AndDropSummedEventsOnMaximumNumberOfEvents_DataWasDeleted() { const int expectedNumberOfEventsAfterFailure = 1; // unique events and we have enough place for session event so also session event var requestHandler = new BacktraceHttpClientMock() { StatusCode = 503 }; var backtraceMetrics = new BacktraceMetrics(_attributeProvider, 0, _defaultUniqueEventsSubmissionUrl, _defaultSummedEventsSubmissionUrl); backtraceMetrics.OverrideHttpClient(requestHandler); for (int i = 0; i < backtraceMetrics.MaximumSummedEvents; i++) { backtraceMetrics.AddSummedEvent(MetricsEventName); } backtraceMetrics.AddUniqueEvent(UniqueAttributeName); backtraceMetrics.Send(); for (int i = 0; i < BacktraceMetrics.MaxNumberOfAttempts; i++) { yield return(new WaitForSeconds(1)); // immidiately run next update var time = BacktraceMetrics.MaxTimeBetweenRequests + (BacktraceMetrics.MaxTimeBetweenRequests * i) + i + 1; backtraceMetrics.Tick(time); } yield return(new WaitForSeconds(1)); Assert.AreEqual(expectedNumberOfEventsAfterFailure, backtraceMetrics.Count()); Assert.AreEqual(BacktraceMetrics.MaxNumberOfAttempts * 2, requestHandler.NumberOfRequests); }
public IEnumerator MetricsSubmission_ShouldTry3TimesOn502BeforeDroppingEvents_DataWasntSendToBacktrace() { const int expectedNumberOfEventsAfterFailure = 2; var requestHandler = new BacktraceHttpClientMock() { StatusCode = 502 }; var backtraceMetrics = new BacktraceMetrics(_attributeProvider, 0, _defaultUniqueEventsSubmissionUrl, _defaultSummedEventsSubmissionUrl); backtraceMetrics.OverrideHttpClient(requestHandler); backtraceMetrics.AddSummedEvent(MetricsEventName); backtraceMetrics.AddUniqueEvent(UniqueAttributeName); backtraceMetrics.Send(); for (int i = 0; i < BacktraceMetrics.MaxNumberOfAttempts; i++) { yield return(new WaitForSeconds(1)); // immidiately run next update var time = BacktraceMetrics.MaxTimeBetweenRequests + (BacktraceMetrics.MaxTimeBetweenRequests * i) + i + 1; backtraceMetrics.Tick(time); } yield return(new WaitForSeconds(1)); Assert.AreEqual(BacktraceMetrics.MaxNumberOfAttempts * 2, requestHandler.NumberOfRequests); Assert.AreEqual(backtraceMetrics.Count(), expectedNumberOfEventsAfterFailure); }
public void BacktraceMetricsSummedEvents_ShoulOverrideDefaultSubmissionUrl_SendEventToValidUrl() { var expectedSubmissionUrl = string.Format("{0}/summed-events/unit-test/submit?token={1}&universe={2}", _defaultSubmissionUrl, _token, _universeName); var jsonString = string.Empty; var submissionUrl = string.Empty; var requestHandler = new BacktraceHttpClientMock() { OnInvoke = (string url, BacktraceJObject json) => { jsonString = json.ToJson(); submissionUrl = url; } }; var backtraceMetrics = new BacktraceMetrics(_attributeProvider, 0, _defaultUniqueEventsSubmissionUrl, _defaultSummedEventsSubmissionUrl) { SummedEventsSubmissionUrl = expectedSubmissionUrl }; backtraceMetrics.OverrideHttpClient(requestHandler); backtraceMetrics.AddSummedEvent(MetricsEventName); backtraceMetrics.Send(); Assert.IsNotEmpty(jsonString); Assert.AreEqual(expectedSubmissionUrl, submissionUrl); Assert.IsEmpty(backtraceMetrics.SummedEvents); }
public void BacktraceMetricsDefaultEvent_ShouldSendDefaultEventOnTheApplicationStartup_DataWasSendToBacktrace() { var requestHandler = new BacktraceHttpClientMock(); var backtraceMetrics = new BacktraceMetrics(_attributeProvider, 10, _defaultUniqueEventsSubmissionUrl, _defaultSummedEventsSubmissionUrl); backtraceMetrics.OverrideHttpClient(requestHandler); backtraceMetrics.SendStartupEvent(); Assert.AreEqual(2, requestHandler.NumberOfRequests); }
public void BacktraceMetrics_ShouldntTriggerUploadWhenDataIsNotAvailable_DataWasntSendToBacktrace() { var backtraceMetrics = new BacktraceMetrics(_attributeProvider, 0, _defaultUniqueEventsSubmissionUrl, _defaultSummedEventsSubmissionUrl); var requestHandler = new BacktraceHttpClientMock(); backtraceMetrics.OverrideHttpClient(requestHandler); backtraceMetrics.Send(); Assert.IsFalse(requestHandler.Called); }
public void BacktraceMetrics_ShouldTryOnlyOnceOnHttpFailure_DataWasntSendToBacktrace() { var requestHandler = new BacktraceHttpClientMock() { IsHttpError = true }; var backtraceMetrics = new BacktraceMetrics(_attributeProvider, 0, _defaultUniqueEventsSubmissionUrl, _defaultSummedEventsSubmissionUrl); backtraceMetrics.OverrideHttpClient(requestHandler); backtraceMetrics.AddSummedEvent(MetricsEventName); backtraceMetrics.AddUniqueEvent(UniqueAttributeName); backtraceMetrics.Send(); Assert.AreEqual(2, requestHandler.NumberOfRequests); }
public void BacktraceMetrics_ShouldTriggerUploadProcessWhenTimeIntervalIsEqualToZero_DataWasntSendToTheService() { var requestHandler = new BacktraceHttpClientMock(); var backtraceMetrics = new BacktraceMetrics(_attributeProvider, 0, _defaultUniqueEventsSubmissionUrl, _defaultSummedEventsSubmissionUrl); backtraceMetrics.OverrideHttpClient(requestHandler); backtraceMetrics.AddSummedEvent(MetricsEventName); for (int i = 0; i < 1000; i++) { backtraceMetrics.Tick(i); } Assert.AreEqual(0, requestHandler.NumberOfRequests); }
public void BacktraceMetrics_ShouldntTriggerDownloadBeforeTimeIntervalHit_DataWasSendToBacktrace() { const int timeInterval = 10; const int numberOfAddedEvents = 2; var requestHandler = new BacktraceHttpClientMock(); var backtraceMetrics = new BacktraceMetrics(_attributeProvider, timeInterval, _defaultUniqueEventsSubmissionUrl, _defaultSummedEventsSubmissionUrl); backtraceMetrics.OverrideHttpClient(requestHandler); backtraceMetrics.AddSummedEvent(MetricsEventName); backtraceMetrics.AddUniqueEvent(UniqueAttributeName); backtraceMetrics.Tick(timeInterval - 1); Assert.AreEqual(numberOfAddedEvents, backtraceMetrics.Count()); Assert.AreEqual(0, requestHandler.NumberOfRequests); }
public void BacktraceMetrics_ShouldTriggerUploadAfterTimeIntervalHit_DataWasSendToBacktrace() { const int timeInterval = 10; const int expectedNumberOfEvents = 1; // we send successfully session event so we have one unique event const int expectedNumberOfRequests = 2; var requestHandler = new BacktraceHttpClientMock(); var backtraceMetrics = new BacktraceMetrics(_attributeProvider, timeInterval, _defaultUniqueEventsSubmissionUrl, _defaultSummedEventsSubmissionUrl); backtraceMetrics.OverrideHttpClient(requestHandler); backtraceMetrics.AddSummedEvent(MetricsEventName); backtraceMetrics.AddUniqueEvent(UniqueAttributeName); backtraceMetrics.Tick(timeInterval + 1); Assert.AreEqual(expectedNumberOfEvents, backtraceMetrics.Count()); Assert.AreEqual(expectedNumberOfRequests, requestHandler.NumberOfRequests); }
public void BacktraceMetrics_ShouldntTriggerDownloadViaTickMethodWhenDidntReachMaximumNumberOfEvents_DataWasSendToBacktrace() { const int maximumNumberOfEvents = 3; const int expectedNumberOfEvents = 2; var backtraceMetrics = new BacktraceMetrics(_attributeProvider, 0, _defaultUniqueEventsSubmissionUrl, _defaultSummedEventsSubmissionUrl) { MaximumSummedEvents = maximumNumberOfEvents }; var requestHandler = new BacktraceHttpClientMock(); backtraceMetrics.OverrideHttpClient(requestHandler); for (int i = 0; i < expectedNumberOfEvents; i++) { backtraceMetrics.AddSummedEvent(string.Format("{0} {1}", MetricsEventName, i)); } backtraceMetrics.Tick(0); Assert.AreEqual(expectedNumberOfEvents, backtraceMetrics.Count()); Assert.AreEqual(0, requestHandler.NumberOfRequests); }
public void BacktraceMetrics_ShouldTriggerUploadViaTickMethodWhenReachedMaximumNumberOfEvents_DataWasSendToBacktrace() { const int maximumNumberOfEvents = 3; const int defaultTimeIntervalInSec = 10; var requestHandler = new BacktraceHttpClientMock(); var backtraceMetrics = new BacktraceMetrics(_attributeProvider, defaultTimeIntervalInSec, _defaultUniqueEventsSubmissionUrl, _defaultSummedEventsSubmissionUrl) { MaximumSummedEvents = maximumNumberOfEvents }; backtraceMetrics.OverrideHttpClient(requestHandler); for (int i = 0; i < maximumNumberOfEvents; i++) { backtraceMetrics.AddSummedEvent(string.Format("{0} {1}", MetricsEventName, i)); } backtraceMetrics.Tick(defaultTimeIntervalInSec + 1); Assert.AreEqual(0, backtraceMetrics.Count()); Assert.AreEqual(1, requestHandler.NumberOfRequests); }
public void BacktraceMetrics_ShouldTriggerUploadProcessOnSendMethodWithOnlyUniqueEvent_DataWasSendToTheService() { var jsonString = string.Empty; var submissionUrl = string.Empty; var requestHandler = new BacktraceHttpClientMock() { OnInvoke = (string url, BacktraceJObject json) => { jsonString = json.ToJson(); submissionUrl = url; } }; var backtraceMetrics = new BacktraceMetrics(_attributeProvider, 0, _defaultUniqueEventsSubmissionUrl, _defaultSummedEventsSubmissionUrl); backtraceMetrics.OverrideHttpClient(requestHandler); backtraceMetrics.AddUniqueEvent(UniqueAttributeName); backtraceMetrics.Send(); Assert.IsNotEmpty(jsonString); Assert.AreEqual(submissionUrl, _expectedUniqueEventsSubmissionUrl); Assert.IsEmpty(backtraceMetrics.SummedEvents); }
public void BacktraceMetrics_ShouldTriggerUploadAfterTimeIntervalHitAgain_DataWasSendToBacktrace() { const int timeInterval = 10; var requestHandler = new BacktraceHttpClientMock(); var backtraceMetrics = new BacktraceMetrics(_attributeProvider, timeInterval, _defaultUniqueEventsSubmissionUrl, _defaultSummedEventsSubmissionUrl); backtraceMetrics.OverrideHttpClient(requestHandler); backtraceMetrics.AddSummedEvent(MetricsEventName); backtraceMetrics.AddUniqueEvent(UniqueAttributeName); backtraceMetrics.Tick(timeInterval + 1); backtraceMetrics.AddSummedEvent(MetricsEventName); backtraceMetrics.AddUniqueEvent(UniqueAttributeName); backtraceMetrics.Tick((timeInterval * 2) + 1); // we added two unique events - but because we added two the same reports // they should be combined Assert.AreEqual(1, backtraceMetrics.Count()); Assert.AreEqual(4, requestHandler.NumberOfRequests); }