use std::{collections::BTreeSet, time::Duration}; use crank_metrics::{ ExemplarTraceId, HttpMethod, HttpRoute, HttpStatusClass, McpMethod, McpOutcome, McpResponseMode, MetricService, record_http_request, record_mcp_request, render_metric_schema_json, }; 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"); assert!(MetricService::parse(&canary).is_none()); assert!(ExemplarTraceId::parse(&canary).is_none()); 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::>(); assert_eq!(series.len(), 4); assert!(series.iter().all(|value| !value.contains("workspace-"))); assert!(!render_metric_schema_json().unwrap().contains("workspace-")); }