Ejemplo n.º 1
0
        public void ShouldWriteInitialTail()
        {
            const int LogFileLineCount = 9;

            var filePath = logFile9;
            using (var watcher = new Watcher())
            {
                string[] writtenLines;
                using (var stringWriter = new StringWriter())
                {
                    var writer = new LineTextWriter(stringWriter);
                    watcher.LineWriter = writer;
                    watcher.DirectoryPath = Path.GetDirectoryName(filePath);
                    watcher.Filter = Path.GetFileName(filePath);
                    watcher.LineCount = 4;
                    watcher.Start();
                    writer.Flush();
                    Thread.Sleep(200);
                    writtenLines = stringWriter.ToString().ToLines();
                }
                writtenLines.ForEach(i => Debug.WriteLine(i));

                var expectedLines = CreateLineListWithFileMarker(
                    TestData.LoadLines(logFile9,
                                       LogFileLineCount - watcher.LineCount,
                                       watcher.LineCount));
                CompareLines(expectedLines.ToArray(), writtenLines);
            }
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }
Ejemplo n.º 3
0
        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);
            }
        }