use of io.github.resilience4j.common.CompositeCustomizer in project resilience4j by resilience4j.
the class SpringBootCommonTest method testBulkHeadCommonConfig.
@Test
public void testBulkHeadCommonConfig() {
BulkheadConfigurationOnMissingBean bulkheadConfigurationOnMissingBean = new BulkheadConfigurationOnMissingBean();
assertThat(bulkheadConfigurationOnMissingBean.bulkheadRegistry(new BulkheadConfigurationProperties(), new DefaultEventConsumerRegistry<>(), new CompositeRegistryEventConsumer<>(Collections.emptyList()), new CompositeCustomizer<>(Collections.singletonList(BulkheadConfigCustomizer.of("backend", builder -> builder.maxConcurrentCalls(10)))))).isNotNull();
assertThat(bulkheadConfigurationOnMissingBean.threadPoolBulkheadRegistry(new ThreadPoolBulkheadConfigurationProperties(), new DefaultEventConsumerRegistry<>(), new CompositeRegistryEventConsumer<>(Collections.emptyList()), new CompositeCustomizer<>(Collections.singletonList(ThreadPoolBulkheadConfigCustomizer.of("backend", builder -> builder.coreThreadPoolSize(10)))))).isNotNull();
assertThat(bulkheadConfigurationOnMissingBean.reactorBulkHeadAspectExt()).isNotNull();
assertThat(bulkheadConfigurationOnMissingBean.rxJava2BulkHeadAspectExt()).isNotNull();
final DefaultSpelResolver spelResolver = new DefaultSpelResolver(new SpelExpressionParser(), new StandardReflectionParameterNameDiscoverer(), new GenericApplicationContext());
final FallbackDecorators fallbackDecorators = new FallbackDecorators(Collections.singletonList(new CompletionStageFallbackDecorator()));
assertThat(bulkheadConfigurationOnMissingBean.bulkheadAspect(new BulkheadConfigurationProperties(), ThreadPoolBulkheadRegistry.ofDefaults(), BulkheadRegistry.ofDefaults(), Collections.emptyList(), new FallbackExecutor(spelResolver, fallbackDecorators), spelResolver)).isNotNull();
assertThat(bulkheadConfigurationOnMissingBean.bulkheadRegistryEventConsumer(Optional.empty())).isNotNull();
}
use of io.github.resilience4j.common.CompositeCustomizer in project resilience4j by resilience4j.
the class BulkHeadConfigurationTest method testCreateThreadPoolBulkHeadRegistryWithSharedConfigs.
@Test
public void testCreateThreadPoolBulkHeadRegistryWithSharedConfigs() {
// Given
ThreadPoolBulkheadConfigurationProperties.InstanceProperties defaultProperties = new ThreadPoolBulkheadConfigurationProperties.InstanceProperties();
defaultProperties.setCoreThreadPoolSize(1);
defaultProperties.setQueueCapacity(1);
defaultProperties.setKeepAliveDuration(Duration.ofNanos(5));
defaultProperties.setMaxThreadPoolSize(10);
ThreadPoolBulkheadConfigurationProperties.InstanceProperties sharedProperties = new ThreadPoolBulkheadConfigurationProperties.InstanceProperties();
sharedProperties.setCoreThreadPoolSize(2);
sharedProperties.setQueueCapacity(2);
sharedProperties.setContextPropagators(TestThreadLocalContextPropagator.class);
ThreadPoolBulkheadConfigurationProperties.InstanceProperties backendWithDefaultConfig = new ThreadPoolBulkheadConfigurationProperties.InstanceProperties();
backendWithDefaultConfig.setBaseConfig("default");
backendWithDefaultConfig.setCoreThreadPoolSize(3);
ThreadPoolBulkheadConfigurationProperties.InstanceProperties backendWithSharedConfig = new ThreadPoolBulkheadConfigurationProperties.InstanceProperties();
backendWithSharedConfig.setBaseConfig("sharedConfig");
backendWithSharedConfig.setCoreThreadPoolSize(4);
backendWithSharedConfig.setContextPropagators(TestThreadLocalContextPropagator.class);
ThreadPoolBulkheadConfigurationProperties bulkheadConfigurationProperties = new ThreadPoolBulkheadConfigurationProperties();
bulkheadConfigurationProperties.getConfigs().put("default", defaultProperties);
bulkheadConfigurationProperties.getConfigs().put("sharedConfig", sharedProperties);
bulkheadConfigurationProperties.getBackends().put("backendWithDefaultConfig", backendWithDefaultConfig);
bulkheadConfigurationProperties.getBackends().put("backendWithSharedConfig", backendWithSharedConfig);
ThreadPoolBulkheadConfiguration threadPoolBulkheadConfiguration = new ThreadPoolBulkheadConfiguration();
DefaultEventConsumerRegistry<BulkheadEvent> eventConsumerRegistry = new DefaultEventConsumerRegistry<>();
// When
try {
ThreadPoolBulkheadRegistry bulkheadRegistry = threadPoolBulkheadConfiguration.threadPoolBulkheadRegistry(bulkheadConfigurationProperties, eventConsumerRegistry, new CompositeRegistryEventConsumer<>(emptyList()), new CompositeCustomizer<>(Collections.emptyList()));
// Then
assertThat(bulkheadRegistry.getAllBulkheads().size()).isEqualTo(2);
// Should get default config and core number
ThreadPoolBulkhead bulkhead1 = bulkheadRegistry.bulkhead("backendWithDefaultConfig");
assertThat(bulkhead1).isNotNull();
assertThat(bulkhead1.getBulkheadConfig().getCoreThreadPoolSize()).isEqualTo(3);
assertThat(bulkhead1.getBulkheadConfig().getQueueCapacity()).isEqualTo(1);
assertThat(bulkhead1.getBulkheadConfig().getContextPropagator()).isNotNull();
assertThat(bulkhead1.getBulkheadConfig().getContextPropagator()).isEmpty();
// Should get shared config and overwrite core number
ThreadPoolBulkhead bulkhead2 = bulkheadRegistry.bulkhead("backendWithSharedConfig");
assertThat(bulkhead2).isNotNull();
assertThat(bulkhead2.getBulkheadConfig().getCoreThreadPoolSize()).isEqualTo(4);
assertThat(bulkhead2.getBulkheadConfig().getQueueCapacity()).isEqualTo(2);
assertThat(bulkhead2.getBulkheadConfig().getContextPropagator()).isNotNull();
assertThat(bulkhead2.getBulkheadConfig().getContextPropagator().size()).isEqualTo(2);
List<Class<? extends ContextPropagator>> ctxPropagators = bulkhead2.getBulkheadConfig().getContextPropagator().stream().map(ctx -> ctx.getClass()).collect(Collectors.toList());
assertThat(ctxPropagators).containsExactlyInAnyOrder(TestThreadLocalContextPropagator.class, TestThreadLocalContextPropagator.class);
// Unknown backend should get default config of Registry
ThreadPoolBulkhead bulkhead3 = bulkheadRegistry.bulkhead("unknownBackend");
assertThat(bulkhead3).isNotNull();
assertThat(bulkhead3.getBulkheadConfig().getCoreThreadPoolSize()).isEqualTo(1);
assertThat(bulkhead3.getBulkheadConfig().getContextPropagator()).isNotNull();
assertThat(bulkhead3.getBulkheadConfig().getContextPropagator()).isEmpty();
assertThat(eventConsumerRegistry.getAllEventConsumer()).hasSize(3);
} catch (Exception e) {
System.out.println("exception in testCreateThreadPoolBulkHeadRegistryWithSharedConfigs():" + e);
}
}
use of io.github.resilience4j.common.CompositeCustomizer in project resilience4j by resilience4j.
the class BulkHeadConfigurationTest method testCreateBulkHeadRegistryWithUnknownConfig.
@Test
public void testCreateBulkHeadRegistryWithUnknownConfig() {
BulkheadConfigurationProperties bulkheadConfigurationProperties = new BulkheadConfigurationProperties();
io.github.resilience4j.common.bulkhead.configuration.BulkheadConfigurationProperties.InstanceProperties instanceProperties = new io.github.resilience4j.common.bulkhead.configuration.BulkheadConfigurationProperties.InstanceProperties();
instanceProperties.setBaseConfig("unknownConfig");
bulkheadConfigurationProperties.getInstances().put("backend", instanceProperties);
BulkheadConfiguration bulkheadConfiguration = new BulkheadConfiguration();
DefaultEventConsumerRegistry<BulkheadEvent> eventConsumerRegistry = new DefaultEventConsumerRegistry<>();
// When
assertThatThrownBy(() -> bulkheadConfiguration.bulkheadRegistry(bulkheadConfigurationProperties, eventConsumerRegistry, new CompositeRegistryEventConsumer<>(emptyList()), new CompositeCustomizer<>(Collections.emptyList()))).isInstanceOf(ConfigurationNotFoundException.class).hasMessage("Configuration with name 'unknownConfig' does not exist");
}
use of io.github.resilience4j.common.CompositeCustomizer in project resilience4j by resilience4j.
the class SpringBootCommonTest method testTimeLimiterCommonConfig.
@Test
public void testTimeLimiterCommonConfig() {
TimeLimiterConfigurationOnMissingBean timeLimiterConfigurationOnMissingBean = new TimeLimiterConfigurationOnMissingBean();
assertThat(timeLimiterConfigurationOnMissingBean.reactorTimeLimiterAspectExt()).isNotNull();
assertThat(timeLimiterConfigurationOnMissingBean.rxJava2TimeLimiterAspectExt()).isNotNull();
assertThat(timeLimiterConfigurationOnMissingBean.timeLimiterRegistry(new TimeLimiterConfigurationProperties(), new DefaultEventConsumerRegistry<>(), new CompositeRegistryEventConsumer<>(Collections.emptyList()), new CompositeCustomizer<>(Collections.singletonList(TimeLimiterConfigCustomizer.of("backend", builder -> builder.timeoutDuration(Duration.ofSeconds(10))))))).isNotNull();
final DefaultSpelResolver spelResolver = new DefaultSpelResolver(new SpelExpressionParser(), new StandardReflectionParameterNameDiscoverer(), new GenericApplicationContext());
final FallbackDecorators fallbackDecorators = new FallbackDecorators(Arrays.asList(new CompletionStageFallbackDecorator()));
assertThat(timeLimiterConfigurationOnMissingBean.timeLimiterAspect(new TimeLimiterConfigurationProperties(), TimeLimiterRegistry.ofDefaults(), Collections.emptyList(), new FallbackExecutor(spelResolver, fallbackDecorators), spelResolver, null)).isNotNull();
assertThat(timeLimiterConfigurationOnMissingBean.timeLimiterRegistryEventConsumer(Optional.empty())).isNotNull();
}
Aggregations