|
import pytest |
|
import requests |
|
from utils import * |
|
|
|
server = ServerPreset.tinyllama2() |
|
|
|
|
|
@pytest.fixture(scope="module", autouse=True) |
|
def create_server(): |
|
global server |
|
server = ServerPreset.tinyllama2() |
|
|
|
|
|
def test_server_start_simple(): |
|
global server |
|
server.start() |
|
res = server.make_request("GET", "/health") |
|
assert res.status_code == 200 |
|
|
|
|
|
def test_server_props(): |
|
global server |
|
server.start() |
|
res = server.make_request("GET", "/props") |
|
assert res.status_code == 200 |
|
assert ".gguf" in res.body["model_path"] |
|
assert res.body["total_slots"] == server.n_slots |
|
default_val = res.body["default_generation_settings"] |
|
assert server.n_ctx is not None and server.n_slots is not None |
|
assert default_val["n_ctx"] == server.n_ctx / server.n_slots |
|
assert default_val["params"]["seed"] == server.seed |
|
|
|
|
|
def test_server_models(): |
|
global server |
|
server.start() |
|
res = server.make_request("GET", "/models") |
|
assert res.status_code == 200 |
|
assert len(res.body["data"]) == 1 |
|
assert res.body["data"][0]["id"] == server.model_alias |
|
|
|
|
|
def test_server_slots(): |
|
global server |
|
|
|
|
|
server.server_slots = False |
|
server.start() |
|
res = server.make_request("GET", "/slots") |
|
assert res.status_code == 501 |
|
assert "error" in res.body |
|
server.stop() |
|
|
|
|
|
server.server_slots = True |
|
server.n_slots = 2 |
|
server.start() |
|
res = server.make_request("GET", "/slots") |
|
assert res.status_code == 200 |
|
assert len(res.body) == server.n_slots |
|
assert server.n_ctx is not None and server.n_slots is not None |
|
assert res.body[0]["n_ctx"] == server.n_ctx / server.n_slots |
|
assert "params" in res.body[0] |
|
assert res.body[0]["params"]["seed"] == server.seed |
|
|
|
|
|
def test_load_split_model(): |
|
global server |
|
server.model_hf_repo = "ggml-org/models" |
|
server.model_hf_file = "tinyllamas/split/stories15M-q8_0-00001-of-00003.gguf" |
|
server.model_alias = "tinyllama-split" |
|
server.start() |
|
res = server.make_request("POST", "/completion", data={ |
|
"n_predict": 16, |
|
"prompt": "Hello", |
|
"temperature": 0.0, |
|
}) |
|
assert res.status_code == 200 |
|
assert match_regex("(little|girl)+", res.body["content"]) |
|
|
|
|
|
def test_no_webui(): |
|
global server |
|
|
|
server.start() |
|
url = f"http://{server.server_host}:{server.server_port}" |
|
res = requests.get(url) |
|
assert res.status_code == 200 |
|
assert "<html>" in res.text |
|
server.stop() |
|
|
|
|
|
server.no_webui = True |
|
server.start() |
|
res = requests.get(url) |
|
assert res.status_code == 404 |
|
|