mirror of
https://github.com/volcengine/OpenViking.git
synced 2026-09-28 11:43:00 +08:00
* feat(config): isolate account runtime resources * fix(runtime): harden account resource lifecycle * test: streamline account runtime coverage * refactor(config): remove redundant account runtime paths * fix(config): make runtime publication loop-safe * fix(config): order runtime change notifications * test: align vector fixtures after rebase * test: add account runtime isolation e2e coverage * test: consolidate account runtime coverage into existing contracts --------- Co-authored-by: qin-ctx <qinhaojie.exe@bytedance.com>
87 lines
3.1 KiB
Python
87 lines
3.1 KiB
Python
# Copyright (c) 2026 Beijing Volcano Engine Technology Co., Ltd.
|
|
# SPDX-License-Identifier: AGPL-3.0
|
|
|
|
"""Tests for observer endpoints (/api/v1/observer/*)."""
|
|
|
|
import asyncio
|
|
|
|
import httpx
|
|
|
|
|
|
async def test_observer_queue(client: httpx.AsyncClient):
|
|
"""GET /api/v1/observer/queue should return queue status."""
|
|
resp = await client.get("/api/v1/observer/queue")
|
|
assert resp.status_code == 200
|
|
body = resp.json()
|
|
assert body["status"] == "ok"
|
|
result = body["result"]
|
|
assert "name" in result
|
|
assert "is_healthy" in result
|
|
assert "has_errors" in result
|
|
assert "status" in result
|
|
|
|
|
|
async def test_observer_queue_structured(client: httpx.AsyncClient):
|
|
"""GET /api/v1/observer/queue?format=json should return structured status."""
|
|
resp = await client.get("/api/v1/observer/queue", params={"format": "json"})
|
|
assert resp.status_code == 200
|
|
body = resp.json()
|
|
assert body["status"] == "ok"
|
|
result = body["result"]
|
|
assert "status" in result
|
|
assert isinstance(result["status"], dict)
|
|
assert "queues" in result["status"]
|
|
assert isinstance(result["status"]["queues"], list)
|
|
assert "summary" in result["status"]
|
|
assert isinstance(result["status"]["summary"], dict)
|
|
|
|
|
|
async def test_observer_vikingdb(client: httpx.AsyncClient):
|
|
"""GET /api/v1/observer/vikingdb should return VikingDB status."""
|
|
resp = await client.get("/api/v1/observer/vikingdb")
|
|
assert resp.status_code == 200
|
|
body = resp.json()
|
|
assert body["status"] == "ok"
|
|
result = body["result"]
|
|
assert "name" in result
|
|
assert "is_healthy" in result
|
|
|
|
|
|
async def test_observer_models(client: httpx.AsyncClient):
|
|
resp = await client.get("/api/v1/observer/models", params={"format": "json"})
|
|
assert resp.status_code == 200
|
|
body = resp.json()
|
|
assert body["status"] == "ok"
|
|
result = body["result"]
|
|
assert result["name"] == "models"
|
|
assert isinstance(result["status"], dict)
|
|
assert {"account_id", "embedding_dimension", "vlm", "embedding", "rerank"} <= result[
|
|
"status"
|
|
].keys()
|
|
|
|
|
|
async def test_observer_system(client: httpx.AsyncClient):
|
|
"""GET /api/v1/observer/system should return full system status."""
|
|
resp = await client.get("/api/v1/observer/system")
|
|
assert resp.status_code == 200
|
|
body = resp.json()
|
|
assert body["status"] == "ok"
|
|
result = body["result"]
|
|
assert "is_healthy" in result
|
|
assert "errors" in result
|
|
assert "components" in result
|
|
assert isinstance(result["components"], dict)
|
|
|
|
|
|
async def test_observer_system_structured(client: httpx.AsyncClient):
|
|
async with asyncio.timeout(10):
|
|
response, models = await asyncio.gather(
|
|
client.get("/api/v1/observer/system", params={"format": "json"}),
|
|
client.get("/api/v1/observer/models", params={"format": "json"}),
|
|
)
|
|
assert response.status_code == models.status_code == 200
|
|
components = response.json()["result"]["components"]
|
|
assert isinstance(components["queue"]["status"], dict)
|
|
assert components["models"]["status"] == models.json()["result"]["status"]
|
|
assert isinstance(components["models"]["status"]["vlm"], list)
|