from opentelemetry.sdk.trace import TracerProvider from app import telemetry def test_telemetry_is_fail_open_without_endpoint(monkeypatch) -> None: monkeypatch.delenv("OTEL_EXPORTER_OTLP_ENDPOINT", raising=False) monkeypatch.setattr(telemetry, "_runtime", None) assert telemetry.init_telemetry("test-service") is None def test_structlog_processor_adds_active_trace_context_only() -> None: provider = TracerProvider() tracer = provider.get_tracer("test") event = {"event": "safe", "request_id": "request-1"} with tracer.start_as_current_span("operation"): result = telemetry.add_trace_context(None, "info", event) assert result["event"] == "safe" assert result["request_id"] == "request-1" assert len(result["trace_id"]) == 32 assert len(result["span_id"]) == 16 assert set(result) == {"event", "request_id", "trace_id", "span_id"}