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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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])); }