Default to current directory
This commit is contained in:
90
TimberWinR.UnitTests/TailFileTests.cs
Normal file
90
TimberWinR.UnitTests/TailFileTests.cs
Normal file
@@ -0,0 +1,90 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Newtonsoft.Json;
|
||||
using NUnit.Framework;
|
||||
using TimberWinR.Inputs;
|
||||
using TimberWinR.Parser;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace TimberWinR.UnitTests
|
||||
{
|
||||
[TestFixture]
|
||||
public class TailFileTests
|
||||
{
|
||||
[Test]
|
||||
public void TestTailFile()
|
||||
{
|
||||
List<JObject> events = new List<JObject>();
|
||||
|
||||
if (File.Exists(".timberwinrdb"))
|
||||
File.Delete(".timberwinrdb");
|
||||
|
||||
var mgr = new Manager();
|
||||
mgr.LogfileDir = ".";
|
||||
|
||||
var tf = new TailFile();
|
||||
var cancelTokenSource = new CancellationTokenSource();
|
||||
tf.Location = "TestTailFile1.log";
|
||||
|
||||
|
||||
if (File.Exists(tf.Location))
|
||||
File.Delete(tf.Location);
|
||||
|
||||
try
|
||||
{
|
||||
var listener = new TailFileListener(tf, cancelTokenSource.Token);
|
||||
|
||||
listener.OnMessageRecieved += o =>
|
||||
{
|
||||
events.Add(o);
|
||||
if (events.Count >= 100)
|
||||
cancelTokenSource.Cancel();
|
||||
};
|
||||
|
||||
GenerateLogFile(tf.Location);
|
||||
|
||||
bool createdFile = false;
|
||||
while (!listener.Stop && !cancelTokenSource.IsCancellationRequested)
|
||||
{
|
||||
Thread.Sleep(100);
|
||||
if (!createdFile)
|
||||
{
|
||||
GenerateLogFile(tf.Location);
|
||||
createdFile = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (OperationCanceledException oex)
|
||||
{
|
||||
Console.WriteLine("Done!");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.ToString());
|
||||
|
||||
}
|
||||
finally
|
||||
{
|
||||
Assert.AreEqual(100, events.Count);
|
||||
}
|
||||
}
|
||||
|
||||
private static void GenerateLogFile(string fileName)
|
||||
{
|
||||
using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileName))
|
||||
{
|
||||
for (int i = 0; i < 100; i++)
|
||||
{
|
||||
file.WriteLine("Log Line Number {0}", i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -67,6 +67,7 @@
|
||||
<Compile Include="MultilineTests.cs" />
|
||||
<Compile Include="Parser\ElasticsearchOutputTests.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="TailFileTests.cs" />
|
||||
<Compile Include="TestBase.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -240,8 +240,6 @@ namespace TimberWinR.Inputs
|
||||
// threads.
|
||||
private void TailFileWatcher(string fileToWatch)
|
||||
{
|
||||
Dictionary<string, string> _fnfmap = new Dictionary<string, string>();
|
||||
|
||||
using (var syncHandle = new ManualResetEventSlim())
|
||||
{
|
||||
// Execute the query
|
||||
@@ -253,6 +251,8 @@ namespace TimberWinR.Inputs
|
||||
{
|
||||
string path = Path.GetDirectoryName(fileToWatch);
|
||||
string name = Path.GetFileName(fileToWatch);
|
||||
if (string.IsNullOrEmpty(path))
|
||||
path = ".";
|
||||
|
||||
// Ok, we have a potential file filter here as 'fileToWatch' could be foo.log or *.log
|
||||
|
||||
@@ -293,11 +293,7 @@ namespace TimberWinR.Inputs
|
||||
catch (FileNotFoundException fnfex)
|
||||
{
|
||||
string fn = fnfex.FileName;
|
||||
|
||||
if (!_fnfmap.ContainsKey(fn))
|
||||
LogManager.GetCurrentClassLogger().Warn(fnfex.Message);
|
||||
else
|
||||
_fnfmap[fn] = fn;
|
||||
}
|
||||
catch (OperationCanceledException oce)
|
||||
{
|
||||
|
||||
@@ -60,6 +60,11 @@ namespace TimberWinR
|
||||
Interlocked.Add(ref numMessages, count);
|
||||
}
|
||||
|
||||
public Manager()
|
||||
{
|
||||
LogsFileDatabase.Manager = this;
|
||||
}
|
||||
|
||||
public Manager(string jsonConfigFile, string logLevel, string logfileDir, CancellationToken cancelToken)
|
||||
{
|
||||
LogsFileDatabase.Manager = this;
|
||||
|
||||
Reference in New Issue
Block a user