public CircuitBreakerState.State getCircuitBreakerState() { return circuitBreaker.getState(); }
@Test public void constructedHealthy() { assertThat(breaker.getState()).isEqualTo(CircuitBreakerState.State.PRIMARY_HEALTHY); }
try { synchronized (CircuitBreakerState.this) { if (CircuitBreakerState.this.getState().equals(fromState)) { logger.debug("CircuitBreaker timer elapsed -> {}", toState); CircuitBreakerState.this.setState(toState); isTripped(CircuitBreakerState.this.getState())) { } else if (CircuitBreakerState.this.getState().equals(PRIMARY_HEALTHY) && fromState.equals(PRIMARY_TRIPPED) && toState.equals(PRIMARY_PROBE)) { } else if (CircuitBreakerState.this.getState().equals(SECONDARY_HEALTHY) && fromState.equals(SECONDARY_TRIPPED) && toState.equals(SECONDARY_PROBE)) { } else if (CircuitBreakerState.this.getState().equals(TERTIARY_HEALTHY) && fromState.equals(TERTIARY_TRIPPED) && toState.equals(TERTIARY_PROBE)) { fromState, toState, getState());
@Test public void primaryProbeToHealthy() { breaker.requestComplete(false); breaker.requestComplete(false); breaker.requestComplete(false); assertThat(breaker.getState()).isEqualTo(PRIMARY_TRIPPED); executor.tick(PRIMARY_TRIP_TIME); assertThat(breaker.getState()).isEqualTo(PRIMARY_PROBE); breaker.requestComplete(true); assertThat(breaker.getState()).isEqualTo(SECONDARY_HEALTHY); executor.tick(PRIMARY_TRIP_TIME); assertThat(breaker.getState()).isEqualTo(PRIMARY_HEALTHY); }
@Test public void toHellAndBack() { for (int i = 0; i < 3; i++) { assertThat(breaker.getState()).isEqualTo(PRIMARY_HEALTHY); breaker.requestComplete(false); breaker.requestComplete(false); assertThat(breaker.getState()).isEqualTo(PRIMARY_HEALTHY); breaker.requestComplete(false); assertThat(breaker.getState()).isEqualTo(PRIMARY_TRIPPED); executor.tick(PRIMARY_TRIP_TIME - 1); assertThat(breaker.getState()).isEqualTo(PRIMARY_TRIPPED); executor.tick(1); assertThat(breaker.getState()).isEqualTo(PRIMARY_PROBE); breaker.requestComplete(false); assertThat(breaker.getState()).isEqualTo(SECONDARY_TRIPPED); executor.tick(SECONDARY_TRIP_TIME - 1); assertThat(breaker.getState()).isEqualTo(SECONDARY_TRIPPED); executor.tick(1); assertThat(breaker.getState()).isEqualTo(SECONDARY_PROBE); breaker.requestComplete(false); assertThat(breaker.getState()).isEqualTo(TERTIARY_TRIPPED); executor.tick(TERTIARY_TRIP_TIME - 1); assertThat(breaker.getState()).isEqualTo(TERTIARY_TRIPPED); executor.tick(1); assertThat(breaker.getState()).isEqualTo(TERTIARY_PROBE); breaker.requestComplete(false); assertThat(breaker.getState()).isEqualTo(TERTIARY_TRIPPED); executor.tick(TERTIARY_TRIP_TIME); assertThat(breaker.getState()).isEqualTo(TERTIARY_PROBE); breaker.requestComplete(true);
breaker.requestComplete(false); breaker.requestComplete(false); assertThat(breaker.getState()).isEqualTo(PRIMARY_TRIPPED); executor.tick(PRIMARY_TRIP_TIME); assertThat(breaker.getState()).isEqualTo(PRIMARY_PROBE); breaker.requestComplete(false); assertThat(breaker.getState()).isEqualTo(SECONDARY_TRIPPED); executor.tick(SECONDARY_TRIP_TIME); assertThat(breaker.getState()).isEqualTo(SECONDARY_PROBE); breaker.requestComplete(true); assertThat(breaker.getState()).isEqualTo(SECONDARY_HEALTHY); breaker.requestComplete(false); breaker.requestComplete(false); breaker.requestComplete(false); assertThat(breaker.getState()).isEqualTo(SECONDARY_TRIPPED); executor.tick(SECONDARY_TRIP_TIME); assertThat(breaker.getState()).isEqualTo(SECONDARY_PROBE); breaker.requestComplete(false); assertThat(breaker.getState()).isEqualTo(TERTIARY_TRIPPED); executor.tick(TERTIARY_TRIP_TIME); assertThat(breaker.getState()).isEqualTo(TERTIARY_PROBE); breaker.requestComplete(true); assertThat(breaker.getState()).isEqualTo(TERTIARY_HEALTHY); breaker.requestComplete(false); breaker.requestComplete(false); breaker.requestComplete(false); assertThat(breaker.getState()).isEqualTo(TERTIARY_TRIPPED);
breaker.requestComplete(false); breaker.requestComplete(false); assertThat(breaker.getState()).isEqualTo(PRIMARY_TRIPPED); executor.tick(PRIMARY_TRIP_TIME); assertThat(breaker.getState()).isEqualTo(PRIMARY_PROBE); breaker.requestComplete(false); assertThat(breaker.getState()).isEqualTo(SECONDARY_TRIPPED); executor.tick(SECONDARY_TRIP_TIME); assertThat(breaker.getState()).isEqualTo(SECONDARY_PROBE); breaker.requestComplete(true); assertThat(breaker.getState()).isEqualTo(SECONDARY_HEALTHY); breaker.requestComplete(false); breaker.requestComplete(false); assertThat(executor.scheduledTasks).hasSize(2); executor.tick(PRIMARY_TRIP_TIME); assertThat(breaker.getState()).isEqualTo(SECONDARY_PROBE); breaker.requestComplete(false); assertThat(breaker.getState()).isEqualTo(TERTIARY_TRIPPED); executor.tick(TERTIARY_TRIP_TIME); assertThat(breaker.getState()).isEqualTo(TERTIARY_PROBE); breaker.requestComplete(true); assertThat(breaker.getState()).isEqualTo(TERTIARY_HEALTHY); breaker.requestComplete(false); breaker.requestComplete(false);