JAMES-1925 Adding test for CassandraMailboxMapper upon concurrency

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

Branch: refs/heads/master
Commit: 09934b1fe006db1302f4d3b9379d393b5cfdba6d
Parents: 3a8d407
Author: Benoit Tellier <[email protected]>
Authored: Tue Feb 14 19:04:29 2017 +0700
Committer: Antoine Duprat <[email protected]>
Committed: Wed Feb 15 13:12:39 2017 +0100

----------------------------------------------------------------------
 .../CassandraMailboxMapperConcurrencyTest.java  | 27 +++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/09934b1f/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
index b6612be..14363c6 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
@@ -21,6 +21,7 @@ package org.apache.james.mailbox.cassandra.mail;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import java.util.List;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
@@ -28,12 +29,13 @@ import 
org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
 import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.apache.james.util.concurrency.ConcurrentTestRunner;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-
 public class CassandraMailboxMapperConcurrencyTest {
 
     public static final int MAX_RETRY = 10;
@@ -54,6 +56,11 @@ public class CassandraMailboxMapperConcurrencyTest {
         testee = new CassandraMailboxMapper(cassandra.getConf(), mailboxDAO, 
mailboxPathDAO, MAX_RETRY);
     }
 
+    @After
+    public void tearDown() {
+        cassandra.clearAllTables();
+    }
+
     @Test
     public void saveShouldBeThreadSafe() throws Exception {
         boolean termination = new ConcurrentTestRunner(THREAD_COUNT, 
OPERATION_COUNT,
@@ -64,4 +71,22 @@ public class CassandraMailboxMapperConcurrencyTest {
         assertThat(termination).isTrue();
         assertThat(testee.list()).hasSize(1);
     }
+
+    @Test
+    public void saveWithUpdateShouldBeThreadSafe() throws Exception {
+        SimpleMailbox mailbox = new SimpleMailbox(MAILBOX_PATH, UID_VALIDITY);
+        testee.save(mailbox);
+
+        mailbox.setName("newName");
+
+        boolean termination = new ConcurrentTestRunner(THREAD_COUNT, 
OPERATION_COUNT,
+            (a, b) -> testee.save(mailbox))
+            .run()
+            .awaitTermination(1, TimeUnit.MINUTES);
+
+        assertThat(termination).isTrue();
+        List<Mailbox> list = testee.list();
+        assertThat(list).hasSize(1);
+        assertThat(list.get(0)).isEqualToComparingFieldByField(mailbox);
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to