Skip to content
This repository was archived by the owner on Jul 4, 2025. It is now read-only.

Commit d3b05f6

Browse files
author
Harry Le
committed
test: add test
1 parent 4fe771a commit d3b05f6

File tree

3 files changed

+158
-25
lines changed

3 files changed

+158
-25
lines changed

engine/e2e-test/api/engines/test_api_engine_list.py

Lines changed: 0 additions & 25 deletions
This file was deleted.
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
import pytest
2+
import requests
3+
from utils.test_runner import start_server, stop_server
4+
import jsonschema
5+
from tenacity import retry, wait_exponential, stop_after_attempt
6+
from utils.logger import log_response
7+
from utils.assertion import assert_equal
8+
9+
10+
class TestApiDefaultEngine:
11+
12+
@pytest.fixture(autouse=True)
13+
def setup_and_teardown(self):
14+
# Setup
15+
success = start_server()
16+
if not success:
17+
raise Exception("Failed to start server")
18+
19+
yield
20+
21+
# Teardown
22+
stop_server()
23+
24+
def test_api_get_default_engine_successfully(self):
25+
# Data test
26+
engine= "llama-cpp"
27+
name= "linux-amd64-avx-cuda-11-7"
28+
version= "v0.1.35-27.10.24"
29+
30+
data = {"version": version, "variant": name}
31+
post_install_url = f"http://localhost:3928/v1/engines/{engine}/install"
32+
response = requests.post(
33+
post_install_url, json=data
34+
)
35+
assert_equal(response.status_code,200)
36+
37+
get_list_url = f"http://localhost:3928/v1/engines/{engine}"
38+
get_default_url = f"http://localhost:3928/v1/engines/{engine}/default"
39+
40+
@retry(
41+
wait=wait_exponential(multiplier=2, min=2, max=30),
42+
stop=stop_after_attempt(5)
43+
)
44+
def get_request(url):
45+
response = requests.get(url)
46+
assert len(response.json()) > 0
47+
48+
get_request(get_list_url)
49+
50+
response_default_engine = requests.get(get_default_url)
51+
json_data = response_default_engine.json()
52+
53+
log_response(json_data, "test_api_get_default_engine_successfully")
54+
assert_equal(response_default_engine.status_code, 200)
55+
56+
schema = {
57+
"type": "object",
58+
"properties": {
59+
"engine": {"type": "string"},
60+
"variant": {"type": "string"},
61+
"version": {"type": "string"}
62+
},
63+
"required": ["engine", "variant", "version"]
64+
}
65+
66+
# Validate response schema
67+
jsonschema.validate(instance=json_data, schema=schema)
68+
69+
assert_equal(json_data["engine"], engine)
70+
assert_equal(json_data["version"], version)
71+
assert_equal(json_data["variant"], name)
72+
73+
def test_api_get_default_engine_successfully(self):
74+
# Data test
75+
engine= "invalid"
76+
77+
get_default_url = f"http://localhost:3928/v1/engines/{engine}/default"
78+
79+
response_default_engine = requests.get(get_default_url)
80+
json_data_get_default = response_default_engine.json()
81+
82+
log_response(json_data_get_default, "test_api_get_default_engine_successfully")
83+
assert_equal(response_default_engine.status_code, 400)
84+
85+
assert_equal(json_data_get_default["message"], f"Engine {engine} is not supported yet!")
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
import pytest
2+
import requests
3+
from utils.test_runner import start_server, stop_server
4+
import jsonschema
5+
from tenacity import retry, wait_exponential, stop_after_attempt
6+
from utils.logger import log_response
7+
from utils.assertion import assert_equal
8+
9+
10+
class TestApiEngineList:
11+
12+
@pytest.fixture(autouse=True)
13+
def setup_and_teardown(self):
14+
# Setup
15+
success = start_server()
16+
if not success:
17+
raise Exception("Failed to start server")
18+
19+
yield
20+
21+
# Teardown
22+
stop_server()
23+
24+
def test_api_get_list_engines_successfully(self):
25+
# Data test
26+
engine= "llama-cpp"
27+
name= "linux-amd64-avx-cuda-11-7"
28+
version= "v0.1.35-27.10.24"
29+
30+
data = {"version": version, "variant": name}
31+
post_install_url = f"http://localhost:3928/v1/engines/{engine}/install"
32+
response = requests.post(
33+
post_install_url, json=data
34+
)
35+
assert_equal(response.status_code,200)
36+
37+
get_list_url = f"http://localhost:3928/v1/engines/{engine}"
38+
39+
@retry(
40+
wait=wait_exponential(multiplier=2, min=2, max=30),
41+
stop=stop_after_attempt(5)
42+
)
43+
def get_request(url):
44+
response = requests.get(url)
45+
assert len(response.json()) > 0
46+
return response
47+
48+
response_get_list = get_request(get_list_url)
49+
json_data = response_get_list.json()
50+
51+
log_response(json_data, "test_api_get_list_engines_successfully")
52+
assert_equal(response_get_list.status_code, 200)
53+
54+
schema = {
55+
"type": "array",
56+
"items": {
57+
"type": "object",
58+
"properties": {
59+
"engine": {"type": "string"},
60+
"name": {"type": "string"},
61+
"version": {"type": "string"}
62+
},
63+
"required": ["engine", "name", "version"]
64+
}
65+
}
66+
67+
# Validate response schema
68+
jsonschema.validate(instance=json_data, schema=schema)
69+
70+
assert_equal(len(json_data), 1)
71+
assert_equal(json_data[0]["engine"], engine)
72+
assert_equal(json_data[0]["version"], version)
73+
assert_equal(json_data[0]["name"], name)

0 commit comments

Comments
 (0)