use of io.github.resilience4j.test.HelloWorldService in project resilience4j by resilience4j.
the class BulkheadMetricsTest method setUp.
@Before
public void setUp() {
metricRegistry = new MetricRegistry();
helloWorldService = mock(HelloWorldService.class);
executorService = Executors.newSingleThreadExecutor();
}
use of io.github.resilience4j.test.HelloWorldService in project resilience4j by resilience4j.
the class RunnableRetryTest method shouldReturnAfterOneAttemptAndIgnoreException.
@Test
public void shouldReturnAfterOneAttemptAndIgnoreException() {
// Given the HelloWorldService throws an exception
BDDMockito.willThrow(new WebServiceException("BAM!")).given(helloWorldService).sayHelloWorld();
// Create a Retry with default configuration
RetryConfig config = RetryConfig.custom().retryOnException(throwable -> Match(throwable).of(Case($(Predicates.instanceOf(WebServiceException.class)), false), Case($(), true))).build();
Retry retry = Retry.of("id", config);
// Decorate the invocation of the HelloWorldService
CheckedRunnable retryableRunnable = Retry.decorateCheckedRunnable(retry, helloWorldService::sayHelloWorld);
// When
Try<Void> result = Try.run(retryableRunnable);
// Then the helloWorldService should be invoked only once, because the exception should be rethrown immediately.
BDDMockito.then(helloWorldService).should(Mockito.times(1)).sayHelloWorld();
// and the result should be a failure
Assertions.assertThat(result.isFailure()).isTrue();
// and the returned exception should be of type RuntimeException
Assertions.assertThat(result.failed().get()).isInstanceOf(WebServiceException.class);
Assertions.assertThat(sleptTime).isEqualTo(0);
}
use of io.github.resilience4j.test.HelloWorldService in project resilience4j by resilience4j.
the class SupplierRetryTest method shouldReturnAfterOneAttemptAndIgnoreException.
@Test
public void shouldReturnAfterOneAttemptAndIgnoreException() {
// Given the HelloWorldService throws an exception
BDDMockito.given(helloWorldService.returnHelloWorld()).willThrow(new WebServiceException("BAM!"));
// Create a Retry with default configuration
RetryConfig config = RetryConfig.custom().retryOnException(throwable -> API.Match(throwable).of(API.Case($(Predicates.instanceOf(WebServiceException.class)), false), API.Case($(), true))).build();
Retry retry = Retry.of("id", config);
// Decorate the invocation of the HelloWorldService
CheckedFunction0<String> retryableSupplier = Retry.decorateCheckedSupplier(retry, helloWorldService::returnHelloWorld);
// When
Try<String> result = Try.of(retryableSupplier);
// Then the helloWorldService should be invoked only once, because the exception should be rethrown immediately.
BDDMockito.then(helloWorldService).should(Mockito.times(1)).returnHelloWorld();
// and the result should be a failure
assertThat(result.isFailure()).isTrue();
// and the returned exception should be of type RuntimeException
assertThat(result.failed().get()).isInstanceOf(WebServiceException.class);
assertThat(sleptTime).isEqualTo(0);
}
use of io.github.resilience4j.test.HelloWorldService in project resilience4j by resilience4j.
the class RetryEventPublisherTest method shouldConsumeIgnoredErrorEvent.
@Test
public void shouldConsumeIgnoredErrorEvent() {
given(helloWorldService.returnHelloWorld()).willThrow(new WebServiceException("BAM!"));
RetryConfig retryConfig = RetryConfig.custom().retryOnException(throwable -> Match(throwable).of(Case($(instanceOf(WebServiceException.class)), false), Case($(), true))).build();
retry = Retry.of("testName", retryConfig);
retry.getEventPublisher().onIgnoredError(event -> logger.info(event.getEventType().toString()));
Try.ofSupplier(Retry.decorateSupplier(retry, helloWorldService::returnHelloWorld));
then(logger).should(times(1)).info("IGNORED_ERROR");
then(helloWorldService).should(times(1)).returnHelloWorld();
}
use of io.github.resilience4j.test.HelloWorldService in project resilience4j by resilience4j.
the class CircuitBreakerMetricsTest method setUp.
@Before
public void setUp() {
metricRegistry = new MetricRegistry();
helloWorldService = mock(HelloWorldService.class);
}
Aggregations