Skip to content

Commit 2fb0c2e

Browse files
authored
Add tracing tests using inmemoryexporter (#1305)
* Add tracing tests using inmemoryexporter * fix format * no test postfx
1 parent 03b94b3 commit 2fb0c2e

File tree

1 file changed

+59
-0
lines changed
  • opentelemetry-sdk/src/trace

1 file changed

+59
-0
lines changed

opentelemetry-sdk/src/trace/mod.rs

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,62 @@ pub use sampler::{JaegerRemoteSampler, JaegerRemoteSamplerBuilder};
3636

3737
#[cfg(test)]
3838
mod runtime_tests;
39+
40+
#[cfg(all(test, feature = "testing"))]
41+
mod tests {
42+
use super::*;
43+
use crate::testing::trace::InMemorySpanExporterBuilder;
44+
use opentelemetry::{
45+
trace::{Span, Tracer, TracerProvider as _},
46+
KeyValue,
47+
};
48+
49+
#[test]
50+
fn tracing_in_span() {
51+
// Arrange
52+
let exporter = InMemorySpanExporterBuilder::new().build();
53+
let provider = TracerProvider::builder()
54+
.with_span_processor(SimpleSpanProcessor::new(Box::new(exporter.clone())))
55+
.build();
56+
57+
// Act
58+
let tracer = provider.tracer("test_tracer");
59+
tracer.in_span("span_name", |_cx| {});
60+
61+
provider.force_flush();
62+
63+
// Assert
64+
let exported_spans = exporter
65+
.get_finished_spans()
66+
.expect("Spans are expected to be exported.");
67+
assert_eq!(exported_spans.len(), 1);
68+
let span = &exported_spans[0];
69+
assert_eq!(span.name, "span_name");
70+
assert_eq!(span.instrumentation_lib.name, "test_tracer");
71+
}
72+
73+
#[test]
74+
fn tracing_tracer_start() {
75+
// Arrange
76+
let exporter = InMemorySpanExporterBuilder::new().build();
77+
let provider = TracerProvider::builder()
78+
.with_span_processor(SimpleSpanProcessor::new(Box::new(exporter.clone())))
79+
.build();
80+
81+
// Act
82+
let tracer = provider.tracer("test_tracer");
83+
let mut span = tracer.start("span_name");
84+
span.set_attribute(KeyValue::new("key1", "value1"));
85+
drop(span);
86+
provider.force_flush();
87+
88+
// Assert
89+
let exported_spans = exporter
90+
.get_finished_spans()
91+
.expect("Spans are expected to be exported.");
92+
assert_eq!(exported_spans.len(), 1);
93+
let span = &exported_spans[0];
94+
assert_eq!(span.name, "span_name");
95+
assert_eq!(span.instrumentation_lib.name, "test_tracer");
96+
}
97+
}

0 commit comments

Comments
 (0)