from app import perf_metrics def test_perf_snapshot_does_not_expose_paths_or_query_data(): perf_metrics.ingest_http({"endpoint": "GET /api/knowledge/:id", "status": 200, "elapsed_ms": 12, "sql_count": 3, "sql_ms": 2.5, "sql_lock_errors": 0}) perf_metrics.ingest_rag({"total_ms": 8, "cache_hit": True, "query": "secret"}) snap = perf_metrics.snapshot() assert snap["scope"] == "current_process" assert "secret" not in str(snap) assert snap["api"]["sql_count"] >= 3 def test_sql_context_is_request_local(): with perf_metrics.request_scope("trace") as metrics: perf_metrics.record_sql(1.5) assert metrics.sql_count == 1 assert perf_metrics.current() is None def test_rag_snapshot_reports_embedding_transport_phases(): # Keep this test deterministic when the module is reused by the complete # suite (the telemetry deque is intentionally process global in runtime). with perf_metrics._lock: perf_metrics._rag.clear() perf_metrics.ingest_rag({ "total_ms": 42, "cache_hit": False, "embedding_total_ms": 18, "embedding_process_start_ms": 3, "embedding_ipc_ms": 2, "embedding_model_load_ms": 0, "embedding_tokenizer_ms": 1, "embedding_encode_ms": 14, "embedding_postprocess_ms": 1, "embedding_cache_hit": False, "queue_wait_ms": 7, }) embedding = perf_metrics.rag_snapshot()["embedding"] assert embedding["embedding_process_start_ms"]["p95_ms"] == 3.0 assert embedding["embedding_ipc_ms"]["p95_ms"] == 2.0 assert perf_metrics.rag_snapshot()["phases"]["queue_wait_ms"]["p95_ms"] == 7.0