@@ -379,10 +379,10 @@ public void testMultipleNamedCapturesWithSameName() {
379
379
expected .put ("num" , "1" );
380
380
assertThat (grok .captures ("12" ), equalTo (expected ));
381
381
}
382
-
382
+
383
383
public void testExponentialExpressions () {
384
384
AtomicBoolean run = new AtomicBoolean (true ); // to avoid a lingering thread when test has completed
385
-
385
+
386
386
String grokPattern = "Bonsuche mit folgender Anfrage: Belegart->\\ [%{WORD:param2},(?<param5>(\\ s*%{NOTSPACE})*)\\ ] " +
387
387
"Zustand->ABGESCHLOSSEN Kassennummer->%{WORD:param9} Bonnummer->%{WORD:param10} Datum->%{DATESTAMP_OTHER:param11}" ;
388
388
String logLine = "Bonsuche mit folgender Anfrage: Belegart->[EINGESCHRAENKTER_VERKAUF, VERKAUF, NACHERFASSUNG] " +
@@ -406,4 +406,50 @@ public void testExponentialExpressions() {
406
406
run .set (false );
407
407
assertThat (e .getMessage (), equalTo ("grok pattern matching was interrupted after [200] ms" ));
408
408
}
409
+
410
+ public void testAtInFieldName () {
411
+ assertGrokedField ("@metadata" );
412
+ }
413
+
414
+ public void assertNonAsciiLetterInFieldName () {
415
+ assertGrokedField ("metädata" );
416
+ }
417
+
418
+ public void assertSquareBracketInFieldName () {
419
+ assertGrokedField ("metadat[a]" );
420
+ assertGrokedField ("metad[a]ta" );
421
+ assertGrokedField ("[m]etadata" );
422
+ }
423
+
424
+ public void testUnderscoreInFieldName () {
425
+ assertGrokedField ("meta_data" );
426
+ }
427
+
428
+ public void testDotInFieldName () {
429
+ assertGrokedField ("meta.data" );
430
+ }
431
+
432
+ public void testMinusInFieldName () {
433
+ assertGrokedField ("meta-data" );
434
+ }
435
+
436
+ public void testAlphanumericFieldName () {
437
+ assertGrokedField (randomAlphaOfLengthBetween (1 , 5 ));
438
+ assertGrokedField (randomAlphaOfLengthBetween (1 , 5 ) + randomIntBetween (0 , 100 ));
439
+ assertGrokedField (randomIntBetween (0 , 100 ) + randomAlphaOfLengthBetween (1 , 5 ));
440
+ assertGrokedField (String .valueOf (randomIntBetween (0 , 100 )));
441
+ }
442
+
443
+ public void testUnsupportedBracketsInFieldName () {
444
+ Grok grok = new Grok (basePatterns , "%{WORD:unsuppo(r)ted}" );
445
+ Map <String , Object > matches = grok .captures ("line" );
446
+ assertNull (matches );
447
+ }
448
+
449
+ private void assertGrokedField (String fieldName ) {
450
+ String line = "foo" ;
451
+ Grok grok = new Grok (basePatterns , "%{WORD:" + fieldName + "}" );
452
+ Map <String , Object > matches = grok .captures (line );
453
+ assertEquals (line , matches .get (fieldName ));
454
+ }
409
455
}
0 commit comments