3030import java .util .List ;
3131import java .util .Map ;
3232
33+ import java .util .concurrent .Callable ;
34+ import org .apache .hadoop .metrics2 .lib .MutableCounterLong ;
35+ import org .apache .hadoop .metrics2 .lib .MutableRate ;
3336import org .apache .hadoop .test .LambdaTestUtils ;
3437import org .junit .Assert ;
3538
@@ -625,18 +628,12 @@ public void testDelegationTokenSecretManagerMetrics() throws Exception {
625628 try {
626629 dtSecretManager .startThreads ();
627630
628- Assert .assertEquals (0 , dtSecretManager .metrics .storeToken .lastStat ().numSamples ());
629- final Token <TestDelegationTokenIdentifier > token =
630- generateDelegationToken (dtSecretManager , "SomeUser" , "JobTracker" );
631- Assert .assertEquals (1 , dtSecretManager .metrics .storeToken .lastStat ().numSamples ());
631+ final Token <TestDelegationTokenIdentifier > token = callAndValidateMetrics (dtSecretManager .metrics .storeToken ,
632+ () -> generateDelegationToken (dtSecretManager , "SomeUser" , "JobTracker" ), 1 );
632633
633- Assert .assertEquals (0 , dtSecretManager .metrics .updateToken .lastStat ().numSamples ());
634- dtSecretManager .renewToken (token , "JobTracker" );
635- Assert .assertEquals (1 , dtSecretManager .metrics .updateToken .lastStat ().numSamples ());
634+ callAndValidateMetrics (dtSecretManager .metrics .updateToken , () -> dtSecretManager .renewToken (token , "JobTracker" ), 1 );
636635
637- Assert .assertEquals (0 , dtSecretManager .metrics .removeToken .lastStat ().numSamples ());
638- dtSecretManager .cancelToken (token , "JobTracker" );
639- Assert .assertEquals (1 , dtSecretManager .metrics .removeToken .lastStat ().numSamples ());
636+ callAndValidateMetrics (dtSecretManager .metrics .removeToken , () -> dtSecretManager .cancelToken (token , "JobTracker" ), 1 );
640637 } finally {
641638 dtSecretManager .stopThreads ();
642639 }
@@ -654,17 +651,32 @@ public void testDelegationTokenSecretManagerMetricsFailures() throws Exception {
654651
655652 dtSecretManager .setThrowError (true );
656653
657- Assert .assertEquals (0 , dtSecretManager .metrics .tokenFailure .value ());
658- generateDelegationToken (dtSecretManager , "SomeUser" , "JobTracker" );
659- Assert .assertEquals (1 , dtSecretManager .metrics .tokenFailure .value ());
654+ callAndValidateMetrics (dtSecretManager .metrics .tokenFailure ,
655+ () -> generateDelegationToken (dtSecretManager , "SomeUser" , "JobTracker" ), 1 , false );
660656
661- LambdaTestUtils .intercept (Exception .class , () -> dtSecretManager .renewToken (token , "JobTracker" ));
662- Assert .assertEquals (2 , dtSecretManager .metrics .tokenFailure .value ());
657+ callAndValidateMetrics (dtSecretManager .metrics .tokenFailure , () -> dtSecretManager .renewToken (token , "JobTracker" ), 2 , true );
663658
664- LambdaTestUtils .intercept (Exception .class , () -> dtSecretManager .cancelToken (token , "JobTracker" ));
665- Assert .assertEquals (3 , dtSecretManager .metrics .tokenFailure .value ());
659+ callAndValidateMetrics (dtSecretManager .metrics .tokenFailure , () -> dtSecretManager .cancelToken (token , "JobTracker" ), 3 , true );
666660 } finally {
667661 dtSecretManager .stopThreads ();
668662 }
669663 }
664+
665+ private <T > T callAndValidateMetrics (MutableRate metric , Callable <T > callable , int expectedCount ) throws Exception {
666+ Assert .assertEquals (expectedCount - 1 , metric .lastStat ().numSamples ());
667+ T returnedObject = callable .call ();
668+ Assert .assertEquals (expectedCount , metric .lastStat ().numSamples ());
669+ return returnedObject ;
670+ }
671+
672+ private <T > void callAndValidateMetrics (MutableCounterLong counter , Callable <T > callable , int expectedCount , boolean expectError )
673+ throws Exception {
674+ Assert .assertEquals (expectedCount - 1 , counter .value ());
675+ if (expectError ) {
676+ LambdaTestUtils .intercept (IOException .class , callable );
677+ } else {
678+ callable .call ();
679+ }
680+ Assert .assertEquals (expectedCount , counter .value ());
681+ }
670682}
0 commit comments