mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-12 03:48:56 +00:00
* test: replace 61 live logging and otel tests with offline unit and integration coverage * test: restore datadog formatting, deliver datadog logs and redis failures over the wire, assert full router hook payloads, tighten stream usage and otel checks Restores the pre-existing test_datadog.py lines the branch had reflowed. Datadog success, failure and redis-failure replacements now assert the gzip body posted to the intake, with redis failing through a real cache on a closed local port. Router hook sequence recorder checks the legacy field types and asserts concrete payloads, exact streaming and fallback sequences. Stream usage asserts the default include_usage request body and the redacted messages value. Otel asserts response id and token counts. * test: assert budget envelope figures, guardrail inspection and exact prometheus samples per request * test: isolate the prometheus latency test on its own deployment so counts do not depend on order * test: cover timed slack delivery, keep the redis failure test off the network, and make new payload types read-only * test: drain the redis test's logging and scope otel span checks to the test's own trace * test: drive the periodic slack flush without a wall-clock interval * test: scope router hook events to the test, script the db clock, split a nested comprehension --------- Co-authored-by: yuneng <yuneng@berri.ai>
50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
import os
|
|
import pytest
|
|
import asyncio
|
|
import aiohttp, openai
|
|
from openai import OpenAI, AsyncOpenAI
|
|
from typing import Optional, List, Union
|
|
from litellm._uuid import uuid
|
|
|
|
|
|
async def make_moderations_curl_request(
|
|
session,
|
|
key,
|
|
request_data: dict,
|
|
):
|
|
url = "http://0.0.0.0:4000/moderations"
|
|
headers = {
|
|
"Authorization": f"Bearer {key}",
|
|
"Content-Type": "application/json",
|
|
}
|
|
|
|
async with session.post(url, headers=headers, json=request_data) as response:
|
|
status = response.status
|
|
response_text = await response.text()
|
|
|
|
if status != 200:
|
|
raise Exception(response_text)
|
|
|
|
return await response.json()
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_basic_moderations_on_proxy_with_model():
|
|
"""
|
|
Test moderations endpoint on proxy when `model` is specified in the request
|
|
"""
|
|
async with aiohttp.ClientSession() as session:
|
|
test_text = "I want to harm someone" # Test text that should trigger moderation
|
|
request_data = {
|
|
"input": test_text,
|
|
"model": "omni-moderation-latest",
|
|
}
|
|
try:
|
|
response = await make_moderations_curl_request(
|
|
session,
|
|
os.environ["LITELLM_MASTER_KEY"],
|
|
request_data,
|
|
)
|
|
print("response=", response)
|
|
except Exception as e:
|
|
pytest.fail("Moderations request failed")
|