Skip to content

Commit c2c0210

Browse files
committed
feat(aggregator): add signer_registration_total_successful_since_startup metric
1 parent f26a232 commit c2c0210

File tree

2 files changed

+83
-4
lines changed

2 files changed

+83
-4
lines changed

mithril-aggregator/src/http_server/routes/signer_routes.rs

Lines changed: 78 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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]

mithril-aggregator/src/metrics/service.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,11 @@ build_metrics_service!(
8484
"Number of signer registrations received since startup on a Mithril aggregator node",
8585
&[SIGNER_REGISTRATION_ORIGIN_TAG_LABEL]
8686
),
87+
signer_registration_total_successful_since_startup:MetricCounterWithLabels(
88+
"mithril_aggregator_signer_registration_total_successful_since_startup",
89+
"Number of successful signer registrations received since startup on a Mithril aggregator node",
90+
&[SIGNER_REGISTRATION_ORIGIN_TAG_LABEL]
91+
),
8792
signature_registration_total_received_since_startup:MetricCounterWithLabels(
8893
"mithril_aggregator_signature_registration_total_received_since_startup",
8994
"Number of signature registrations received since startup on a Mithril aggregator node",

0 commit comments

Comments
 (0)