def test_circuitbreaker_should_clear_last_exception_on_success_call(): cb = CircuitBreaker(name='Foobar') cb._last_failure = IOError() assert isinstance(cb.last_failure, IOError) cb.call(lambda: True) assert cb.last_failure is None
def test_circuitbreaker_should_save_last_exception_on_failure_call(): cb = CircuitBreaker(name='Foobar') func = Mock(side_effect=IOError) with raises(IOError): cb.call(func) assert isinstance(cb.last_failure, IOError)
def test_circuitbreaker_should_call_fallback_function_if_open(): fallback = Mock(return_value=True) func = Mock(return_value=False) CircuitBreaker.opened = lambda self: True cb = CircuitBreaker(name='WithFallback', fallback_function=fallback) cb.call(func) fallback.assert_called_once_with()