Files
nas-tools/dashboard/backend/routers/litellm.py
Gan, Jimmy b981c06d59
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m26s
Run Tests / Backend Tests (push) Failing after 2m36s
Run Tests / Frontend Tests (push) Failing after 2m23s
Run Tests / Test Summary (push) Failing after 13s
feat: comprehensive test infrastructure improvements
- Fix unit test imports: add env setup in conftest.py before module imports
- Add 24 new auth router tests (RBAC, preferences, password validation)
- Add 16 new tests for litellm and chat_summary routers
- Apply black formatting and ruff linting across codebase
- Add pre-commit hooks configuration (black, ruff, file checks)
- Increase CI coverage threshold from 40% to 50%

Test Results:
- 206 tests passing (91 unit + 115 integration)
- Coverage: 58.79% on core modules
- auth.py: 57% → 85%, litellm.py: 23% → 87%, chat_summary.py: 41% → 100%
- auth_service: 96.51%, config: 100%, rbac: 93.48%
2026-04-08 00:21:32 +08:00

65 lines
2.0 KiB
Python

import time
import httpx
from fastapi import APIRouter
from config import LITELLM_HEALTH_API_KEY, LITELLM_URL
router = APIRouter()
@router.get("/health")
async def litellm_health():
timeout = httpx.Timeout(2.0)
checks = ("/health", "/v1/models")
api_key = (LITELLM_HEALTH_API_KEY or "").strip()
headers = {}
if api_key:
headers = {
"Authorization": f"Bearer {api_key}",
"X-API-Key": api_key,
}
last_error = None
async with httpx.AsyncClient(timeout=timeout) as client:
for path in checks:
url = f"{LITELLM_URL.rstrip('/')}{path}"
started = time.perf_counter()
try:
response = await client.get(url, headers=headers)
latency_ms = round((time.perf_counter() - started) * 1000, 1)
if response.is_success:
return {
"ok": True,
"status": "up",
"latency_ms": latency_ms,
"endpoint": path,
"http_status": response.status_code,
}
if response.status_code == 401 and not api_key:
return {
"ok": True,
"status": "auth_required",
"latency_ms": latency_ms,
"endpoint": path,
"http_status": response.status_code,
}
if response.status_code == 401 and api_key:
last_error = f"{path} returned 401 with configured health auth"
else:
last_error = f"{path} returned {response.status_code}"
except Exception as exc:
last_error = str(exc)
return {
"ok": False,
"status": "down",
"latency_ms": None,
"endpoint": None,
"error": last_error or "health check failed",
}