@@ -139,6 +139,10 @@ mod handlers {
139139 epoch_str. as_str ( ) ,
140140 ) ) ;
141141
142+ metrics_service
143+ . get_signer_registration_total_successful_since_startup ( )
144+ . increment ( & [ origin_tag. as_deref ( ) . unwrap_or_default ( ) ] ) ;
145+
142146 Ok ( reply:: empty ( StatusCode :: CREATED ) )
143147 }
144148 Err ( SignerRegistrationError :: ExistingSigner ( signer_with_stake) ) => {
@@ -271,6 +275,7 @@ mod tests {
271275 test:: {
272276 builder:: MithrilFixtureBuilder ,
273277 double:: { Dummy , fake_data} ,
278+ mock_extensions:: MockBuilder ,
274279 } ,
275280 } ;
276281
@@ -334,15 +339,77 @@ mod tests {
334339 }
335340
336341 #[ tokio:: test]
337- async fn test_register_signer_post_increments_signer_registration_total_received_since_startup_metric ( )
342+ async fn test_register_signer_increments_signer_registration_total_received_and_successful_since_startup_metric_if_successful ( )
343+ {
344+ let method = Method :: POST . as_str ( ) ;
345+ let path = "/register-signer" ;
346+ let dependency_manager = {
347+ let mut deps = initialize_dependencies ! ( ) . await ;
348+ deps. signer_registerer = MockBuilder :: < MockSignerRegisterer > :: configure ( |mock| {
349+ mock. expect_register_signer ( )
350+ . returning ( |_, _| Ok ( fake_data:: signers_with_stakes ( 1 ) . pop ( ) . unwrap ( ) ) ) ;
351+ } ) ;
352+ Arc :: new ( deps)
353+ } ;
354+
355+ let initial_received_counter_value = dependency_manager
356+ . metrics_service
357+ . get_signer_registration_total_received_since_startup ( )
358+ . get ( & [ "TEST" ] ) ;
359+ let initial_successful_counter_value = dependency_manager
360+ . metrics_service
361+ . get_signer_registration_total_successful_since_startup ( )
362+ . get ( & [ "HTTP" ] ) ;
363+
364+ request ( )
365+ . method ( method)
366+ . path ( path)
367+ . json ( & RegisterSignerMessage :: dummy ( ) )
368+ . header ( MITHRIL_ORIGIN_TAG_HEADER , "TEST" )
369+ . reply ( & setup_router ( RouterState :: new_with_origin_tag_white_list (
370+ dependency_manager. clone ( ) ,
371+ & [ "TEST" ] ,
372+ ) ) )
373+ . await ;
374+
375+ assert_eq ! (
376+ initial_received_counter_value + 1 ,
377+ dependency_manager
378+ . metrics_service
379+ . get_signer_registration_total_received_since_startup( )
380+ . get( & [ "TEST" ] )
381+ ) ;
382+ assert_eq ! (
383+ initial_successful_counter_value + 1 ,
384+ dependency_manager
385+ . metrics_service
386+ . get_signer_registration_total_successful_since_startup( )
387+ . get( & [ "TEST" ] )
388+ ) ;
389+ }
390+
391+ #[ tokio:: test]
392+ async fn test_register_signer_only_increments_signer_registration_total_received_since_startup_metric_if_failure ( )
338393 {
339394 let method = Method :: POST . as_str ( ) ;
340395 let path = "/register-signer" ;
341- let dependency_manager = Arc :: new ( initialize_dependencies ! ( ) . await ) ;
342- let initial_counter_value = dependency_manager
396+ let dependency_manager = {
397+ let mut deps = initialize_dependencies ! ( ) . await ;
398+ deps. signer_registerer = MockBuilder :: < MockSignerRegisterer > :: configure ( |mock| {
399+ mock. expect_register_signer ( )
400+ . returning ( |_, _| Err ( SignerRegistrationError :: RegistrationRoundNotYetOpened ) ) ;
401+ } ) ;
402+ Arc :: new ( deps)
403+ } ;
404+
405+ let initial_received_counter_value = dependency_manager
343406 . metrics_service
344407 . get_signer_registration_total_received_since_startup ( )
345408 . get ( & [ "TEST" ] ) ;
409+ let initial_successful_counter_value = dependency_manager
410+ . metrics_service
411+ . get_signer_registration_total_successful_since_startup ( )
412+ . get ( & [ "HTTP" ] ) ;
346413
347414 request ( )
348415 . method ( method)
@@ -356,12 +423,19 @@ mod tests {
356423 . await ;
357424
358425 assert_eq ! (
359- initial_counter_value + 1 ,
426+ initial_received_counter_value + 1 ,
360427 dependency_manager
361428 . metrics_service
362429 . get_signer_registration_total_received_since_startup( )
363430 . get( & [ "TEST" ] )
364431 ) ;
432+ assert_eq ! (
433+ initial_successful_counter_value,
434+ dependency_manager
435+ . metrics_service
436+ . get_signer_registration_total_successful_since_startup( )
437+ . get( & [ "TEST" ] )
438+ ) ;
365439 }
366440
367441 #[ tokio:: test]
0 commit comments