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/15 03:21:38 UTC

[03/30] james-project git commit: MAILBOX-372 update tests affected by retry mechanism

MAILBOX-372 update tests affected by retry mechanism

using Mockito mock invocations (call real method, throwing...)
doesn't make test defeats RabbitMQ asynchronous arbitrary dispatching
with retry backoff.

Define new dedicated listener class for this purpose.


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/44e75318
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/44e75318
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/44e75318

Branch: refs/heads/master
Commit: 44e7531881ae793218df77a6a8243bc9fe28aaee
Parents: fa22f9d
Author: tran tien duc <dt...@linagora.com>
Authored: Fri Jan 11 16:13:31 2019 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Tue Jan 15 09:55:22 2019 +0700

----------------------------------------------------------------------
 .../mailbox/events/EventBusTestFixture.java     | 32 +++++++++++++++-----
 .../james/mailbox/events/GroupContract.java     | 11 +++----
 2 files changed, 29 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/44e75318/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusTestFixture.java
----------------------------------------------------------------------
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 5d87c89..530bbe5 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
@@ -59,20 +59,38 @@ public interface EventBusTestFixture {
         }
     }
 
+    class EventMatcherThrowingListener extends MailboxListenerCountingSuccessfulExecution {
+        private final ImmutableSet<Event> eventsCauseThrowing;
+
+        EventMatcherThrowingListener(ImmutableSet<Event> eventsCauseThrowing) {
+            this.eventsCauseThrowing = eventsCauseThrowing;
+        }
+
+        @Override
+        public void event(Event event) {
+            if (eventsCauseThrowing.contains(event)) {
+                throw new RuntimeException("event triggers throwing");
+            }
+            super.event(event);
+        }
+    }
+
     class GroupA extends Group {}
     class GroupB extends Group {}
     class GroupC extends Group {}
 
-    MailboxListener.MailboxEvent EVENT = new MailboxListener.MailboxAdded(
-        MailboxSession.SessionId.of(42),
-        User.fromUsername("user"),
-        new MailboxPath(MailboxConstants.USER_NAMESPACE, "user", "mailboxName"),
-        TestId.of(18),
-        Event.EventId.random());
+    MailboxSession.SessionId SESSION_ID = MailboxSession.SessionId.of(42);
+    User USER = User.fromUsername("user");
+    MailboxPath MAILBOX_PATH = new MailboxPath(MailboxConstants.USER_NAMESPACE, "user", "mailboxName");
+    TestId TEST_ID = TestId.of(18);
+    Event.EventId EVENT_ID = Event.EventId.of("6e0dd59d-660e-4d9b-b22f-0354479f47b4");
+    Event.EventId EVENT_ID_2 = Event.EventId.of("5a7a9f3f-5f03-44be-b457-a51e93760645");
+    MailboxListener.MailboxEvent EVENT = new MailboxListener.MailboxAdded(SESSION_ID, USER, MAILBOX_PATH, TEST_ID, EVENT_ID);
+    MailboxListener.MailboxEvent EVENT_2 = new MailboxListener.MailboxAdded(SESSION_ID, USER, MAILBOX_PATH, TEST_ID, EVENT_ID_2);
 
     int ONE_SECOND = 1000;
     int FIVE_HUNDRED_MS = 500;
-    MailboxId ID_1 = TestId.of(18);
+    MailboxId ID_1 = TEST_ID;
     MailboxId ID_2 = TestId.of(24);
     ImmutableSet<RegistrationKey> NO_KEYS = ImmutableSet.of();
     MailboxIdRegistrationKey KEY_1 = new MailboxIdRegistrationKey(ID_1);

http://git-wip-us.apache.org/repos/asf/james-project/blob/44e75318/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 01b3583..c6bc1b2 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
@@ -20,6 +20,7 @@
 package org.apache.james.mailbox.events;
 
 import static org.apache.james.mailbox.events.EventBusTestFixture.EVENT;
+import static org.apache.james.mailbox.events.EventBusTestFixture.EVENT_2;
 import static org.apache.james.mailbox.events.EventBusTestFixture.FIVE_HUNDRED_MS;
 import static org.apache.james.mailbox.events.EventBusTestFixture.GroupA;
 import static org.apache.james.mailbox.events.EventBusTestFixture.GroupB;
@@ -34,7 +35,6 @@ import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.after;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.timeout;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -47,6 +47,7 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.TestId;
 import org.junit.jupiter.api.Test;
 
+import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.ImmutableSortedMap;
 
 public interface GroupContract {
@@ -171,15 +172,11 @@ public interface GroupContract {
 
         @Test
         default void failingGroupListenersShouldNotAbortGroupDelivery() {
-            EventBusTestFixture.MailboxListenerCountingSuccessfulExecution listener = spy(new EventBusTestFixture.MailboxListenerCountingSuccessfulExecution());
+            EventBusTestFixture.EventMatcherThrowingListener listener = new EventBusTestFixture.EventMatcherThrowingListener(ImmutableSet.of(EVENT));
             eventBus().register(listener, new GroupA());
 
-            doThrow(new RuntimeException())
-                .doCallRealMethod()
-                .when(listener).event(any());
-
-            eventBus().dispatch(EVENT, NO_KEYS).block();
             eventBus().dispatch(EVENT, NO_KEYS).block();
+            eventBus().dispatch(EVENT_2, NO_KEYS).block();
 
             WAIT_CONDITION
                 .until(() -> assertThat(listener.numberOfEventCalls()).isEqualTo(1));


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org