Make OpenTelemetry tracing the single default middleware (#2995)
This commit is contained in:
parent
cc596195bb
commit
b31d95a429
1 changed files with 260 additions and 238 deletions
|
|
@ -6,10 +6,16 @@ from logfire.testing import CaptureLogfire
|
|||
|
||||
from mcp.client.client import Client
|
||||
from mcp.server.mcpserver import MCPServer
|
||||
from mcp.shared._otel import extract_trace_context
|
||||
|
||||
pytestmark = pytest.mark.anyio
|
||||
|
||||
|
||||
def test_extract_trace_context_degrades_to_no_parent_on_malformed_traceparent() -> None:
|
||||
"""A non-string `traceparent` makes `extract()` raise; the helper must return `None`, not propagate."""
|
||||
assert extract_trace_context({"traceparent": 123}) is None
|
||||
|
||||
|
||||
async def test_client_and_server_spans(capfire: CaptureLogfire):
|
||||
"""Verify that calling a tool produces client and server spans with correct attributes."""
|
||||
server = MCPServer("test")
|
||||
|
|
@ -29,10 +35,10 @@ async def test_client_and_server_spans(capfire: CaptureLogfire):
|
|||
span_names = {s["name"] for s in spans}
|
||||
|
||||
assert "MCP send tools/call greet" in span_names
|
||||
assert "MCP handle tools/call greet" in span_names
|
||||
assert "tools/call greet" in span_names
|
||||
|
||||
client_span = next(s for s in spans if s["name"] == "MCP send tools/call greet")
|
||||
server_span = next(s for s in spans if s["name"] == "MCP handle tools/call greet")
|
||||
server_span = next(s for s in spans if s["name"] == "tools/call greet")
|
||||
|
||||
assert client_span["attributes"]["mcp.method.name"] == "tools/call"
|
||||
assert server_span["attributes"]["mcp.method.name"] == "tools/call"
|
||||
|
|
|
|||
Loading…
Reference in a new issue