From 97d3fb15fbd0eaf813e55845de6c60d0a925b758 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=89=E6=AD=A3=E8=B6=85?= Date: Mon, 6 Apr 2026 10:16:53 +0800 Subject: [PATCH] test(metrics): cover Prometheus descriptor names (#2405) --- crates/metrics/src/format.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/crates/metrics/src/format.rs b/crates/metrics/src/format.rs index 976cc3ce8..e87138314 100644 --- a/crates/metrics/src/format.rs +++ b/crates/metrics/src/format.rs @@ -182,3 +182,39 @@ impl PrometheusMetric { self } } + +#[cfg(test)] +mod tests { + use super::*; + use crate::{MetricDescriptor, MetricName, MetricNamespace, MetricSubsystem}; + + #[test] + fn from_descriptor_uses_prometheus_metric_names_for_all_types() { + let cases = [ + (MetricType::Counter, "rustfs_api_requests_total"), + (MetricType::Gauge, "rustfs_system_memory_used_bytes"), + (MetricType::Histogram, "rustfs_custom_path_latency_seconds"), + ]; + + for (metric_type, expected_name) in cases { + let subsystem = match metric_type { + MetricType::Counter => MetricSubsystem::ApiRequests, + MetricType::Gauge => MetricSubsystem::SystemMemory, + MetricType::Histogram => MetricSubsystem::new("/custom/path"), + }; + let name = match metric_type { + MetricType::Counter => MetricName::ApiRequestsTotal, + MetricType::Gauge => MetricName::Custom("used_bytes".to_string()), + MetricType::Histogram => MetricName::Custom("latency_seconds".to_string()), + }; + + let metric = PrometheusMetric::from_descriptor( + &MetricDescriptor::new(name, metric_type, "test help".to_string(), vec![], MetricNamespace::RustFS, subsystem), + 1.0, + ); + + assert_eq!(metric.name, expected_name); + assert_eq!(metric.metric_type, metric_type); + } + } +}