Search in sources :

Example 6 with TimeLimiterRegistry

use of io.github.resilience4j.timelimiter.TimeLimiterRegistry in project resilience4j by resilience4j.

the class InMemoryTimeLimiterRegistryTest method timeLimiterNewWithNullNonDefaultConfig.

@Test
public void timeLimiterNewWithNullNonDefaultConfig() {
    exception.expect(NullPointerException.class);
    exception.expectMessage(CONFIG_MUST_NOT_BE_NULL);
    TimeLimiterRegistry registry = new InMemoryTimeLimiterRegistry(config);
    registry.timeLimiter("name", (TimeLimiterConfig) null);
}
Also used : TimeLimiterRegistry(io.github.resilience4j.timelimiter.TimeLimiterRegistry) Test(org.junit.Test)

Example 7 with TimeLimiterRegistry

use of io.github.resilience4j.timelimiter.TimeLimiterRegistry in project resilience4j by resilience4j.

the class InMemoryTimeLimiterRegistryTest method timeLimiterGetAllTimeLimiters.

@Test
public void timeLimiterGetAllTimeLimiters() {
    TimeLimiterRegistry registry = new InMemoryTimeLimiterRegistry(config);
    final TimeLimiter timeLimiter = registry.timeLimiter("foo");
    then(registry.getAllTimeLimiters().size()).isEqualTo(1);
    then(registry.getAllTimeLimiters()).contains(timeLimiter);
}
Also used : TimeLimiter(io.github.resilience4j.timelimiter.TimeLimiter) TimeLimiterRegistry(io.github.resilience4j.timelimiter.TimeLimiterRegistry) Test(org.junit.Test)

Example 8 with TimeLimiterRegistry

use of io.github.resilience4j.timelimiter.TimeLimiterRegistry in project resilience4j by resilience4j.

the class InMemoryTimeLimiterRegistryTest method timeLimiterNewWithNullConfigSupplier.

@Test
public void timeLimiterNewWithNullConfigSupplier() {
    exception.expect(NullPointerException.class);
    exception.expectMessage("Supplier must not be null");
    TimeLimiterRegistry registry = new InMemoryTimeLimiterRegistry(config);
    registry.timeLimiter("name", (Supplier<TimeLimiterConfig>) null);
}
Also used : TimeLimiterRegistry(io.github.resilience4j.timelimiter.TimeLimiterRegistry) TimeLimiterConfig(io.github.resilience4j.timelimiter.TimeLimiterConfig) Test(org.junit.Test)

Example 9 with TimeLimiterRegistry

use of io.github.resilience4j.timelimiter.TimeLimiterRegistry in project resilience4j by resilience4j.

the class TimeLimiterConfigurationTest method testTimeLimiterRegistry.

@Test
public void testTimeLimiterRegistry() {
    // Given
    io.github.resilience4j.common.timelimiter.configuration.TimeLimiterConfigurationProperties.InstanceProperties instanceProperties1 = new io.github.resilience4j.common.timelimiter.configuration.TimeLimiterConfigurationProperties.InstanceProperties();
    instanceProperties1.setTimeoutDuration(Duration.ofSeconds(3));
    io.github.resilience4j.common.timelimiter.configuration.TimeLimiterConfigurationProperties.InstanceProperties instanceProperties2 = new io.github.resilience4j.common.timelimiter.configuration.TimeLimiterConfigurationProperties.InstanceProperties();
    instanceProperties2.setTimeoutDuration(Duration.ofSeconds(2));
    TimeLimiterConfigurationProperties timeLimiterConfigurationProperties = new TimeLimiterConfigurationProperties();
    timeLimiterConfigurationProperties.getInstances().put("backend1", instanceProperties1);
    timeLimiterConfigurationProperties.getInstances().put("backend2", instanceProperties2);
    timeLimiterConfigurationProperties.setTimeLimiterAspectOrder(200);
    TimeLimiterConfiguration timeLimiterConfiguration = new TimeLimiterConfiguration();
    DefaultEventConsumerRegistry<TimeLimiterEvent> eventConsumerRegistry = new DefaultEventConsumerRegistry<>();
    // When
    TimeLimiterRegistry timeLimiterRegistry = timeLimiterConfiguration.timeLimiterRegistry(timeLimiterConfigurationProperties, eventConsumerRegistry, new CompositeRegistryEventConsumer<>(emptyList()), compositeTimeLimiterCustomizerTestInstance());
    // Then
    assertThat(timeLimiterConfigurationProperties.getTimeLimiterAspectOrder()).isEqualTo(200);
    assertThat(timeLimiterRegistry.getAllTimeLimiters().size()).isEqualTo(2);
    TimeLimiter timeLimiter1 = timeLimiterRegistry.timeLimiter("backend1");
    assertThat(timeLimiter1).isNotNull();
    assertThat(timeLimiter1.getTimeLimiterConfig().getTimeoutDuration()).isEqualTo(Duration.ofSeconds(3));
    TimeLimiter timeLimiter2 = timeLimiterRegistry.timeLimiter("backend2");
    assertThat(timeLimiter2).isNotNull();
    assertThat(timeLimiter2.getTimeLimiterConfig().getTimeoutDuration()).isEqualTo(Duration.ofSeconds(2));
    assertThat(eventConsumerRegistry.getAllEventConsumer()).hasSize(2);
}
Also used : TimeLimiter(io.github.resilience4j.timelimiter.TimeLimiter) DefaultEventConsumerRegistry(io.github.resilience4j.consumer.DefaultEventConsumerRegistry) TimeLimiterRegistry(io.github.resilience4j.timelimiter.TimeLimiterRegistry) TimeLimiterEvent(io.github.resilience4j.timelimiter.event.TimeLimiterEvent) Test(org.junit.Test)

Example 10 with TimeLimiterRegistry

use of io.github.resilience4j.timelimiter.TimeLimiterRegistry in project resilience4j by resilience4j.

the class TimeLimiterConfigurationTest method testCreateTimeLimiterRegistryWithSharedConfigs.

@Test
public void testCreateTimeLimiterRegistryWithSharedConfigs() {
    // Given
    io.github.resilience4j.common.timelimiter.configuration.TimeLimiterConfigurationProperties.InstanceProperties defaultProperties = new io.github.resilience4j.common.timelimiter.configuration.TimeLimiterConfigurationProperties.InstanceProperties();
    defaultProperties.setTimeoutDuration(Duration.ofSeconds(3));
    defaultProperties.setCancelRunningFuture(true);
    io.github.resilience4j.common.timelimiter.configuration.TimeLimiterConfigurationProperties.InstanceProperties sharedProperties = new io.github.resilience4j.common.timelimiter.configuration.TimeLimiterConfigurationProperties.InstanceProperties();
    sharedProperties.setTimeoutDuration(Duration.ofSeconds(2));
    sharedProperties.setCancelRunningFuture(false);
    io.github.resilience4j.common.timelimiter.configuration.TimeLimiterConfigurationProperties.InstanceProperties backendWithDefaultConfig = new io.github.resilience4j.common.timelimiter.configuration.TimeLimiterConfigurationProperties.InstanceProperties();
    backendWithDefaultConfig.setBaseConfig("default");
    backendWithDefaultConfig.setTimeoutDuration(Duration.ofSeconds(5));
    io.github.resilience4j.common.timelimiter.configuration.TimeLimiterConfigurationProperties.InstanceProperties backendWithSharedConfig = new io.github.resilience4j.common.timelimiter.configuration.TimeLimiterConfigurationProperties.InstanceProperties();
    backendWithSharedConfig.setBaseConfig("sharedConfig");
    backendWithSharedConfig.setCancelRunningFuture(true);
    TimeLimiterConfigurationProperties timeLimiterConfigurationProperties = new TimeLimiterConfigurationProperties();
    timeLimiterConfigurationProperties.getConfigs().put("default", defaultProperties);
    timeLimiterConfigurationProperties.getConfigs().put("sharedConfig", sharedProperties);
    timeLimiterConfigurationProperties.getInstances().put("backendWithDefaultConfig", backendWithDefaultConfig);
    timeLimiterConfigurationProperties.getInstances().put("backendWithSharedConfig", backendWithSharedConfig);
    TimeLimiterConfiguration timeLimiterConfiguration = new TimeLimiterConfiguration();
    DefaultEventConsumerRegistry<TimeLimiterEvent> eventConsumerRegistry = new DefaultEventConsumerRegistry<>();
    // When
    TimeLimiterRegistry timeLimiterRegistry = timeLimiterConfiguration.timeLimiterRegistry(timeLimiterConfigurationProperties, eventConsumerRegistry, new CompositeRegistryEventConsumer<>(emptyList()), compositeTimeLimiterCustomizerTestInstance());
    // Then
    assertThat(timeLimiterRegistry.getAllTimeLimiters().size()).isEqualTo(2);
    // Should get default config and overwrite timeout duration
    TimeLimiter timeLimiter1 = timeLimiterRegistry.timeLimiter("backendWithDefaultConfig");
    assertThat(timeLimiter1).isNotNull();
    assertThat(timeLimiter1.getTimeLimiterConfig().getTimeoutDuration()).isEqualTo(Duration.ofSeconds(5));
    assertThat(timeLimiter1.getTimeLimiterConfig().shouldCancelRunningFuture()).isEqualTo(true);
    // Should get shared config and overwrite cancelRunningFuture
    TimeLimiter timeLimiter2 = timeLimiterRegistry.timeLimiter("backendWithSharedConfig");
    assertThat(timeLimiter2).isNotNull();
    assertThat(timeLimiter2.getTimeLimiterConfig().getTimeoutDuration()).isEqualTo(Duration.ofSeconds(2));
    assertThat(timeLimiter2.getTimeLimiterConfig().shouldCancelRunningFuture()).isEqualTo(true);
    // Unknown backend should get default config of Registry
    TimeLimiter timeLimiter3 = timeLimiterRegistry.timeLimiter("unknownBackend");
    assertThat(timeLimiter3).isNotNull();
    assertThat(timeLimiter3.getTimeLimiterConfig().getTimeoutDuration()).isEqualTo(Duration.ofSeconds(3));
    assertThat(eventConsumerRegistry.getAllEventConsumer()).hasSize(3);
}
Also used : TimeLimiter(io.github.resilience4j.timelimiter.TimeLimiter) DefaultEventConsumerRegistry(io.github.resilience4j.consumer.DefaultEventConsumerRegistry) TimeLimiterRegistry(io.github.resilience4j.timelimiter.TimeLimiterRegistry) TimeLimiterEvent(io.github.resilience4j.timelimiter.event.TimeLimiterEvent) Test(org.junit.Test)

Aggregations

TimeLimiterRegistry (io.github.resilience4j.timelimiter.TimeLimiterRegistry)17 Test (org.junit.Test)13 TimeLimiter (io.github.resilience4j.timelimiter.TimeLimiter)8 DefaultEventConsumerRegistry (io.github.resilience4j.consumer.DefaultEventConsumerRegistry)2 TimeLimiterConfig (io.github.resilience4j.timelimiter.TimeLimiterConfig)2 TimeLimiterEvent (io.github.resilience4j.timelimiter.event.TimeLimiterEvent)2 Meter (io.micrometer.core.instrument.Meter)2 MeterRegistry (io.micrometer.core.instrument.MeterRegistry)2 SimpleMeterRegistry (io.micrometer.core.instrument.simple.SimpleMeterRegistry)2 Requires (io.micronaut.context.annotation.Requires)1 CollectorRegistry (io.prometheus.client.CollectorRegistry)1 TimeoutException (java.util.concurrent.TimeoutException)1 Singleton (javax.inject.Singleton)1