@@ -16,7 +16,7 @@ func Benchmark_ParseLine_CommonLogFormat(b *testing.B) {
1616 p := & Parser {
1717 Patterns : []string {"%{COMMON_LOG_FORMAT}" },
1818 }
19- p .Compile ()
19+ _ = p .Compile ()
2020
2121 var m telegraf.Metric
2222 for n := 0 ; n < b .N ; n ++ {
@@ -29,7 +29,7 @@ func Benchmark_ParseLine_CombinedLogFormat(b *testing.B) {
2929 p := & Parser {
3030 Patterns : []string {"%{COMBINED_LOG_FORMAT}" },
3131 }
32- p .Compile ()
32+ _ = p .Compile ()
3333
3434 var m telegraf.Metric
3535 for n := 0 ; n < b .N ; n ++ {
@@ -48,7 +48,7 @@ func Benchmark_ParseLine_CustomPattern(b *testing.B) {
4848 TEST_LOG_A %{NUMBER:myfloat:float} %{RESPONSE_CODE} %{IPORHOST:clientip} %{RESPONSE_TIME}
4949 ` ,
5050 }
51- p .Compile ()
51+ _ = p .Compile ()
5252
5353 var m telegraf.Metric
5454 for n := 0 ; n < b .N ; n ++ {
@@ -707,3 +707,183 @@ func TestShortPatternRegression(t *testing.T) {
707707 },
708708 metric .Fields ())
709709}
710+
711+ func TestTimezoneEmptyCompileFileAndParse (t * testing.T ) {
712+ p := & Parser {
713+ Patterns : []string {"%{TEST_LOG_A}" , "%{TEST_LOG_B}" },
714+ CustomPatternFiles : []string {"./testdata/test-patterns" },
715+ Timezone : "" ,
716+ }
717+ assert .NoError (t , p .Compile ())
718+
719+ metricA , err := p .ParseLine (`[04/Jun/2016:12:41:45 +0100] 1.25 200 192.168.1.1 5.432µs 101` )
720+ require .NotNil (t , metricA )
721+ assert .NoError (t , err )
722+ assert .Equal (t ,
723+ map [string ]interface {}{
724+ "clientip" : "192.168.1.1" ,
725+ "myfloat" : float64 (1.25 ),
726+ "response_time" : int64 (5432 ),
727+ "myint" : int64 (101 ),
728+ },
729+ metricA .Fields ())
730+ assert .Equal (t , map [string ]string {"response_code" : "200" }, metricA .Tags ())
731+ assert .Equal (t , int64 (1465040505000000000 ), metricA .UnixNano ())
732+
733+ metricB , err := p .ParseLine (`[04/06/2016--12:41:45] 1.25 mystring dropme nomodifier` )
734+ require .NotNil (t , metricB )
735+ assert .NoError (t , err )
736+ assert .Equal (t ,
737+ map [string ]interface {}{
738+ "myfloat" : 1.25 ,
739+ "mystring" : "mystring" ,
740+ "nomodifier" : "nomodifier" ,
741+ },
742+ metricB .Fields ())
743+ assert .Equal (t , map [string ]string {}, metricB .Tags ())
744+ assert .Equal (t , int64 (1465044105000000000 ), metricB .UnixNano ())
745+ }
746+
747+ func TestTimezoneMalformedCompileFileAndParse (t * testing.T ) {
748+ p := & Parser {
749+ Patterns : []string {"%{TEST_LOG_A}" , "%{TEST_LOG_B}" },
750+ CustomPatternFiles : []string {"./testdata/test-patterns" },
751+ Timezone : "Something/Weird" ,
752+ }
753+ assert .NoError (t , p .Compile ())
754+
755+ metricA , err := p .ParseLine (`[04/Jun/2016:12:41:45 +0100] 1.25 200 192.168.1.1 5.432µs 101` )
756+ require .NotNil (t , metricA )
757+ assert .NoError (t , err )
758+ assert .Equal (t ,
759+ map [string ]interface {}{
760+ "clientip" : "192.168.1.1" ,
761+ "myfloat" : float64 (1.25 ),
762+ "response_time" : int64 (5432 ),
763+ "myint" : int64 (101 ),
764+ },
765+ metricA .Fields ())
766+ assert .Equal (t , map [string ]string {"response_code" : "200" }, metricA .Tags ())
767+ assert .Equal (t , int64 (1465040505000000000 ), metricA .UnixNano ())
768+
769+ metricB , err := p .ParseLine (`[04/06/2016--12:41:45] 1.25 mystring dropme nomodifier` )
770+ require .NotNil (t , metricB )
771+ assert .NoError (t , err )
772+ assert .Equal (t ,
773+ map [string ]interface {}{
774+ "myfloat" : 1.25 ,
775+ "mystring" : "mystring" ,
776+ "nomodifier" : "nomodifier" ,
777+ },
778+ metricB .Fields ())
779+ assert .Equal (t , map [string ]string {}, metricB .Tags ())
780+ assert .Equal (t , int64 (1465044105000000000 ), metricB .UnixNano ())
781+ }
782+
783+ func TestTimezoneEuropeCompileFileAndParse (t * testing.T ) {
784+ p := & Parser {
785+ Patterns : []string {"%{TEST_LOG_A}" , "%{TEST_LOG_B}" },
786+ CustomPatternFiles : []string {"./testdata/test-patterns" },
787+ Timezone : "Europe/Berlin" ,
788+ }
789+ assert .NoError (t , p .Compile ())
790+
791+ metricA , err := p .ParseLine (`[04/Jun/2016:12:41:45 +0100] 1.25 200 192.168.1.1 5.432µs 101` )
792+ require .NotNil (t , metricA )
793+ assert .NoError (t , err )
794+ assert .Equal (t ,
795+ map [string ]interface {}{
796+ "clientip" : "192.168.1.1" ,
797+ "myfloat" : float64 (1.25 ),
798+ "response_time" : int64 (5432 ),
799+ "myint" : int64 (101 ),
800+ },
801+ metricA .Fields ())
802+ assert .Equal (t , map [string ]string {"response_code" : "200" }, metricA .Tags ())
803+ assert .Equal (t , int64 (1465040505000000000 ), metricA .UnixNano ())
804+
805+ metricB , err := p .ParseLine (`[04/06/2016--12:41:45] 1.25 mystring dropme nomodifier` )
806+ require .NotNil (t , metricB )
807+ assert .NoError (t , err )
808+ assert .Equal (t ,
809+ map [string ]interface {}{
810+ "myfloat" : 1.25 ,
811+ "mystring" : "mystring" ,
812+ "nomodifier" : "nomodifier" ,
813+ },
814+ metricB .Fields ())
815+ assert .Equal (t , map [string ]string {}, metricB .Tags ())
816+ assert .Equal (t , int64 (1465036905000000000 ), metricB .UnixNano ())
817+ }
818+
819+ func TestTimezoneAmericasCompileFileAndParse (t * testing.T ) {
820+ p := & Parser {
821+ Patterns : []string {"%{TEST_LOG_A}" , "%{TEST_LOG_B}" },
822+ CustomPatternFiles : []string {"./testdata/test-patterns" },
823+ Timezone : "Canada/Eastern" ,
824+ }
825+ assert .NoError (t , p .Compile ())
826+
827+ metricA , err := p .ParseLine (`[04/Jun/2016:12:41:45 +0100] 1.25 200 192.168.1.1 5.432µs 101` )
828+ require .NotNil (t , metricA )
829+ assert .NoError (t , err )
830+ assert .Equal (t ,
831+ map [string ]interface {}{
832+ "clientip" : "192.168.1.1" ,
833+ "myfloat" : float64 (1.25 ),
834+ "response_time" : int64 (5432 ),
835+ "myint" : int64 (101 ),
836+ },
837+ metricA .Fields ())
838+ assert .Equal (t , map [string ]string {"response_code" : "200" }, metricA .Tags ())
839+ assert .Equal (t , int64 (1465040505000000000 ), metricA .UnixNano ())
840+
841+ metricB , err := p .ParseLine (`[04/06/2016--12:41:45] 1.25 mystring dropme nomodifier` )
842+ require .NotNil (t , metricB )
843+ assert .NoError (t , err )
844+ assert .Equal (t ,
845+ map [string ]interface {}{
846+ "myfloat" : 1.25 ,
847+ "mystring" : "mystring" ,
848+ "nomodifier" : "nomodifier" ,
849+ },
850+ metricB .Fields ())
851+ assert .Equal (t , map [string ]string {}, metricB .Tags ())
852+ assert .Equal (t , int64 (1465058505000000000 ), metricB .UnixNano ())
853+ }
854+
855+ func TestTimezoneLocalCompileFileAndParse (t * testing.T ) {
856+ p := & Parser {
857+ Patterns : []string {"%{TEST_LOG_A}" , "%{TEST_LOG_B}" },
858+ CustomPatternFiles : []string {"./testdata/test-patterns" },
859+ Timezone : "Local" ,
860+ }
861+ assert .NoError (t , p .Compile ())
862+
863+ metricA , err := p .ParseLine (`[04/Jun/2016:12:41:45 +0100] 1.25 200 192.168.1.1 5.432µs 101` )
864+ require .NotNil (t , metricA )
865+ assert .NoError (t , err )
866+ assert .Equal (t ,
867+ map [string ]interface {}{
868+ "clientip" : "192.168.1.1" ,
869+ "myfloat" : float64 (1.25 ),
870+ "response_time" : int64 (5432 ),
871+ "myint" : int64 (101 ),
872+ },
873+ metricA .Fields ())
874+ assert .Equal (t , map [string ]string {"response_code" : "200" }, metricA .Tags ())
875+ assert .Equal (t , int64 (1465040505000000000 ), metricA .UnixNano ())
876+
877+ metricB , err := p .ParseLine (`[04/06/2016--12:41:45] 1.25 mystring dropme nomodifier` )
878+ require .NotNil (t , metricB )
879+ assert .NoError (t , err )
880+ assert .Equal (t ,
881+ map [string ]interface {}{
882+ "myfloat" : 1.25 ,
883+ "mystring" : "mystring" ,
884+ "nomodifier" : "nomodifier" ,
885+ },
886+ metricB .Fields ())
887+ assert .Equal (t , map [string ]string {}, metricB .Tags ())
888+ assert .Equal (t , time .Date (2016 , time .June , 4 , 12 , 41 , 45 , 0 , time .Local ).UnixNano (), metricB .UnixNano ())
889+ }
0 commit comments