diff --git a/tests/test_cancellation.py b/tests/test_cancellation.py index 06aef92..e6d460c 100644 --- a/tests/test_cancellation.py +++ b/tests/test_cancellation.py @@ -4,6 +4,7 @@ Cancellation and error propagation import os import signal import platform +import time from itertools import repeat import pytest @@ -359,7 +360,11 @@ async def test_nested_multierrors(loglevel, start_method): @no_windows -def test_cancel_via_SIGINT(loglevel, start_method): +def test_cancel_via_SIGINT( + loglevel, + start_method, + spawn_backend, +): """Ensure that a control-C (SIGINT) signal cancels both the parent and child processes in trionic fashion """ @@ -369,6 +374,8 @@ def test_cancel_via_SIGINT(loglevel, start_method): with trio.fail_after(2): async with tractor.open_nursery() as tn: await tn.start_actor('sucka') + if spawn_backend == 'mp': + time.sleep(0.1) os.kill(pid, signal.SIGINT) await trio.sleep_forever() @@ -379,7 +386,8 @@ def test_cancel_via_SIGINT(loglevel, start_method): @no_windows def test_cancel_via_SIGINT_other_task( loglevel, - start_method + start_method, + spawn_backend, ): """Ensure that a control-C (SIGINT) signal cancels both the parent and child processes in trionic fashion even a subprocess is started @@ -399,6 +407,8 @@ def test_cancel_via_SIGINT_other_task( with trio.fail_after(2): async with trio.open_nursery() as n: await n.start(spawn_and_sleep_forever) + if spawn_backend == 'mp': + time.sleep(0.1) os.kill(pid, signal.SIGINT) with pytest.raises(KeyboardInterrupt): diff --git a/tests/test_streaming.py b/tests/test_streaming.py index 6d278b8..00b07cb 100644 --- a/tests/test_streaming.py +++ b/tests/test_streaming.py @@ -202,7 +202,11 @@ async def cancel_after(wait): @pytest.fixture(scope='module') -def time_quad_ex(arb_addr): +def time_quad_ex(arb_addr, travis, spawn_backend): + if travis and spawn_backend == 'mp' and (platform.system() != 'Windows'): + # no idea, but the travis, mp, linux runs are flaking out here often + pytest.skip("Test is too flaky on mp in CI") + timeout = 7 if platform.system() == 'Windows' else 4 start = time.time() results = tractor.run(cancel_after, timeout, arbiter_addr=arb_addr) @@ -213,9 +217,6 @@ def time_quad_ex(arb_addr): def test_a_quadruple_example(time_quad_ex, travis, spawn_backend): """This also serves as a kind of "we'd like to be this fast test".""" - if travis and spawn_backend == 'mp' and (platform.system() != 'Windows'): - # no idea, but the travis, mp, linux runs are flaking out here often - pytest.skip("Test is too flaky on mp in CI") results, diff = time_quad_ex assert results @@ -233,10 +234,6 @@ def test_not_fast_enough_quad( """Verify we can cancel midway through the quad example and all actors cancel gracefully. """ - if travis and spawn_backend == 'mp' and (platform.system() != 'Windows'): - # no idea, but the travis, mp, linux runs are flaking out here often - pytest.skip("Test is too flaky on mp in CI") - results, diff = time_quad_ex delay = max(diff - cancel_delay, 0) results = tractor.run(cancel_after, delay, arbiter_addr=arb_addr)