@Test public void getCircuitBreaker_returns_empty_if_disableCircuitBreaker_is_true() { // given RequestBuilderWrapper rbw = new RequestBuilderWrapper( "foo", "bar", mock(AsyncHttpClient.BoundRequestBuilder.class), Optional.of(mock(CircuitBreaker.class)), true); // when Optional<CircuitBreaker<Response>> result = helperSpy.getCircuitBreaker(rbw); // then assertThat(result).isEmpty(); }
@Test public void getCircuitBreaker_returns_custom_circuit_breaker_if_disableCircuitBreaker_is_false_and_customCircuitBreaker_exists() { // given Optional<CircuitBreaker<Response>> customCb = Optional.of(mock(CircuitBreaker.class)); RequestBuilderWrapper rbw = new RequestBuilderWrapper( "foo", "bar", mock(AsyncHttpClient.BoundRequestBuilder.class), customCb, false); // when Optional<CircuitBreaker<Response>> result = helperSpy.getCircuitBreaker(rbw); // then assertThat(result).isSameAs(customCb); }
getCircuitBreaker(requestBuilderWrapper).map(CircuitBreaker::newManualModeTask);
@DataProvider(value = { "true", "false" }, splitBy = "\\|") @Test public void executeAsyncHttpRequest_completes_future_if_exception_happens_during_setup( boolean throwCircuitBreakerOpenException) { // given RuntimeException exToThrow = (throwCircuitBreakerOpenException) ? new CircuitBreakerOpenException("foo", "kaboom") : new RuntimeException("kaboom"); doThrow(exToThrow).when(helperSpy).getCircuitBreaker(any(RequestBuilderWrapper.class)); Logger loggerMock = mock(Logger.class); Whitebox.setInternalState(helperSpy, "logger", loggerMock); // when CompletableFuture result = helperSpy .executeAsyncHttpRequest(mock(RequestBuilderWrapper.class), mock(AsyncResponseHandler.class), null, null); // then assertThat(result).isCompletedExceptionally(); Throwable ex = catchThrowable(result::get); assertThat(ex) .isInstanceOf(ExecutionException.class) .hasCause(exToThrow); if (throwCircuitBreakerOpenException) verifyZeroInteractions(loggerMock); else verify(loggerMock).error(anyString(), anyString(), anyString(), eq(exToThrow)); }
Optional<CircuitBreaker<Response>> result = helperSpy.getCircuitBreaker(rbw);
doReturn(Optional.of(circuitBreakerMock)).when(helperSpy).getCircuitBreaker(any(RequestBuilderWrapper.class)); ManualModeTask<Response> cbManualTaskMock = mock(ManualModeTask.class); doReturn(cbManualTaskMock).when(circuitBreakerMock).newManualModeTask(); verify(helperSpy).getCircuitBreaker(rbw); verify(cbManualTaskMock).throwExceptionIfCircuitBreakerIsOpen();