Files
crank/crates/crank-metrics/tests/cardinality.rs
T

40 lines
1.3 KiB
Rust

use std::{collections::BTreeSet, time::Duration};
use crank_metrics::{
HttpMethod, HttpRoute, HttpStatusClass, McpMethod, McpOutcome, McpResponseMode,
record_http_request, record_mcp_request,
};
use metrics_util::debugging::DebuggingRecorder;
#[test]
fn one_million_hostile_values_collapse_to_the_same_closed_series() {
let recorder = DebuggingRecorder::new();
let snapshotter = recorder.snapshotter();
metrics::with_local_recorder(&recorder, || {
for index in 0..1_000_000_u32 {
let canary = format!("workspace-{index}-request-trace-url-secret");
record_http_request(
HttpRoute::from_matched_path(&canary),
HttpMethod::classify(&canary),
HttpStatusClass::from_status(999),
Duration::ZERO,
);
record_mcp_request(
McpMethod::Invalid,
McpResponseMode::Unknown,
McpOutcome::Other,
Duration::ZERO,
);
}
});
let series = snapshotter
.snapshot()
.into_vec()
.into_iter()
.map(|(key, _, _, _)| format!("{:?}", key.key()))
.collect::<BTreeSet<_>>();
assert_eq!(series.len(), 4);
assert!(series.iter().all(|value| !value.contains("workspace-")));
}