From 118ffdffe5a8819c97d6a9b018894fd8cab651ef Mon Sep 17 00:00:00 2001 From: Evgenii Alekseev Date: Tue, 13 Oct 2026 11:21:24 +0300 Subject: [PATCH] fix: update event bus for the last aiohttp-sse api change --- .../web/views/v1/auditlog/event_bus.py | 3 ++- .../test_view_v1_auditlog_event_bus.py | 22 +++++++++---------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/ahriman-web/src/ahriman/web/views/v1/auditlog/event_bus.py b/ahriman-web/src/ahriman/web/views/v1/auditlog/event_bus.py index 02748e61..ab4e9c21 100644 --- a/ahriman-web/src/ahriman/web/views/v1/auditlog/event_bus.py +++ b/ahriman-web/src/ahriman/web/views/v1/auditlog/event_bus.py @@ -87,7 +87,8 @@ class EventBusView(BaseView): """ while response.is_connected(): try: - event_type, data = await wait_for(queue.get(), timeout=response.ping_interval) + # pylint: disable=protected-access + event_type, data = await wait_for(queue.get(), timeout=response._ping_interval) except TimeoutError: continue except QueueShutDown: diff --git a/ahriman-web/tests/ahriman/web/views/v1/auditlog/test_view_v1_auditlog_event_bus.py b/ahriman-web/tests/ahriman/web/views/v1/auditlog/test_view_v1_auditlog_event_bus.py index 72e278be..457af1e6 100644 --- a/ahriman-web/tests/ahriman/web/views/v1/auditlog/test_view_v1_auditlog_event_bus.py +++ b/ahriman-web/tests/ahriman/web/views/v1/auditlog/test_view_v1_auditlog_event_bus.py @@ -3,6 +3,7 @@ import pytest from aiohttp.test_utils import TestClient from aiohttp.web import HTTPBadRequest +from aiohttp_sse import EventSourceResponse from asyncio import Queue from multidict import MultiDict from pytest_mock import MockerFixture @@ -95,21 +96,20 @@ def test_routes() -> None: async def test_run_timeout() -> None: """ - must handle timeout and continue loop + must recheck the connection after a queue timeout """ - queue = Queue() + queue = AsyncMock(spec_set=Queue) + queue.get.side_effect = TimeoutError + response = AsyncMock(spec_set=EventSourceResponse()) + response._ping_interval = 0.01 + response.is_connected.side_effect = [True, False] - async def _shutdown() -> None: - await asyncio.sleep(0.05) - queue.shutdown() - - response = AsyncMock() - response.is_connected = lambda: True - response.ping_interval = 0.01 - - asyncio.create_task(_shutdown()) await EventBusView._run(response, queue) + assert response.is_connected.call_count == 2 + queue.get.assert_awaited_once() + response.send.assert_not_awaited() + def test_topics() -> None: """