Files
yawan-workbench/server/tests/test_perf_metrics.py
T

42 lines
1.7 KiB
Python
Raw Normal View History

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