fix(cost-optimization): preserve cache token helper coverage

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
Krrish Dholakia 2026-07-19 03:51:48 +00:00
parent 20cf663a1c
commit 1f628e4311
2 changed files with 41 additions and 0 deletions

View file

@ -73,6 +73,10 @@ else:
ProxyLogging = Any
def _extract_cache_read_tokens(usage_obj: dict) -> int:
return extract_cache_read_tokens({"usage_object": usage_obj})
def _extract_cache_creation_tokens(usage_obj: dict) -> int:
"""
Anthropic: top-level cache_creation_input_tokens field.

View file

@ -7,6 +7,7 @@ import pytest
from litellm.proxy.management_endpoints.cost_optimization_endpoints import (
build_optimized_request_log,
cost_optimization_usage_logs,
_parse_date,
)
@ -48,6 +49,30 @@ def test_build_optimized_request_log_computes_both_savings():
def test_build_optimized_request_log_ignores_unoptimized_row():
assert build_optimized_request_log(_row({"usage_object": {"prompt_tokens": 10}})) is None
assert build_optimized_request_log(_row("{invalid-json")) is None
def test_build_optimized_request_log_handles_cached_request_metadata_string():
result = build_optimized_request_log(
_row(
'{"usage_object": {"prompt_tokens_details": {"cached_tokens": 50}}}',
startTime="2026-07-13T12:00:00+00:00",
total_tokens="invalid",
)
)
assert result is not None
assert result.optimization_type == "caching"
assert result.cache_read_tokens == 50
assert result.timestamp == "2026-07-13T12:00:00+00:00"
assert result.total_tokens == 0
def test_parse_date_supports_empty_and_end_of_day_values():
assert _parse_date(None) is None
assert _parse_date("2026-07-01") == datetime(2026, 7, 1, tzinfo=timezone.utc)
assert _parse_date("2026-07-01", end=True) == datetime(2026, 7, 2, tzinfo=timezone.utc)
assert _parse_date("2026-07-01 12:30:00") == datetime(2026, 7, 1, 12, 30, tzinfo=timezone.utc)
@pytest.mark.asyncio
@ -81,3 +106,15 @@ async def test_cost_optimization_usage_logs_returns_paginated_entries():
assert result.logs[0].optimization_type == "compression"
assert result.logs[0].tokens_saved == 25
assert query_raw_mock.await_count == 2
@pytest.mark.asyncio
async def test_cost_optimization_usage_logs_returns_empty_without_prisma():
with patch("litellm.proxy.proxy_server.prisma_client", None):
result = await cost_optimization_usage_logs(page=2, page_size=25)
assert result.logs == []
assert result.total == 0
assert result.page == 2
assert result.page_size == 25
assert result.total_pages == 0