re-order fields of log handler config to improve debugging output

This commit is contained in:
Chris Beck
2025-12-07 00:07:53 -07:00
parent 13b6490525
commit 36511d2fd1
2 changed files with 27 additions and 17 deletions
+6 -6
View File
@@ -51,18 +51,18 @@ impl fmt::Display for SuppressionReason {
#[derive(Clone, Conf, Debug)]
#[conf(serde)]
pub struct LogHandlerConfig {
/// Routes for matching and rate-limiting log messages.
#[conf(long, env, value_parser = serde_json::from_str, default_value = "[]", serde(alias = "route"))]
pub routes: Vec<Route>,
/// Overall rate limits applied after route checks pass.
#[conf(long, env, value_parser = serde_json::from_str, default_value = "[]")]
pub overall_limits: Vec<Limit>,
/// Number of recent log messages to buffer per origin
#[conf(long, env, default_value = "64")]
pub log_buffer_size: usize,
/// Log message formatting options.
#[conf(flatten)]
pub log_format: LogFormatConfig,
/// Routes for matching and rate-limiting log messages.
#[conf(long, env, value_parser = serde_json::from_str, default_value = "[]", serde(alias = "route"))]
pub routes: Vec<Route>,
/// Overall rate limits applied after route checks pass.
#[conf(long, env, value_parser = serde_json::from_str, default_value = "[]", serde(alias = "overall_limit"))]
pub overall_limits: Vec<Limit>,
}
/// The log handler takes log messages and decides what to do with them.
+21 -11
View File
@@ -464,28 +464,38 @@ mod tests {
assert!(UUID1.parse::<Uuid>().is_ok());
assert!("not-a-uuid".parse::<Uuid>().is_err());
assert!("12345678-1234-1234-1234-12345678".parse::<Uuid>().is_err()); // too short
assert!("12345678-1234-1234-1234-123456789abcdef".parse::<Uuid>().is_err()); // too long
assert!("12345678-1234-1234-1234-123456789xyz".parse::<Uuid>().is_err()); // non-hex
assert!(
"12345678-1234-1234-1234-123456789abcdef"
.parse::<Uuid>()
.is_err()
); // too long
assert!(
"12345678-1234-1234-1234-123456789xyz"
.parse::<Uuid>()
.is_err()
); // non-hex
}
#[test]
fn test_safety_number_validation() {
assert!(SAFETY1.parse::<SafetyNumber>().is_ok());
// With whitespace (common format)
assert!("12345 67890 12345 67890 12345 67890 12345 67890 12345 67890 12345 67890"
.parse::<SafetyNumber>()
.is_ok());
assert!(
"12345 67890 12345 67890 12345 67890 12345 67890 12345 67890 12345 67890"
.parse::<SafetyNumber>()
.is_ok()
);
assert!("12345".parse::<SafetyNumber>().is_err()); // too short
assert!("12345678901234567890123456789012345678901234567890123456789x"
.parse::<SafetyNumber>()
.is_err()); // non-digit
assert!(
"12345678901234567890123456789012345678901234567890123456789x"
.parse::<SafetyNumber>()
.is_err()
); // non-digit
}
#[test]
fn test_deserialize_map() {
let json = format!(
r#"{{"{UUID1}": ["{SAFETY1}", "{SAFETY2}"], "{UUID2}": []}}"#
);
let json = format!(r#"{{"{UUID1}": ["{SAFETY1}", "{SAFETY2}"], "{UUID2}": []}}"#);
let trust_set: SignalTrustSet = serde_json::from_str(&json).unwrap();
assert_eq!(trust_set.len(), 2);