ComfyUI/tests/asyncio/test_aio_http_bugs.py
2024-09-30 13:12:53 -07:00

52 lines
1.7 KiB
Python

import asyncio
import pytest
import subprocess
from aiohttp import web
async def health_check(request):
return web.Response(text="HEALTHY")
@web.middleware
async def middleware(request, handler):
# Access request.url.path to trigger the potential error
print(f"Accessing path: {request.url.path}")
response = await handler(request)
return response
async def run_server():
app = web.Application(middlewares=[middleware])
app.router.add_get('/health', health_check)
runner = web.AppRunner(app)
await runner.setup()
site = web.TCPSite(runner, 'localhost', 9090)
await site.start()
print("Server started on http://localhost:9090")
return runner
@pytest.mark.asyncio
async def test_health_check():
runner = await run_server()
try:
# Use asyncio.create_subprocess_exec to run curl command
proc = await asyncio.create_subprocess_exec(
'curl', '-s', 'http://localhost:9090/health',
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE)
try:
stdout, stderr = await asyncio.wait_for(proc.communicate(), timeout=5.0)
except asyncio.TimeoutError:
print("Curl request timed out")
proc.kill()
await proc.wait()
return
if proc.returncode != 0:
print(f"Curl failed with return code {proc.returncode}")
print(f"stderr: {stderr.decode()}")
else:
response = stdout.decode().strip()
assert response == "HEALTHY", f"Unexpected response: {response}"
print("Test passed: Received 'HEALTHY' response")
finally:
await runner.cleanup()