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