You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/05/31 05:09:00 UTC
[james-project] 02/03: JAMES-2774 wait until listener receive event
with fail fast
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 d32f57bbb3d9431923bb494cea71713d969df073
Author: RĂ©mi Kowalski <rk...@linagora.com>
AuthorDate: Mon May 27 17:21:42 2019 +0200
JAMES-2774 wait until listener receive event with fail fast
---
.../james/backend/rabbitmq/RabbitMQFixture.java | 4 +++
.../james/mailbox/events/RabbitMQEventBusTest.java | 33 +++++++++++++---------
2 files changed, 23 insertions(+), 14 deletions(-)
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQFixture.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQFixture.java
index 2920513..e8e63fc 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQFixture.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQFixture.java
@@ -22,6 +22,8 @@ package org.apache.james.backend.rabbitmq;
import static org.awaitility.Duration.ONE_HUNDRED_MILLISECONDS;
import static org.awaitility.Duration.ONE_MINUTE;
+import java.util.concurrent.TimeUnit;
+
import org.awaitility.Awaitility;
import org.awaitility.Duration;
import org.awaitility.core.ConditionFactory;
@@ -37,6 +39,7 @@ public interface RabbitMQFixture {
RabbitMQConfiguration.ManagementCredentials DEFAULT_MANAGEMENT_CREDENTIAL = new RabbitMQConfiguration.ManagementCredentials(DEFAULT_USER, DEFAULT_PASSWORD);
Duration slowPacedPollInterval = ONE_HUNDRED_MILLISECONDS;
+ Duration THIRTY_SECONDS = new Duration(30, TimeUnit.SECONDS);
ConditionFactory calmlyAwait = Awaitility.with()
.pollInterval(slowPacedPollInterval)
.and()
@@ -44,4 +47,5 @@ public interface RabbitMQFixture {
.pollDelay(slowPacedPollInterval)
.await();
ConditionFactory awaitAtMostOneMinute = calmlyAwait.atMost(ONE_MINUTE);
+ ConditionFactory awaitAtMostThirtySeconds = calmlyAwait.atMost(THIRTY_SECONDS);
}
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 ed9f0e0..bf35dd6 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
@@ -30,7 +30,6 @@ import static org.apache.james.mailbox.events.EventBusTestFixture.EVENT;
import static org.apache.james.mailbox.events.EventBusTestFixture.GROUP_A;
import static org.apache.james.mailbox.events.EventBusTestFixture.KEY_1;
import static org.apache.james.mailbox.events.EventBusTestFixture.NO_KEYS;
-import static org.apache.james.mailbox.events.EventBusTestFixture.THIRTY_SECONDS;
import static org.apache.james.mailbox.events.EventBusTestFixture.WAIT_CONDITION;
import static org.apache.james.mailbox.events.EventBusTestFixture.newListener;
import static org.apache.james.mailbox.events.GroupRegistration.WorkQueueName.MAILBOX_EVENT_WORK_QUEUE_PREFIX;
@@ -40,7 +39,6 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatCode;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.after;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
@@ -52,6 +50,7 @@ import java.nio.charset.StandardCharsets;
import java.util.concurrent.TimeUnit;
import org.apache.james.backend.rabbitmq.RabbitMQExtension;
+import org.apache.james.backend.rabbitmq.RabbitMQFixture;
import org.apache.james.backend.rabbitmq.RabbitMQManagementAPI;
import org.apache.james.event.json.EventSerializer;
import org.apache.james.mailbox.events.EventBusTestFixture.GroupA;
@@ -71,7 +70,6 @@ import org.junit.jupiter.api.extension.RegisterExtension;
import org.mockito.stubbing.Answer;
import com.rabbitmq.client.Connection;
-
import reactor.core.publisher.Mono;
import reactor.rabbitmq.BindingSpecification;
import reactor.rabbitmq.ExchangeSpecification;
@@ -322,7 +320,7 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract,
rabbitMQExtension.getRabbitMQ().unpause();
eventBus.dispatch(EVENT, NO_KEYS).block();
- verify(listener, after(THIRTY_SECONDS.toMillis()).times(1)).event(EVENT);
+ assertThatListenerReceiveOneEvent(listener);
}
@Test
@@ -334,7 +332,7 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract,
rabbitMQExtension.getRabbitMQ().restart();
eventBus.dispatch(EVENT, NO_KEYS).block();
- verify(listener, after(THIRTY_SECONDS.toMillis()).times(1)).event(EVENT);
+ assertThatListenerReceiveOneEvent(listener);
}
@Test
@@ -347,7 +345,9 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract,
eventBus.register(listener, GROUP_A);
eventBus.dispatch(EVENT, NO_KEYS).block();
- verify(listener, after(THIRTY_SECONDS.toMillis()).times(1)).event(EVENT);
+
+ assertThatListenerReceiveOneEvent(listener);
+
}
@Test
@@ -359,7 +359,7 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract,
rabbitMQExtension.getRabbitMQ().restart();
eventBus.reDeliver(GROUP_A, EVENT).block();
- verify(listener, after(THIRTY_SECONDS.toMillis()).times(1)).event(EVENT);
+ assertThatListenerReceiveOneEvent(listener);
}
@Test
@@ -372,7 +372,7 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract,
eventBus.register(listener, GROUP_A);
eventBus.reDeliver(GROUP_A, EVENT).block();
- verify(listener, after(THIRTY_SECONDS.toMillis()).times(1)).event(EVENT);
+ assertThatListenerReceiveOneEvent(listener);
}
@Test
@@ -384,7 +384,7 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract,
rabbitMQExtension.getRabbitMQ().restart();
eventBus.dispatch(EVENT, KEY_1).block();
- verify(listener, after(THIRTY_SECONDS.toMillis()).times(1)).event(EVENT);
+ assertThatListenerReceiveOneEvent(listener);
}
@Test
@@ -397,7 +397,7 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract,
eventBus.register(listener, KEY_1);
eventBus.dispatch(EVENT, KEY_1).block();
- verify(listener, after(THIRTY_SECONDS.toMillis()).times(1)).event(EVENT);
+ assertThatListenerReceiveOneEvent(listener);
}
@Test
@@ -414,7 +414,7 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract,
eventBus.register(listener, GROUP_A);
eventBus.dispatch(EVENT, NO_KEYS).block();
- verify(listener, after(THIRTY_SECONDS.toMillis()).times(1)).event(EVENT);
+ assertThatListenerReceiveOneEvent(listener);
}
@Test
@@ -431,7 +431,7 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract,
eventBus.register(listener, GROUP_A);
eventBus.reDeliver(GROUP_A, EVENT).block();
- verify(listener, after(THIRTY_SECONDS.toMillis()).times(1)).event(EVENT);
+ assertThatListenerReceiveOneEvent(listener);
}
@Test
@@ -449,7 +449,7 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract,
rabbitMQExtension.getRabbitMQ().unpause();
eventBus.dispatch(EVENT, KEY_1).block();
- verify(listener, after(THIRTY_SECONDS.toMillis()).times(1)).event(EVENT);
+ assertThatListenerReceiveOneEvent(listener);
}
@Test
@@ -467,7 +467,7 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract,
eventBus.register(listener, KEY_1);
eventBus.dispatch(EVENT, KEY_1).block();
- verify(listener, after(THIRTY_SECONDS.toMillis()).times(1)).event(EVENT);
+ assertThatListenerReceiveOneEvent(listener);
}
@Test
@@ -624,4 +624,9 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract,
}
}
+
+ private void assertThatListenerReceiveOneEvent(MailboxListener listener) {
+ RabbitMQFixture.awaitAtMostThirtySeconds
+ .untilAsserted(() -> verify(listener).event(EVENT));
+ }
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org