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 2018/08/03 08:52:32 UTC

[19/20] james-project git commit: JAMES-2449 Release all tests about snapshot isolation

JAMES-2449 Release all tests about snapshot isolation

Keep some tests about exception upon concurrent actions


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

Branch: refs/heads/master
Commit: d3f6f1ada9a86d2f12b39cd5cff3bece64c56963
Parents: f101b0d
Author: Benoit Tellier <bt...@linagora.com>
Authored: Thu Aug 2 17:16:04 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Aug 3 15:51:30 2018 +0700

----------------------------------------------------------------------
 .../queue/api/ManageableMailQueueContract.java  | 210 ++++++++++++++-----
 .../james/queue/file/FileMailQueueTest.java     |  63 ------
 2 files changed, 155 insertions(+), 118 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/d3f6f1ad/server/queue/queue-api/src/test/java/org/apache/james/queue/api/ManageableMailQueueContract.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-api/src/test/java/org/apache/james/queue/api/ManageableMailQueueContract.java b/server/queue/queue-api/src/test/java/org/apache/james/queue/api/ManageableMailQueueContract.java
index 00bac8d..53c4a4e 100644
--- a/server/queue/queue-api/src/test/java/org/apache/james/queue/api/ManageableMailQueueContract.java
+++ b/server/queue/queue-api/src/test/java/org/apache/james/queue/api/ManageableMailQueueContract.java
@@ -27,11 +27,14 @@ import static org.apache.mailet.base.MailAddressFixture.RECIPIENT2;
 import static org.apache.mailet.base.MailAddressFixture.RECIPIENT3;
 import static org.apache.mailet.base.MailAddressFixture.SENDER;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatCode;
 
 import org.apache.mailet.Mail;
 import org.apache.mailet.base.MailAddressFixture;
 import org.junit.jupiter.api.Test;
 
+import com.google.common.collect.Iterators;
+
 public interface ManageableMailQueueContract extends MailQueueContract {
 
     ManageableMailQueue getManageableMailQueue();
@@ -136,7 +139,25 @@ public interface ManageableMailQueueContract extends MailQueueContract {
     }
 
     @Test
-    default void concurrentDequeueShouldNotAlterBrowsing() throws Exception {
+    default void dequeueShouldNotFailWhenBrowsing() throws Exception {
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name1")
+            .build());
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name2")
+            .build());
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name3")
+            .build());
+
+        ManageableMailQueue.MailQueueIterator items = getManageableMailQueue().browse();
+
+        assertThatCode(() -> getManageableMailQueue().deQueue()).doesNotThrowAnyException();
+
+    }
+
+    @Test
+    default void browseShouldNotFailWhenConcurrentDequeue() throws Exception {
         getManageableMailQueue().enQueue(defaultMail()
             .name("name1")
             .build());
@@ -151,14 +172,11 @@ public interface ManageableMailQueueContract extends MailQueueContract {
 
         getManageableMailQueue().deQueue();
 
-        assertThat(items)
-            .extracting(ManageableMailQueue.MailQueueItemView::getMail)
-            .extracting(Mail::getName)
-            .containsExactly("name1", "name2", "name3");
+        assertThatCode(() ->  Iterators.consumingIterator(items)).doesNotThrowAnyException();
     }
 
     @Test
-    default void concurrentDequeueShouldNotAlterBrowsingWhenDequeueWhileIterating() throws Exception {
+    default void dequeueShouldNotFailWhenBrowsingIterating() throws Exception {
         getManageableMailQueue().enQueue(defaultMail()
             .name("name1")
             .build());
@@ -170,20 +188,34 @@ public interface ManageableMailQueueContract extends MailQueueContract {
             .build());
 
         ManageableMailQueue.MailQueueIterator items = getManageableMailQueue().browse();
+        ManageableMailQueue.MailQueueItemView firstItem = items.next();
+
+        assertThatCode(() -> getManageableMailQueue().deQueue()).doesNotThrowAnyException();
+
+    }
 
+    @Test
+    default void browseShouldNotFailWhenConcurrentDequeueWhenIterating() throws Exception {
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name1")
+            .build());
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name2")
+            .build());
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name3")
+            .build());
+
+        ManageableMailQueue.MailQueueIterator items = getManageableMailQueue().browse();
         ManageableMailQueue.MailQueueItemView firstItem = items.next();
 
         getManageableMailQueue().deQueue();
 
-        assertThat(firstItem.getMail().getName()).isEqualTo("name1");
-        assertThat(items)
-            .extracting(ManageableMailQueue.MailQueueItemView::getMail)
-            .extracting(Mail::getName)
-            .containsExactly("name2", "name3");
+        assertThatCode(() ->  Iterators.consumingIterator(items)).doesNotThrowAnyException();
     }
 
     @Test
-    default void browsingShouldNotAffectDequeue() throws Exception {
+    default void enqueueShouldNotFailWhenBrowsing() throws Exception {
         getManageableMailQueue().enQueue(defaultMail()
             .name("name1")
             .build());
@@ -195,149 +227,217 @@ public interface ManageableMailQueueContract extends MailQueueContract {
             .build());
 
         ManageableMailQueue.MailQueueIterator items = getManageableMailQueue().browse();
-        items.next();
 
-        MailQueue.MailQueueItem mailQueueItem = getManageableMailQueue().deQueue();
+        assertThatCode(() -> getManageableMailQueue().enQueue(defaultMail()
+            .name("name4")
+            .build())).doesNotThrowAnyException();
 
-        assertThat(mailQueueItem.getMail().getName()).isEqualTo("name1");
     }
 
     @Test
-    default void concurrentEnqueueShouldNotAlterBrowsingWhenDequeueWhileIterating() throws Exception {
+    default void browseShouldNotFailWhenConcurrentEnqueue() throws Exception {
         getManageableMailQueue().enQueue(defaultMail()
             .name("name1")
             .build());
         getManageableMailQueue().enQueue(defaultMail()
             .name("name2")
             .build());
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name3")
+            .build());
 
         ManageableMailQueue.MailQueueIterator items = getManageableMailQueue().browse();
 
-        ManageableMailQueue.MailQueueItemView firstItem = items.next();
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name4")
+            .build());
 
+        assertThatCode(() ->  Iterators.consumingIterator(items)).doesNotThrowAnyException();
+    }
+
+    @Test
+    default void enqueueShouldNotFailWhenBrowsingIterating() throws Exception {
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name1")
+            .build());
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name2")
+            .build());
         getManageableMailQueue().enQueue(defaultMail()
             .name("name3")
             .build());
 
-        assertThat(firstItem.getMail().getName()).isEqualTo("name1");
-        assertThat(items).extracting(ManageableMailQueue.MailQueueItemView::getMail)
-            .extracting(Mail::getName)
-            .containsExactly("name2");
+        ManageableMailQueue.MailQueueIterator items = getManageableMailQueue().browse();
+        ManageableMailQueue.MailQueueItemView firstItem = items.next();
+
+        assertThatCode(() ->
+            getManageableMailQueue().enQueue(defaultMail()
+                .name("name4")
+                .build()))
+            .doesNotThrowAnyException();
+
     }
 
     @Test
-    default void concurrentFlushShouldNotAlterBrowsingWhenDequeueWhileIterating() throws Exception {
+    default void browseShouldNotFailWhenConcurrentEnqueueWhenIterating() throws Exception {
         getManageableMailQueue().enQueue(defaultMail()
             .name("name1")
             .build());
         getManageableMailQueue().enQueue(defaultMail()
             .name("name2")
             .build());
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name3")
+            .build());
 
         ManageableMailQueue.MailQueueIterator items = getManageableMailQueue().browse();
-
         ManageableMailQueue.MailQueueItemView firstItem = items.next();
 
-        getManageableMailQueue().flush();
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name2")
+            .build());
 
-        assertThat(firstItem.getMail().getName()).isEqualTo("name1");
-        assertThat(items).extracting(ManageableMailQueue.MailQueueItemView::getMail)
-            .extracting(Mail::getName)
-            .containsExactly("name2");
+        assertThatCode(() ->  Iterators.consumingIterator(items)).doesNotThrowAnyException();
     }
 
     @Test
-    default void concurrentFlushShouldNotAlterBrowsing() throws Exception {
+    default void clearShouldNotFailWhenBrowsingIterating() throws Exception {
         getManageableMailQueue().enQueue(defaultMail()
             .name("name1")
             .build());
         getManageableMailQueue().enQueue(defaultMail()
             .name("name2")
             .build());
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name3")
+            .build());
 
         ManageableMailQueue.MailQueueIterator items = getManageableMailQueue().browse();
+        ManageableMailQueue.MailQueueItemView firstItem = items.next();
 
-        getManageableMailQueue().flush();
+        assertThatCode(() -> getManageableMailQueue().clear())
+            .doesNotThrowAnyException();
 
-        assertThat(items).extracting(ManageableMailQueue.MailQueueItemView::getMail)
-            .extracting(Mail::getName)
-            .containsExactly("name1", "name2");
     }
 
     @Test
-    default void concurrentClearShouldNotAlterBrowsingWhenDequeue() throws Exception {
+    default void browseShouldNotFailWhenConcurrentClearWhenIterating() throws Exception {
         getManageableMailQueue().enQueue(defaultMail()
             .name("name1")
             .build());
         getManageableMailQueue().enQueue(defaultMail()
             .name("name2")
             .build());
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name3")
+            .build());
 
         ManageableMailQueue.MailQueueIterator items = getManageableMailQueue().browse();
+        ManageableMailQueue.MailQueueItemView firstItem = items.next();
 
         getManageableMailQueue().clear();
 
-        assertThat(items).extracting(ManageableMailQueue.MailQueueItemView::getMail)
-            .extracting(Mail::getName)
-            .containsExactly("name1", "name2");
+        assertThatCode(() ->  Iterators.consumingIterator(items)).doesNotThrowAnyException();
     }
 
     @Test
-    default void concurrentRemoveShouldNotAlterBrowsingWhenDequeue() throws Exception {
+    default void flushShouldNotFailWhenBrowsingIterating() throws Exception {
         getManageableMailQueue().enQueue(defaultMail()
             .name("name1")
             .build());
         getManageableMailQueue().enQueue(defaultMail()
             .name("name2")
             .build());
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name3")
+            .build());
 
         ManageableMailQueue.MailQueueIterator items = getManageableMailQueue().browse();
+        ManageableMailQueue.MailQueueItemView firstItem = items.next();
 
-        getManageableMailQueue().remove(ManageableMailQueue.Type.Name, "name2");
+        assertThatCode(() -> getManageableMailQueue().flush())
+            .doesNotThrowAnyException();
 
-        assertThat(items).extracting(ManageableMailQueue.MailQueueItemView::getMail)
-            .extracting(Mail::getName)
-            .containsExactly("name1", "name2");
     }
 
     @Test
-    default void concurrentClearShouldNotAlterBrowsingWhenDequeueWhileIterating() throws Exception {
+    default void browseShouldNotFailWhenConcurrentFlushWhenIterating() throws Exception {
         getManageableMailQueue().enQueue(defaultMail()
             .name("name1")
             .build());
         getManageableMailQueue().enQueue(defaultMail()
             .name("name2")
             .build());
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name3")
+            .build());
 
         ManageableMailQueue.MailQueueIterator items = getManageableMailQueue().browse();
-        ManageableMailQueue.MailQueueItemView next = items.next();
+        ManageableMailQueue.MailQueueItemView firstItem = items.next();
 
-        getManageableMailQueue().clear();
+        getManageableMailQueue().flush();
 
-        assertThat(next.getMail().getName()).isEqualTo("name1");
-        assertThat(items).extracting(ManageableMailQueue.MailQueueItemView::getMail)
-            .extracting(Mail::getName)
-            .containsExactly("name2");
+        assertThatCode(() ->  Iterators.consumingIterator(items)).doesNotThrowAnyException();
     }
 
     @Test
-    default void concurrentRemoveShouldNotAlterBrowsingWhenDequeueWhileIterating() throws Exception {
+    default void removeShouldNotFailWhenBrowsingIterating() throws Exception {
         getManageableMailQueue().enQueue(defaultMail()
             .name("name1")
             .build());
         getManageableMailQueue().enQueue(defaultMail()
             .name("name2")
             .build());
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name3")
+            .build());
 
         ManageableMailQueue.MailQueueIterator items = getManageableMailQueue().browse();
-        ManageableMailQueue.MailQueueItemView next = items.next();
+        ManageableMailQueue.MailQueueItemView firstItem = items.next();
+
+        assertThatCode(() -> getManageableMailQueue().flush())
+            .doesNotThrowAnyException();
+
+    }
+
+    @Test
+    default void browseShouldNotFailWhenConcurrentRemoveWhenIterating() throws Exception {
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name1")
+            .build());
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name2")
+            .build());
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name3")
+            .build());
+
+        ManageableMailQueue.MailQueueIterator items = getManageableMailQueue().browse();
+        ManageableMailQueue.MailQueueItemView firstItem = items.next();
 
         getManageableMailQueue().remove(ManageableMailQueue.Type.Name, "name2");
 
-        assertThat(next.getMail().getName()).isEqualTo("name1");
-        assertThat(items).extracting(ManageableMailQueue.MailQueueItemView::getMail)
-            .extracting(Mail::getName)
-            .containsExactly("name2");
+        assertThatCode(() ->  Iterators.consumingIterator(items)).doesNotThrowAnyException();
+    }
+
+    @Test
+    default void browsingShouldNotAffectDequeue() throws Exception {
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name1")
+            .build());
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name2")
+            .build());
+        getManageableMailQueue().enQueue(defaultMail()
+            .name("name3")
+            .build());
+
+        ManageableMailQueue.MailQueueIterator items = getManageableMailQueue().browse();
+        items.next();
+
+        MailQueue.MailQueueItem mailQueueItem = getManageableMailQueue().deQueue();
+
+        assertThat(mailQueueItem.getMail().getName()).isEqualTo("name1");
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/d3f6f1ad/server/queue/queue-file/src/test/java/org/apache/james/queue/file/FileMailQueueTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-file/src/test/java/org/apache/james/queue/file/FileMailQueueTest.java b/server/queue/queue-file/src/test/java/org/apache/james/queue/file/FileMailQueueTest.java
index d829200..f044d8c 100644
--- a/server/queue/queue-file/src/test/java/org/apache/james/queue/file/FileMailQueueTest.java
+++ b/server/queue/queue-file/src/test/java/org/apache/james/queue/file/FileMailQueueTest.java
@@ -58,69 +58,6 @@ public class FileMailQueueTest implements DelayedManageableMailQueueContract {
 
     @Test
     @Override
-    @Disabled("JAMES-2299 No snapshot isolation")
-    public void concurrentClearShouldNotAlterBrowsingWhenDequeueWhileIterating() {
-
-    }
-
-    @Test
-    @Override
-    @Disabled("JAMES-2299 No snapshot isolation")
-    public void concurrentClearShouldNotAlterBrowsingWhenDequeue() {
-
-    }
-
-    @Test
-    @Override
-    @Disabled("JAMES-2299 No snapshot isolation")
-    public void concurrentDequeueShouldNotAlterBrowsing() {
-
-    }
-
-    @Test
-    @Override
-    @Disabled("JAMES-2299 No snapshot isolation")
-    public void concurrentDequeueShouldNotAlterBrowsingWhenDequeueWhileIterating() {
-
-    }
-
-    @Test
-    @Override
-    @Disabled("JAMES-2299 No snapshot isolation")
-    public void concurrentEnqueueShouldNotAlterBrowsingWhenDequeueWhileIterating() {
-
-    }
-
-    @Test
-    @Override
-    @Disabled("JAMES-2299 No snapshot isolation")
-    public void concurrentRemoveShouldNotAlterBrowsingWhenDequeueWhileIterating() {
-
-    }
-
-    @Test
-    @Override
-    @Disabled("JAMES-2299 No snapshot isolation")
-    public void concurrentFlushShouldNotAlterBrowsingWhenDequeueWhileIterating() {
-
-    }
-
-    @Test
-    @Override
-    @Disabled("JAMES-2299 No snapshot isolation")
-    public void concurrentFlushShouldNotAlterBrowsing() {
-
-    }
-
-    @Test
-    @Override
-    @Disabled("JAMES-2299 No snapshot isolation")
-    public void concurrentRemoveShouldNotAlterBrowsingWhenDequeue() {
-
-    }
-
-    @Test
-    @Override
     @Disabled("JAMES-2298 Not supported yet")
     public void removeBySenderShouldRemoveSpecificEmail() {
 


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