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); } }
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); } }
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); }
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(); }); }