mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-09 03:18:44 +00:00
test(e2e): fail the run when a Rust gateway silently serves /messages through Python (#34208)
A gateway whose native extension is unavailable falls back to the Python implementation without raising, so it answers /v1/messages normally and the only difference on the wire is the absent x-litellm-rust header. Nothing in the suite read that header, so a Rust deployment that had stopped running Rust produced a fully green e2e run. Assert the marker on the streamed Messages assertions when E2E_EXPECT_RUST is set. It stays opt-in because the same suite image also runs against the standard gateway, which has no Rust path and must keep passing; the two deployments are already separate Applications, so this is one value on the Rust instance rather than branching inside the tests.
This commit is contained in:
parent
482f05190c
commit
3f98f62748
2 changed files with 10 additions and 1 deletions
|
|
@ -72,6 +72,8 @@ POLL_TIMEOUT = float(os.environ.get("E2E_POLL_TIMEOUT", "120"))
|
|||
POLL_INTERVAL = float(os.environ.get("E2E_POLL_INTERVAL", "5"))
|
||||
REQUEST_TIMEOUT = float(os.environ.get("E2E_REQUEST_TIMEOUT", "60"))
|
||||
|
||||
EXPECT_RUST = os.environ.get("E2E_EXPECT_RUST", "").strip().lower() in ("1", "true", "yes")
|
||||
|
||||
LOAD_USERS = int(os.environ.get("E2E_LOAD_USERS", "750"))
|
||||
LOAD_SPAWN_RATE = float(os.environ.get("E2E_LOAD_SPAWN_RATE", "50"))
|
||||
LOAD_DURATION_SECONDS = float(os.environ.get("E2E_LOAD_DURATION_SECONDS", "60"))
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ from __future__ import annotations
|
|||
|
||||
import pytest
|
||||
|
||||
from e2e_config import unique_marker
|
||||
from e2e_config import EXPECT_RUST, unique_marker
|
||||
from e2e_http import StreamingResponse, require_successful_call, unwrap
|
||||
from endpoints_client import EndpointsClient
|
||||
from lifecycle import ResourceManager
|
||||
|
|
@ -50,6 +50,13 @@ def _assert_streamed_ok(result: StreamingResponse) -> None:
|
|||
assert any("message_stop" in event for event in result.stream_events), (
|
||||
"stream never reached message_stop"
|
||||
)
|
||||
if EXPECT_RUST:
|
||||
assert result.headers.get("x-litellm-rust") == "true", (
|
||||
"E2E_EXPECT_RUST is set, so this gateway must serve /v1/messages through the "
|
||||
"Rust path, but the response carried no x-litellm-rust marker. The request "
|
||||
"still succeeded, which is exactly the failure mode: a gateway whose native "
|
||||
f"extension is unavailable falls back to Python silently. headers={result.headers}"
|
||||
)
|
||||
|
||||
|
||||
class TestAzureFoundryMessages:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue