test_basic.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import pytest
  2. from utils import *
  3. server = ServerPreset.tinyllama2()
  4. @pytest.fixture(scope="module", autouse=True)
  5. def create_server():
  6. global server
  7. server = ServerPreset.tinyllama2()
  8. def test_server_start_simple():
  9. global server
  10. server.start()
  11. res = server.make_request("GET", "/health")
  12. assert res.status_code == 200
  13. def test_server_props():
  14. global server
  15. server.start()
  16. res = server.make_request("GET", "/props")
  17. assert res.status_code == 200
  18. assert ".gguf" in res.body["model_path"]
  19. assert res.body["total_slots"] == server.n_slots
  20. default_val = res.body["default_generation_settings"]
  21. assert server.n_ctx is not None and server.n_slots is not None
  22. assert default_val["n_ctx"] == server.n_ctx / server.n_slots
  23. assert default_val["params"]["seed"] == server.seed
  24. def test_server_models():
  25. global server
  26. server.start()
  27. res = server.make_request("GET", "/models")
  28. assert res.status_code == 200
  29. assert len(res.body["data"]) == 1
  30. assert res.body["data"][0]["id"] == server.model_alias
  31. def test_server_slots():
  32. global server
  33. # without slots endpoint enabled, this should return error
  34. server.server_slots = False
  35. server.start()
  36. res = server.make_request("GET", "/slots")
  37. assert res.status_code == 501 # ERROR_TYPE_NOT_SUPPORTED
  38. assert "error" in res.body
  39. server.stop()
  40. # with slots endpoint enabled, this should return slots info
  41. server.server_slots = True
  42. server.n_slots = 2
  43. server.start()
  44. res = server.make_request("GET", "/slots")
  45. assert res.status_code == 200
  46. assert len(res.body) == server.n_slots
  47. assert server.n_ctx is not None and server.n_slots is not None
  48. assert res.body[0]["n_ctx"] == server.n_ctx / server.n_slots
  49. assert "params" in res.body[0]
  50. assert res.body[0]["params"]["seed"] == server.seed
  51. def test_load_split_model():
  52. global server
  53. server.model_hf_repo = "ggml-org/models"
  54. server.model_hf_file = "tinyllamas/split/stories15M-q8_0-00001-of-00003.gguf"
  55. server.model_alias = "tinyllama-split"
  56. server.start()
  57. res = server.make_request("POST", "/completion", data={
  58. "n_predict": 16,
  59. "prompt": "Hello",
  60. "temperature": 0.0,
  61. })
  62. assert res.status_code == 200
  63. assert match_regex("(little|girl)+", res.body["content"])