".github/vscode:/vscode.git/clone" did not exist on "07ab4d4a2df2ca28cfa82197e6a692a0f69c1d02"
test_server.py 1.66 KB
Newer Older
1
2
3
# sglang/test/srt/openai/test_server.py
import requests

4
5
from sglang.test.test_utils import DEFAULT_SMALL_MODEL_NAME_FOR_TEST as MODEL_ID

6
7
8

def test_health(openai_server: str):
    r = requests.get(f"{openai_server}/health")
9
10
    assert r.status_code == 200
    # FastAPI returns an empty body → r.text == ""
11
12
13
14
15
    assert r.text == ""


def test_models_endpoint(openai_server: str):
    r = requests.get(f"{openai_server}/v1/models")
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
    assert r.status_code == 200, r.text
    payload = r.json()

    # Basic contract
    assert "data" in payload and isinstance(payload["data"], list) and payload["data"]

    # Validate fields of the first model card
    first = payload["data"][0]
    for key in ("id", "root", "max_model_len"):
        assert key in first, f"missing {key} in {first}"

    # max_model_len must be positive
    assert isinstance(first["max_model_len"], int) and first["max_model_len"] > 0

    # The server should report the same model id we launched it with
    ids = {m["id"] for m in payload["data"]}
    assert MODEL_ID in ids


def test_get_model_info(openai_server: str):
    r = requests.get(f"{openai_server}/get_model_info")
    assert r.status_code == 200, r.text
    info = r.json()

    expected_keys = {"model_path", "tokenizer_path", "is_generation"}
    assert expected_keys.issubset(info.keys())

    # model_path must end with the one we passed on the CLI
    assert info["model_path"].endswith(MODEL_ID)

    # is_generation is documented as a boolean
    assert isinstance(info["is_generation"], bool)


def test_unknown_route_returns_404(openai_server: str):
    r = requests.get(f"{openai_server}/definitely-not-a-real-route")
    assert r.status_code == 404