fix: prevent agent debug from blocking chat
This commit is contained in:
@@ -3,6 +3,7 @@ from __future__ import annotations
|
||||
from datetime import date
|
||||
import asyncio
|
||||
import json
|
||||
import time
|
||||
|
||||
import pytest
|
||||
import httpx
|
||||
@@ -22,6 +23,7 @@ from app.services.chat_service import ChatService
|
||||
from app.services.secret_service import ENCRYPTED_PREFIX, MASKED_SECRET, SecretService
|
||||
from app.services.security_state_service import SecurityStateService
|
||||
from app.services.auth_service import AuthService
|
||||
from app.services.model_service import ModelClientService
|
||||
from app.core.observability import RequestObservabilityMiddleware
|
||||
|
||||
|
||||
@@ -138,6 +140,26 @@ def test_request_id_is_returned_without_breaking_response():
|
||||
assert response.json() == {"ok": True}
|
||||
|
||||
|
||||
def test_agent_debug_model_call_does_not_block_event_loop(monkeypatch):
|
||||
def blocking_debug(*_args, **_kwargs):
|
||||
time.sleep(0.15)
|
||||
return {"ok": True}
|
||||
|
||||
monkeypatch.setattr(ModelClientService, "debug_model", blocking_debug)
|
||||
|
||||
async def verify_concurrency():
|
||||
started = time.perf_counter()
|
||||
task = asyncio.create_task(ModelClientService.debug_model_async(object(), object(), {}))
|
||||
await asyncio.sleep(0.02)
|
||||
event_loop_delay = time.perf_counter() - started
|
||||
result = await task
|
||||
return event_loop_delay, result
|
||||
|
||||
delay, result = asyncio.run(verify_concurrency())
|
||||
assert delay < 0.10
|
||||
assert result == {"ok": True}
|
||||
|
||||
|
||||
def test_readiness_reports_dependency_state(monkeypatch):
|
||||
from app.api import health
|
||||
|
||||
|
||||
Reference in New Issue
Block a user