コード例 #1
0
        public void TestUsingLongEnoughTimeout()
        {
            // [DO]: let's send a payload using reasonably long PayloadPostTimeout
            // [EXPECT]: even under all the good networking conditions sending a payload should succeed
            RollbarInfrastructureOptions infrastructureOptions =
                new RollbarInfrastructureOptions();

            infrastructureOptions.PayloadPostTimeout =
                TimeSpan.FromMilliseconds(2000); // long enough
            RollbarInfrastructure.Instance.Config.RollbarInfrastructureOptions
            .Reconfigure(infrastructureOptions);
            using (var logger = (RollbarLogger)RollbarFactory.CreateNew(RollbarInfrastructure.Instance.Config.RollbarLoggerConfig))
            {
                RollbarUnitTestEnvironmentUtil.TraceCurrentRollbarInfrastructureConfig();
                RollbarUnitTestEnvironmentUtil.Trace(logger.Config, "Logger_Config");
                var client = new RollbarClient(logger);
                var bundle = new PayloadBundle(logger, RollbarClientFixture.CrateTestPackage(), ErrorLevel.Info);
                client.EnsureHttpContentToSend(bundle);
                var response = client.PostAsJson(bundle);
                RollbarUnitTestEnvironmentUtil.Trace(response, "Rollbar API HTTP response");
                Assert.IsNotNull(response, "let's send a payload using reasonably long PayloadPostTimeout");
                Assert.AreEqual(0, response.Error);
                Assert.AreEqual(0, bundle.Exceptions.Count);
            }
        }
コード例 #2
0
        public void TestUsingUnreasonablyShortTimeout()
        {
            // [DO]: let's send a payload using unreasonably short PayloadPostTimeout
            // [EXPECT]: even under all the good networking conditions sending a payload should not succeed
            RollbarInfrastructureOptions infrastructureOptions =
                new RollbarInfrastructureOptions();

            infrastructureOptions.PayloadPostTimeout =
                TimeSpan.FromMilliseconds(5); // short enough
            RollbarInfrastructure.Instance.Config.RollbarInfrastructureOptions
            .Reconfigure(infrastructureOptions);
            using (var logger = (RollbarLogger)RollbarFactory.CreateNew(RollbarInfrastructure.Instance.Config.RollbarLoggerConfig))
            {
                RollbarUnitTestEnvironmentUtil.TraceCurrentRollbarInfrastructureConfig();
                RollbarUnitTestEnvironmentUtil.Trace(logger.Config, "Logger_Config");
                var client = new RollbarClient(logger);
                var bundle = new PayloadBundle(logger, RollbarClientFixture.CrateTestPackage(), ErrorLevel.Info);
                client.EnsureHttpContentToSend(bundle);
                var response = client.PostAsJson(bundle);
                RollbarUnitTestEnvironmentUtil.Trace(response, "Rollbar API HTTP response");
                Assert.IsNull(response);
                Assert.AreEqual(1, bundle.Exceptions.Count);
                //Assert.AreEqual("While PostAsJson(PayloadBundle payloadBundle)...", bundle.Exceptions.First().Message);
                //Assert.IsTrue(bundle.Exceptions.First().InnerException.Message.StartsWith("One or more errors occurred"));
                //Assert.AreEqual("A task was canceled.",  bundle.Exceptions.First().InnerException.InnerException.Message);
            }
        }
コード例 #3
0
        public void RateLimitConfigSettingOverridesServerHeadersBasedReportingRateTest()
        {
            const int totalTestPayloads  = 10;
            const int localReportingRate = 30;

            using (IRollbar rollbar = this.ProvideDisposableRollbar())
            {
                // using Rollbar API service enforced reporting rate:
                Stopwatch sw = Stopwatch.StartNew();
                for (int i = 0; i < totalTestPayloads; i++)
                {
                    rollbar.AsBlockingLogger(TimeSpan.FromSeconds(3)).Critical("RateLimitConfigSettingOverridesServerHeadersBasedReportingRateTest");
                }
                sw.Stop();
                TimeSpan serverRateDuration = sw.Elapsed;

                // reconfigure with locally defined reporting rate:
                //RollbarLoggerConfig rollbarConfig = new RollbarLoggerConfig();
                //rollbarConfig.Reconfigure(rollbar.Config);
                //Assert.IsFalse(rollbarConfig.RollbarInfrastructureOptions.MaxReportsPerMinute.HasValue);
                Assert.IsFalse(RollbarInfrastructure.Instance.Config.RollbarInfrastructureOptions.MaxReportsPerMinute.HasValue);

                RollbarInfrastructureOptions rollbarInfrastructureOptions = new RollbarInfrastructureOptions();
                rollbarInfrastructureOptions.MaxReportsPerMinute = localReportingRate;
                RollbarInfrastructure.Instance.Config.RollbarInfrastructureOptions.Reconfigure(rollbarInfrastructureOptions);
                Assert.IsTrue(RollbarInfrastructure.Instance.Config.RollbarInfrastructureOptions.MaxReportsPerMinute.HasValue);
                Assert.AreEqual(localReportingRate, RollbarInfrastructure.Instance.Config.RollbarInfrastructureOptions.MaxReportsPerMinute.Value);

                //rollbar.Config.Reconfigure(rollbarConfig);
                //Assert.IsTrue(rollbar.Config.RollbarInfrastructureOptions.MaxReportsPerMinute.HasValue);
                //Assert.AreEqual(localReportingRate, rollbar.Config.RollbarInfrastructureOptions.MaxReportsPerMinute.Value);

                // using local config defined reporting rate:
                sw.Restart();
                for (int i = 0; i < totalTestPayloads; i++)
                {
                    rollbar.AsBlockingLogger(TimeSpan.FromSeconds(3)).Critical("RateLimitConfigSettingOverridesServerHeadersBasedReportingRateTest");
                }
                sw.Stop();
                TimeSpan localRateDuration = sw.Elapsed;

                Assert.IsTrue(2 < (localRateDuration.TotalMilliseconds / serverRateDuration.TotalMilliseconds), "This is good enough confirmation of locally defined rate in action...");
            }

            this.IncrementCount <CommunicationEventArgs>(2 * totalTestPayloads);
        }
        public static RollbarInfrastructureConfig GetLiveTestRollbarInfrastructureConfig()
        {
            var config =
                new RollbarInfrastructureConfig();

            var destinationOptions =
                RollbarUnitTestEnvironmentUtil.GetLiveTestRollbarDestinationOptions();

            config
            .RollbarLoggerConfig
            .RollbarDestinationOptions
            .Reconfigure(destinationOptions);

            var infrastructureOptions = new RollbarInfrastructureOptions();

            infrastructureOptions.PayloadPostTimeout = TimeSpan.FromSeconds(3);
            config
            .RollbarInfrastructureOptions
            .Reconfigure(infrastructureOptions);

            return(config);
        }
コード例 #5
0
        public void MultithreadedStressTest_BlockingLogs()
        {
            RollbarLoggerFixture.stressLogsCount = 0;

            RollbarDestinationOptions destinationOptions =
                new RollbarDestinationOptions(
                    RollbarUnitTestSettings.AccessToken,
                    RollbarUnitTestSettings.Environment
                    );
            RollbarLoggerConfig loggerConfig = new RollbarLoggerConfig();

            loggerConfig.RollbarDestinationOptions.Reconfigure(destinationOptions);

            RollbarInfrastructureOptions infrastructureOptions = new RollbarInfrastructureOptions();

            infrastructureOptions.ReportingQueueDepth = 200;
            RollbarInfrastructure.Instance.Config.RollbarInfrastructureOptions.Reconfigure(infrastructureOptions);

            this.IncrementCount <CommunicationEventArgs>(RollbarInfrastructure.Instance.Config.RollbarInfrastructureOptions.ReportingQueueDepth);

            TimeSpan rollbarBlockingTimeout = TimeSpan.FromMilliseconds(55000);

            List <IRollbar> rollbars =
                new List <IRollbar>(MultithreadedStressTestParams.TotalThreads);
            List <ILogger> loggers = new List <ILogger>(MultithreadedStressTestParams.TotalThreads);

            for (int i = 0; i < MultithreadedStressTestParams.TotalThreads; i++)
            {
                var rollbar = RollbarFactory.CreateNew().Configure(loggerConfig);
                loggers.Add(rollbar.AsBlockingLogger(rollbarBlockingTimeout));
                rollbars.Add(rollbar);
            }

            PerformTheMultithreadedStressTest(loggers.ToArray());

            rollbars.ForEach(r => {
                r.Dispose();
            });
        }