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 920e5759c84b6d858d30a3f41063596c6310cd1b Author: Benoit Tellier <[email protected]> AuthorDate: Thu Oct 22 08:58:55 2020 +0700 JAMES-3433 Ensure CachedBlobStore is only queried for headers --- server/blob/blob-cassandra/pom.xml | 8 +++-- .../blob/cassandra/cache/CachedBlobStoreTest.java | 35 ++++++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/server/blob/blob-cassandra/pom.xml b/server/blob/blob-cassandra/pom.xml index ba5426f..3a07679 100644 --- a/server/blob/blob-cassandra/pom.xml +++ b/server/blob/blob-cassandra/pom.xml @@ -59,8 +59,7 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> - <artifactId>metrics-tests</artifactId> - <scope>test</scope> + <artifactId>james-server-mail-store</artifactId> </dependency> <dependency> <groupId>${james.groupId}</groupId> @@ -68,6 +67,11 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> + <artifactId>metrics-tests</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>${james.groupId}</groupId> <artifactId>testing-base</artifactId> <scope>test</scope> </dependency> diff --git a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CachedBlobStoreTest.java b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CachedBlobStoreTest.java index 580f910..1261075 100644 --- a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CachedBlobStoreTest.java +++ b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CachedBlobStoreTest.java @@ -34,8 +34,12 @@ import java.io.ByteArrayInputStream; import java.nio.charset.StandardCharsets; import java.time.Duration; +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.StatementRecorder; +import org.apache.james.backends.cassandra.StatementRecorder.Selector; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.blob.api.BlobId; import org.apache.james.blob.api.BlobStore; @@ -43,9 +47,13 @@ import org.apache.james.blob.api.BlobStoreContract; import org.apache.james.blob.api.BucketName; import org.apache.james.blob.api.HashBlobId; import org.apache.james.blob.api.ObjectNotFoundException; +import org.apache.james.blob.api.Store; import org.apache.james.blob.api.TestBlobId; 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.metrics.tests.RecordingMetricFactory; import org.assertj.core.api.SoftAssertions; import org.junit.jupiter.api.BeforeEach; @@ -298,6 +306,33 @@ public class CachedBlobStoreTest implements BlobStoreContract { .hasSameContentAs(new ByteArrayInputStream(APPROXIMATELY_FIVE_KILOBYTES)); } + @Test + public void cachedBlobStoreShouldOnlyBeQueriedForHeaders(CassandraCluster cassandra) throws Exception { + MimeMessage message = MimeMessageBuilder.mimeMessageBuilder() + .addHeader("Date", "Thu, 6 Sep 2018 13:29:13 +0700 (ICT)") + .addHeader("Message-ID", "<[email protected]>") + .addFrom("[email protected]") + .addToRecipient("[email protected]") + .setSubject("Important Mail") + .setText("Important mail content") + .build(); + + Store<MimeMessage, MimeMessagePartsId> mimeMessageStore = new MimeMessageStore.Factory(testee()) + .mimeMessageStore(); + MimeMessagePartsId partsId = mimeMessageStore + .save(message) + .block(); + + StatementRecorder statementRecorder = new StatementRecorder(); + cassandra.getConf().recordStatements(statementRecorder); + cassandra.getConf().printStatements(); + + mimeMessageStore.read(partsId).block(); + + assertThat(statementRecorder.listExecutedStatements(Selector.preparedStatementStartingWith("SELECT * FROM blob_cache"))) + .hasSize(1); + } + @Nested class MetricsTest { @Test --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
