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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
