char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
175147e8f
char/aliceai-t5-moe
1import pytest 2import requests 3from utils import * 4 5server = ServerPreset .tinyllama2 () 6 7 8@ pytest . fixture ( autouse = True ) 9def create_server (): 10global server 11server = ServerPreset .tinyllama2 () 12 13 14def test_server_start_simple (): 15global server 16server .start () 17res = server .make_request ("GET" ,"/health" ) 18assert res .status_code == 200 19 20 21def test_server_props (): 22global server 23server .start () 24res = server .make_request ("GET" ,"/props" ) 25assert res .status_code == 200 26assert ".gguf" in res .body ["model_path" ] 27assert res .body ["total_slots" ]== server .n_slots 28default_val = res .body ["default_generation_settings" ] 29assert server .n_ctx is not None and server .n_slots is not None 30assert default_val ["n_ctx" ]== server .n_ctx / server .n_slots 31assert default_val ["params" ]["seed" ]== server .seed 32 33 34def test_server_models (): 35global server 36server .start () 37res = server .make_request ("GET" ,"/models" ) 38assert res .status_code == 200 39assert len (res .body ["data" ])== 1 40assert res .body ["data" ][0 ]["id" ]== server .model_alias 41 42 43def test_server_slots (): 44global server 45 46# without slots endpoint enabled, this should return error 47server .server_slots = False 48server .start () 49res = server .make_request ("GET" ,"/slots" ) 50assert res .status_code == 501 # ERROR_TYPE_NOT_SUPPORTED 51assert "error" in res .body 52server .stop () 53 54# with slots endpoint enabled, this should return slots info 55server .server_slots = True 56server .n_slots = 2 57server .start () 58res = server .make_request ("GET" ,"/slots" ) 59assert res .status_code == 200 60assert len (res .body )== server .n_slots 61assert server .n_ctx is not None and server .n_slots is not None 62assert res .body [0 ]["n_ctx" ]== server .n_ctx / server .n_slots 63assert "params" not in res .body [0 ] 64 65 66def test_load_split_model (): 67global server 68server .offline = False 69server .model_hf_repo = "ggml-org/models" 70server .model_hf_file = "tinyllamas/split/stories15M-q8_0-00001-of-00003.gguf" 71server .model_alias = "tinyllama-split" 72server .start () 73res = server .make_request ("POST" ,"/completion" ,data = { 74"n_predict" :16 , 75"prompt" :"Hello" , 76"temperature" :0.0 , 77 }) 78assert res .status_code == 200 79assert match_regex ("(little|girl)+" ,res .body ["content" ]) 80 81 82def test_no_ui (): 83global server 84# default: UI enabled 85server .start () 86url = f"http:// { server . server_host } : { server . server_port } " 87res = requests .get (url ) 88assert res .status_code == 200 89assert "<!doctype html>" in res .text 90server .stop () 91 92# with --no-ui, the UI should be disabled 93server .no_ui = True 94server .start () 95res = requests .get (url ) 96assert res .status_code == 404 97 98 99def test_server_model_aliases_and_tags (): 100global server 101server .model_alias = "tinyllama-2,fim,code" 102server .model_tags = "chat,fim,small" 103server .start () 104res = server .make_request ("GET" ,"/models" ) 105assert res .status_code == 200 106assert len (res .body ["data" ])== 1 107model = res .body ["data" ][0 ] 108# aliases field must contain all aliases 109assert set (model ["aliases" ])== {"tinyllama-2" ,"fim" ,"code" } 110# tags field must contain all tags 111assert set (model ["tags" ])== {"chat" ,"fim" ,"small" } 112# id is derived from first alias (alphabetical order from std::set) 113assert model ["id" ]== "code"