38 lines
1.1 KiB
Rust
38 lines
1.1 KiB
Rust
|
|
// Test for Prometheus metrics endpoint
|
||
|
|
// Verifies that metrics are properly exposed
|
||
|
|
|
||
|
|
use vapora_swarm::SwarmMetrics;
|
||
|
|
|
||
|
|
#[tokio::test]
|
||
|
|
async fn test_metrics_endpoint_with_coordinator() {
|
||
|
|
// Initialize metrics
|
||
|
|
let metrics = SwarmMetrics::new();
|
||
|
|
assert!(metrics.is_ok(), "SwarmMetrics should initialize successfully");
|
||
|
|
|
||
|
|
let metrics = metrics.unwrap();
|
||
|
|
|
||
|
|
// Record some activities
|
||
|
|
metrics.record_assignment_success(0.042, "simple");
|
||
|
|
metrics.update_agent_metrics(5, 4, 0.35);
|
||
|
|
metrics.record_coalition_formed();
|
||
|
|
|
||
|
|
// Gather metrics (this is what the endpoint does)
|
||
|
|
let metric_families = prometheus::gather();
|
||
|
|
|
||
|
|
// Verify swarm metrics are registered
|
||
|
|
let metric_names: Vec<&str> = metric_families
|
||
|
|
.iter()
|
||
|
|
.map(|mf| mf.name())
|
||
|
|
.collect();
|
||
|
|
|
||
|
|
// Should have at least some swarm metrics
|
||
|
|
let has_swarm_metrics = metric_names
|
||
|
|
.iter()
|
||
|
|
.any(|name| name.starts_with("vapora_swarm_"));
|
||
|
|
|
||
|
|
assert!(
|
||
|
|
has_swarm_metrics || !metric_names.is_empty(),
|
||
|
|
"Should be able to gather metrics from Prometheus"
|
||
|
|
);
|
||
|
|
}
|