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