public void FaultyTruncateTest() { this.Reset(); RollbarLoggerConfig config = this.ProvideLiveRollbarConfig() as RollbarLoggerConfig; RollbarPayloadManipulationOptions payloadManipulationOptions = new RollbarPayloadManipulationOptions(); payloadManipulationOptions.Truncate = delegate(Payload payload) { throw new Exception("Buggy truncate delegate!"); }; config.RollbarPayloadManipulationOptions.Reconfigure(payloadManipulationOptions); using (IRollbar rollbar = this.ProvideDisposableRollbar()) { rollbar.Configure(config); rollbar.Critical("This message's Truncate will fail!"); this.VerifyInstanceOperational(rollbar); // one more extra sanity check: Assert.AreEqual(0, RollbarQueueController.Instance.GetTotalPayloadCount()); } this.Reset(); }
public void ConvenienceMethodsUseAppropriateErrorLevels(ErrorLevel expectedLogLevel) { var acctualLogLevel = ErrorLevel.Info; void Transform(Payload payload) { acctualLogLevel = payload.Data.Level.Value; } RollbarDestinationOptions destinationOptions = new RollbarDestinationOptions( RollbarUnitTestSettings.AccessToken, RollbarUnitTestSettings.Environment ); RollbarPayloadManipulationOptions payloadManipulationOptions = new RollbarPayloadManipulationOptions(Transform); var loggerConfig = new RollbarLoggerConfig(); loggerConfig.RollbarDestinationOptions.Reconfigure(destinationOptions); loggerConfig.RollbarPayloadManipulationOptions.Reconfigure(payloadManipulationOptions); using (var logger = RollbarFactory.CreateNew().Configure(loggerConfig)) { try { var blockingLogger = logger.AsBlockingLogger(TimeSpan.FromMilliseconds(TIME_OUT)); var ex = new Exception(); switch (expectedLogLevel) { case ErrorLevel.Critical: blockingLogger.Critical(ex); break; case ErrorLevel.Error: blockingLogger.Error(ex); break; case ErrorLevel.Warning: blockingLogger.Warning(ex); break; case ErrorLevel.Info: blockingLogger.Info(ex); break; case ErrorLevel.Debug: blockingLogger.Debug(ex); break; } } catch { Assert.Fail(); } } Assert.AreEqual(expectedLogLevel, acctualLogLevel); }
public void ExceptionWhileTransformingPayloadAsync() { this._transformException = false; RollbarDestinationOptions destinationOptions = new RollbarDestinationOptions( RollbarUnitTestSettings.AccessToken, RollbarUnitTestSettings.Environment ); RollbarLoggerConfig loggerConfig = new RollbarLoggerConfig(); loggerConfig.RollbarDestinationOptions.Reconfigure(destinationOptions); RollbarPayloadManipulationOptions payloadManipulationOptions = new RollbarPayloadManipulationOptions(); payloadManipulationOptions.Transform = delegate { throw new NullReferenceException(); }; loggerConfig.RollbarPayloadManipulationOptions.Reconfigure(payloadManipulationOptions); using IRollbar logger = RollbarFactory.CreateNew().Configure(loggerConfig); logger.InternalEvent += Logger_InternalEvent; try { this.IncrementCount <CommunicationEventArgs>(); logger.Log(ErrorLevel.Error, "test message"); } catch { logger.InternalEvent -= Logger_InternalEvent; Assert.Fail("should never get here!"); throw; } this._signal.Wait(); logger.InternalEvent -= Logger_InternalEvent; Assert.IsTrue(this._transformException); }
public void LongReportIsAsync() { const int maxCallLengthInMillisec = 50; TimeSpan payloadSubmissionDelay = TimeSpan.FromMilliseconds(3 * maxCallLengthInMillisec); RollbarDestinationOptions destinationOptions = new RollbarDestinationOptions( RollbarUnitTestSettings.AccessToken, RollbarUnitTestSettings.Environment ); RollbarLoggerConfig loggerConfig = new RollbarLoggerConfig(); loggerConfig.RollbarDestinationOptions.Reconfigure(destinationOptions); RollbarPayloadManipulationOptions payloadManipulationOptions = new RollbarPayloadManipulationOptions(); payloadManipulationOptions.Transform = delegate { Thread.Sleep(payloadSubmissionDelay); }; loggerConfig.RollbarPayloadManipulationOptions.Reconfigure(payloadManipulationOptions); using IRollbar logger = RollbarFactory.CreateNew().Configure(loggerConfig); try { this.IncrementCount <CommunicationEventArgs>(); Stopwatch sw = Stopwatch.StartNew(); logger.Log(ErrorLevel.Error, "test message"); sw.Stop(); Assert.IsTrue(sw.ElapsedMilliseconds < maxCallLengthInMillisec); Thread.Sleep(payloadSubmissionDelay); } catch { Assert.Fail("should never get here!"); } }
public void ConvenienceMethodsUseAppropriateErrorLevels(ErrorLevel expectedLogLevel) { var awaitAsyncSend = new ManualResetEventSlim(false); var acctualLogLevel = ErrorLevel.Info; void Transform(Payload payload) { acctualLogLevel = payload.Data.Level.Value; awaitAsyncSend.Set(); } RollbarDestinationOptions destinationOptions = new RollbarDestinationOptions( RollbarUnitTestSettings.AccessToken, RollbarUnitTestSettings.Environment ); RollbarLoggerConfig loggerConfig = new RollbarLoggerConfig(); loggerConfig.RollbarDestinationOptions.Reconfigure(destinationOptions); RollbarPayloadManipulationOptions payloadManipulationOptions = new RollbarPayloadManipulationOptions(); payloadManipulationOptions.Transform = Transform; loggerConfig.RollbarPayloadManipulationOptions.Reconfigure(payloadManipulationOptions); this.IncrementCount <CommunicationEventArgs>(); using (var logger = RollbarFactory.CreateNew().Configure(loggerConfig)) { try { //TODO: implement and add SynchronousPackage around the payload object!!! var ex = new Exception(); switch (expectedLogLevel) { case ErrorLevel.Critical: logger.Critical(ex); break; case ErrorLevel.Error: logger.Error(ex); break; case ErrorLevel.Warning: logger.Warning(ex); break; case ErrorLevel.Info: logger.Info(ex); break; case ErrorLevel.Debug: logger.Debug(ex); break; } } catch { Assert.Fail("should never reach here!"); } } awaitAsyncSend.Wait(); Assert.AreEqual(expectedLogLevel, acctualLogLevel); }