public void CanWriteToDatabase() { // Arrange ILog log = LogManager.GetLogger(rep.Name, "CanWriteToDatabase"); // Act log.Error(ErrorMessage); Thread.Sleep(200); // let background thread finish // Assert bool isLogEntryPresent = LogsDBAccess.IsLogEntryPresent(ErrorLevel, ErrorMessage, ApplicationName); Assert.That(isLogEntryPresent, Is.True); }
public void ReturnsQuicklyAfterLogging100Messages() { // Arrange ILog log = LogManager.GetLogger(rep.Name, "ReturnsQuicklyAfterLogging100Messages"); // Act DateTime startTime = DateTime.UtcNow; 100.Times(i => log.Error(ErrorMessage)); DateTime endTime = DateTime.UtcNow; // Give background thread time to finish Thread.Sleep(500); // Assert Assert.That(endTime - startTime, Is.LessThan(TimeSpan.FromMilliseconds(100))); int logCount = LogsDBAccess.CountLogEntriesPresent(ErrorLevel, ErrorMessage, ApplicationName); Assert.That(logCount, Is.EqualTo(100)); }
public void TestFixtureSetUp() { appender = new AsyncAdoAppender { CommandType = CommandType.Text, ConnectionString = connectionString, CommandText = commandText, ConnectionType = connectionType }; appender.AddParameter(new AdoNetAppenderParameter { DbType = DbType.DateTime, ParameterName = "@log_date", Layout = new RawUtcTimeStampLayout() }); appender.AddParameter(new AdoNetAppenderParameter { DbType = DbType.String, Size = 255, ParameterName = "@thread", Layout = new Layout2RawLayoutAdapter(new PatternLayout("%thread")) }); appender.AddParameter(new AdoNetAppenderParameter { DbType = DbType.String, Size = 40, ParameterName = "@log_level", Layout = new Layout2RawLayoutAdapter(new PatternLayout("%level")) }); appender.AddParameter(new AdoNetAppenderParameter { DbType = DbType.String, Size = 255, ParameterName = "@logger", Layout = new Layout2RawLayoutAdapter(new PatternLayout("%logger")) }); appender.AddParameter(new AdoNetAppenderParameter { DbType = DbType.String, Size = 4000, ParameterName = "@message", Layout = new Layout2RawLayoutAdapter(new PatternLayout("%message")) }); appender.AddParameter(new AdoNetAppenderParameter { DbType = DbType.String, Size = 4000, ParameterName = "@exception", Layout = new Layout2RawLayoutAdapter(new PatternLayout("%exception")) }); appender.AddParameter(new AdoNetAppenderParameter { DbType = DbType.String, Size = 200, ParameterName = "@application", Layout = new Layout2RawLayoutAdapter(new PatternLayout(ApplicationName)) }); appender.Threshold = ErrorLevel; appender.BufferSize = -1; appender.ActivateOptions(); rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); BasicConfigurator.Configure(rep, appender); LogsDBAccess.RemoveMatchingLogEntries(ErrorLevel, ErrorMessage, ApplicationName); }
public void CanLogAtleast1000MessagesASecond() { // Arrange ILog log = LogManager.GetLogger(rep.Name, "CanLogAtLeast1000MessagesASecond"); int logCount = 0; bool logging = true; bool logsCounted = false; var logTimer = new Timer(s => { logging = false; logCount = LogsDBAccess.CountLogEntriesPresent(ErrorLevel, ErrorMessage, ApplicationName); logsCounted = true; }, null, TimeSpan.FromSeconds(3), TimeSpan.FromMilliseconds(-1)); // Act DateTime startTime = DateTime.UtcNow; while (logging) { log.Error(ErrorMessage); } TimeSpan testDuration = DateTime.UtcNow - startTime; while (!logsCounted) { Thread.Sleep(1); } logTimer.Dispose(); // Assert var logsPerSecond = logCount / testDuration.TotalSeconds; Console.WriteLine("{0} messages logged in {1}s => {2}/s", logCount, testDuration.TotalSeconds, logsPerSecond); Assert.That(logsPerSecond, Is.GreaterThan(1000), "Must log at least 1000 messages per second"); }
public void TestFixtureTearDown() { LogsDBAccess.RemoveMatchingLogEntries(ErrorLevel, ErrorMessage, ApplicationName); rep.Shutdown(); }