test: move router_strategy tests to CI-run directory (tests/test_litellm/router_strategy/)

This commit is contained in:
Arya Maddel 2026-05-06 12:17:22 +05:30
parent 509b1c48f1
commit bfdee9a04a
6 changed files with 158 additions and 131 deletions

View file

@ -26,64 +26,6 @@ from litellm.router_strategy.least_busy import LeastBusyLoggingHandler
### UNIT TESTS FOR LEAST BUSY LOGGING ###
def test_least_busy_sync_success_model_info_none():
"""log_success_event should not crash when model_info is None."""
logger = LeastBusyLoggingHandler(router_cache=DualCache())
kwargs = {
"litellm_params": {
"metadata": {"model_group": "gpt-4"},
"model_info": None,
}
}
logger.log_success_event(
kwargs=kwargs, response_obj={}, start_time=time.time(), end_time=time.time()
)
def test_least_busy_sync_failure_model_info_none():
"""log_failure_event should not crash when model_info is None."""
logger = LeastBusyLoggingHandler(router_cache=DualCache())
kwargs = {
"litellm_params": {
"metadata": {"model_group": "gpt-4"},
"model_info": None,
}
}
logger.log_failure_event(
kwargs=kwargs, response_obj={}, start_time=time.time(), end_time=time.time()
)
@pytest.mark.asyncio
async def test_least_busy_async_success_model_info_none():
"""async_log_success_event should not crash when model_info is None."""
logger = LeastBusyLoggingHandler(router_cache=DualCache())
kwargs = {
"litellm_params": {
"metadata": {"model_group": "gpt-4"},
"model_info": None,
}
}
await logger.async_log_success_event(
kwargs=kwargs, response_obj={}, start_time=time.time(), end_time=time.time()
)
@pytest.mark.asyncio
async def test_least_busy_async_failure_model_info_none():
"""async_log_failure_event should not crash when model_info is None."""
logger = LeastBusyLoggingHandler(router_cache=DualCache())
kwargs = {
"litellm_params": {
"metadata": {"model_group": "gpt-4"},
"model_info": None,
}
}
await logger.async_log_failure_event(
kwargs=kwargs, response_obj={}, start_time=time.time(), end_time=time.time()
)
def test_model_added():
test_cache = DualCache()
least_busy_logger = LeastBusyLoggingHandler(router_cache=test_cache)

View file

@ -20,62 +20,6 @@ from litellm.caching.caching import DualCache
### UNIT TESTS FOR cost ROUTING ###
def test_lowest_cost_sync_success_model_info_none():
"""log_success_event should not crash when model_info is None."""
logger = LowestCostLoggingHandler(router_cache=DualCache())
kwargs = {
"litellm_params": {
"metadata": {"model_group": "gpt-4"},
"model_info": None,
}
}
logger.log_success_event(
kwargs=kwargs, response_obj={}, start_time=time.time(), end_time=time.time()
)
def test_lowest_cost_sync_failure_model_info_none():
"""log_failure_event should not crash when model_info is None."""
logger = LowestCostLoggingHandler(router_cache=DualCache())
kwargs = {
"litellm_params": {
"metadata": {"model_group": "gpt-4"},
"model_info": None,
}
}
logger.log_failure_event(
kwargs=kwargs, response_obj={}, start_time=time.time(), end_time=time.time()
)
def test_lowest_cost_sync_success_model_info_missing():
"""log_success_event should not crash when model_info key is missing."""
logger = LowestCostLoggingHandler(router_cache=DualCache())
kwargs = {
"litellm_params": {
"metadata": {"model_group": "gpt-4"},
}
}
logger.log_success_event(
kwargs=kwargs, response_obj={}, start_time=time.time(), end_time=time.time()
)
@pytest.mark.asyncio
async def test_lowest_cost_async_success_model_info_none():
"""async_log_success_event should not crash when model_info is None."""
logger = LowestCostLoggingHandler(router_cache=DualCache())
kwargs = {
"litellm_params": {
"metadata": {"model_group": "gpt-4"},
"model_info": None,
}
}
await logger.async_log_success_event(
kwargs=kwargs, response_obj={}, start_time=time.time(), end_time=time.time()
)
@pytest.mark.asyncio
async def test_get_available_deployments():
test_cache = DualCache()

View file

@ -27,9 +27,6 @@ from litellm.caching.caching import DualCache
from litellm.router_strategy.lowest_tpm_rpm_v2 import (
LowestTPMLoggingHandler_v2 as LowestTPMLoggingHandler,
)
from litellm.router_strategy.lowest_tpm_rpm import (
LowestTPMLoggingHandler as LowestTPMLoggingHandler_v1,
)
from litellm.utils import get_utc_datetime
from create_mock_standard_logging_payload import create_standard_logging_payload
@ -40,20 +37,6 @@ from create_mock_standard_logging_payload import create_standard_logging_payload
"""
def test_lowest_tpm_rpm_v1_model_info_none():
"""log_success_event should not crash when model_info is None (v1 handler)."""
logger = LowestTPMLoggingHandler_v1(router_cache=DualCache())
kwargs = {
"litellm_params": {
"metadata": {"model_group": "gpt-4"},
"model_info": None,
}
}
logger.log_success_event(
kwargs=kwargs, response_obj={}, start_time=time.time(), end_time=time.time()
)
def test_tpm_rpm_updated():
test_cache = DualCache()
lowest_tpm_logger = LowestTPMLoggingHandler(router_cache=test_cache)

View file

@ -0,0 +1,76 @@
import time
import pytest
from litellm.caching.caching import DualCache
from litellm.router_strategy.least_busy import LeastBusyLoggingHandler
def test_least_busy_pre_api_call_model_info_none():
"""log_pre_api_call should not crash when model_info is None."""
logger = LeastBusyLoggingHandler(router_cache=DualCache())
kwargs = {
"litellm_params": {
"metadata": {"model_group": "gpt-4"},
"model_info": None,
}
}
logger.log_pre_api_call(model="test-model", messages=[], kwargs=kwargs)
def test_least_busy_sync_success_model_info_none():
"""log_success_event should not crash when model_info is None."""
logger = LeastBusyLoggingHandler(router_cache=DualCache())
kwargs = {
"litellm_params": {
"metadata": {"model_group": "gpt-4"},
"model_info": None,
}
}
logger.log_success_event(
kwargs=kwargs, response_obj={}, start_time=time.time(), end_time=time.time()
)
def test_least_busy_sync_failure_model_info_none():
"""log_failure_event should not crash when model_info is None."""
logger = LeastBusyLoggingHandler(router_cache=DualCache())
kwargs = {
"litellm_params": {
"metadata": {"model_group": "gpt-4"},
"model_info": None,
}
}
logger.log_failure_event(
kwargs=kwargs, response_obj={}, start_time=time.time(), end_time=time.time()
)
@pytest.mark.asyncio
async def test_least_busy_async_success_model_info_none():
"""async_log_success_event should not crash when model_info is None."""
logger = LeastBusyLoggingHandler(router_cache=DualCache())
kwargs = {
"litellm_params": {
"metadata": {"model_group": "gpt-4"},
"model_info": None,
}
}
await logger.async_log_success_event(
kwargs=kwargs, response_obj={}, start_time=time.time(), end_time=time.time()
)
@pytest.mark.asyncio
async def test_least_busy_async_failure_model_info_none():
"""async_log_failure_event should not crash when model_info is None."""
logger = LeastBusyLoggingHandler(router_cache=DualCache())
kwargs = {
"litellm_params": {
"metadata": {"model_group": "gpt-4"},
"model_info": None,
}
}
await logger.async_log_failure_event(
kwargs=kwargs, response_obj={}, start_time=time.time(), end_time=time.time()
)

View file

@ -0,0 +1,62 @@
import time
import pytest
from litellm.caching.caching import DualCache
from litellm.router_strategy.lowest_cost import LowestCostLoggingHandler
def test_lowest_cost_sync_success_model_info_none():
"""log_success_event should not crash when model_info is None."""
logger = LowestCostLoggingHandler(router_cache=DualCache())
kwargs = {
"litellm_params": {
"metadata": {"model_group": "gpt-4"},
"model_info": None,
}
}
logger.log_success_event(
kwargs=kwargs, response_obj={}, start_time=time.time(), end_time=time.time()
)
def test_lowest_cost_sync_failure_model_info_none():
"""log_failure_event should not crash when model_info is None."""
logger = LowestCostLoggingHandler(router_cache=DualCache())
kwargs = {
"litellm_params": {
"metadata": {"model_group": "gpt-4"},
"model_info": None,
}
}
logger.log_failure_event(
kwargs=kwargs, response_obj={}, start_time=time.time(), end_time=time.time()
)
def test_lowest_cost_sync_success_model_info_missing():
"""log_success_event should not crash when model_info key is missing."""
logger = LowestCostLoggingHandler(router_cache=DualCache())
kwargs = {
"litellm_params": {
"metadata": {"model_group": "gpt-4"},
}
}
logger.log_success_event(
kwargs=kwargs, response_obj={}, start_time=time.time(), end_time=time.time()
)
@pytest.mark.asyncio
async def test_lowest_cost_async_success_model_info_none():
"""async_log_success_event should not crash when model_info is None."""
logger = LowestCostLoggingHandler(router_cache=DualCache())
kwargs = {
"litellm_params": {
"metadata": {"model_group": "gpt-4"},
"model_info": None,
}
}
await logger.async_log_success_event(
kwargs=kwargs, response_obj={}, start_time=time.time(), end_time=time.time()
)

View file

@ -0,0 +1,20 @@
import time
from litellm.caching.caching import DualCache
from litellm.router_strategy.lowest_tpm_rpm import (
LowestTPMLoggingHandler as LowestTPMLoggingHandler_v1,
)
def test_lowest_tpm_rpm_v1_model_info_none():
"""log_success_event should not crash when model_info is None (v1 handler)."""
logger = LowestTPMLoggingHandler_v1(router_cache=DualCache())
kwargs = {
"litellm_params": {
"metadata": {"model_group": "gpt-4"},
"model_info": None,
}
}
logger.log_success_event(
kwargs=kwargs, response_obj={}, start_time=time.time(), end_time=time.time()
)