mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-06 08:16:43 +00:00
The keys, credentials, models, model groups, and chat clients still sent requests with no timeout, so a proxy that accepts the connection and never answers pinned the caller forever. They now default to the same 30 seconds as their teams and users siblings, with chat on the OpenAI SDK's 600 second default, and Client wires its timeout through to all of them. S113 cannot see Session methods, so each client gets a hanging-server regression test instead.
109 lines
3.4 KiB
Python
109 lines
3.4 KiB
Python
|
|
import pytest
|
|
|
|
|
|
from litellm.proxy.client import ChatClient, Client, ModelsManagementClient
|
|
from litellm.proxy.client.http_client import HTTPClient
|
|
from litellm.proxy.client.keys import KeysManagementClient
|
|
|
|
|
|
@pytest.fixture
|
|
def base_url():
|
|
return "http://localhost:8000"
|
|
|
|
|
|
@pytest.fixture
|
|
def api_key():
|
|
return "test-api-key"
|
|
|
|
|
|
def test_client_initialization_wires_resource_clients(base_url, api_key):
|
|
"""Test that the Client is properly initialized with all resource clients"""
|
|
client = Client(base_url=base_url, api_key=api_key)
|
|
|
|
# Check base properties
|
|
assert client._base_url == base_url
|
|
assert client._api_key == api_key
|
|
|
|
# Check resource clients
|
|
assert isinstance(client.models, ModelsManagementClient)
|
|
assert client.models._base_url == base_url
|
|
assert client.models._api_key == api_key
|
|
|
|
# Check chat client
|
|
assert isinstance(client.chat, ChatClient)
|
|
assert client.chat._base_url == base_url
|
|
assert client.chat._api_key == api_key
|
|
|
|
# Check keys client
|
|
assert isinstance(client.keys, KeysManagementClient)
|
|
assert client.keys._base_url == base_url
|
|
assert client.keys._api_key == api_key
|
|
|
|
# Check http client
|
|
assert isinstance(client.http, HTTPClient)
|
|
assert client.http._base_url == base_url
|
|
assert client.http._api_key == api_key
|
|
|
|
|
|
def test_client_initialization_strips_trailing_slash():
|
|
"""Test that the client properly strips trailing slashes from base_url during initialization"""
|
|
base_url = "http://localhost:8000/////"
|
|
client = Client(base_url=base_url)
|
|
|
|
assert client._base_url == "http://localhost:8000"
|
|
assert client.models._base_url == "http://localhost:8000"
|
|
assert client.chat._base_url == "http://localhost:8000"
|
|
assert client.keys._base_url == "http://localhost:8000"
|
|
assert client.http._base_url == "http://localhost:8000"
|
|
|
|
|
|
def test_client_without_api_key_propagates_none_to_resource_clients(base_url):
|
|
"""Test that the client works without an API key"""
|
|
client = Client(base_url=base_url)
|
|
|
|
assert client._api_key is None
|
|
assert client.models._api_key is None
|
|
assert client.chat._api_key is None
|
|
assert client.keys._api_key is None
|
|
assert client.http._api_key is None
|
|
|
|
|
|
def test_client_initialization():
|
|
"""Test that the client is initialized correctly."""
|
|
client = Client(
|
|
base_url="http://localhost:4000",
|
|
api_key="test-key",
|
|
timeout=60,
|
|
)
|
|
|
|
# Check that http client is initialized correctly
|
|
assert isinstance(client.http, HTTPClient)
|
|
assert client.http._base_url == "http://localhost:4000"
|
|
assert client.http._api_key == "test-key"
|
|
assert client.http._timeout == 60
|
|
assert client.teams._timeout == 60
|
|
assert client.keys._timeout == 60
|
|
assert client.credentials._timeout == 60
|
|
assert client.models._timeout == 60
|
|
assert client.model_groups._timeout == 60
|
|
assert client.chat._timeout == 600
|
|
|
|
|
|
def test_client_default_timeout():
|
|
"""Test that the client uses default timeout."""
|
|
client = Client(
|
|
base_url="http://localhost:4000",
|
|
api_key="test-key",
|
|
)
|
|
|
|
assert client.http._timeout == 30
|
|
assert client.keys._timeout == 30
|
|
assert client.chat._timeout == 600
|
|
|
|
|
|
def test_client_without_api_key():
|
|
"""Test that the client works without an API key."""
|
|
client = Client(base_url="http://localhost:4000")
|
|
|
|
assert client.http._api_key is None
|