Revert "test_team_and_key_budget_enforcement"

This reverts commit 9d44f51847.
This commit is contained in:
Ishaan Jaff 2025-01-24 15:32:41 -08:00
parent 9d44f51847
commit 2017596913
2 changed files with 1 additions and 109 deletions

View file

@ -1037,7 +1037,7 @@ async def _team_max_budget_check(
raise litellm.BudgetExceededError(
current_cost=team_object.spend,
max_budget=team_object.max_budget,
message=f"Budget has been exceeded! Team={team_object.team_id} Current cost: {team_object.spend}, Max budget: {team_object.max_budget}",
message=f"Team={team_object.team_id} over budget. Spend={team_object.spend}, Budget={team_object.max_budget}",
)

View file

@ -3,7 +3,6 @@ import asyncio
import aiohttp
import json
from httpx import AsyncClient
from typing import Any, Optional
async def make_calls_until_budget_exceeded(session, key: str, call_function, **kwargs):
@ -279,110 +278,3 @@ async def test_team_limit_modifications(field):
print("response: ", json.dumps(response.json(), indent=4))
assert response.status_code == 200
assert response.json()["data"][field] is None
async def generate_team_key(
session,
team_id: str,
max_budget: Optional[float] = None,
):
"""Helper function to generate a key for a specific team"""
url = "http://0.0.0.0:4000/key/generate"
headers = {"Authorization": "Bearer sk-1234", "Content-Type": "application/json"}
data: dict[str, Any] = {"team_id": team_id}
if max_budget is not None:
data["max_budget"] = max_budget
async with session.post(url, headers=headers, json=data) as response:
return await response.json()
async def create_team(
session,
max_budget=None,
):
"""Helper function to create a new team"""
url = "http://0.0.0.0:4000/team/new"
headers = {"Authorization": "Bearer sk-1234", "Content-Type": "application/json"}
data = {
"max_budget": max_budget,
}
async with session.post(url, headers=headers, json=data) as response:
return await response.json()
@pytest.mark.asyncio
async def test_team_budget_enforcement():
"""
Test budget enforcement for team-wide budgets:
1. Create team with low budget
2. Create key for that team
3. Make calls until team budget exceeded
4. Verify budget exceeded error
"""
async with aiohttp.ClientSession() as session:
# Create team with low budget
team_response = await create_team(session=session, max_budget=0.0000000005)
team_id = team_response["team_id"]
# Create key for team (no specific budget)
key_gen = await generate_team_key(session=session, team_id=team_id)
key = key_gen["key"]
# Make calls until budget exceeded
calls_made = await make_calls_until_budget_exceeded(
session=session,
key=key,
call_function=chat_completion,
model="fake-openai-endpoint",
)
assert (
calls_made > 0
), "Should make at least one successful call before team budget exceeded"
@pytest.mark.asyncio
async def test_team_and_key_budget_enforcement():
"""
Test budget enforcement when both team and key have budgets:
1. Create team with low budget
2. Create key with higher budget
3. Verify team budget is enforced first
"""
async with aiohttp.ClientSession() as session:
# Create team with very low budget
team_response = await create_team(session=session, max_budget=0.0000000005)
team_id = team_response["team_id"]
# Create key with higher budget
key_gen = await generate_team_key(
session=session,
team_id=team_id,
max_budget=0.001, # Higher than team budget
)
key = key_gen["key"]
# Make calls until budget exceeded
calls_made = await make_calls_until_budget_exceeded(
session=session,
key=key,
call_function=chat_completion,
model="fake-openai-endpoint",
)
assert (
calls_made > 0
), "Should make at least one successful call before team budget exceeded"
# Verify it was the team budget that was exceeded
try:
await chat_completion(
session=session, key=key, model="fake-openai-endpoint"
)
except Exception as e:
error_dict = e.body
assert (
"Budget has been exceeded! Team=" in error_dict["message"]
), "Error should mention team budget being exceeded"
assert team_id in error_dict["message"], "Error should mention team id"