Example #1
0
        public void LogReader_ReadFileBeingWrittenToWithMultiLineEntries_CorrectNumberOfEntriesRead()
        {
            // Arrange
            string filePath = Path.Combine(tempPath, "logfile.txt");

            File.Create(filePath).Close();
            int numberOfEntriesExpected;
            int numberOfEntriesRead;

            // Act
            using (StreamReader reader = new StreamReader(File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
            {
                LogReader logReader = new LogReader(reader);
                logReader.StartReading();


                using (StreamWriter writer = new StreamWriter(File.Open(filePath, FileMode.Open, FileAccess.Write, FileShare.Read)))
                {
                    LogStreamProducer producer = new LogStreamProducer();
                    numberOfEntriesExpected = TestData.ISsLogEntries.Count;
                    producer.StartISsLogEntriesToStream(writer);

                    while (producer.IsWriting())
                    {
                        Thread.Sleep(500);
                    }
                }

                while (logReader.MoreEntriesAvailable())
                {
                    Thread.Sleep(200);
                }

                logReader.StopReading();
                numberOfEntriesRead = logReader.Entries.Count;
            }

            // Assert
            Assert.AreEqual(numberOfEntriesExpected, numberOfEntriesRead);
        }