Skip to content

Commit 0b69a1d

Browse files
committed
Add ignored test for shutdown_tracer_provider
This illustrates the problem with opentelemetry::global that prevents proper use of the batched TracerProvider when installed as the global provider, flushing it at the end of the program also with the global API.
1 parent f413e1e commit 0b69a1d

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

tests/batch_global_subscriber.rs

+22-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use futures_util::future::BoxFuture;
2-
use opentelemetry::trace::TracerProvider as _;
2+
use opentelemetry::{global as otel_global, trace::TracerProvider as _};
33
use opentelemetry_sdk::{
44
export::trace::{ExportResult, SpanData, SpanExporter},
55
runtime,
@@ -47,7 +47,7 @@ fn test_tracer(runtime: &Runtime) -> (TracerProvider, TestExporter, impl Subscri
4747
}
4848

4949
#[test]
50-
fn test_global_default() {
50+
fn shutdown_in_scope() {
5151
let rt = Runtime::new().unwrap();
5252
let (provider, exporter, subscriber) = test_tracer(&rt);
5353

@@ -63,3 +63,23 @@ fn test_global_default() {
6363
let spans = exporter.0.lock().unwrap();
6464
assert_eq!(spans.len(), 1000);
6565
}
66+
67+
#[test]
68+
#[ignore] // https://github.com/open-telemetry/opentelemetry-rust/issues/1961
69+
fn shutdown_global() {
70+
let rt = Runtime::new().unwrap();
71+
let (provider, exporter, subscriber) = test_tracer(&rt);
72+
73+
otel_global::set_tracer_provider(provider);
74+
subscriber::set_global_default(subscriber).unwrap();
75+
76+
for _ in 0..1000 {
77+
let _span = info_span!(target: "test_telemetry", "test_span").entered();
78+
}
79+
80+
// Should flush all batched telemetry spans
81+
otel_global::shutdown_tracer_provider();
82+
83+
let spans = exporter.0.lock().unwrap();
84+
assert_eq!(spans.len(), 1000);
85+
}

0 commit comments

Comments
 (0)