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