Esempio n. 1
0
        static void Main(string[] args)
        {
            ILog logger = new AsyncLog();

            for (int i = 0; i < 15; i++)
            {
                logger.Write("Number with Flush: " + i.ToString());
                Thread.Sleep(50);
            }

            logger.Flush();
            logger.Stop();

            ILog logger2 = new AsyncLog();

            for (int i = 50; i > 0; i--)
            {
                logger2.Write("Number with No flush: " + i.ToString());
                Thread.Sleep(20);
            }

            logger2.Stop();

            Console.ReadLine();
        }
Esempio n. 2
0
        public void testNewLogFileNextDay()
        {
            fileName = "test2";
            AsyncLog test2 = new AsyncLog(fileName, filePath, threadSleep);
            DateTime today = new DateTime();
            Random   rnd   = new Random();

            int startFiles;
            int finishFiles;
            int logSize  = 100;
            int randomNr = rnd.Next(26, 28);

            startFiles = Directory.GetFiles(filePath).Length;
            today      = DateTime.Now;

            for (int i = 0; i < logSize; i++)
            {
                if (i == randomNr)
                {
                    test2.setDate(today.AddDays(randomNr));
                }
                test2.Write("Number with Flush: " + i.ToString());
                Thread.Sleep(50);
            }
            finishFiles = Directory.GetFiles(filePath).Length;
            startFiles++;

            Assert.AreEqual(finishFiles, startFiles);
        }
Esempio n. 3
0
        public void testStopWithFlush()
        {
            fileName = "test3";
            AsyncLog test3 = new AsyncLog(fileName, filePath, threadSleep);
            Random   rnd   = new Random();

            int logSize = 100;
            int lines;
            int randomNr = rnd.Next(1, 99);

            for (int i = 0; i < logSize; i++)
            {
                if (i == randomNr)
                {
                    test3.StopWithFlush();
                }
                test3.Write("Number with Flush: " + i.ToString());
                Thread.Sleep(50);
            }
            Thread.Sleep(500);

            randomNr++;


            lines = File.ReadLines(test3.fullFilePath).Count();

            Assert.AreEqual(randomNr, lines);
        }
Esempio n. 4
0
        public void testStopWithOutflush()
        {
            fileName = "test4";
            AsyncLog test4 = new AsyncLog(fileName, filePath, threadSleep);
            Random   rnd   = new Random();

            int lines;
            int randomNr = rnd.Next(1, 99);

            for (int i = 0; i < randomNr; i++)
            {
                if (i == randomNr)
                {
                    test4.StopWithoutFlush();
                }
                test4.Write("Number with out Flush: " + i.ToString());

                Thread.Sleep(20);
            }
            randomNr++;


            lines = File.ReadLines(test4.fullFilePath).Count();

            Assert.IsTrue(randomNr > lines);
        }
Esempio n. 5
0
        static void Main(string[] args)
        {
            ILog logger = new AsyncLog();

            for (int i = 0; i < 15; i++)
            {
                logger.Write("Number with Flush: " + i.ToString());
                Thread.Sleep(50);
            }

            logger.StopWithFlush();

            ILog logger2 = new AsyncLog();

            for (int i = 5000; i > 0; i--)
            {
                logger2.Write("Number with No flush: " + i.ToString());
            }

            logger2.StopWithoutFlush();

            Console.ReadLine();

            Console.WriteLine("Day Change: " + (new Tests()).TestDayChange());
            Console.WriteLine("Line Logged: " + (new Tests()).TestCallToWrite());
            Console.WriteLine("Stop With Flush: " + (new Tests()).TestStopWithFlush());
            Console.WriteLine("Stop Without Flush (test not deterministic!): " + (new Tests()).TestStopWithoutFlush());
        }
Esempio n. 6
0
        public void NewFilesCreatedAfterMidnight()
        {
            var timeMock = new Mock <IDateTimeProvider>();

            timeMock.SetupGet(x => x.DateTimeNow).Returns(new DateTime(2020, 3, 12, 11, 59, 00));
            DateTimeProvider.Current = timeMock.Object;

            var log = new AsyncLog(new LogsStorage());

            log.Write(_demoText);
            Thread.Sleep(50);

            Assert.True(Directory.Exists(LogDir));

            int numberOfFilesBeforeMidnight = Directory.GetFiles(LogDir).Count();

            timeMock.SetupGet(x => x.DateTimeNow).Returns(new DateTime(2020, 3, 13, 00, 01, 00));

            log.Write(_demoText);
            Thread.Sleep(50);

            int numberOfFilesAfterMidnight = Directory.GetFiles(LogDir).Count();

            Assert.True(numberOfFilesBeforeMidnight < numberOfFilesAfterMidnight);
        }
Esempio n. 7
0
        public async Task WriteToLogFile()
        {
            var dateProviderMock = new Mock <IDateTimeProvider>();
            var dateTime         = new DateTime(2020, 3, 11, 18, 55, 00);

            dateProviderMock.SetupGet(x => x.DateTimeNow).Returns(dateTime);
            DateTimeProvider.Current = dateProviderMock.Object;

            var log = new AsyncLog(new LogsStorage());

            log.Write(_demoText);
            log.StopWithFlush();

            Assert.True(Directory.Exists(LogDir));
            var files = Directory.GetFiles(LogDir);

            var dateTimeInLogfileName = dateTime.ToString("yyyyMMdd HHmmss fff");

            foreach (var file in files)
            {
                var fileInfo = new FileInfo(file);

                if (fileInfo.Name.Contains(dateTimeInLogfileName))
                {
                    using (var streamReader = File.OpenText(file))
                    {
                        var fileContent = await streamReader.ReadToEndAsync();

                        Assert.True(fileContent.Contains(_demoText));
                    }
                }
            }
        }
Esempio n. 8
0
        public void StopWithFlush_StopAtPoint3_AssertThat0IsWritten()
        {
            ILog writerAsync = new AsyncLog(new FakeLogOutputForUnitTestWithFlush());

            for (int i = 30; i >= 0; i--)
            {
                writerAsync.Write(i.ToString());
                System.Threading.Thread.Sleep(50);
            }
            writerAsync.StopWithFlush();
        }
Esempio n. 9
0
        static void Do2()
        {
            ILog logger2 = new AsyncLog();

            for (int i = 50; i > 0; i--)
            {
                logger2.Write("Number with No flush: " + i.ToString());
                Thread.Sleep(20);
            }

            logger2.StopWithoutFlush();
        }
Esempio n. 10
0
        static void Do1()
        {
            ILog logger = new AsyncLog();

            for (int i = 0; i < 15; i++)
            {
                logger.Write("Number with Flush: " + i.ToString());
                Thread.Sleep(50);
            }

            logger.StopWithFlush();
        }
Esempio n. 11
0
        public void TearDown()
        {
            _log.Dispose();
            _log = null;
            var files = Directory.GetFiles(OutputDir);

            foreach (var file in files)
            {
                File.Delete(file);
            }
            Directory.Delete(OutputDir);
        }
Esempio n. 12
0
        public void StopWithoutFlush_StopAtPoint10_AssertThatItPointIs11AndNotEqual10()
        {
            ILog writerAsync = new AsyncLog(new FakeLogOutput());

            for (int i = 50; i >= 0; i--)
            {
                writerAsync.Write(i.ToString());
                if (i == 10)
                {
                    writerAsync.StopWithoutFlush();
                }
                System.Threading.Thread.Sleep(50);
            }
        }
Esempio n. 13
0
        /// <summary>
        ///  Run and  Stop Without Flush
        /// </summary>
        static void StopWithFlushTest()
        {
            ILog logger2 = new AsyncLog();

            for (int i = 0; i < 1000; i++)
            {
                logger2.Write("Number with Flush: " + i.ToString());
                if (i == 500)
                {
                    logger2.StopWithFlush();
                }
            }
            logger2.CloseStreamWriter();
            Thread.Sleep(2000);
        }
Esempio n. 14
0
 public void Write_ExceptionThrown_NoExceptionExpected()
 {
     try
     {
         ILog writerAsync = new AsyncLog(new FakeLogOutputForUnitTestThrowException());
         for (int i = 10; i >= 0; i--)
         {
             writerAsync.Write(i.ToString());
             System.Threading.Thread.Sleep(50);
         }
     }
     catch (Exception ex)
     {
         Assert.Fail("Expected no exception but got one : " + ex.Message);
     }
 }
Esempio n. 15
0
        /// <summary>
        /// Run the task and change the date dynamicly
        /// </summary>
        void DoWork()
        {
            ILog logger2 = new AsyncLog();

            for (int i = 1000; i > 0; i--)
            {
                logger2.Write("Number with No flush: " + i.ToString());
                if (i == 500)
                {
                    ChangeCurrentDate.ChangeDatetoTommorrow();
                }
                Thread.Sleep(20);
            }
            logger2.CloseStreamWriter();

            Thread.Sleep(5000);
        }
Esempio n. 16
0
        public void TestNewDayNewFile()
        {
            AsyncLog logger = new AsyncLog();

            logger.Write("Number with Flush: ");
            Thread.Sleep(1000);
            DateTime plusOne = DateTime.Now.AddDays(1);

            logger.logFile._curDate = plusOne;
            logger.logFile.isTest   = true;
            logger.Write("Number with Flush: ");
            Thread.Sleep(1000);
            logger.StopWithoutFlush();

            Assert.IsTrue(File.Exists(logger.logFile.filename));
            Assert.IsTrue(logger.logFile.filename.Contains(plusOne.ToString("yyyyMMdd HHmmss fff")));
        }
Esempio n. 17
0
        public void TestStopWithFlush()
        {
            // First logger
            ILog   firstFlushLog = new AsyncLog(nameof(firstFlushLog), Location);
            string pathFirst     = TestUtils.BuildFilePath(Location, nameof(firstFlushLog));

            for (int i = 0; i < 15; i++)
            {
                firstFlushLog.AddLogToQueue("Number with Flush: " + i);
                if (i == 10)
                {
                    firstFlushLog.StopWithFlush();
                }
            }

            Thread.Sleep(100);

            var firstFile       = File.OpenRead(pathFirst);
            var firstFileLength = firstFile.Length;

            firstFile.Dispose();

            // Second logger
            ILog   secondFlushLog = new AsyncLog(nameof(secondFlushLog), Location);
            string pathSecond     = TestUtils.BuildFilePath(Location, nameof(secondFlushLog));

            for (int i = 0; i < 15; i++)
            {
                if (i == 10)
                {
                    secondFlushLog.StopWithFlush();
                }
                secondFlushLog.AddLogToQueue("Number with Flush: " + i);
            }

            Thread.Sleep(100);

            var secondFile       = File.OpenRead(pathSecond);
            var secondFileLength = secondFile.Length;

            secondFile.Dispose();

            File.Delete(pathFirst);
            File.Delete(pathSecond);
            Assert.IsTrue(firstFileLength > secondFileLength);
        }
Esempio n. 18
0
        public void TestWriteToLogWithFlush()
        {
            AsyncLog logger        = new AsyncLog();
            int      numberOfLines = 15;

            for (int i = 1; i < numberOfLines; i++)
            {
                logger.Write("Number with Flush: " + i.ToString());
                Thread.Sleep(50);
            }
            logger.StopWithFlush();

            Thread.Sleep(5000);
            logger.logFile._writer.Close();
            string[] readText = File.ReadAllLines(logger.logFile.filename);
            Assert.IsTrue(File.Exists(logger.logFile.filename));
            Assert.IsTrue(readText.Length == numberOfLines);
        }
Esempio n. 19
0
        public void TestOnException()
        {
            ILog   testLogger = new AsyncLog(nameof(testLogger), Location);
            string file       = TestUtils.BuildFilePath(Location, nameof(testLogger));

            try
            {
                for (int i = 0; i < 10; i++)
                {
                    testLogger.AddLogToQueue("Test log no: " + i);
                    if (i == 5)
                    {
                        throw new Exception();
                    }
                }
            }
            catch
            {
                // ignored
            }

            testLogger.StopWithFlush();

            ILog   testLogger2 = new AsyncLog(nameof(testLogger2), Location);
            string file2       = TestUtils.BuildFilePath(Location, nameof(testLogger2));

            for (int i = 0; i < 10; i++)
            {
                testLogger2.AddLogToQueue("Test log after exception no: " + i);
            }

            testLogger2.StopWithFlush();

            Thread.Sleep(100);

            Assert.IsTrue(File.Exists(file));
            Assert.IsTrue(File.Exists(file2));

            Thread.Sleep(1000);

            File.Delete(file);
            File.Delete(file2);
        }
Esempio n. 20
0
        public async Task StopWritingWithoutFlush()
        {
            var dateTimeProviderMock = new Mock <IDateTimeProvider>();
            var dateTime             = new DateTime(2020, 3, 14, 12, 30, 00);

            dateTimeProviderMock.SetupGet(x => x.DateTimeNow).Returns(dateTime);
            DateTimeProvider.Current = dateTimeProviderMock.Object;

            var log = new AsyncLog(new LogsStorage());

            log.Write(_demoText);
            var loopCounter = 5;

            for (var i = 0; i <= loopCounter; i++)
            {
                log.Write($"{_demoText}{i}");
            }

            await Task.Delay(1);

            log.StopWithoutFlush();

            Assert.True(Directory.Exists(LogDir));
            var files = Directory.GetFiles(LogDir);

            var dateTimeInLogfileName = dateTime.ToString("yyyyMMdd HHmmss fff");

            foreach (var file in files)
            {
                var fileInfo = new FileInfo(file);
                if (fileInfo.Name.Contains(dateTimeInLogfileName))
                {
                    using (var streamReader = File.OpenText(file))
                    {
                        var content = await streamReader.ReadToEndAsync();

                        Assert.False(content.Contains($"{_demoText}{loopCounter}"));
                    }
                    break;
                }
            }
        }
Esempio n. 21
0
        public void TestFileDate()
        {
            var date = DateTime.Today.ToString("yyyyMMdd");

            ILog   logDateTester = new AsyncLog(nameof(logDateTester), Location);
            string path          = TestUtils.BuildFilePath(Location, nameof(logDateTester));

            logDateTester.AddLogToQueue("Some random test log"); // file created on first log
            logDateTester.StopWithFlush();

            Thread.Sleep(1);

            var file = File.OpenRead(path);

            file.Dispose();
            var fileDate = file.Name.Substring(24, 8);

            File.Delete(path);
            Assert.IsTrue(fileDate == date);
        }
Esempio n. 22
0
        public void TestWithoutFlush()
        {
            ILog   noFlushLog = new AsyncLog(nameof(noFlushLog), Location);
            string path       = TestUtils.BuildFilePath(Location, nameof(noFlushLog));

            for (int i = 0; i < 15; i++)
            {
                noFlushLog.AddLogToQueue("Number with Flush: " + i);
            }

            noFlushLog.StopWithoutFlush();

            Thread.Sleep(100);

            var file = File.OpenRead(path);

            Assert.IsTrue(File.Exists(path));
            Assert.IsTrue(file.Length == 0);

            file.Dispose();
            File.Delete(path);
        }
Esempio n. 23
0
        static void Main(string[] args)
        {
            string fileName    = "Log";
            string filePath    = @"C:\LogTest";
            int    threadSleep = 50;

            ILog logger = new AsyncLog(fileName, filePath, threadSleep);

            while (true)
            {
                for (int i = 0; i < 15; i++)
                {
                    logger.Write("Number with Flush: " + i.ToString());
                    Thread.Sleep(50);
                }

                logger.StopWithFlush();
                Thread.Sleep(50);

                for (int i = 15; i < 50; i++)
                {
                    logger.Write("Number with Flush: " + i.ToString());
                    Thread.Sleep(50);
                }
                fileName = "Log";
                filePath = @"C:\LogTest";
                ILog logger2 = new AsyncLog(fileName, filePath, threadSleep);

                for (int i = 100; i > 0; i--)
                {
                    logger2.Write("Number with No flush: " + i.ToString());
                    Thread.Sleep(20);
                }

                logger2.StopWithoutFlush();
                Console.WriteLine("finish");
                Console.ReadLine();
            }
        }
Esempio n. 24
0
        static void Main(string[] args)
        {
            ILog logger = new AsyncLog(new FileWriter());

            for (int i = 0; i < 15; i++)
            {
                logger.Write("Number with Flush: " + i);
            }
            Thread.Sleep(5);
            logger.StopWithFlush();

            ILog logger2 = new AsyncLog(new FileWriter());

            for (int i = 50; i > 0; i--)
            {
                logger2.Write("Number with No flush: " + i);
            }
            Thread.Sleep(5);
            logger2.StopWithoutFlush();

            Console.ReadLine();
        }
Esempio n. 25
0
        public void testLogWriten()
        {
            fileName = "test1";
            AsyncLog test = new AsyncLog(fileName, filePath, threadSleep);
            {
                int logSize = 100;
                int lines;

                for (int i = 0; i < logSize; i++)
                {
                    test.Write("Number with Flush: " + i.ToString());
                    Thread.Sleep(50);
                }
                Thread.Sleep(500);

                logSize++;

                lines = File.ReadLines(test.fullFilePath).Count();

                Assert.AreEqual(logSize, lines);
            }
        }
Esempio n. 26
0
        public static void Main(string[] args)
        {
            var flushLogger = new AsyncLog(new LogsStorage());

            for (var i = 0; i < 15; i++)
            {
                flushLogger.Write($"Number with Flush: {i}");
                Task.Delay(10).Wait();
            }
            flushLogger.StopWithFlush();

            var noFlushLogger = new AsyncLog(new LogsStorage());

            for (var i = 50; i > 0; i--)
            {
                noFlushLogger.Write($"Number with No flush: {i}");
                Task.Delay(5).Wait();
            }
            noFlushLogger.StopWithoutFlush();

            Console.ReadKey();
        }
Esempio n. 27
0
        static void Main()
        {
            string location = @"C:\LogTest\";

            ILog logger = new AsyncLog(nameof(logger), location);

            for (int i = 0; i <= 14; i++)
            {
                logger.AddLogToQueue("Number with Flush: " + i);
                //if (i == 10) logger.StopWithFlush();
            }

            ILog logger2 = new AsyncLog(nameof(logger2), location);

            for (int i = 50; i > 0; i--)
            {
                logger2.AddLogToQueue("Number with No flush: " + i);
                //if (i == 30) logger2.StopWithoutFlush();
            }

            Console.WriteLine("Main program done");
            Console.ReadLine();
        }
Esempio n. 28
0
        /// <summary>
        /// If the works are done completely add "finish" to the last line
        /// </summary>
        static void DoWork()
        {
            ILog logger = new AsyncLog();

            for (int i = 0; i < 15; i++)
            {
                logger.Write("Number with Flush: " + i.ToString());
                Thread.Sleep(50);
            }
            logger.Write("Finish");

            ILog logger2 = new AsyncLog();

            for (int i = 100; i > 0; i--)
            {
                logger2.Write("Number with No flush: " + i.ToString());
                Thread.Sleep(20);
            }
            logger2.Write("Finish");
            logger.CloseStreamWriter();
            logger2.CloseStreamWriter();

            Thread.Sleep(5000);
        }
Esempio n. 29
0
 public LogTestsFixture()
 {
     _writerMock = new Mock <IFileWriter>();
     _writerMock.Setup(a => a.Write(It.IsAny <LogLine>())).Callback(() => { Thread.Sleep(2); });
     Log = new AsyncLog(_writerMock.Object);
 }
Esempio n. 30
0
 public LogIntegrationTestsFixture()
 {
     _directory  = Path.Combine(Directory.GetCurrentDirectory(), "log" + Guid.NewGuid());
     _fileWriter = new FileWriter(_directory);
     Log         = new AsyncLog(_fileWriter);
 }