StandardOne-3B / server /tests /test_http_integration.py
MyeongHoJeong's picture
Add files using upload-large-folder tool
09d4173 verified
Raw History Blame Contribute Delete
2.03 kB
"""Full adapter stack, with only the remote engine's HTTP transport simulated."""
import httpx
import pytest
from test_service import payload
from test_sglang import Engine
from jev_adapter.server import create_app
from jev_adapter.sglang import SGLangBackend
@pytest.mark.asyncio
async def test_public_request_through_real_service_and_sglang_client():
engine = Engine()
async with httpx.AsyncClient(transport=httpx.MockTransport(engine)) as upstream:
backend = SGLangBackend("http://engine", "qwen", client=upstream)
app = create_app(backend, api_key="client-key")
async with (
app.router.lifespan_context(app),
httpx.AsyncClient(
transport=httpx.ASGITransport(app),
base_url="http://adapter",
) as client,
):
body = payload()
body["model"] = "jev-latest"
body["images"] = ["data:image/png;base64,YQ=="]
body["options"] = {"permutations": 2, "return_logprobs": True}
response = await client.post(
"/v1/systemone",
json=body,
headers={"Authorization": "Bearer client-key"},
)
assert response.status_code == 200, response.text
result = response.json()
assert result["model"] == "qwen"
assert set(result["answers"]) == set(body["questions"])
assert result["answers"]["route"]["probabilities"]["billing"] == pytest.approx(
0.5
)
assert result["usage"] == {"input_tokens": 426, "output_tokens": 0}
assert result["metadata"]["evaluations"] == 6
generations = [data for path, data, _ in engine.calls if path == "/generate"]
assert len(generations) == 6
assert len({data["rid"] for data in generations}) == 6
assert all(data["image_data"] == body["images"] for data in generations)
assert all(
data["sampling_params"]["max_new_tokens"] == 0 for data in generations
)