From 1ce6d571d706d01a285efe97d1a7c0808b1d5bbd Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Thu, 16 Jul 2026 15:54:57 +0000 Subject: [PATCH] test(router): cover provider over-budget filtering path --- .../test_budget_limiter_hotpath.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/tests/test_litellm/router_strategy/test_budget_limiter_hotpath.py b/tests/test_litellm/router_strategy/test_budget_limiter_hotpath.py index 83646189e69..f6088c47905 100644 --- a/tests/test_litellm/router_strategy/test_budget_limiter_hotpath.py +++ b/tests/test_litellm/router_strategy/test_budget_limiter_hotpath.py @@ -182,6 +182,45 @@ async def test_async_filter_deployments_keeps_provider_without_max_budget( assert filtered_deployments == healthy_deployments +@pytest.mark.asyncio +async def test_async_filter_deployments_filters_provider_over_max_budget( + disable_budget_sync, monkeypatch +): + provider_budget = RouterBudgetLimiting( + dual_cache=DualCache(), + provider_budget_config={ + "openai": BudgetConfig(budget_duration="1d", max_budget=100.0), + }, + ) + + await provider_budget.dual_cache.async_set_cache( + key="provider_spend:openai:1d", value=150.0 + ) + + healthy_deployments = [ + { + "model_name": "gpt-4o-mini", + "litellm_params": {"model": "openai/gpt-4o-mini"}, + "model_info": {"id": "deployment-1"}, + }, + ] + + monkeypatch.setattr( + provider_budget, + "_get_llm_provider_for_deployment", + lambda deployment: "openai", + ) + + with pytest.raises(ValueError, match="Exceeded budget for provider openai"): + await provider_budget.async_filter_deployments( + model="gpt-4o-mini", + healthy_deployments=healthy_deployments, + messages=[], + request_kwargs={}, + parent_otel_span=None, + ) + + @pytest.mark.asyncio async def test_async_filter_deployments_does_not_recompute_provider_when_resolved_none( disable_budget_sync, monkeypatch