def test_circut_success_resets_failures_counter(self): circuit_breaker = CircuitBreaker(maximum_failures=3) circuit_breaker.record_failure() circuit_breaker.record_failure() circuit_breaker.record_success() circuit_breaker.record_failure() circuit_breaker.record_failure() assert circuit_breaker.current_state == 'closed'
def test_circuit_half_opens_and_closes_after_timeout(self, monotonic_mock): circuit_breaker = CircuitBreaker(maximum_failures=1, reset_timeout_seconds=20) assert circuit_breaker.allows_execution() is True assert circuit_breaker.current_state == 'closed' monotonic_mock.return_value = 100 circuit_breaker.record_failure() assert circuit_breaker.allows_execution() is False assert circuit_breaker.current_state == 'open' monotonic_mock.return_value = 130 assert circuit_breaker.allows_execution() is True assert circuit_breaker.current_state == 'half-open' circuit_breaker.record_success() assert circuit_breaker.allows_execution() is True assert circuit_breaker.current_state == 'closed'