Skip to content

Commit 2ed037c

Browse files
authored
test: ensure fastrace diags provide proper context (#189)
Signed-off-by: tison <[email protected]>
1 parent e85d505 commit 2ed037c

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

diagnostics/fastrace/Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,8 @@ rustdoc-args = ["--cfg", "docsrs"]
3535
fastrace = { workspace = true }
3636
logforth-core = { workspace = true }
3737

38+
[dev-dependencies]
39+
fastrace = { workspace = true, features = ["enable"] }
40+
3841
[lints]
3942
workspace = true

diagnostics/fastrace/src/lib.rs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,45 @@ impl Diagnostic for FastraceDiagnostic {
6161
Ok(())
6262
}
6363
}
64+
65+
#[cfg(test)]
66+
mod tests {
67+
use std::collections::BTreeMap;
68+
69+
use fastrace::Span;
70+
use logforth_core::kv::ValueOwned;
71+
72+
use super::*;
73+
74+
#[test]
75+
fn key_values() {
76+
struct Collector(BTreeMap<String, ValueOwned>);
77+
78+
impl Visitor for Collector {
79+
fn visit(&mut self, key: Key<'_>, value: Value<'_>) -> Result<(), Error> {
80+
self.0.insert(key.to_string(), value.to_owned());
81+
Ok(())
82+
}
83+
}
84+
85+
let diagnostic = FastraceDiagnostic::default();
86+
87+
let mut map = {
88+
let span = Span::root("test", SpanContext::random());
89+
let _guard = span.set_local_parent();
90+
91+
let mut collector = Collector(BTreeMap::new());
92+
diagnostic.visit(&mut collector).unwrap();
93+
collector.0
94+
};
95+
96+
let trace_id = map.remove("trace_id").unwrap();
97+
assert_eq!(32, trace_id.to_string().len());
98+
let span_id = map.remove("span_id").unwrap();
99+
assert_eq!(16, span_id.to_string().len());
100+
let sampled = map.remove("sampled").unwrap();
101+
assert!(sampled.by_ref().to_bool().unwrap());
102+
103+
assert!(map.is_empty());
104+
}
105+
}

0 commit comments

Comments
 (0)