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/01/11 09:58:21 UTC
[8/8] james-project git commit: MAILBOX-368 Add Multiple EventBus
tests for group registration
MAILBOX-368 Add Multiple EventBus tests for group registration
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/9fe9e627
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/9fe9e627
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/9fe9e627
Branch: refs/heads/master
Commit: 9fe9e627ac293a14f99a3e5e8901a21f03c70a39
Parents: ab2fa64
Author: datph <dp...@linagora.com>
Authored: Tue Jan 8 14:57:29 2019 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Jan 11 16:57:08 2019 +0700
----------------------------------------------------------------------
.../james/mailbox/events/EventBusContract.java | 5 +++
.../james/mailbox/events/GroupContract.java | 39 ++++++++++++++++++++
.../mailbox/events/RabbitMQEventBusTest.java | 11 +++++-
3 files changed, 54 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/9fe9e627/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusContract.java
----------------------------------------------------------------------
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 50d8d67..4abbdee 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
@@ -21,5 +21,10 @@ package org.apache.james.mailbox.events;
public interface EventBusContract {
+ interface MultipleEventBusContract extends EventBusContract {
+
+ EventBus eventBus2();
+ }
+
EventBus eventBus();
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/9fe9e627/mailbox/api/src/test/java/org/apache/james/mailbox/events/GroupContract.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/events/GroupContract.java b/mailbox/api/src/test/java/org/apache/james/mailbox/events/GroupContract.java
index 1820e80..01b3583 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/events/GroupContract.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/events/GroupContract.java
@@ -201,4 +201,43 @@ public interface GroupContract {
verify(listener, timeout(ONE_SECOND).times(1)).event(any());
}
}
+
+ interface MultipleEventBusGroupContract extends EventBusContract.MultipleEventBusContract {
+
+ @Test
+ default void groupsDefinedOnlyOnSomeNodesShouldBeNotified() {
+ MailboxListener mailboxListener = newListener();
+
+ eventBus().register(mailboxListener, new GroupA());
+
+ eventBus2().dispatch(EVENT, NO_KEYS).block();
+
+ verify(mailboxListener, timeout(ONE_SECOND).times(1)).event(any());
+ }
+
+ @Test
+ default void groupListenersShouldBeExecutedOnceInAControlledEnvironment() {
+ MailboxListener mailboxListener = newListener();
+
+ eventBus().register(mailboxListener, new GroupA());
+ eventBus2().register(mailboxListener, new GroupA());
+
+ eventBus2().dispatch(EVENT, NO_KEYS).block();
+
+ verify(mailboxListener, timeout(ONE_SECOND).times(1)).event(any());
+ }
+
+ @Test
+ default void unregisterShouldStopNotificationForDistantGroups() {
+ MailboxListener mailboxListener = newListener();
+
+ eventBus().register(mailboxListener, new GroupA()).unregister();
+
+ eventBus2().dispatch(EVENT, NO_KEYS).block();
+
+
+ verify(mailboxListener, after(FIVE_HUNDRED_MS).never())
+ .event(any());
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/9fe9e627/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/RabbitMQEventBusTest.java
----------------------------------------------------------------------
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 b39fb42..8f3ee9d 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
@@ -56,12 +56,13 @@ import reactor.rabbitmq.ReceiverOptions;
import reactor.rabbitmq.Sender;
import reactor.rabbitmq.SenderOptions;
-class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract {
+class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract, GroupContract.MultipleEventBusGroupContract {
@RegisterExtension
static RabbitMQExtension rabbitMQExtension = new RabbitMQExtension();
private RabbitMQEventBus eventBus;
+ private RabbitMQEventBus eventBus2;
private Sender sender;
private RabbitMQConnectionFactory connectionFactory;
private EventSerializer eventSerializer;
@@ -75,13 +76,16 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract
eventSerializer = new EventSerializer(mailboxIdFactory, new TestMessageId.Factory());
eventBus = new RabbitMQEventBus(connectionFactory, eventSerializer);
+ eventBus2 = new RabbitMQEventBus(connectionFactory, eventSerializer);
eventBus.start();
+ eventBus2.start();
sender = RabbitFlux.createSender(new SenderOptions().connectionMono(connectionMono));
}
@AfterEach
void tearDown() {
eventBus.stop();
+ eventBus2.stop();
ALL_GROUPS.stream()
.map(groupClass -> GroupRegistration.WorkQueueName.of(groupClass).asString())
.forEach(queueName -> sender.delete(QueueSpecification.queue(queueName)).block());
@@ -92,6 +96,11 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract
return eventBus;
}
+ @Override
+ public EventBus eventBus2() {
+ return eventBus2;
+ }
+
@Nested
class PublishingTest {
private static final String MAILBOX_WORK_QUEUE_NAME = MAILBOX_EVENT + "-workQueue";
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org