[Bugfix][Frontend] Fix missing /metrics endpoint (#6463)
This commit is contained in:
parent
dbe5588554
commit
6366efc67b
61
tests/entrypoints/openai/test_basic.py
Normal file
61
tests/entrypoints/openai/test_basic.py
Normal file
@ -0,0 +1,61 @@
|
||||
from http import HTTPStatus
|
||||
|
||||
import openai
|
||||
import pytest
|
||||
import requests
|
||||
|
||||
from vllm.version import __version__ as VLLM_VERSION
|
||||
|
||||
from ...utils import RemoteOpenAIServer
|
||||
|
||||
MODEL_NAME = "HuggingFaceH4/zephyr-7b-beta"
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def server():
|
||||
args = [
|
||||
# use half precision for speed and memory savings in CI environment
|
||||
"--dtype",
|
||||
"bfloat16",
|
||||
"--max-model-len",
|
||||
"8192",
|
||||
"--enforce-eager",
|
||||
"--max-num-seqs",
|
||||
"128",
|
||||
]
|
||||
|
||||
with RemoteOpenAIServer(MODEL_NAME, args) as remote_server:
|
||||
yield remote_server
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def client(server):
|
||||
return server.get_async_client()
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_show_version(client: openai.AsyncOpenAI):
|
||||
base_url = str(client.base_url)[:-3].strip("/")
|
||||
|
||||
response = requests.get(base_url + "/version")
|
||||
response.raise_for_status()
|
||||
|
||||
assert response.json() == {"version": VLLM_VERSION}
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_check_health(client: openai.AsyncOpenAI):
|
||||
base_url = str(client.base_url)[:-3].strip("/")
|
||||
|
||||
response = requests.get(base_url + "/health")
|
||||
|
||||
assert response.status_code == HTTPStatus.OK
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_log_metrics(client: openai.AsyncOpenAI):
|
||||
base_url = str(client.base_url)[:-3].strip("/")
|
||||
|
||||
response = requests.get(base_url + "/metrics")
|
||||
|
||||
assert response.status_code == HTTPStatus.OK
|
||||
@ -73,11 +73,13 @@ async def lifespan(app: fastapi.FastAPI):
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
# Add prometheus asgi middleware to route /metrics requests
|
||||
route = Mount("/metrics", make_asgi_app())
|
||||
# Workaround for 307 Redirect for /metrics
|
||||
route.path_regex = re.compile('^/metrics(?P<path>.*)$')
|
||||
router.routes.append(route)
|
||||
|
||||
def mount_metrics(app: fastapi.FastAPI):
|
||||
# Add prometheus asgi middleware to route /metrics requests
|
||||
metrics_route = Mount("/metrics", make_asgi_app())
|
||||
# Workaround for 307 Redirect for /metrics
|
||||
metrics_route.path_regex = re.compile('^/metrics(?P<path>.*)$')
|
||||
app.routes.append(metrics_route)
|
||||
|
||||
|
||||
@router.get("/health")
|
||||
@ -167,6 +169,8 @@ def build_app(args):
|
||||
app.include_router(router)
|
||||
app.root_path = args.root_path
|
||||
|
||||
mount_metrics(app)
|
||||
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=args.allowed_origins,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user