Files
devplacepy/tests/api/admin/gateway/stats.py
T

83 lines
2.4 KiB
Python
Raw Normal View History

# retoor <retoor@molodetz.nl>
import requests
from tests.api.admin.gateway.index import JSON_gateway, admin_session, member_key
from tests.conftest import BASE_URL
def test_stats_tab_renders_for_admin(seeded_db):
admin = admin_session(seeded_db)
response = admin.get(
f"{BASE_URL}/admin/gateway?tab=stats", headers={"Accept": "text/html"}
)
assert response.status_code == 200
assert "Model pool" in response.text
assert "Model routes" not in response.text
def test_stats_data_requires_admin(seeded_db):
assert (
requests.get(
f"{BASE_URL}/admin/gateway/stats/data", headers=JSON_gateway, allow_redirects=False
).status_code
== 401
)
key = member_key()
assert (
requests.get(
f"{BASE_URL}/admin/gateway/stats/data",
headers={**JSON_gateway, "X-API-KEY": key},
allow_redirects=False,
).status_code
== 403
)
def test_stats_data_shape_for_admin(seeded_db):
admin = admin_session(seeded_db)
response = admin.get(f"{BASE_URL}/admin/gateway/stats/data?range=24h", headers=JSON_gateway)
assert response.status_code == 200
data = response.json()
for key in (
"totals",
"per_model",
"per_endpoint",
"per_provider",
"timeseries",
"status_codes",
"streaming_split",
"failure_reasons",
"hourly_distribution",
"recent_failures",
"latency_histogram",
"tokens_per_second_histogram",
"bucket_seconds",
):
assert key in data
def test_stats_data_rejects_unknown_range(seeded_db):
admin = admin_session(seeded_db)
response = admin.get(f"{BASE_URL}/admin/gateway/stats/data?range=nonsense", headers=JSON_gateway)
assert response.status_code == 400
def test_stats_models_returns_a_list(seeded_db):
admin = admin_session(seeded_db)
response = admin.get(f"{BASE_URL}/admin/gateway/stats/models", headers=JSON_gateway)
assert response.status_code == 200
assert isinstance(response.json()["models"], list)
def test_stats_model_detail_for_an_unknown_model(seeded_db):
admin = admin_session(seeded_db)
response = admin.get(
f"{BASE_URL}/admin/gateway/stats/model/default/never-called-model?range=24h",
headers=JSON_gateway,
)
assert response.status_code == 200
data = response.json()
assert data["summary"]["total_requests"] == 0
assert data["health"] is None