Example #1
0
        public void BeginMonitorBasicTest(int numLines, int interval)
        {
            MonitorTestSetUp();
            var cts = new CancellationTokenSource();

            Monitor = MonitorFactory.CreateMonitor(MonitorType.Timer, TestHelper.CreateOptions(TestOutputDirectory, "*.txt", interval), WriteToFile, cts.Token);

            Monitor.BeginMonitor();

            AddAFile(numLines);
            Assert.AreEqual(2, AddedFiles.Count);

            // sleep here so the timer has fired once
            Thread.Sleep(interval + 500);

            // check the event output file for 1 created event
            var lines = ReadLines(AddedFiles[0]);

            Assert.AreEqual(1, lines.Count);
            CheckLine(lines[0], "Created", AddedFiles[1], numLines);

            // change the file
            AppendAllText(AddedFiles[1], "11\n");

            // sleep here so the timer has fired again
            Thread.Sleep(interval);
            lines = ReadLines(AddedFiles[0]);
            Assert.AreEqual(2, lines.Count);
            CheckLine(lines[0], "Created", AddedFiles[1], numLines);
            CheckLine(lines[1], "Changed", AddedFiles[1], 1);

            // change the file
            WriteAllText(AddedFiles[1], "0\n");

            // sleep here so the timer has fired again
            Thread.Sleep(interval);
            lines = ReadLines(AddedFiles[0]);
            Assert.AreEqual(3, lines.Count);
            CheckLine(lines[0], "Created", AddedFiles[1], numLines);
            CheckLine(lines[1], "Changed", AddedFiles[1], 1);
            CheckLine(lines[2], "Changed", AddedFiles[1], -numLines);

            // delete the file
            File.Delete(AddedFiles[1]);

            // sleep here so the timer has fired again
            Thread.Sleep(interval);
            lines = ReadLines(AddedFiles[0]);
            Assert.AreEqual(4, lines.Count);
            CheckLine(lines[0], "Created", AddedFiles[1], numLines);
            CheckLine(lines[1], "Changed", AddedFiles[1], 1);
            CheckLine(lines[2], "Changed", AddedFiles[1], -numLines);
            CheckLine(lines[3], "Deleted", AddedFiles[1], 0);

            cts.Cancel(false);
        }