Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
124 changes: 62 additions & 62 deletions src/LogExpert.Core/Classes/Log/LogfileReader.cs

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion src/LogExpert.Core/Classes/Log/RolloverFilenameBuilder.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using System;
using System.Globalization;
using System.Text;
using System.Text.RegularExpressions;
Expand Down Expand Up @@ -83,11 +82,13 @@ public void SetFileName (string fileName)
{
}
}

_indexGroup = match.Groups["index"];
if (_indexGroup.Success)
{
Index = _indexGroup.Value.Length > 0 ? int.Parse(_indexGroup.Value) : 0;
}

_condGroup = match.Groups["cond"];
}
}
Expand Down
22 changes: 16 additions & 6 deletions src/LogExpert.Core/Interface/IConfigManager.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using LogExpert.Core.Config;
using LogExpert.Core.Config;
using LogExpert.Core.EventArguments;

namespace LogExpert.Core.Interface;
Expand All @@ -7,14 +7,24 @@ namespace LogExpert.Core.Interface;
public interface IConfigManager
{
Settings Settings { get; }

string PortableModeDir { get; }

string ConfigDir { get; }

IConfigManager Instance { get; }

string PortableModeSettingsFileName { get; }
void Export(FileInfo fileInfo, SettingsFlags highlightSettings);
void Export(FileInfo fileInfo);
void Import(FileInfo fileInfo, ExportImportFlags importFlags);
void ImportHighlightSettings(FileInfo fileInfo, ExportImportFlags importFlags);

void Export (FileInfo fileInfo, SettingsFlags highlightSettings);

void Export (FileInfo fileInfo);

void Import (FileInfo fileInfo, ExportImportFlags importFlags);

void ImportHighlightSettings (FileInfo fileInfo, ExportImportFlags importFlags);

event EventHandler<ConfigChangedEventArgs> ConfigChanged; //TODO: All handlers that are public shoulld be in Core
void Save(SettingsFlags flags);

void Save (SettingsFlags flags);
}
17 changes: 12 additions & 5 deletions src/LogExpert.Tests/BufferShiftTest.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;

using LogExpert.Core.Classes.Log;
Expand Down Expand Up @@ -35,7 +33,9 @@ public void TestShiftBuffers1 ()
MaxDayTry = 0,
FormatPattern = "*$J(.)"
};

LinkedList<string> files = CreateTestFilesWithoutDate();

EncodingOptions encodingOptions = new()
{
Encoding = Encoding.Default
Expand All @@ -57,6 +57,7 @@ public void TestShiftBuffers1 ()
Assert.That(li.FullName, Is.EqualTo(fileName));
enumerator.MoveNext();
}

var oldCount = lil.Count;

// Simulate rollover
Expand All @@ -68,6 +69,7 @@ public void TestShiftBuffers1 ()
reader.ShiftBuffers();

lil = reader.GetLogFileInfoList();

Assert.That(lil.Count, Is.EqualTo(oldCount + 1));

Assert.That(reader.LineCount, Is.EqualTo(linesPerFile * lil.Count));
Expand All @@ -77,6 +79,7 @@ public void TestShiftBuffers1 ()
Assert.That(lil.Count, Is.EqualTo(files.Count));
enumerator = files.GetEnumerator();
enumerator.MoveNext();

foreach (LogFileInfo li in lil)
{
var fileName = enumerator.Current;
Expand All @@ -89,8 +92,10 @@ public void TestShiftBuffers1 ()
//
enumerator = files.GetEnumerator();
enumerator.MoveNext();

IList<LogBuffer> logBuffers = reader.GetBufferList();
var startLine = 0;

foreach (LogBuffer logBuffer in logBuffers)
{
Assert.That(enumerator.Current, Is.EqualTo(logBuffer.FileInfo.FullName));
Expand All @@ -106,20 +111,22 @@ public void TestShiftBuffers1 ()
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.That(line.FullLine.Contains(enumerator.Current, System.StringComparison.Ordinal));
Assert.That(line.FullLine.Contains(enumerator.Current, StringComparison.Ordinal));
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.That(line.FullLine.Contains(enumerator.Current, System.StringComparison.Ordinal));
Assert.That(line.FullLine.Contains(enumerator.Current, StringComparison.Ordinal));
}

oldCount = lil.Count;
Expand All @@ -142,6 +149,6 @@ public void TestShiftBuffers1 ()
ILogLine firstLine = reader.GetLogLine(0);
var names = new string[files.Count];
files.CopyTo(names, 0);
Assert.That(firstLine.FullLine.Contains(names[2], System.StringComparison.Ordinal));
Assert.That(firstLine.FullLine.Contains(names[2], StringComparison.Ordinal));
}
}
9 changes: 3 additions & 6 deletions src/LogExpert.Tests/CSVColumnizerTest.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
using LogExpert.Core.Classes.Log;
using LogExpert.Core.Classes.Log;
using LogExpert.Core.Entities;

using NUnit.Framework;

using System;
using System.IO;

namespace LogExpert.Tests;

[TestFixture]
Expand All @@ -14,11 +11,11 @@ public class CSVColumnizerTest
[TestCase(@".\TestData\organizations-10000.csv", new[] { "Index", "Organization Id", "Name", "Website", "Country", "Description", "Founded", "Industry", "Number of employees" })]
[TestCase(@".\TestData\organizations-1000.csv", new[] { "Index", "Organization Id", "Name", "Website", "Country", "Description", "Founded", "Industry", "Number of employees" })]
[TestCase(@".\TestData\people-10000.csv", new[] { "Index", "User Id", "First Name", "Last Name", "Sex", "Email", "Phone", "Date of birth", "Job Title" })]
public void Instantiat_CSVFile_BuildCorrectColumnizer(string filename, string[] expectedHeaders)
public void Instantiat_CSVFile_BuildCorrectColumnizer (string filename, string[] expectedHeaders)
{
CsvColumnizer.CsvColumnizer csvColumnizer = new();
var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, filename);
LogfileReader reader = new(path, new EncodingOptions(), true, 40, 50, new MultiFileOptions(), PluginRegistry.PluginRegistry.Instance);
LogfileReader reader = new(path, new EncodingOptions(), false, 40, 50, new MultiFileOptions(), PluginRegistry.PluginRegistry.Instance);
reader.ReadFiles();
ILogLine line = reader.GetLogLine(0);
IColumnizedLogLine logline = new ColumnizedLogLine();
Expand Down
17 changes: 9 additions & 8 deletions src/LogExpert.Tests/ColumnizerPickerTest.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
using JsonColumnizer;
using JsonColumnizer;

using LogExpert.Core.Classes.Columnizer;
using LogExpert.Core.Classes.Log;
using LogExpert.Core.Entities;

using Moq;

using NUnit.Framework;
using System;
using System.IO;

namespace LogExpert.Tests;

Expand All @@ -19,7 +20,7 @@ public class ColumnizerPickerTest
[TestCase("Square Bracket Columnizer", "30/08/2018 08:51:42.712 [TRACE] hello", "30/08/2018 08:51:42.712 [DATAIO][] world", null, null, null)]
[TestCase("Square Bracket Columnizer", "", "30/08/2018 08:51:42.712 [TRACE] hello", "30/08/2018 08:51:42.712 [TRACE] hello", "[DATAIO][b][c] world", null)]
[TestCase("Timestamp Columnizer", "30/08/2018 08:51:42.712 no bracket 1", "30/08/2018 08:51:42.712 no bracket 2", "30/08/2018 08:51:42.712 [TRACE] with bracket 1", "30/08/2018 08:51:42.712 [TRACE] with bracket 2", "no bracket 3")]
public void FindColumnizer_ReturnCorrectColumnizer(string expectedColumnizerName, string line0, string line1, string line2, string line3, string line4)
public void FindColumnizer_ReturnCorrectColumnizer (string expectedColumnizerName, string line0, string line1, string line2, string line3, string line4)
{
var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "test");

Expand Down Expand Up @@ -62,11 +63,11 @@ public void FindColumnizer_ReturnCorrectColumnizer(string expectedColumnizerName

[TestCase(@".\TestData\JsonColumnizerTest_01.txt", typeof(JsonCompactColumnizer))]
[TestCase(@".\TestData\SquareBracketColumnizerTest_02.txt", typeof(SquareBracketColumnizer))]
public void FindReplacementForAutoColumnizer_ValidTextFile_ReturnCorrectColumnizer(
public void FindReplacementForAutoColumnizer_ValidTextFile_ReturnCorrectColumnizer (
string fileName, Type columnizerType)
{
var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);
LogfileReader reader = new(path, new EncodingOptions(), true, 40, 50, new MultiFileOptions(), PluginRegistry.PluginRegistry.Instance);
LogfileReader reader = new(path, new EncodingOptions(), false, 40, 50, new MultiFileOptions(), PluginRegistry.PluginRegistry.Instance);
reader.ReadFiles();

Mock<ILogLineColumnizer> autoColumnizer = new();
Expand All @@ -80,7 +81,7 @@ public void FindReplacementForAutoColumnizer_ValidTextFile_ReturnCorrectColumniz
}

[TestCase(@".\TestData\FileNotExists.txt", typeof(DefaultLogfileColumnizer))]
public void DecideColumnizerByName_WhenReaderIsNotReady_ReturnCorrectColumnizer(
public void DecideColumnizerByName_WhenReaderIsNotReady_ReturnCorrectColumnizer (
string fileName, Type columnizerType)
{
var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);
Expand All @@ -94,7 +95,7 @@ public void DecideColumnizerByName_WhenReaderIsNotReady_ReturnCorrectColumnizer(

[TestCase(@"Invalid Name", typeof(DefaultLogfileColumnizer))]
[TestCase(@"JSON Columnizer", typeof(JsonColumnizer.JsonColumnizer))]
public void DecideColumnizerByName_ValidTextFile_ReturnCorrectColumnizer(
public void DecideColumnizerByName_ValidTextFile_ReturnCorrectColumnizer (
string columnizerName, Type columnizerType)
{
var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, columnizerName);
Expand Down
9 changes: 3 additions & 6 deletions src/LogExpert.Tests/JsonColumnizerTest.cs
Original file line number Diff line number Diff line change
@@ -1,22 +1,19 @@
using LogExpert.Core.Classes.Log;
using LogExpert.Core.Classes.Log;
using LogExpert.Core.Entities;

using NUnit.Framework;

using System;
using System.IO;

namespace LogExpert.Tests;

[TestFixture]
public class JsonColumnizerTest
{
[TestCase(@".\TestData\JsonColumnizerTest_01.txt", "time @m level")]
public void GetColumnNames_HappyFile_ColumnNameMatches(string fileName, string expectedHeaders)
public void GetColumnNames_HappyFile_ColumnNameMatches (string fileName, string expectedHeaders)
{
var jsonColumnizer = new JsonColumnizer.JsonColumnizer();
var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);
LogfileReader reader = new(path, new EncodingOptions(), true, 40, 50, new MultiFileOptions(), PluginRegistry.PluginRegistry.Instance);
LogfileReader reader = new(path, new EncodingOptions(), false, 40, 50, new MultiFileOptions(), PluginRegistry.PluginRegistry.Instance);
reader.ReadFiles();

ILogLine line = reader.GetLogLine(0);
Expand Down
10 changes: 3 additions & 7 deletions src/LogExpert.Tests/JsonCompactColumnizerTest.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,8 @@
using LogExpert.Core.Classes.Log;
using LogExpert.Core.Classes.Log;
using LogExpert.Core.Entities;

using NUnit.Framework;

using System;
using System.Collections.Generic;
using System.IO;

namespace LogExpert.Tests;

[TestFixture]
Expand All @@ -16,11 +12,11 @@ public class JsonCompactColumnizerTest
// As long as the json file contains one of the pre-defined key, it's perfectly supported.
[TestCase(@".\TestData\JsonCompactColumnizerTest_02.json", Priority.PerfectlySupport)]
[TestCase(@".\TestData\JsonCompactColumnizerTest_03.json", Priority.WellSupport)]
public void GetPriority_HappyFile_PriorityMatches(string fileName, Priority priority)
public void GetPriority_HappyFile_PriorityMatches (string fileName, Priority priority)
{
var jsonCompactColumnizer = new JsonColumnizer.JsonCompactColumnizer();
var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);
LogfileReader logFileReader = new(path, new EncodingOptions(), true, 40, 50, new MultiFileOptions(), PluginRegistry.PluginRegistry.Instance);
LogfileReader logFileReader = new(path, new EncodingOptions(), false, 40, 50, new MultiFileOptions(), PluginRegistry.PluginRegistry.Instance);
logFileReader.ReadFiles();
List<ILogLine> loglines = new()
{
Expand Down
7 changes: 2 additions & 5 deletions src/LogExpert.Tests/RolloverHandlerTestBase.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
using System;
using System.Collections.Generic;
using System.IO;

using LogExpert.Core.Classes.Log;

namespace LogExpert.Tests;
Expand Down Expand Up @@ -60,6 +56,7 @@ protected LinkedList<string> RolloverSimulation (LinkedList<string> files, strin
LinkedList<string>.Enumerator nextEnumerator = fileList.GetEnumerator();
nextEnumerator.MoveNext(); // move on 2nd entry
enumerator.MoveNext();

while (nextEnumerator.MoveNext())
{
File.Move(nextEnumerator.Current, enumerator.Current);
Expand Down Expand Up @@ -98,7 +95,7 @@ protected string CreateFile (DirectoryInfo dInfo, string fileName)
{
for (var i = 1; i <= lineCount; ++i)
{
writer.WriteLine("Line number " + i.ToString("D3") + " of File " + fullName);
writer.WriteLine($"Line number {i:D3} of File {fullName}");
}

writer.Flush();
Expand Down
10 changes: 3 additions & 7 deletions src/LogExpert.Tests/SquareBracketColumnizerTest.cs
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
using LogExpert.Core.Classes.Columnizer;
using LogExpert.Core.Classes.Columnizer;
using LogExpert.Core.Classes.Log;
using LogExpert.Core.Entities;

using NUnit.Framework;

using System;
using System.Collections.Generic;
using System.IO;

namespace LogExpert.Tests;

[TestFixture]
Expand All @@ -17,12 +13,12 @@ public class SquareBracketColumnizerTest
[TestCase(@".\TestData\SquareBracketColumnizerTest_02.txt", 5)]
[TestCase(@".\TestData\SquareBracketColumnizerTest_03.txt", 6)]
[TestCase(@".\TestData\SquareBracketColumnizerTest_05.txt", 3)]
public void GetPriority_HappyFile_ColumnCountMatches(string fileName, int count)
public void GetPriority_HappyFile_ColumnCountMatches (string fileName, int count)
{
SquareBracketColumnizer squareBracketColumnizer = new();
var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);

LogfileReader logFileReader = new(path, new EncodingOptions(), true, 40, 50, new MultiFileOptions(), PluginRegistry.PluginRegistry.Instance);
LogfileReader logFileReader = new(path, new EncodingOptions(), false, 40, 50, new MultiFileOptions(), PluginRegistry.PluginRegistry.Instance);
logFileReader.ReadFiles();
List<ILogLine> loglines = new()
{
Expand Down
Loading
Loading