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 rc...@apache.org on 2020/07/28 03:20:46 UTC

[james-project] 18/25: JAMES-3319 Rewrite a failure test to leverage Cassandra instrumentation

This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit b5c4607e26f6b0fa28abb77bffe3a40528638895
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Jul 24 11:45:40 2020 +0700

    JAMES-3319 Rewrite a failure test to leverage Cassandra instrumentation
---
 ...aMailRepositoryWithFakeImplementationsTest.java | 32 ++++++++--------------
 1 file changed, 11 insertions(+), 21 deletions(-)

diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryWithFakeImplementationsTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryWithFakeImplementationsTest.java
index 60f6ad9..2f0873a 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryWithFakeImplementationsTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryWithFakeImplementationsTest.java
@@ -20,13 +20,12 @@
 package org.apache.james.mailrepository.cassandra;
 
 import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
+import static org.apache.james.backends.cassandra.Scenario.Builder.fail;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import java.util.Optional;
 
-import javax.mail.internet.MimeMessage;
-
 import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.CassandraClusterExtension;
 import org.apache.james.backends.cassandra.components.CassandraModule;
@@ -35,11 +34,9 @@ import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule
 import org.apache.james.blob.api.BlobId;
 import org.apache.james.blob.api.BlobStore;
 import org.apache.james.blob.api.HashBlobId;
-import org.apache.james.blob.api.Store;
 import org.apache.james.blob.cassandra.BlobTables;
 import org.apache.james.blob.cassandra.CassandraBlobModule;
 import org.apache.james.blob.cassandra.CassandraBlobStoreFactory;
-import org.apache.james.blob.mail.MimeMessagePartsId;
 import org.apache.james.blob.mail.MimeMessageStore;
 import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.mailrepository.api.MailKey;
@@ -56,7 +53,6 @@ import com.datastax.driver.core.Session;
 
 import reactor.core.publisher.Mono;
 
-
 class CassandraMailRepositoryWithFakeImplementationsTest {
     @RegisterExtension
     static CassandraClusterExtension extension = new CassandraClusterExtension(
@@ -78,26 +74,20 @@ class CassandraMailRepositoryWithFakeImplementationsTest {
             CassandraMailRepositoryMailDaoAPI mailDAO = new CassandraMailRepositoryMailDAO(cassandra.getConf(), BLOB_ID_FACTORY, cassandra.getTypesProvider());
             keysDAO = new CassandraMailRepositoryKeysDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
             CassandraMailRepositoryCountDAO countDAO = new CassandraMailRepositoryCountDAO(cassandra.getConf());
+            BlobStore blobStore = CassandraBlobStoreFactory.forTesting(cassandra.getConf())
+                .deduplication();
 
             cassandraMailRepository = new CassandraMailRepository(URL,
-                    keysDAO, countDAO, mailDAO, new FailingStore());
-        }
-
-        class FailingStore implements Store<MimeMessage, MimeMessagePartsId> {
-
-            @Override
-            public Mono<MimeMessagePartsId> save(MimeMessage mimeMessage) {
-                return Mono.error(new RuntimeException("Expected failure while saving"));
-            }
-
-            @Override
-            public Mono<MimeMessage> read(MimeMessagePartsId blobIds) {
-                return Mono.error(new RuntimeException("Expected failure while reading"));
-            }
+                    keysDAO, countDAO, mailDAO, MimeMessageStore.factory(blobStore).mimeMessageStore());
         }
 
         @Test
-        void keysShouldNotBeStoredWhenStoringMimeMessageHasFailed() throws Exception {
+        void keysShouldNotBeStoredWhenStoringMimeMessageHasFailed(CassandraCluster cassandra) throws Exception {
+            cassandra.getConf()
+                .registerScenario(fail()
+                    .forever()
+                    .whenQueryStartsWith("INSERT INTO blobParts (id,chunkNumber,data) VALUES (:id,:chunkNumber,:data);"));
+
             MailImpl mail = MailImpl.builder()
                 .name("mymail")
                 .sender("sender@localhost")
@@ -112,7 +102,7 @@ class CassandraMailRepositoryWithFakeImplementationsTest {
 
             assertThatThrownBy(() -> cassandraMailRepository.store(mail))
                     .isInstanceOf(RuntimeException.class)
-                    .hasMessage("Expected failure while saving");
+                    .hasMessage("Injected failure");
 
             assertThat(keysDAO.list(URL).collectList().block()).isEmpty();
         }


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