KBaba7/llama.cpp
0
1import pytest2import requests3from utils import *4 5server = ServerPreset.tinyllama2()6 7 8@pytest.fixture(scope="module", autouse=True)9def create_server():10 global server11 server = ServerPreset.tinyllama2()12 13 14def test_server_start_simple():15 global server16 server.start()17 res = server.make_request("GET", "/health")18 assert res.status_code == 20019 20 21def test_server_props():22 global server23 server.start()24 res = server.make_request("GET", "/props")25 assert res.status_code == 20026 assert ".gguf" in res.body["model_path"]27 assert res.body["total_slots"] == server.n_slots28 default_val = res.body["default_generation_settings"]29 assert server.n_ctx is not None and server.n_slots is not None30 assert default_val["n_ctx"] == server.n_ctx / server.n_slots31 assert default_val["params"]["seed"] == server.seed32 33 34def test_server_models():35 global server36 server.start()37 res = server.make_request("GET", "/models")38 assert res.status_code == 20039 assert len(res.body["data"]) == 140 assert res.body["data"][0]["id"] == server.model_alias41 42 43def test_server_slots():44 global server45 46 # without slots endpoint enabled, this should return error47 server.server_slots = False48 server.start()49 res = server.make_request("GET", "/slots")50 assert res.status_code == 501 # ERROR_TYPE_NOT_SUPPORTED51 assert "error" in res.body52 server.stop()53 54 # with slots endpoint enabled, this should return slots info55 server.server_slots = True56 server.n_slots = 257 server.start()58 res = server.make_request("GET", "/slots")59 assert res.status_code == 20060 assert len(res.body) == server.n_slots61 assert server.n_ctx is not None and server.n_slots is not None62 assert res.body[0]["n_ctx"] == server.n_ctx / server.n_slots63 assert "params" in res.body[0]64 assert res.body[0]["params"]["seed"] == server.seed65 66 67def test_load_split_model():68 global server69 server.model_hf_repo = "ggml-org/models"70 server.model_hf_file = "tinyllamas/split/stories15M-q8_0-00001-of-00003.gguf"71 server.model_alias = "tinyllama-split"72 server.start()73 res = server.make_request("POST", "/completion", data={74 "n_predict": 16,75 "prompt": "Hello",76 "temperature": 0.0,77 })78 assert res.status_code == 20079 assert match_regex("(little|girl)+", res.body["content"])80 81 82def test_no_webui():83 global server84 # default: webui enabled85 server.start()86 url = f"http://{server.server_host}:{server.server_port}"87 res = requests.get(url)88 assert res.status_code == 20089 assert "<html>" in res.text90 server.stop()91 92 # with --no-webui93 server.no_webui = True94 server.start()95 res = requests.get(url)96 assert res.status_code == 40497 