feat(ebook-search): add load-test CLI for the search service

Add a Typer CLI script that drives POST /search on a running server at a
configurable concurrency and reports latency percentiles (p50/p90/p95/p99),
throughput, and HTTP status distribution. Queries are drawn from the shared
eval JSONL set so load testing and evaluation exercise the same questions.
This commit is contained in:
2026-06-18 12:39:55 -04:00
parent dbc6b5b53b
commit 6ae1ff1f5c
7 changed files with 436 additions and 0 deletions
+18
View File
@@ -0,0 +1,18 @@
"""Tests for the shared query/gold set loader."""
from __future__ import annotations
from python.ebook_search.eval.dataset import load_gold_queries
def test_default_query_set_counts() -> None:
queries = load_gold_queries()
answerable = [query for query in queries if query.answerable]
assert len(queries) == 70
assert len(answerable) == 50
assert len(queries) - len(answerable) == 20
assert all(query.query for query in queries)
# Answerable queries carry at least one source; garbage queries carry none.
assert all(query.relevant_sources for query in answerable)
assert all(not query.relevant_sources for query in queries if not query.answerable)