From 7a05e8aa8e0443740d133e9b372f2d79335438f1 Mon Sep 17 00:00:00 2001 From: zerosnacks <95942363+zerosnacks@users.noreply.github.com> Date: Wed, 23 Sep 2026 11:34:28 +0200 Subject: [PATCH] test: consolidate execution outcome metrics coverage Replace separate completed and lease-loss metric tests with one bounded outcome matrix covering every ExecutionOutcome variant. Verify that each completed execution increments the total execution count, does not increment the unhandled count, and increments exactly one matching outcome counter. The rest of Steda's embedded unit tests already protect distinct contracts, so leave them intentionally granular. --- src/metrics.rs | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/src/metrics.rs b/src/metrics.rs index 1490fec..8e2502e 100644 --- a/src/metrics.rs +++ b/src/metrics.rs @@ -219,23 +219,32 @@ mod tests { } #[test] - fn executions_record_one_bounded_outcome() { - let metrics = QueueMetrics::new(); - TaskExecution::start(metrics.clone()).finish(ExecutionOutcome::Completed); - - assert_eq!(metrics.executions(), 1); - assert_eq!(metrics.completed_executions(), 1); - assert_eq!(metrics.unhandled_executions(), 0); - } - - #[test] - fn lease_loss_is_a_bounded_execution_outcome() { - let metrics = QueueMetrics::new(); - TaskExecution::start(metrics.clone()).finish(ExecutionOutcome::LeaseLost); - - assert_eq!(metrics.executions(), 1); - assert_eq!(metrics.lease_lost_executions(), 1); - assert_eq!(metrics.unhandled_executions(), 0); + fn bounded_execution_outcomes_update_exactly_one_outcome_counter() { + let cases = [ + ExecutionOutcome::Completed, + ExecutionOutcome::Failed, + ExecutionOutcome::LeaseLost, + ExecutionOutcome::Cancelled, + ExecutionOutcome::Suspended, + ]; + + for (index, outcome) in cases.into_iter().enumerate() { + let metrics = QueueMetrics::new(); + TaskExecution::start(metrics.clone()).finish(outcome); + + let counters = [ + metrics.completed_executions(), + metrics.failed_executions(), + metrics.lease_lost_executions(), + metrics.cancelled_executions(), + metrics.suspended_executions(), + ]; + + assert_eq!(metrics.executions(), 1); + assert_eq!(metrics.unhandled_executions(), 0); + assert_eq!(counters[index], 1); + assert_eq!(counters.iter().sum::(), 1); + } } #[test]