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 <[email protected]>
Authored: Thu Aug 2 17:16:04 2018 +0700
Committer: Benoit Tellier <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to