@Test public void module_with_empty_configureModule_method_adds_no_component() { new Module() { @Override protected void configureModule() { // empty } }.configure(container); assertThat(sizeOf(container)).isSameAs(initialSize); }
@Test public void hasCorrectDataType() { assertThat(value.getDataType()).isSameAs(DATA_TYPE.getVendorTypeNumber()); }
@Test public void constructor_does_not_start_a_new_Thread() throws IOException { int activeCount = Thread.activeCount(); newCeServer(); assertThat(Thread.activeCount()).isSameAs(activeCount); }
@Test public void start_starts_a_new_Thread() throws IOException { int activeCount = Thread.activeCount(); newCeServer().start(); assertThat(Thread.activeCount()).isSameAs(activeCount + 1); }
@Test public void scanMain() { CoreSubscriber<GroupedFlux<Integer, String>> actual = new LambdaSubscriber<>(null, e -> {}, null, null); FluxGroupBy.GroupByMain<Integer, Integer, String> test = new FluxGroupBy.GroupByMain<>(actual, Queues.<GroupedFlux<Integer, String>>one().get(), Queues.one(), 123, i -> i % 5, i -> String.valueOf(i)); Subscription sub = Operators.emptySubscription(); test.onSubscribe(sub); assertThat(test.scan(Scannable.Attr.ACTUAL)).isSameAs(actual); assertThat(test.scan(Scannable.Attr.PARENT)).isSameAs(sub); assertThat(test.scan(Scannable.Attr.REQUESTED_FROM_DOWNSTREAM)).isEqualTo(Long.MAX_VALUE); assertThat(test.scan(Scannable.Attr.PREFETCH)).isSameAs(123); assertThat(test.scan(Scannable.Attr.BUFFERED)).isSameAs(0); assertThat(test.scan(Scannable.Attr.CANCELLED)).isFalse(); assertThat(test.scan(Scannable.Attr.TERMINATED)).isFalse(); assertThat(test.scan(Scannable.Attr.ERROR)).isNull(); test.error = new IllegalStateException("boom"); assertThat(test.scan(Scannable.Attr.ERROR)).isSameAs(test.error); }
@Test public void scanUnicastGroupedFlux() { CoreSubscriber<GroupedFlux<Integer, String>> actual = new LambdaSubscriber<>(null, e -> {}, null, null); FluxGroupBy.GroupByMain<Integer, Integer, String> main = new FluxGroupBy.GroupByMain<>(actual, Queues.<GroupedFlux<Integer, String>>one().get(), Queues.one(), 123, i -> i % 5, i -> String.valueOf(i)); FluxGroupBy.UnicastGroupedFlux<Integer, String> test = new FluxGroupBy.UnicastGroupedFlux<Integer, String>(1, Queues.<String>one().get(), main, 123); CoreSubscriber<String> sub = new LambdaSubscriber<>(null, e -> {}, null, null); test.subscribe(sub); assertThat(test.scan(Scannable.Attr.ACTUAL)).isSameAs(sub); assertThat(test.scan(Scannable.Attr.PARENT)).isSameAs(main); assertThat(test.scan(Scannable.Attr.REQUESTED_FROM_DOWNSTREAM)).isEqualTo(Long.MAX_VALUE); assertThat(test.scan(Scannable.Attr.BUFFERED)).isSameAs(0); assertThat(test.scan(Scannable.Attr.CANCELLED)).isFalse(); assertThat(test.scan(Scannable.Attr.TERMINATED)).isFalse(); assertThat(test.scan(Scannable.Attr.ERROR)).isNull(); test.error = new IllegalStateException("boom"); assertThat(test.scan(Scannable.Attr.ERROR)).isSameAs(test.error); }
public void verifyDefaultsForEverything(CircuitBreakerImpl cb) { assertThat(cb.scheduler).isSameAs(cb.getDefaultScheduledExecutorService()); assertThat(cb.stateChangeNotificationExecutor).isSameAs(cb.getDefaultStateChangeNotificationExecutorService()); assertThat(cb.maxConsecutiveFailuresAllowed).isSameAs(cb.FALLBACK_DEFAULT_MAX_CONSECUTIVE_FAILURES_ALLOWED); assertThat(cb.resetTimeoutNanos).isEqualTo(Duration.ofSeconds(cb.DEFAULT_RESET_TIMEOUT_SECONDS).toNanos()); assertThat(cb.callTimeoutNanos).isEqualTo(Optional.empty()); assertThat(cb.breakingEventStrategy).isSameAs(cb.DEFAULT_BREAKING_EVENT_STRATEGY); assertThat(cb.breakingExceptionStrategy).isSameAs(cb.DEFAULT_BREAKING_EXCEPTION_STRATEGY); assertDefaultGeneratedCircuitBreakerId(cb); }
@Test public void kitchen_sink_constructor_uses_defaults_for_empty_args() { // when CircuitBreakerForHttpStatusCode cb = new CircuitBreakerForHttpStatusCode(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); // then assertThat(cb.scheduler).isSameAs(cb.getDefaultScheduledExecutorService()); assertThat(cb.stateChangeNotificationExecutor).isSameAs(cb.getDefaultStateChangeNotificationExecutorService()); assertThat(cb.maxConsecutiveFailuresAllowed).isSameAs(cb.FALLBACK_DEFAULT_MAX_CONSECUTIVE_FAILURES_ALLOWED); assertThat(cb.resetTimeoutNanos).isEqualTo(Duration.ofSeconds(cb.DEFAULT_RESET_TIMEOUT_SECONDS).toNanos()); assertThat(cb.callTimeoutNanos).isEqualTo(Optional.empty()); assertThat(cb.breakingEventStrategy).isSameAs(cb.DEFAULT_HTTP_RESPONSE_BREAKING_EVENT_STRATEGY); assertThat(cb.breakingExceptionStrategy).isSameAs(cb.DEFAULT_BREAKING_EXCEPTION_STRATEGY); assertDefaultGeneratedCircuitBreakerId(cb); }
@Test public void kitchen_sink_constructor_uses_non_empty_arguments_passed_in() { // given ScheduledExecutorService scheduler = mock(ScheduledExecutorService.class); ExecutorService scne = mock(ExecutorService.class); Integer maxFailures = 42; Duration resetTimeout = Duration.ofSeconds(42); Optional<Duration> callTimeout = Optional.of(Duration.ofSeconds(4242)); String id = UUID.randomUUID().toString(); // when CircuitBreakerForHttpStatusCode cb = new CircuitBreakerForHttpStatusCode(Optional.of(scheduler), Optional.of(scne), Optional.of(maxFailures), Optional.of(resetTimeout), callTimeout, Optional.of(id)); // then assertThat(cb.scheduler).isSameAs(scheduler); assertThat(cb.stateChangeNotificationExecutor).isSameAs(scne); assertThat(cb.maxConsecutiveFailuresAllowed).isSameAs(maxFailures); assertThat(cb.resetTimeoutNanos).isEqualTo(resetTimeout.toNanos()); assertThat(cb.callTimeoutNanos).isEqualTo(callTimeout.map(Duration::toNanos)); assertThat(cb.id).isSameAs(id); assertThat(cb.breakingEventStrategy).isSameAs(cb.DEFAULT_HTTP_RESPONSE_BREAKING_EVENT_STRATEGY); assertThat(cb.breakingExceptionStrategy).isSameAs(cb.DEFAULT_BREAKING_EXCEPTION_STRATEGY); }
@Test public void orReturnTest() throws Throwable { final ThrowingComparator<Type1> throwing = getThrowing(); configureFull(throwing); final Comparator<Type1> comparator = getChain(throwing).orReturn(ret2); final Callable<Integer> callable = toCallable(comparator); assertThat(callable.call()).isSameAs(ret1); assertThat(callable.call()).isSameAs(ret2); verifyUncheckedThrow(callable); verifyErrorThrow(callable); } }
@Test public void kitchen_sink_constructor_uses_non_empty_arguments_passed_in() { // given ScheduledExecutorService scheduler = mock(ScheduledExecutorService.class); ExecutorService scne = mock(ExecutorService.class); Integer maxFailures = 42; Duration resetTimeout = Duration.ofSeconds(42); Optional<Duration> callTimeout = Optional.of(Duration.ofSeconds(4242)); String id = UUID.randomUUID().toString(); BreakingEventStrategy<String> eventStrategy = mock(BreakingEventStrategy.class); BreakingExceptionStrategy errorStrategy = mock(BreakingExceptionStrategy.class); // when CircuitBreakerImpl<String> cb = new CircuitBreakerImpl<>( Optional.of(scheduler), Optional.of(scne), Optional.of(maxFailures), Optional.of(resetTimeout), callTimeout, Optional.of(id), Optional.of(eventStrategy), Optional.of(errorStrategy) ); // then assertThat(cb.scheduler).isSameAs(scheduler); assertThat(cb.stateChangeNotificationExecutor).isSameAs(scne); assertThat(cb.maxConsecutiveFailuresAllowed).isSameAs(maxFailures); assertThat(cb.resetTimeoutNanos).isEqualTo(resetTimeout.toNanos()); assertThat(cb.callTimeoutNanos).isEqualTo(callTimeout.map(Duration::toNanos)); assertThat(cb.id).isSameAs(id); assertThat(cb.breakingEventStrategy).isSameAs(eventStrategy); assertThat(cb.breakingExceptionStrategy).isSameAs(errorStrategy); }
@Test public void default_constructor_uses_defaults_for_everything() { // when CircuitBreakerForHttpStatusCode cb = new CircuitBreakerForHttpStatusCode(); // then assertThat(cb.scheduler).isSameAs(cb.getDefaultScheduledExecutorService()); assertThat(cb.stateChangeNotificationExecutor).isSameAs(cb.getDefaultStateChangeNotificationExecutorService()); assertThat(cb.maxConsecutiveFailuresAllowed).isSameAs(cb.FALLBACK_DEFAULT_MAX_CONSECUTIVE_FAILURES_ALLOWED); assertThat(cb.resetTimeoutNanos).isEqualTo(Duration.ofSeconds(cb.DEFAULT_RESET_TIMEOUT_SECONDS).toNanos()); assertThat(cb.callTimeoutNanos).isEqualTo(Optional.empty()); assertThat(cb.breakingEventStrategy).isSameAs(cb.DEFAULT_HTTP_RESPONSE_BREAKING_EVENT_STRATEGY); assertThat(cb.breakingExceptionStrategy).isSameAs(cb.DEFAULT_BREAKING_EXCEPTION_STRATEGY); assertDefaultGeneratedCircuitBreakerId(cb); }
assertThat(cb.maxConsecutiveFailuresAllowed).isSameAs(cb.FALLBACK_DEFAULT_MAX_CONSECUTIVE_FAILURES_ALLOWED); assertThat(cb.resetTimeoutNanos).isEqualTo(Duration.ofSeconds(cb.DEFAULT_RESET_TIMEOUT_SECONDS).toNanos()); assertThat(cb.callTimeoutNanos).isEqualTo(Optional.empty());
@DataProvider(value = { "true", "false" }, splitBy = "\\|") @Test public void builder_constructor_with_strategy_results_in_expected_circuit_breaker_values(boolean useFactoryMethod) { // given BreakingEventStrategy<Integer> besMock = mock(BreakingEventStrategy.class); CircuitBreakerImpl.Builder<Integer> builder = (useFactoryMethod) ? CircuitBreakerImpl.newBuilder(besMock) : new CircuitBreakerImpl.Builder<>(besMock); // when CircuitBreakerImpl<Integer> cb = builder.build(); // then assertThat(cb.scheduler).isSameAs(cb.getDefaultScheduledExecutorService()); assertThat(cb.stateChangeNotificationExecutor).isSameAs(cb.getDefaultStateChangeNotificationExecutorService()); assertThat(cb.maxConsecutiveFailuresAllowed).isSameAs(cb.FALLBACK_DEFAULT_MAX_CONSECUTIVE_FAILURES_ALLOWED); assertThat(cb.resetTimeoutNanos).isEqualTo(Duration.ofSeconds(cb.DEFAULT_RESET_TIMEOUT_SECONDS).toNanos()); assertThat(cb.callTimeoutNanos).isEqualTo(Optional.empty()); assertThat(cb.breakingEventStrategy).isSameAs(besMock); assertThat(cb.breakingExceptionStrategy).isSameAs(cb.DEFAULT_BREAKING_EXCEPTION_STRATEGY); assertDefaultGeneratedCircuitBreakerId(cb); }
assertThat(cb.maxConsecutiveFailuresAllowed).isSameAs(cb.FALLBACK_DEFAULT_MAX_CONSECUTIVE_FAILURES_ALLOWED); assertThat(cb.resetTimeoutNanos).isEqualTo(Duration.ofSeconds(cb.DEFAULT_RESET_TIMEOUT_SECONDS).toNanos()); assertThat(cb.callTimeoutNanos).isEqualTo(Optional.empty());
assertThat(cb.maxConsecutiveFailuresAllowed).isSameAs(maxFailures); assertThat(cb.resetTimeoutNanos).isEqualTo(resetTimeout.toNanos()); assertThat(cb.callTimeoutNanos).isEqualTo(Optional.of(callTimeout.toNanos()));