public void GetLinkingMetadata_CalledOnceForEachEvent() { // Arrange LogManager.ShutdownRepository(Assembly.GetEntryAssembly()); var testAgent = Mock.Create <IAgent>(); Mock.Arrange(() => testAgent.GetLinkingMetadata()).Returns(new Dictionary <string, string>() { { "key", "value" } }); var testAppender = new NewRelicAppender(() => testAgent); //Set the the NewRelicAppender at the root logger var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly()); BasicConfigurator.Configure(logRepository, testAppender); var layout = Mock.Create <log4net.Layout.SimpleLayout>(); layout.ActivateOptions(); var childAppender = new log4net.Appender.ConsoleAppender { Layout = layout }; testAppender.AddAppender(childAppender); var testLoggingEvents = new List <LoggingEvent>(); Mock.Arrange(() => layout.Format(Arg.IsAny <TextWriter>(), Arg.IsAny <LoggingEvent>())).DoInstead((TextWriter textWriter, LoggingEvent loggingEvent) => { testLoggingEvents.Add(loggingEvent); }); var testLogger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); //// Act var rnd = new Random(); var countLogAttempts = rnd.Next(2, 25); for (var i = 0; i < countLogAttempts; i++) { testLogger.Info("This is a log message"); } // Assert Mock.Assert(() => testAgent.GetLinkingMetadata(), Occurs.Exactly(countLogAttempts)); Assert.That(testLoggingEvents.Count, Is.EqualTo(countLogAttempts)); testLoggingEvents.ForEach(loggingEvent => { Assert.That(loggingEvent.Properties.Contains("newrelic.linkingmetadata"), "newrelic.linkingmetadata not property found. This test expects newrelic.linkingmetadata property in log event"); }); }
public void SetUp() { _testAgent = Mock.Create <IAgent>(); _testAppender = new NewRelicAppender(() => _testAgent); _layout = Mock.Create <NewRelicLayout>(); _childAppender = new log4net.Appender.ConsoleAppender { Layout = _layout }; _testAppender.AddAppender(_childAppender); }
public void GetLinkingMetadata_IsHandled_Exception() { // Arrange LogManager.ShutdownRepository(Assembly.GetEntryAssembly()); var testAgent = Mock.Create <IAgent>(); Mock.Arrange(() => testAgent.GetLinkingMetadata()).DoInstead(() => { throw new Exception("Exception - GetLinkingMetadata"); }); var testAppender = new NewRelicAppender(() => testAgent); //Set the the NewRelicAppender at the root logger var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly()); BasicConfigurator.Configure(logRepository, testAppender); var testLogger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); var layout = Mock.Create <log4net.Layout.SimpleLayout>(); var childAppender = new log4net.Appender.ConsoleAppender { Layout = layout }; testAppender.AddAppender(childAppender); var testLoggingEvents = new List <LoggingEvent>(); Mock.Arrange(() => layout.Format(Arg.IsAny <TextWriter>(), Arg.IsAny <LoggingEvent>())).DoInstead((TextWriter textWriter, LoggingEvent loggingEvent) => { testLoggingEvents.Add(loggingEvent); }); // Act testLogger.Info("This is log message "); // Assert Assert.That(testLoggingEvents.Count, Is.EqualTo(1)); Assert.That(!testLoggingEvents[0].Properties.Contains("newrelic.linkingmetadata"), "newrelic.linkingmetadata property found. This test does not expect newrelic.linkingmetadata property in log event"); }