Esempio n. 1
0
        public void TestReportLimit_ShouldntHitRateLimit_AllReportsShouldBeInBacktrace(int reportPerMin)
        {
            uint rateLimit = Convert.ToUInt32(reportPerMin);

            BacktraceClient.SetClientReportLimit(rateLimit);
            int maximumNumberOfRetries = 0;

            BacktraceClient.RequestHandler = (string url, BacktraceData data) =>
            {
                maximumNumberOfRetries++;
                return(new BacktraceResult());
            };
            int skippedReports = 0;

            BacktraceClient.OnClientReportLimitReached = (BacktraceReport report) =>
            {
                skippedReports++;
            };
            for (int i = 0; i < rateLimit; i++)
            {
                BacktraceClient.Send("test");
            }
            Assert.AreEqual(maximumNumberOfRetries, rateLimit);
            Assert.AreEqual(0, skippedReports);
        }
Esempio n. 2
0
        public IEnumerator TestReportLimit_TestSendingError_SkippProcessingReports()
        {
            BacktraceClient.SetClientReportLimit(CLIENT_RATE_LIMIT);
            int totalNumberOfReports   = 5;
            int maximumNumberOfRetries = 0;

            BacktraceClient.RequestHandler = (string url, BacktraceData data) =>
            {
                maximumNumberOfRetries++;
                return(new BacktraceResult());
            };
            int skippedReports = 0;

            BacktraceClient.OnClientReportLimitReached = (BacktraceReport report) =>
            {
                skippedReports++;
            };

            for (int i = 0; i < totalNumberOfReports; i++)
            {
                BacktraceClient.Send(new Exception("Exception"));
            }
            Assert.AreEqual(totalNumberOfReports, maximumNumberOfRetries + skippedReports);
            Assert.AreEqual(maximumNumberOfRetries, CLIENT_RATE_LIMIT);
            Assert.AreEqual(totalNumberOfReports - CLIENT_RATE_LIMIT, skippedReports);
            yield return(null);
        }
Esempio n. 3
0
 public void Setup()
 {
     BeforeSetup();
     BacktraceClient.Configuration = GetBasicConfiguration();
     BacktraceClient.SetClientReportLimit(CLIENT_RATE_LIMIT);
     AfterSetup();
 }
Esempio n. 4
0
        public IEnumerator TestReportLimit_InvalidReportNumber_IgnoreAdditionalReports()
        {
            BacktraceClient.SetClientReportLimit(CLIENT_RATE_LIMIT);
            int totalNumberOfReports   = 5;
            int maximumNumberOfRetries = 0;

            BacktraceClient.RequestHandler = (string url, BacktraceData data) =>
            {
                maximumNumberOfRetries++;
                return(new BacktraceResult());
            };
            int skippedReports = 0;

            BacktraceClient.OnClientReportLimitReached = (BacktraceReport report) =>
            {
                skippedReports++;
            };

            for (int i = 0; i < totalNumberOfReports; i++)
            {
                BacktraceClient.Send("test");
            }
            Assert.AreEqual(totalNumberOfReports, maximumNumberOfRetries + skippedReports);
            Assert.AreEqual(maximumNumberOfRetries, CLIENT_RATE_LIMIT);
            Assert.AreEqual(totalNumberOfReports - CLIENT_RATE_LIMIT, skippedReports);
            yield return(null);
        }
Esempio n. 5
0
        public void SingleThreadWithoutReportRateLimit(int numberOfTasks)
        {
            // one thread = 4 request to API
            int expectedNumberOfReports = numberOfTasks * 4;
            int totalSend = 0;

            //set rate limiting to unlimite
            _backtraceClient.SetClientReportLimit(0);
            clientReportLimitReached   = false;
            _backtraceClient.AfterSend = (BacktraceResult res) =>
            {
                totalSend++;
            };

            //prepare thread and catch 2 exception per thread and send two custom messages
            var taskList = new Task[numberOfTasks];

            for (int threadIndex = 0; threadIndex < numberOfTasks; threadIndex++)
            {
                taskList[threadIndex] = ThreadTest(threadIndex);
            }
            Task.WaitAll(taskList);

            Assert.AreEqual(expectedNumberOfReports, totalSend);
            Assert.IsFalse(clientReportLimitReached);
        }
Esempio n. 6
0
        public IEnumerator TestReportLimit_ValidReportNumber_AddAllReports()
        {
            BacktraceClient.SetClientReportLimit(CLIENT_RATE_LIMIT);
            int maximumNumberOfRetries = 0;

            BacktraceClient.RequestHandler = (string url, BacktraceData data) =>
            {
                maximumNumberOfRetries++;
                return(new BacktraceResult());
            };
            for (int i = 0; i < 2; i++)
            {
                BacktraceClient.Send("test");
            }
            Assert.AreEqual(2, maximumNumberOfRetries);
            yield return(null);
        }
Esempio n. 7
0
        public async Task TestClientRateLimiting(int numberOfCycles, int rateLimit)
        {
            //we send reports by using Send method and SendAsync method - 8 per c
            int  totalSendReport         = numberOfCycles * 8;
            int  expectedNumberOfReports = rateLimit > totalSendReport ? totalSendReport : rateLimit;
            int  totalNumberOfReports    = 0;
            bool eventTrigger            = false;

            _backtraceClient.OnClientReportLimitReached = (BacktraceReport report) =>
            {
                eventTrigger = true;
            };

            _backtraceClient.AfterSend = (BacktraceResult res) =>
            {
                if (res.Status == BacktraceResultStatus.Ok)
                {
                    totalNumberOfReports++;
                }
            };

            _backtraceClient.SetClientReportLimit((uint)rateLimit);
            for (int i = 0; i < numberOfCycles; i++)
            {
                //test sync submission
                _backtraceClient.Send("client message");
                _backtraceClient.Send(new Exception("test exception"));
                _backtraceClient.Send(new BacktraceReport("report message"));
                _backtraceClient.Send(new BacktraceReport(new Exception("test exception")));
                //test async submission
                await _backtraceClient.SendAsync("client message");

                await _backtraceClient.SendAsync(new Exception("test exception"));

                await _backtraceClient.SendAsync(new BacktraceReport("report message"));

                await _backtraceClient.SendAsync(new BacktraceReport(new Exception("test exception")));
            }

            Assert.IsTrue(eventTrigger);
            Assert.AreEqual(expectedNumberOfReports, totalNumberOfReports);
        }