This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 0c57b6987178bcdbe745272527f35f20ab91b3a6 Author: Benoit Tellier <[email protected]> AuthorDate: Mon Jul 27 11:41:17 2020 +0700 JAMES-3350 Decrease backoff for RabbitMQEventBusTest Use lower backoff values for testing instead of production ones --- .../james/mailbox/events/ErrorHandlingContract.java | 21 ++++++++++----------- .../james/mailbox/events/EventBusContract.java | 8 ++++++-- .../james/mailbox/events/EventBusTestFixture.java | 5 ++--- .../james/mailbox/events/RabbitMQEventBusTest.java | 2 +- 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/events/ErrorHandlingContract.java b/mailbox/api/src/test/java/org/apache/james/mailbox/events/ErrorHandlingContract.java index b598ac1..96642cb 100644 --- a/mailbox/api/src/test/java/org/apache/james/mailbox/events/ErrorHandlingContract.java +++ b/mailbox/api/src/test/java/org/apache/james/mailbox/events/ErrorHandlingContract.java @@ -65,6 +65,10 @@ interface ErrorHandlingContract extends EventBusContract { timeElapsed.add(Instant.now()); throw new RuntimeException("throw to trigger reactor retry"); } + + public int executionCount() { + return timeElapsed.size(); + } } EventDeadLetters deadLetter(); @@ -114,11 +118,6 @@ interface ErrorHandlingContract extends EventBusContract { doThrow(new RuntimeException()) .doThrow(new RuntimeException()) .doThrow(new RuntimeException()) - .doThrow(new RuntimeException()) - .doThrow(new RuntimeException()) - .doThrow(new RuntimeException()) - .doThrow(new RuntimeException()) - .doThrow(new RuntimeException()) .doCallRealMethod() .when(eventCollector).event(EVENT); @@ -161,12 +160,12 @@ interface ErrorHandlingContract extends EventBusContract { eventBus().register(throwingListener, GROUP_A); eventBus().dispatch(EVENT, NO_KEYS).block(); - Thread.sleep(getSpeedProfile().getLongWaitTime().toMillis()); - int numberOfCallsAfterExceedMaxRetries = throwingListener.timeElapsed.size(); - Thread.sleep(getSpeedProfile().getLongWaitTime().toMillis()); + getSpeedProfile().shortWaitCondition() + .untilAsserted(() -> assertThat(throwingListener.executionCount()).isEqualTo(4)); + Thread.sleep(getSpeedProfile().getShortWaitTime().toMillis()); - assertThat(throwingListener.timeElapsed.size()) - .isEqualTo(numberOfCallsAfterExceedMaxRetries); + assertThat(throwingListener.executionCount()) + .isEqualTo(4); } @Test @@ -176,7 +175,7 @@ interface ErrorHandlingContract extends EventBusContract { eventBus().register(throwingListener, GROUP_A); eventBus().dispatch(EVENT, NO_KEYS).block(); - Thread.sleep(getSpeedProfile().getLongWaitTime().toMillis()); + Thread.sleep(getSpeedProfile().getShortWaitTime().toMillis()); SoftAssertions.assertSoftly(softly -> { List<Instant> timeElapsed = throwingListener.timeElapsed; softly.assertThat(timeElapsed).hasSize(RETRY_BACKOFF_CONFIGURATION.getMaxRetries() + 1); diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusContract.java b/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusContract.java index 055eea3..e21644f 100644 --- a/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusContract.java +++ b/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusContract.java @@ -49,11 +49,15 @@ public interface EventBusContract { } public ConditionFactory shortWaitCondition() { - return await().timeout(new org.awaitility.Duration(this.getShortWaitTime().toMillis(), TimeUnit.MILLISECONDS)); + return await().pollDelay(org.awaitility.Duration.ZERO) + .pollInterval(org.awaitility.Duration.ONE_HUNDRED_MILLISECONDS) + .timeout(new org.awaitility.Duration(this.getShortWaitTime().toMillis(), TimeUnit.MILLISECONDS)); } public ConditionFactory longWaitCondition() { - return await().timeout(new org.awaitility.Duration(this.getLongWaitTime().toMillis(), TimeUnit.MILLISECONDS)); + return await().pollDelay(org.awaitility.Duration.ZERO) + .pollInterval(org.awaitility.Duration.ONE_HUNDRED_MILLISECONDS) + .timeout(new org.awaitility.Duration(this.getLongWaitTime().toMillis(), TimeUnit.MILLISECONDS)); } } diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusTestFixture.java b/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusTestFixture.java index 440ba39..b0bd987 100644 --- a/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusTestFixture.java +++ b/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusTestFixture.java @@ -20,7 +20,6 @@ package org.apache.james.mailbox.events; import static org.apache.james.mailbox.events.RetryBackoffConfiguration.DEFAULT_JITTER_FACTOR; -import static org.apache.james.mailbox.events.RetryBackoffConfiguration.DEFAULT_MAX_RETRIES; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -115,10 +114,10 @@ public interface EventBusTestFixture { GroupC GROUP_C = new GroupC(); List<Group> ALL_GROUPS = ImmutableList.of(GROUP_A, GROUP_B, GROUP_C); - java.time.Duration DEFAULT_FIRST_BACKOFF = java.time.Duration.ofMillis(20); + java.time.Duration DEFAULT_FIRST_BACKOFF = java.time.Duration.ofMillis(5); //Retry backoff configuration for testing with a shorter first backoff to accommodate the shorter retry interval in tests RetryBackoffConfiguration RETRY_BACKOFF_CONFIGURATION = RetryBackoffConfiguration.builder() - .maxRetries(DEFAULT_MAX_RETRIES) + .maxRetries(3) .firstBackoff(DEFAULT_FIRST_BACKOFF) .jitterFactor(DEFAULT_JITTER_FACTOR) .build(); diff --git a/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/RabbitMQEventBusTest.java b/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/RabbitMQEventBusTest.java index 1fab4cc..feb188e 100644 --- a/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/RabbitMQEventBusTest.java +++ b/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/RabbitMQEventBusTest.java @@ -153,7 +153,7 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract, } private RabbitMQEventBus newEventBus(Sender sender, ReceiverProvider receiverProvider) { - return new RabbitMQEventBus(sender, receiverProvider, eventSerializer, RetryBackoffConfiguration.DEFAULT, routingKeyConverter, memoryEventDeadLetters, new RecordingMetricFactory()); + return new RabbitMQEventBus(sender, receiverProvider, eventSerializer, EventBusTestFixture.RETRY_BACKOFF_CONFIGURATION, routingKeyConverter, memoryEventDeadLetters, new RecordingMetricFactory()); } @Override --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
