#[test] fn database_metrics_and_slow_logs_exclude_sensitive_or_unbounded_fields() { let implementation = include_str!("../src/observability.rs"); let datastore_macro = include_str!("../../buzz-datastore-tracing/src/lib.rs"); let instrumentation = format!("{implementation}\n{datastore_macro}"); for forbidden in [ "\"community\" =>", "\"event_id\" =>", "\"event_kind\" =>", "\"kind\" =>", "\"sql\" =>", "\"query\" =>", "\"query_id\" =>", "\"d_tag\" =>", "\"coordinate\" =>", "community =", "event_id =", "event_kind =", "sql =", "query_id =", "d_tag =", "coordinate =", ] { assert!( !instrumentation.contains(forbidden), "database instrumentation must not expose {forbidden}" ); } assert!(datastore_macro.contains("name: LitStr")); assert!(datastore_macro.contains("\"operation\" => #name")); assert!(datastore_macro.contains("elapsed_ms =")); assert!( datastore_macro.contains("parent: None"), "slow warnings must not inherit dynamic datastore span fields" ); // The runtime tracing-layer assertion covers field names because a source // search would also match ordinary local variables such as `record_error`. }