918e20aba0
The previous tests/server/conftest.py called trace.set_tracer_provider() directly, which is set-once per process and raced against logfire's capfire fixture (tests/shared/test_otel.py) under xdist — whichever ran first in a worker won, the other's tests broke. Converge on capfire as the single span-capture owner since logfire.configure() already handles repeat calls by swapping span processors instead of re-setting the provider: - tests/conftest.py: set LOGFIRE_DISTRIBUTED_TRACING=true so propagation tests don't trip logfire's 'found propagated trace context' RuntimeWarning. - tests/server/conftest.py: SpanCapture adapter over capfire.exporter — filters to the mcp-python-sdk instrumentation scope and excludes logfire's pending_span markers, so tests assert on raw ReadableSpan without importing logfire types. - tests/shared/test_otel.py: drop the now-unneeded filterwarnings decorator.
18 lines
647 B
Python
18 lines
647 B
Python
import os
|
|
|
|
import pytest
|
|
|
|
# OpenTelemetry's `set_tracer_provider` is set-once per process, so the suite
|
|
# uses a single span-capture mechanism: logfire's `capfire` fixture (its
|
|
# `configure()` swaps span processors on repeat calls rather than re-setting
|
|
# the provider). Logfire's default `distributed_tracing=None` emits a
|
|
# RuntimeWarning + diagnostic span when incoming W3C trace context is
|
|
# extracted; several tests exercise that propagation deliberately, so opt in
|
|
# suite-wide. Set before logfire is imported anywhere.
|
|
os.environ.setdefault("LOGFIRE_DISTRIBUTED_TRACING", "true")
|
|
|
|
|
|
@pytest.fixture
|
|
def anyio_backend():
|
|
return "asyncio"
|