public boolean canServeRequests() { return circuitBreaker.canServeRequests(servingRequests.get() > 0); }
@Test public void intermittentFailuresDontTrip() { for (int i = 0; i < 10; i++) { assertThat(breaker.canServeRequests(false)).isTrue(); breaker.requestComplete(true); assertThat(breaker.canServeRequests(false)).isTrue(); breaker.requestComplete(false); } assertThat(breaker.canServeRequests(false)).isTrue(); }
@Test public void testHasFailed() { for (int i = 0; i < CircuitBreakerState.HISTORY_SIZE - 1; i++) { breaker.requestComplete(false); assertThat(breaker.canServeRequests(false)).isTrue(); } breaker.requestComplete(false); assertThat(breaker.canServeRequests(false)).isFalse(); }
@Test public void testCanServeRequests() { assertThat(breaker.canServeRequests(false)).isTrue(); breaker.setState(CircuitBreakerState.State.SECONDARY_HEALTHY); assertThat(breaker.canServeRequests(false)).isTrue(); breaker.setState(CircuitBreakerState.State.TERTIARY_HEALTHY); assertThat(breaker.canServeRequests(false)).isTrue(); breaker.setState(CircuitBreakerState.State.PRIMARY_TRIPPED); assertThat(breaker.canServeRequests(false)).isFalse(); breaker.setState(CircuitBreakerState.State.SECONDARY_TRIPPED); assertThat(breaker.canServeRequests(false)).isFalse(); breaker.setState(CircuitBreakerState.State.TERTIARY_TRIPPED); assertThat(breaker.canServeRequests(false)).isFalse(); breaker.setState(CircuitBreakerState.State.UNHEALTHY); assertThat(breaker.canServeRequests(false)).isFalse(); breaker.setState(CircuitBreakerState.State.PRIMARY_PROBE); assertThat(breaker.canServeRequests(false)).isTrue(); breaker.setState(CircuitBreakerState.State.SECONDARY_PROBE); assertThat(breaker.canServeRequests(false)).isTrue(); breaker.setState(CircuitBreakerState.State.TERTIARY_PROBE); assertThat(breaker.canServeRequests(false)).isTrue(); breaker.setState(CircuitBreakerState.State.PRIMARY_PROBE); assertThat(breaker.canServeRequests(true)).isFalse(); breaker.setState(CircuitBreakerState.State.SECONDARY_PROBE); assertThat(breaker.canServeRequests(true)).isFalse(); breaker.setState(CircuitBreakerState.State.TERTIARY_PROBE); assertThat(breaker.canServeRequests(true)).isFalse(); }