public void ShouldDetectFileDelete() { var tempDir = TestData.CreateTempDirectory(); var logTempFilePath = Path.Combine(tempDir, "log.log"); Debug.WriteLine(logTempFilePath); File.Copy(logFile9, logTempFilePath); using (var watcher = new Watcher()) { watcher.LineWriter = new LineTextWriter(Console.Out); watcher.DirectoryPath = tempDir; watcher.Filter = "*.log"; watcher.LineCount = 4; watcher.Start(); Thread.Sleep(200); File.Delete(logTempFilePath); Thread.Sleep(1000); watcher.Stop(); //writer.Flush(); //writtenLines = writer.ToString().ToLines(); //CompareLines(expectedLines, writtenLines); } }
public void ShouldDetectNewWrite() { const int LogFileLineCount = 9; string[] newLines = testData.CreateLogLines(1); var tempDir = TestData.CreateTempDirectory(); var tempFileName = Path.Combine(tempDir, "log.log"); Debug.WriteLine(tempFileName); using (var watcher = new Watcher()) { using (var stringWriter = new StringWriter()) { var writer = new LineTextWriter(stringWriter); string[] writtenLines; using (var logger = new LoggerEmulator(logFile9, tempFileName)) { logger.WriteToEnd(); watcher.LineWriter = writer; watcher.DirectoryPath = tempDir; watcher.Filter = "*.log"; watcher.LineCount = 4; watcher.Start(); Thread.Sleep(200); logger.WriteLines(newLines); } Thread.Sleep(1000); watcher.Stop(); writer.Flush(); writtenLines = stringWriter.ToString().ToLines(); var expectedLines = CreateLineListWithFileMarker( TestData.LoadLines(logFile9, LogFileLineCount - watcher.LineCount, watcher.LineCount)); expectedLines.AddRange(newLines); CompareLines(expectedLines.ToArray(), writtenLines); } } }
public void ShouldDetectFileRollover() { const int FirstLogFileLineCount = 9; const int SecondLogFileLineCount = 5; // Write 9 lines in file1 // Start watcher, will output 4 last lines of file 1 // Rename file1 to file1old // Write new 5 lines to a new file1 // Expected result: // 1 header // 4 lines from original file 1 // 1 header // 4 lines from new file 1 var tempDir = TestData.CreateTempDirectory(); var logTempFilePath = Path.Combine(tempDir, "log.log"); var oldLogTempFilePath = Path.Combine(tempDir, "log.old"); Debug.WriteLine("main file: " +logTempFilePath); Debug.WriteLine("old file: " + oldLogTempFilePath); string[] writtenLines; using (var watcher = new Watcher()) { using (var stringWriter = new StringWriter()) { var writer = new LineTextWriter(stringWriter); File.Copy(logFile9, logTempFilePath); watcher.LineWriter = writer; watcher.DirectoryPath = tempDir; watcher.Filter = "*.log"; watcher.LineCount = 4; watcher.Start(); Thread.Sleep(200); File.Move(logTempFilePath, oldLogTempFilePath); EmulateLog(logFile5, logTempFilePath); Thread.Sleep(1000); watcher.Stop(); writer.Flush(); writtenLines = stringWriter.ToString().ToLines(); } Debug.WriteLine("Written lines:"); DumpLines(writtenLines); var firstLines = CreateLineListWithFileMarker( TestData.LoadLines(logFile9, FirstLogFileLineCount - watcher.LineCount, watcher.LineCount)); //firstLines.Add(">>>>>> <<<<<<"); var secondLines = CreateLineListWithFileMarker( TestData.LoadLines(logFile5, SecondLogFileLineCount - watcher.LineCount, watcher.LineCount)); var expectedLines = firstLines.Concat(secondLines).ToArray(); CompareLines(expectedLines, writtenLines); } }