40 lines
1.4 KiB
Rust
40 lines
1.4 KiB
Rust
use admin_api::request_context::{TRACE_ID_HEADER, apply_request_context};
|
|
use axum::{Router, body::Body, http::Request, routing::get};
|
|
use opentelemetry::trace::TracerProvider as _;
|
|
use opentelemetry_sdk::trace::SdkTracerProvider;
|
|
use tower::ServiceExt;
|
|
use tracing_subscriber::layer::SubscriberExt;
|
|
|
|
#[tokio::test(flavor = "current_thread")]
|
|
async fn preserves_remote_trace_id_with_an_active_tracer_and_no_global_propagator() {
|
|
let provider = SdkTracerProvider::builder().build();
|
|
let tracer = provider.tracer("admin-request-context-parent-test");
|
|
let subscriber =
|
|
tracing_subscriber::registry().with(tracing_opentelemetry::layer().with_tracer(tracer));
|
|
let dispatch = tracing::Dispatch::new(subscriber);
|
|
let _dispatch_guard = tracing::dispatcher::set_default(&dispatch);
|
|
let app = Router::new()
|
|
.route("/probe", get(|| async { "ok" }))
|
|
.layer(axum::middleware::from_fn(apply_request_context));
|
|
|
|
let response = app
|
|
.oneshot(
|
|
Request::builder()
|
|
.uri("/probe")
|
|
.header(
|
|
"traceparent",
|
|
"00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01",
|
|
)
|
|
.body(Body::empty())
|
|
.unwrap(),
|
|
)
|
|
.await
|
|
.unwrap();
|
|
|
|
assert_eq!(
|
|
response.headers()[TRACE_ID_HEADER],
|
|
"0af7651916cd43dd8448eb211c80319c"
|
|
);
|
|
provider.shutdown().unwrap();
|
|
}
|