[Bugfix] t2i online fix cache configuration failure and errors in /v1/images/generation endpoint. (#499)

Signed-off-by: David Chen <530634352@qq.com>
Co-authored-by: Hongsheng Liu <liuhongsheng4@huawei.com>
This commit is contained in:
WeiQing ChenandHongsheng Liu authored and GitHub committed 2025-12-30 16:50:30 +08:00
1 parent 59ae174bba
commit 1753a878e0
11 files changed
+296 -50

No files matched your search

@@ -106,6 +106,20 @@ class MockGenerationResult:
self.images = images
class FakeAsyncOmni:
"""Fake AsyncOmni that yields a single diffusion output."""
def __init__(self):
self.stage_list = ["llm", "diffusion"]
self.default_sampling_params_list = [{"temperature": 0.1}, {"top_p": 0.9}]
self.captured_sampling_params_list = None
async def generate(self, prompt, request_id, sampling_params_list):
self.captured_sampling_params_list = sampling_params_list
images = [Image.new("RGB", (64, 64), color="green")]
yield MockGenerationResult(images)
@pytest.fixture
def mock_async_diffusion():
"""Mock AsyncOmniDiffusion instance that returns fake images"""
@@ -139,6 +153,22 @@ def test_client(mock_async_diffusion):
return TestClient(app)
@pytest.fixture
def async_omni_test_client():
"""Create test client with mocked AsyncOmni engine."""
from fastapi import FastAPI
from vllm_omni.entrypoints.openai.api_server import router
app = FastAPI()
app.include_router(router)
app.state.engine_client = FakeAsyncOmni()
app.state.stage_configs = [{"stage_type": "llm"}, {"stage_type": "diffusion"}]
return TestClient(app)
@pytest.mark.skip(reason="Async API server uses different health check mechanism")
def test_health_endpoint(test_client):
"""Test health check endpoint - skipped for async server"""
@@ -171,6 +201,29 @@ def test_generate_single_image(test_client):
assert img.size == (64, 64) # Our mock returns 64x64 images
def test_generate_images_async_omni_sampling_params(async_omni_test_client):
"""Test AsyncOmni path uses per-stage sampling params."""
response = async_omni_test_client.post(
"/v1/images/generations",
json={
"prompt": "a cat",
"n": 2,
"size": "256x256",
"seed": 7,
},
)
assert response.status_code == 200
engine = async_omni_test_client.app.state.engine_client
captured = engine.captured_sampling_params_list
assert captured is not None
assert len(captured) == 2
assert captured[0] == {"temperature": 0.1}
assert captured[1]["num_outputs_per_prompt"] == 2
assert captured[1]["height"] == 256
assert captured[1]["width"] == 256
assert captured[1]["seed"] == 7
def test_generate_multiple_images(test_client):
"""Test generating multiple images"""
response = test_client.post(