Crates.io | fake-opentelemetry-collector |
lib.rs | fake-opentelemetry-collector |
version | 0.24.0 |
source | src |
created_at | 2023-06-28 23:46:10.250436 |
updated_at | 2024-11-17 12:35:00.152758 |
description | A Fake (basic) opentelemetry collector, useful to test what is collected opentelemetry |
homepage | |
repository | https://github.com/davidB/tracing-opentelemetry-instrumentation-sdk |
max_upload_size | |
id | 902840 |
size | 22,624 |
A Fake (basic) opentelemetry collector, useful to test what is collected opentelemetry
Usage example with insta (snapshot testing)
#[tokio::test(flavor = "multi_thread")]
async fn test_fake_tracer_and_collector() {
let fake_collector = FakeCollectorServer::start()
.await
.expect("fake collector setup and started");
let tracer = setup_tracer(&fake_collector).await;
debug!("Sending span...");
let mut span = tracer
.span_builder("my-test-span")
.with_kind(SpanKind::Server)
.start(&tracer);
span.add_event("my-test-event", vec![]);
span.end();
shutdown_tracer_provider();
let otel_spans = fake_collector.exported_spans();
//insta::assert_debug_snapshot!(otel_spans);
insta::assert_yaml_snapshot!(otel_spans, {
"[].start_time_unix_nano" => "[timestamp]",
"[].end_time_unix_nano" => "[timestamp]",
"[].events[].time_unix_nano" => "[timestamp]",
"[].trace_id" => insta::dynamic_redaction(|value, _path| {
assert2::let_assert!(Some(trace_id) = value.as_str());
format!("[trace_id:lg{}]", trace_id.len())
}),
"[].span_id" => insta::dynamic_redaction(|value, _path| {
assert2::let_assert!(Some(span_id) = value.as_str());
format!("[span_id:lg{}]", span_id.len())
}),
"[].links[].trace_id" => insta::dynamic_redaction(|value, _path| {
assert2::let_assert!(Some(trace_id) = value.as_str());
format!("[trace_id:lg{}]", trace_id.len())
}),
"[].links[].span_id" => insta::dynamic_redaction(|value, _path| {
assert2::let_assert!(Some(span_id) = value.as_str());
format!("[span_id:lg{}]", span_id.len())
}),
});
}