From 1e0c57c6c5b78fb72cb50f0e902b26f975d64398 Mon Sep 17 00:00:00 2001 From: goodboy Date: Sun, 8 Mar 2026 15:05:32 -0400 Subject: [PATCH] Wrap cluster test in `trio.fail_after()` Add a 6s timeout guard around `test_streaming_to_actor_cluster()` to catch hangs, and nest the `async with` block inside it. Found this when running `pytest tests/ --tpt-proto uds`. (this commit msg was generated in some part by [`claude-code`][claude-code-gh]) [claude-code-gh]: https://github.com/anthropics/claude-code --- tests/test_clustering.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/tests/test_clustering.py b/tests/test_clustering.py index 603b2eb4..33281f08 100644 --- a/tests/test_clustering.py +++ b/tests/test_clustering.py @@ -56,25 +56,26 @@ async def worker( print(msg) assert msg == MESSAGE - # TODO: does this ever cause a hang + # ?TODO, does this ever cause a hang? # assert 0 @tractor_test -async def test_streaming_to_actor_cluster() -> None: +async def test_streaming_to_actor_cluster(): - async with ( - open_actor_cluster(modules=[__name__]) as portals, + with trio.fail_after(6): + async with ( + open_actor_cluster(modules=[__name__]) as portals, - gather_contexts( - mngrs=[p.open_context(worker) for p in portals.values()], - ) as contexts, + gather_contexts( + mngrs=[p.open_context(worker) for p in portals.values()], + ) as contexts, - gather_contexts( - mngrs=[ctx[0].open_stream() for ctx in contexts], - ) as streams, + gather_contexts( + mngrs=[ctx[0].open_stream() for ctx in contexts], + ) as streams, - ): - with trio.move_on_after(1): - for stream in itertools.cycle(streams): - await stream.send(MESSAGE) + ): + with trio.move_on_after(1): + for stream in itertools.cycle(streams): + await stream.send(MESSAGE)