Skip to content

Commit 892856f

Browse files
Make tests less flaky
1 parent 88dcdc5 commit 892856f

3 files changed

Lines changed: 21 additions & 13 deletions

File tree

tests/support/asyncio_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from fishjam import FishjamNotifier
66

7-
ASSERTION_TIMEOUT = 5.0
7+
ASSERTION_TIMEOUT = 15.0
88

99

1010
async def assert_events(notifier: FishjamNotifier, event_checks: list):

tests/support/webhook_notifier.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@ def respond_default():
1717
def respond_root():
1818
data = request.get_data()
1919
msg = receive_binary(data)
20-
for q in QUEUES:
21-
q.put(msg)
20+
if msg is not None:
21+
for q in QUEUES.values():
22+
q.put(msg)
2223

2324
return Response(status=200)
2425

tests/test_notifier.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# pylint: disable=locally-disabled, missing-class-docstring, missing-function-docstring, redefined-outer-name, too-few-public-methods, missing-module-docstring
22

33
import asyncio
4+
import uuid
45
from multiprocessing import Manager, Process
56

67
import pytest
@@ -29,7 +30,7 @@
2930
from tests.support.webhook_notifier import run_server
3031

3132
_manager = Manager()
32-
_queues = _manager.list()
33+
_queues = _manager.dict()
3334

3435

3536
@pytest.fixture(scope="session", autouse=True)
@@ -59,9 +60,10 @@ def start_server():
5960
@pytest.fixture
6061
def event_queue():
6162
q = _manager.Queue()
62-
_queues.append(q)
63+
key = str(uuid.uuid4())
64+
_queues[key] = q
6365
yield q
64-
_queues.remove(q)
66+
del _queues[key]
6567

6668

6769
class TestConnectingToServer:
@@ -126,7 +128,7 @@ async def test_room_created_deleted(
126128
notifier_task.cancel()
127129

128130
for event in event_checks:
129-
self.assert_event(event, event_queue)
131+
self.assert_event(event, event_queue, room.id)
130132

131133
@pytest.mark.asyncio
132134
async def test_peer_connected_disconnected(
@@ -165,7 +167,7 @@ async def test_peer_connected_disconnected(
165167
peer_socket_task.cancel()
166168

167169
for event in event_checks:
168-
self.assert_event(event, event_queue)
170+
self.assert_event(event, event_queue, room.id)
169171

170172
@pytest.mark.asyncio
171173
async def test_peer_connected_room_deleted(
@@ -202,8 +204,13 @@ async def test_peer_connected_room_deleted(
202204
peer_socket_task.cancel()
203205

204206
for event in event_checks:
205-
self.assert_event(event, event_queue)
206-
207-
def assert_event(self, event, event_queue):
208-
data = event_queue.get(timeout=5)
209-
assert data == event or isinstance(data, event)
207+
self.assert_event(event, event_queue, room.id)
208+
209+
def assert_event(self, event, event_queue, room_id=None):
210+
for _ in range(20):
211+
data = event_queue.get(timeout=10)
212+
if room_id and data.room_id != room_id:
213+
continue
214+
assert data == event or isinstance(data, event), (
215+
f"Expected {event} but last received: {data}"
216+
)

0 commit comments

Comments
 (0)