public async Task StopWithoutFlush_When_Logs_Are_AlreadySaved_SimplyDoesNothing(int logsCount) { // arrange var logsPath = Path.Combine(Path.GetTempPath(), $"IntegrationTests-{Guid.NewGuid()}"); using (var cut = new AsyncLogger(new List <ILogWriter> { new ToFileWriter(logsPath, "testLog") }, new LoggerDateProvider())) { var logTasks = Enumerable.Range(1, logsCount) .Select(i => Task.Run(() => { cut.Write($"LogMessage number {i}"); })); await Task.WhenAll(logTasks); await Task.Delay(2000); // Give some time so we are sure all logs will be written; // act cut.StopWithoutFlush(); } await Task.Delay(100); // assert Assert.Equal(logsCount, File.ReadAllLines(Directory.GetFiles(logsPath)[0]).Length); Directory.Delete(logsPath, true); }
public async Task StopWithoutFlush_Rejects_NotSavedLogs(int logsCount) { // arrange var logsPath = Path.Combine(Path.GetTempPath(), $"IntegrationTests-{Guid.NewGuid()}"); using (var cut = new AsyncLogger(new List <ILogWriter> { new ToFileWriter(logsPath, "testLog") }, new LoggerDateProvider())) { var logTasks = Enumerable.Range(1, logsCount) .Select(i => Task.Run(() => { cut.Write($"LogMessage number {i}"); })); await Task.WhenAll(logTasks); // act cut.StopWithoutFlush(); } await Task.Delay(100); // assert (Two things can happen - file did not make it to emerge yet or it did but without writing all logs. if (File.Exists(Path.Combine(logsPath, $"testLog_{DateTime.Today:yyyyMMdd}.log"))) { Assert.NotEqual(logsCount, File.ReadAllLines(Directory.GetFiles(logsPath)[0]).Length); } Directory.Delete(logsPath, true); }
public void AsyncLogger_AfterDispose_CannotCall_StopWithoutFlush() { var logsPath = Path.Combine(Path.GetTempPath(), $"IntegrationTests-{Guid.NewGuid()}"); var cut = new AsyncLogger(new[] { new ToFileWriter(logsPath, "testLog") }, new LoggerDateProvider()); cut.Dispose(); Assert.Throws <ObjectDisposedException>(() => cut.StopWithoutFlush()); }
private static async Task RunAppAsync() { IAsyncLogger logger = new AsyncLogger(new ILogWriter[] { new ToFileWriter("C:\\Logs", "logs") }, new LoggerDateProvider()); for (int i = 0; i < 15; i++) { logger.Write("Number with Flush: " + i.ToString()); } await logger.StopWithFlush(); IAsyncLogger logger2 = new AsyncLogger(new ILogWriter[] { new ToFileWriter("C:\\Logs", "logs") }, new LoggerDateProvider()); for (int i = 50; i > 0; i--) { logger2.Write("Number with No flush: " + i.ToString()); } logger2.StopWithoutFlush(); Console.ReadKey(); }