blob: dd7fc628c4acd8701a378fff6028aacea2cf17d4 [file] [log] [blame]
from more_executors import Executors, RetryPolicy
def test_broken_policy(caplog):
"""Executor logs without retry if policy raises exception"""
policy_error = RuntimeError("error from policy")
fn_error = RuntimeError("error from fn")
class BrokenRetryPolicy(RetryPolicy):
def should_retry(self, attempt, future):
raise policy_error
executor = Executors.thread_pool().with_retry(retry_policy=BrokenRetryPolicy())
def fn():
raise fn_error
# Start the callable
future = executor.submit(fn)
# It should fail with the error raised from the fn
assert future.exception(10.0) is fn_error
if not caplog:
# TODO: remove me when py2.6 support is dropped
return
records = caplog.records
error_log = records[-1]
# It should have logged a message about the error
assert "Exception while evaluating retry policy" in error_log.message
assert "BrokenRetryPolicy" in error_log.message
assert "error from policy" in error_log.exc_text