Skip to content
61 changes: 42 additions & 19 deletions src/Grok.Net.Tests/UnitTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using Xunit;
using GrokNet;

Expand Down Expand Up @@ -27,10 +28,11 @@ public void PatternCountTest()
Grok act = new Grok(grokPattern);
string logs = @"06-21-19 21:00:13:589241;15;INFO;main;DECODED: 775233900043 DECODED BY: 18500738 DISTANCE: 1.5165
06-21-19 21:00:13:589265;156;WARN;main;DECODED: 775233900043 EMPTY DISTANCE: --------";
int elements = 16;

GrokResult grokResult = act.Parse(logs);

Assert.Equal(16, grokResult.Count);
Assert.Equal(elements, grokResult.Count);
}

[Fact]
Expand All @@ -39,21 +41,24 @@ public void MonthDayPatternTest()
Grok act = new Grok("%{MONTHDAY:month}-%{MONTHDAY:day}-%{MONTHDAY:year} %{TIME:timestamp};%{WORD:id};%{LOGLEVEL:loglevel};%{WORD:func};%{GREEDYDATA:msg}");
string logs = @"06-21-19 21:00:13:589241;15;INFO;main;DECODED: 775233900043 DECODED BY: 18500738 DISTANCE: 1.5165
06-21-19 21:00:13:589265;156;WARN;main;DECODED: 775233900043 EMPTY DISTANCE: --------";
string month="06";
string day = "21";
string year = "19";

GrokResult grokResult = act.Parse(logs);

Assert.Equal("month", grokResult[0].Key);
Assert.Equal("06", grokResult[0].Value);
Assert.Equal(month, grokResult[0].Value);
Assert.Equal("day", grokResult[1].Key);
Assert.Equal("21", grokResult[1].Value);
Assert.Equal(day, grokResult[1].Value);
Assert.Equal("year", grokResult[2].Key);
Assert.Equal("19", grokResult[2].Value);
Assert.Equal(year, grokResult[2].Value);
Assert.Equal("month", grokResult[8].Key);
Assert.Equal("06", grokResult[8].Value);
Assert.Equal(month, grokResult[8].Value);
Assert.Equal("day", grokResult[9].Key);
Assert.Equal("21", grokResult[9].Value);
Assert.Equal(day, grokResult[9].Value);
Assert.Equal("year", grokResult[10].Key);
Assert.Equal("19", grokResult[10].Value);
Assert.Equal(year, grokResult[10].Value);
}

[Fact]
Expand All @@ -73,29 +78,47 @@ public void TimePatternTest()
public void EmailPatternTest()
{
Grok act = new Grok("%{EMAILADDRESS:email}:%{GREEDYDATA:comment}");
string logs = @"[email protected]:Free as in Free Beer";
string emailAddress ="[email protected]";
string comment = "Free as in Free Beer";
string logs = emailAddress + ":" + comment;

GrokResult grokResult = act.Parse(logs);

Assert.Equal("[email protected]", grokResult[0].Value);
Assert.Equal("Free as in Free Beer", grokResult[1].Value);
Assert.Equal(emailAddress, grokResult[0].Value);
Assert.Equal(comment, grokResult[1].Value);
Assert.Equal("email", grokResult[0].Key);
Assert.Equal("comment", grokResult[1].Key);
}

[Fact]
public void IPv4PatternTest()
[Theory]
[MemberData(nameof(GetIpv4PatternTestData))]
public void IPv4PatternTest(string grokPattern, string logs, string ipAddress, string comment, int grokElementOffset)
{
Grok act = new Grok("%{IPV4:IP}:%{GREEDYDATA:comment}");
string logs = @"172.26.34.32:Free as in Free Beer
10.0.12.17:In for the win";
Grok act = new Grok(grokPattern);

GrokResult grokResult = act.Parse(logs);

Assert.Equal("172.26.34.32", grokResult[0].Value);
Assert.Equal("Free as in Free Beer", grokResult[1].Value);
Assert.Equal("10.0.12.17", grokResult[2].Value);
Assert.Equal("In for the win", grokResult[3].Value);
Assert.Equal(ipAddress, grokResult[grokElementOffset].Value);
Assert.Equal(comment, grokResult[grokElementOffset+1].Value);
}
public static IEnumerable<object[]> GetIpv4PatternTestData()
{
string grokPattern="%{IPV4:IP}:%{GREEDYDATA:comment}";
string ip1 ="172.26.34.32";
string comment1 = "Free as in Free Beer";
string ip2="10.0.12.17";
string comment2="In for the win";
string logs = ip1 + ":" + comment1 +"\n"+ ip2 + ":" + comment2;
int elementOffset = 0;

var data = new List<object[]>
{
new object[]{grokPattern, logs, ip1, comment1, elementOffset},
new object[]{grokPattern, logs, ip2, comment2, elementOffset+2},
};

return data;
}

}
}