@@ -381,6 +381,60 @@ public void testSlowLogFilters() throws Exception {
381
381
HBASE_TESTING_UTILITY .waitFor (3000 , () -> getSlowLogPayloads (requestSlowLog ).size () == 15 ));
382
382
}
383
383
384
+ @ Test
385
+ public void testSlowLogFilterWithClientAddress () throws Exception {
386
+ Configuration conf = applySlowLogRecorderConf (10 );
387
+ Constructor <NamedQueueRecorder > constructor =
388
+ NamedQueueRecorder .class .getDeclaredConstructor (Configuration .class );
389
+ constructor .setAccessible (true );
390
+ namedQueueRecorder = constructor .newInstance (conf );
391
+ AdminProtos .SlowLogResponseRequest request =
392
+ AdminProtos .SlowLogResponseRequest .newBuilder ().build ();
393
+ Assert .assertEquals (getSlowLogPayloads (request ).size (), 0 );
394
+
395
+ String [] clientAddressArray = new String [] { "[127:1:1:1:1:1:1:1]:1" , "[127:1:1:1:1:1:1:1]:2" ,
396
+ "[127:1:1:1:1:1:1:1]:3" , "127.0.0.1:1" , "127.0.0.1:2" };
397
+ boolean isSlowLog ;
398
+ boolean isLargeLog ;
399
+ for (int i = 0 ; i < 10 ; i ++) {
400
+ if (i % 2 == 0 ) {
401
+ isSlowLog = true ;
402
+ isLargeLog = false ;
403
+ } else {
404
+ isSlowLog = false ;
405
+ isLargeLog = true ;
406
+ }
407
+ RpcLogDetails rpcLogDetails = getRpcLogDetails ("userName_" + (i + 1 ),
408
+ clientAddressArray [i % 5 ], "class_" + (i + 1 ), isSlowLog , isLargeLog );
409
+ namedQueueRecorder .addRecord (rpcLogDetails );
410
+ }
411
+
412
+ AdminProtos .SlowLogResponseRequest largeLogRequestIPv6WithPort =
413
+ AdminProtos .SlowLogResponseRequest .newBuilder ()
414
+ .setLogType (AdminProtos .SlowLogResponseRequest .LogType .LARGE_LOG )
415
+ .setClientAddress ("[127:1:1:1:1:1:1:1]:2" ).build ();
416
+ Assert .assertNotEquals (-1 , HBASE_TESTING_UTILITY .waitFor (3000 ,
417
+ () -> getSlowLogPayloads (largeLogRequestIPv6WithPort ).size () == 1 ));
418
+ AdminProtos .SlowLogResponseRequest largeLogRequestIPv6WithoutPort =
419
+ AdminProtos .SlowLogResponseRequest .newBuilder ()
420
+ .setLogType (AdminProtos .SlowLogResponseRequest .LogType .LARGE_LOG )
421
+ .setClientAddress ("[127:1:1:1:1:1:1:1]" ).build ();
422
+ Assert .assertNotEquals (-1 , HBASE_TESTING_UTILITY .waitFor (3000 ,
423
+ () -> getSlowLogPayloads (largeLogRequestIPv6WithoutPort ).size () == 3 ));
424
+ AdminProtos .SlowLogResponseRequest largeLogRequestIPv4WithPort =
425
+ AdminProtos .SlowLogResponseRequest .newBuilder ()
426
+ .setLogType (AdminProtos .SlowLogResponseRequest .LogType .LARGE_LOG )
427
+ .setClientAddress ("127.0.0.1:1" ).build ();
428
+ Assert .assertNotEquals (-1 , HBASE_TESTING_UTILITY .waitFor (3000 ,
429
+ () -> getSlowLogPayloads (largeLogRequestIPv4WithPort ).size () == 1 ));
430
+ AdminProtos .SlowLogResponseRequest largeLogRequestIPv4WithoutPort =
431
+ AdminProtos .SlowLogResponseRequest .newBuilder ()
432
+ .setLogType (AdminProtos .SlowLogResponseRequest .LogType .LARGE_LOG )
433
+ .setClientAddress ("127.0.0.1" ).build ();
434
+ Assert .assertNotEquals (-1 , HBASE_TESTING_UTILITY .waitFor (3000 ,
435
+ () -> getSlowLogPayloads (largeLogRequestIPv4WithoutPort ).size () == 2 ));
436
+ }
437
+
384
438
@ Test
385
439
public void testConcurrentSlowLogEvents () throws Exception {
386
440
0 commit comments