You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2020/10/26 02:55:14 UTC
[james-project] 11/11: JAMES-3433 Ensure CachedBlobStore is only
queried for headers
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 <bt...@linagora.com>
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", "<84...@localhost.localdomain>")
+ .addFrom("any@any.com")
+ .addToRecipient("toddy@any.com")
+ .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: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org