def test_fail_fast_imap(): # A failing call... failing_exception = Exception() def failing_call(): raise failing_exception # ...and an eventually successful call. slow_call_returned = Event() def slow_call(): sleep(5) slow_call_returned.send() # pragma: no cover def identity_fn(fn): return fn() calls = [slow_call, failing_call] pool = GreenPool(2) # fail_fast_imap fails as soon as the exception is raised with pytest.raises(Exception) as raised_exc: list(fail_fast_imap(pool, identity_fn, calls)) assert raised_exc.value == failing_exception # The slow call won't go past the sleep as it was killed assert not slow_call_returned.ready() assert pool.free() == 2
def test_fail_fast_imap(): # A failing call... failing_exception = Exception() def failing_call(): raise failing_exception # ...and an eventually successful call. slow_call_returned = Event() def slow_call(): sleep(5) slow_call_returned.send() def identity_fn(fn): return fn() calls = [slow_call, failing_call] pool = GreenPool(2) # fail_fast_imap fails as soon as the exception is raised with pytest.raises(Exception) as raised_exc: list(fail_fast_imap(pool, identity_fn, calls)) assert raised_exc.value == failing_exception # The slow call won't go past the sleep as it was killed assert not slow_call_returned.ready() assert pool.free() == 2