public void ShouldPlayEvents()
        {
            var directoryProvider = new TestDirectoryProvider();

            Directory.Delete(directoryProvider.Directory, true);
            var events = new ConcurrentBag <LogEvent>();

            CollectionAssert.IsEmpty(events);

            string testFile1 = Path.Combine(directoryProvider.Directory, "Journal.1234.log");
            string testFile2 = Path.Combine(directoryProvider.Directory, "Journal.2345.log");

            File.WriteAllText(testFile1, EventsAsJson.Skip(5).First());
            File.WriteAllText(testFile2, EventsAsJson.Skip(5).First());

            var burstPlayer1 = new LogBurstPlayer(directoryProvider.Directory, 1);

            burstPlayer1.Subscribe(events.Add);
            burstPlayer1.Play();
            CollectionAssert.IsNotEmpty(events);
            Assert.AreEqual(1, events.Count);

            var burstPlayer2 = new LogBurstPlayer(directoryProvider.Directory, 100);

            burstPlayer2.Subscribe(events.Add);
            burstPlayer2.Play();
            CollectionAssert.IsNotEmpty(events);
            Assert.AreEqual(3, events.Count);
        }
        public void ShouldNotFailOnMissingDirectory()
        {
            var directoryProvider = new TestDirectoryProvider();

            Directory.Delete(directoryProvider.Directory, true);
            Assert.IsFalse(Directory.Exists(directoryProvider.Directory));
            Assert.DoesNotThrow(() => new JournalMonitor(directoryProvider, 1));

            // In current implementation, JournalMonitor creates the dir if missing
            // Remove if implementation changes
            Assert.IsTrue(Directory.Exists(directoryProvider.Directory));
        }
Example #3
0
        public void ShouldPlayEvents()
        {
            var directoryProvider = new TestDirectoryProvider();

            string testFile1 = Path.Combine(directoryProvider.Directory, "Journal.1234.log");
            string testFile2 = Path.Combine(directoryProvider.Directory, "JournalBeta.2345.log");

            File.WriteAllText(testFile1, "asd");
            File.WriteAllText(testFile2, "asd");

            string[] files = JournalFileEnumerator.GetLogFiles(directoryProvider.Directory);
            CollectionAssert.Contains(files, testFile1);
            CollectionAssert.DoesNotContain(files, testFile2);
        }
        public async Task ShouldPickUpEvents()
        {
            var directoryProvider = new TestDirectoryProvider();

            Directory.Delete(directoryProvider.Directory, true);
            var events = new ConcurrentBag <LogEvent>();

            CollectionAssert.IsEmpty(events);

            string testFile1 = Path.Combine(directoryProvider.Directory, "Journal.1234.log");
            string testFile2 = Path.Combine(directoryProvider.Directory, "Journal.2345.log");

            File.WriteAllText(testFile1, EventsAsJson.Skip(5).First());
            var journalMonitor = new JournalMonitor(directoryProvider, 5);

            journalMonitor.Subscribe(events.Add);

            File.AppendAllText(testFile1, EventsAsJson.Skip(8).First());
            await Delay;

            CollectionAssert.IsNotEmpty(events);

            while (events.Count > 0)
            {
                events.TryTake(out var e);
            }

            File.WriteAllText(testFile2, EventsAsJson.Skip(9).First());
            await Delay;

            CollectionAssert.IsNotEmpty(events);

            while (events.Count > 0)
            {
                events.TryTake(out var e);
            }

            await Delay;

            CollectionAssert.IsEmpty(events);
        }
Example #5
0
        public async Task ShouldPickUpEvents()
        {
            var directoryProvider = new TestDirectoryProvider();
            var events            = new ConcurrentBag <JournalEvent>();

            CollectionAssert.IsEmpty(events);

            string testFile1 = Path.Combine(directoryProvider.Directory, "Journal.1234.log");
            string testFile2 = Path.Combine(directoryProvider.Directory, "Journal.2345.log");

            File.WriteAllText(testFile1, EventsAsJson.ElementAt(0));
            var journalMonitor = new JournalMonitor(directoryProvider, 5);

            journalMonitor.Subscribe(events.Add);

            File.AppendAllText(testFile1, EventsAsJson.ElementAt(1));
            await Delay;

            CollectionAssert.IsNotEmpty(events);

            while (!events.IsEmpty)
            {
                events.TryTake(out var e);
            }

            File.WriteAllText(testFile2, EventsAsJson.ElementAt(2));
            await Delay;

            CollectionAssert.IsNotEmpty(events);

            while (!events.IsEmpty)
            {
                events.TryTake(out var e);
            }

            await Delay;

            CollectionAssert.IsEmpty(events);
        }