test(admin): stabilize telemetry outcome assertions
This commit is contained in:
@@ -118,10 +118,11 @@ paths:
|
||||
let logs = writer.output();
|
||||
assert!(!logs.contains(CANARY));
|
||||
assert!(logs.contains(&trace_id));
|
||||
assert!(logs.contains("external OpenAPI materialization failed"));
|
||||
assert!(logs.contains("stage=\"fetch\""));
|
||||
assert!(logs.contains("error_code=\"unexpected_status\""));
|
||||
assert!(logs.contains("count=0"));
|
||||
let safe_materialization_failure = logs.lines().any(is_safe_materialization_failure);
|
||||
assert!(
|
||||
safe_materialization_failure,
|
||||
"expected one bounded, sanitized materialization failure"
|
||||
);
|
||||
let spans = exported.lock().unwrap();
|
||||
let rendered_spans = format!("{spans:?}");
|
||||
assert!(!rendered_spans.contains(CANARY));
|
||||
@@ -137,6 +138,34 @@ paths:
|
||||
provider.shutdown().unwrap();
|
||||
}
|
||||
|
||||
fn is_safe_materialization_failure(line: &str) -> bool {
|
||||
if !line.contains("external OpenAPI materialization failed") || !line.contains("count=0") {
|
||||
return false;
|
||||
}
|
||||
let immediate_status = contains_log_field(line, "stage", "fetch")
|
||||
&& contains_log_field(line, "error_code", "unexpected_status");
|
||||
let bounded_timeout = contains_log_field(line, "stage", "chain")
|
||||
&& contains_log_field(line, "error_code", "timeout");
|
||||
immediate_status || bounded_timeout
|
||||
}
|
||||
|
||||
fn contains_log_field(line: &str, name: &str, value: &str) -> bool {
|
||||
line.contains(&format!("{name}=\"{value}\"")) || line.contains(&format!("{name}={value}"))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn materialization_log_accepts_only_coherent_safe_outcomes() {
|
||||
for line in [
|
||||
r#"external OpenAPI materialization failed stage="fetch" error_code="unexpected_status" count=0"#,
|
||||
"external OpenAPI materialization failed stage=chain error_code=timeout count=0",
|
||||
] {
|
||||
assert!(is_safe_materialization_failure(line));
|
||||
}
|
||||
assert!(!is_safe_materialization_failure(
|
||||
r#"external OpenAPI materialization failed stage="fetch" error_code="timeout" count=0"#
|
||||
));
|
||||
}
|
||||
|
||||
#[derive(Clone, Default)]
|
||||
struct SharedLogWriter {
|
||||
buffer: Arc<Mutex<Vec<u8>>>,
|
||||
|
||||
Reference in New Issue
Block a user