From 8f17c89cf9be2c890145a57c50faf0222d448fc6 Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Wed, 29 Jul 2020 09:57:32 -0400 Subject: [PATCH 1/2] Skip **every** quad test for mp on ci --- tests/test_streaming.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) 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) From da56d0f04302d08b0b3b1a6b3cf501dd78db19ed Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Wed, 29 Jul 2020 13:27:15 -0400 Subject: [PATCH 2/2] Add slight delays to SIGINT tests on mp --- tests/test_cancellation.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) 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):