mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-14 23:21:35 +00:00
Adds six coverage-registry cells to the `other` suite, all driven against a live proxy: - other.key_mgmt.regenerate.grace_period_honored: a key rotated with a grace_period keeps authenticating for the window and is refused after it, with a sibling key rotated without a grace period as the control so the survival cannot be an auth-cache artifact - other.key_mgmt.spend_reset.resets_to_value: reset_spend puts a key's recorded spend back and a key its own max_budget had blocked serves again - other.auth.virtual_key.route_group_allowed: the allow side of allowed_routes; the llm_api_routes group reaches chat, embeddings and the model catalog while a management route stays refused 403 - other.lifecycle.startup.config_loads: the config file's model_list is live in the routing catalog (db_model false) and serves a real completion, and the file's store_model_in_db is in effect - other.lifecycle.startup.env_vars_resolved: the redis cache built once at startup from os.environ/ host and port references actually serves a repeat request; the cache block is used because credential references get resolved again at call time and cannot witness boot-time resolution - other.config.runtime_update.applies_at_runtime: /config/update reaches the running router (read back off the live object, not a config row), routes a completion through the alias it added, and takes it back again Spend accounting is buffered, so the reset test settles on a value that has stopped moving before it snapshots, then asserts only what a late flush cannot violate: the reset reports a previous value no smaller than the settled one, reports zero, and /key/info is polled until it agrees. Exact equality against a single sample would go red on correct behavior. /config/update is the only writer of model_group_alias, it rewrites the whole map and offers neither a per-key write nor a version to compare against. Every write therefore compares the aliases the test does not own against a baseline as full name and target pairs, before the write and again after; anything added, removed or repointed stops the test naming the difference and nothing is written, so a concurrent writer's change is never reverted with a stale view. A second alias of the test's own stands across the exchange and is asserted to survive. Everything else is namespaced per run and deleted on teardown, so the shared proxy is left as it was found. |
||
|---|---|---|
| .. | ||
| a2a | ||
| access_control | ||
| batches | ||
| claude_code | ||
| coverage_registry | ||
| guardrails | ||
| llm_translation | ||
| load | ||
| logging | ||
| management | ||
| mcp | ||
| other | ||
| quota_management | ||
| router | ||
| ui | ||
| CLAUDE.md | ||
| conftest.py | ||
| CONTRIBUTING.md | ||
| e2e_config.py | ||
| e2e_db.py | ||
| e2e_http.py | ||
| junit_properties.py | ||
| lifecycle.py | ||
| models.py | ||
| otel_client.py | ||
| proxy_client.py | ||
| pytest.ini | ||
| transport.py | ||