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