Esempio n. 1
0
        public void GetPriority_HappyFile_ColumnCountMatches(string fileName, int count)
        {
            SquareBracketColumnizer squareBracketColumnizer = new SquareBracketColumnizer();
            string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);

            LogfileReader logFileReader = new LogfileReader(path, new EncodingOptions(), true, 40, 50, new MultifileOptions());

            logFileReader.ReadFiles();
            List <ILogLine> loglines = new List <ILogLine>
            {
                // Sampling a few lines to select the correct columnizer
                logFileReader.GetLogLine(0),
                logFileReader.GetLogLine(1),
                logFileReader.GetLogLine(2),
                logFileReader.GetLogLine(3),
                logFileReader.GetLogLine(4),
                logFileReader.GetLogLine(5),
                logFileReader.GetLogLine(25),
                logFileReader.GetLogLine(100),
                logFileReader.GetLogLine(200),
                logFileReader.GetLogLine(400)
            };

            squareBracketColumnizer.GetPriority(path, loglines);
            Assert.AreEqual(squareBracketColumnizer.GetColumnCount(), count);
        }
Esempio n. 2
0
        public void GetColumnNames_HappyFile_ColumnNameMatches(string fileName, string expectedHeaders)
        {
            var           jsonColumnizer = new JsonColumnizer.JsonColumnizer();
            string        path           = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);
            LogfileReader reader         = new LogfileReader(path, new EncodingOptions(), true, 40, 50, new MultifileOptions());

            reader.ReadFiles();

            ILogLine line = reader.GetLogLineWithWait(0);

            if (line != null)
            {
                jsonColumnizer.SplitLine(null, line);
            }

            line = reader.GetLogLineWithWait(1);
            if (line != null)
            {
                jsonColumnizer.SplitLine(null, line);
            }

            var columnHeaders = jsonColumnizer.GetColumnNames();
            var result        = string.Join(" ", columnHeaders);

            Assert.AreEqual(result, expectedHeaders);
        }
        public void GetPriority_HappyFile_PriorityMatches(string fileName, Priority priority)
        {
            var           jsonCompactColumnizer = new JsonColumnizer.JsonCompactColumnizer();
            string        path          = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);
            LogfileReader logFileReader = new LogfileReader(path, new EncodingOptions(), true, 40, 50, new MultifileOptions());

            logFileReader.ReadFiles();
            List <ILogLine> loglines = new List <ILogLine>
            {
                // Sampling a few lines to select the correct columnizer
                logFileReader.GetLogLine(0),
                logFileReader.GetLogLine(1),
                logFileReader.GetLogLine(2),
                logFileReader.GetLogLine(3),
                logFileReader.GetLogLine(4),
                logFileReader.GetLogLine(5),
                logFileReader.GetLogLine(25),
                logFileReader.GetLogLine(100),
                logFileReader.GetLogLine(200),
                logFileReader.GetLogLine(400)
            };

            var result = jsonCompactColumnizer.GetPriority(path, loglines);

            Assert.AreEqual(result, priority);
        }
Esempio n. 4
0
        public ILogLineColumnizer FindColumnizer(string fileName, LogfileReader logFileReader)
        {
            if (logFileReader == null || string.IsNullOrEmpty(fileName))
            {
                return(new DefaultLogfileColumnizer());
            }

            ILogLineColumnizer lineColumnizer = null;
            var             timeDeterminer    = new TimeFormatDeterminer();
            List <ILogLine> loglines          = new List <ILogLine>
            {
                // Sampling a few lines to select the correct columnizer
                logFileReader.GetLogLine(0),
                logFileReader.GetLogLine(1),
                logFileReader.GetLogLine(2),
                logFileReader.GetLogLine(3),
                logFileReader.GetLogLine(4),
                logFileReader.GetLogLine(5),
                logFileReader.GetLogLine(25),
                logFileReader.GetLogLine(100),
                logFileReader.GetLogLine(200),
                logFileReader.GetLogLine(400)
            };

            lineColumnizer = PluginRegistry.GetInstance().RegisteredColumnizers.OrderByDescending(x => x.GetPriority(fileName, loglines)).First();

            return(lineColumnizer);
        }
Esempio n. 5
0
        public void FindColumnizer_HappyFile_ReturnCorrectColumnizer(string fileName, string columnizerName)
        {
            AutoColumnizer autoColumnizer = new AutoColumnizer();
            string         path           = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);
            LogfileReader  reader         = new LogfileReader(path, new EncodingOptions(), true, 40, 50, new MultifileOptions());

            reader.ReadFiles();
            var result = autoColumnizer.FindColumnizer(path, reader);

            Assert.AreEqual(result.GetName(), columnizerName);
        }
Esempio n. 6
0
        public void FindReplacementForAutoColumnizer_ValidTextFile_ReturnCorrectColumnizer(
            string fileName, Type columnizerType)
        {
            string        path   = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);
            LogfileReader reader = new LogfileReader(path, new EncodingOptions(), true, 40, 50, new MultiFileOptions());

            reader.ReadFiles();

            Mock <ILogLineColumnizer> autoColumnizer = new Mock <ILogLineColumnizer>();

            autoColumnizer.Setup(a => a.GetName()).Returns("Auto Columnizer");

            // TODO: When DI container is ready, we can mock this set up.
            PluginRegistry.GetInstance().RegisteredColumnizers.Add(new JsonCompactColumnizer());
            var result = ColumnizerPicker.FindReplacementForAutoColumnizer(fileName, reader, autoColumnizer.Object);

            Assert.AreEqual(result.GetType(), columnizerType);
        }
Esempio n. 7
0
 internal string[] GetColumnsForLine(LogfileReader logFileReader, int lineNumber, ILogLineColumnizer columnizer, LogExpert.LogWindow.ColumnizerCallback columnizerCallback)
 {
     if (this.lastColumnizer != columnizer || this.lastLineNumber != lineNumber && this.cachedColumns != null || columnizerCallback.LineNum != lineNumber)
     {
         this.lastColumnizer = columnizer;
         this.lastLineNumber = lineNumber;
         string line = logFileReader.GetLogLineWithWait(lineNumber);
         if (line != null)
         {
             columnizerCallback.LineNum = lineNumber;
             this.cachedColumns         = columnizer.SplitLine(columnizerCallback, line);
         }
         else
         {
             this.cachedColumns = null;
         }
     }
     return(this.cachedColumns);
 }
Esempio n. 8
0
 internal IColumnizedLogLine GetColumnsForLine(LogfileReader logFileReader, int lineNumber, ILogLineColumnizer columnizer, ColumnizerCallback columnizerCallback)
 {
     if (_lastColumnizer != columnizer || _lastLineNumber != lineNumber && _cachedColumns != null || columnizerCallback.LineNum != lineNumber)
     {
         _lastColumnizer = columnizer;
         _lastLineNumber = lineNumber;
         ILogLine line = logFileReader.GetLogLineWithWait(lineNumber);
         if (line != null)
         {
             columnizerCallback.LineNum = lineNumber;
             _cachedColumns             = columnizer.SplitLine(columnizerCallback, line);
         }
         else
         {
             _cachedColumns = null;
         }
     }
     return(_cachedColumns);
 }
Esempio n. 9
0
        internal string[] GetColumnsForLine(
            LogfileReader logFileReader, int line,
            ILogLineColumnizer columnizer,
            LogExpert.LogWindow.ColumnizerCallback callback)
        {
            if (this.last_columnizer == columnizer && this.last_line == line &&
                this.cached_columns != null)
            {
                return(this.cached_columns);
            }

            string line_data = logFileReader.GetLogLineWithWait(line);

            if (line_data != null)
            {
                callback.LineNum     = line;
                this.cached_columns  = columnizer.SplitLine(callback, line_data);
                this.last_columnizer = columnizer;
                this.last_line       = line;
            }

            return(this.cached_columns);
        }
Esempio n. 10
0
        public void testShiftBuffers1()
        {
            int linesPerFile         = 10;
            MultiFileOptions options = new MultiFileOptions();

            options.MaxDayTry     = 0;
            options.FormatPattern = "*$J(.)";
            LinkedList <string> files           = CreateTestfilesWithoutDate();
            EncodingOptions     encodingOptions = new EncodingOptions();

            encodingOptions.Encoding = Encoding.Default;
            LogfileReader reader = new LogfileReader(files.Last.Value, encodingOptions, true, 40, 50, options);

            reader.ReadFiles();

            IList <ILogFileInfo> lil = reader.GetLogFileInfoList();

            Assert.AreEqual(files.Count, lil.Count);
            LinkedList <string> .Enumerator enumerator = files.GetEnumerator();
            enumerator.MoveNext();
            foreach (LogFileInfo li in lil)
            {
                string fileName = enumerator.Current;
                Assert.AreEqual(fileName, li.FullName);
                enumerator.MoveNext();
            }
            int oldCount = lil.Count;

            // Simulate rollover
            //
            files = RolloverSimulation(files, "*$J(.)", false);

            // Simulate rollover detection
            //
            reader.ShiftBuffers();

            lil = reader.GetLogFileInfoList();
            Assert.AreEqual(oldCount + 1, lil.Count);

            Assert.AreEqual(linesPerFile * lil.Count, reader.LineCount);

            // Check if rollover'd file names have been handled by LogfileReader
            //
            Assert.AreEqual(files.Count, lil.Count);
            enumerator = files.GetEnumerator();
            enumerator.MoveNext();
            foreach (LogFileInfo li in lil)
            {
                string fileName = enumerator.Current;
                Assert.AreEqual(fileName, li.FullName);
                enumerator.MoveNext();
            }

            // Check if file buffers have correct files. Assuming here that one buffer fits for a
            // complete file
            //
            enumerator = files.GetEnumerator();
            enumerator.MoveNext();
            IList <LogBuffer> logBuffers = reader.GetBufferList();
            int startLine = 0;

            foreach (LogBuffer logBuffer in logBuffers)
            {
                Assert.AreEqual(logBuffer.FileInfo.FullName, enumerator.Current);
                Assert.AreEqual(startLine, logBuffer.StartLine);
                startLine += 10;
                enumerator.MoveNext();
            }

            // Checking file content
            //
            enumerator = files.GetEnumerator();
            enumerator.MoveNext();
            enumerator.MoveNext(); // move to 2nd entry. The first file now contains 2nd file's content (because rollover)
            logBuffers = reader.GetBufferList();
            int i;

            for (i = 0; i < logBuffers.Count - 2; ++i)
            {
                LogBuffer logBuffer = logBuffers[i];
                ILogLine  line      = logBuffer.GetLineOfBlock(0);
                Assert.IsTrue(line.FullLine.Contains(enumerator.Current));
                enumerator.MoveNext();
            }
            enumerator.MoveNext();
            // the last 2 files now contain the content of the previously watched file
            for (; i < logBuffers.Count; ++i)
            {
                LogBuffer logBuffer = logBuffers[i];
                ILogLine  line      = logBuffer.GetLineOfBlock(0);
                Assert.IsTrue(line.FullLine.Contains(enumerator.Current));
            }

            oldCount = lil.Count;

            // Simulate rollover again - now latest file will be deleted (simulates logger's rollover history limit)
            //
            files = RolloverSimulation(files, "*$J(.)", true);

            // Simulate rollover detection
            //
            reader.ShiftBuffers();
            lil = reader.GetLogFileInfoList();

            Assert.AreEqual(oldCount, lil.Count); // same count because oldest file is deleted
            Assert.AreEqual(files.Count, lil.Count);
            Assert.AreEqual(linesPerFile * lil.Count, reader.LineCount);

            // Check first line to see if buffers are correct
            //
            ILogLine firstLine = reader.GetLogLine(0);

            string[] names = new string[files.Count];
            files.CopyTo(names, 0);
            Assert.IsTrue(firstLine.FullLine.Contains(names[2]));
        }