Skip to content

Commit 3bfa033

Browse files
committed
Address OpenMetrics review feedback
1 parent 042b25d commit 3bfa033

1 file changed

Lines changed: 15 additions & 4 deletions

File tree

lading_payload/src/openmetrics.rs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
//! `OpenMetrics` text exposition payload.
1+
//! Prometheus/OpenMetrics text exposition payload.
22
//!
3-
//! This generator builds a deterministic Prometheus text exposition body for
4-
//! scrape-oriented tests. The body is fully precomputed before serving so that
5-
//! lading does no payload generation work on request hot paths.
3+
//! This generator builds a deterministic Prometheus/OpenMetrics text exposition
4+
//! body for scrape-oriented tests. The body is fully precomputed before serving
5+
//! so that lading does no payload generation work on request hot paths.
66
77
use std::io::{self, Write};
88

@@ -333,6 +333,12 @@ fn validate_metric_prefix(prefix: &str) -> Result<(), String> {
333333
if prefix.is_empty() {
334334
return Err("metric_name_prefix cannot be empty".to_string());
335335
}
336+
let Some(first) = prefix.chars().next() else {
337+
return Err("metric_name_prefix cannot be empty".to_string());
338+
};
339+
if !(first.is_ascii_alphabetic() || first == '_' || first == ':') {
340+
return Err("metric_name_prefix must start with [A-Za-z_:]".to_string());
341+
}
336342
if !prefix
337343
.chars()
338344
.all(|ch| ch.is_ascii_alphanumeric() || ch == '_' || ch == ':')
@@ -706,6 +712,11 @@ mod tests {
706712
..Config::default()
707713
};
708714
assert!(config.valid().is_err());
715+
let config = Config {
716+
metric_name_prefix: "1bad".to_string(),
717+
..Config::default()
718+
};
719+
assert!(config.valid().is_err());
709720

710721
let config = Config {
711722
labels: LabelConfig {

0 commit comments

Comments
 (0)