[v2] Dispatcher/ServerRunner receive-path swap — replaces BaseSession (#2710)
This commit is contained in:
parent
b478bff56d
commit
5d826490b6
1 changed files with 6594 additions and 1701 deletions
46
tests/server/conftest.py
Normal file
46
tests/server/conftest.py
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
"""Shared fixtures for server-side tests."""
|
||||
|
||||
from collections.abc import Iterator
|
||||
|
||||
import pytest
|
||||
from logfire.testing import CaptureLogfire, TestExporter
|
||||
from opentelemetry.sdk.trace import ReadableSpan
|
||||
|
||||
|
||||
class SpanCapture:
|
||||
"""Thin adapter over logfire's `TestExporter` for asserting on MCP spans.
|
||||
|
||||
`finished()` returns the raw `ReadableSpan` objects emitted by the
|
||||
`mcp-python-sdk` instrumentation scope, filtered to exclude logfire's
|
||||
synthetic `pending_span` markers, so tests can assert directly on
|
||||
`.name`, `.kind`, `.status`, `.attributes`, `.parent`, `.events`.
|
||||
"""
|
||||
|
||||
def __init__(self, exporter: TestExporter) -> None:
|
||||
self._exporter = exporter
|
||||
|
||||
def clear(self) -> None:
|
||||
self._exporter.clear()
|
||||
|
||||
def finished(self) -> list[ReadableSpan]:
|
||||
return [
|
||||
s
|
||||
for s in self._exporter.exported_spans
|
||||
if s.instrumentation_scope is not None
|
||||
and s.instrumentation_scope.name == "mcp-python-sdk"
|
||||
and not (s.attributes and s.attributes.get("logfire.span_type") == "pending_span")
|
||||
]
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def spans(capfire: CaptureLogfire) -> Iterator[SpanCapture]:
|
||||
"""In-memory MCP span capture, cleared before and after each test.
|
||||
|
||||
Backed by the project-level `capfire` override (see `tests/conftest.py`),
|
||||
which scopes `mcp.shared._otel._tracer` to the test so the real tracer
|
||||
doesn't leak into later tests in the same worker.
|
||||
"""
|
||||
capture = SpanCapture(capfire.exporter)
|
||||
capture.clear()
|
||||
yield capture
|
||||
capture.clear()
|
||||
Loading…
Reference in a new issue