This is an automated email from the ASF dual-hosted git repository. quantranhong1999 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit a3987253c3e83e8f2b1c20b16d2771bc985bbb0f Author: Benoit TELLIER <[email protected]> AuthorDate: Thu Sep 17 09:39:36 2026 +0200 [BUILD] Cassandra: play the 100MB test once --- .../blob/cassandra/CassandraBlobStoreContract.java | 25 ---------------- .../blob/cassandra/CassandraBlobStoreTest.java | 34 +++++++++++++++++++++- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobStoreContract.java b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobStoreContract.java index b6a6434feb..6f8883cbea 100644 --- a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobStoreContract.java +++ b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobStoreContract.java @@ -24,20 +24,15 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.Mockito.when; -import java.io.IOException; -import java.io.InputStream; import java.nio.charset.StandardCharsets; import org.apache.commons.io.IOUtils; import org.apache.james.blob.api.BlobId; import org.apache.james.blob.api.MetricableBlobStoreContract; import org.apache.james.blob.api.ObjectStoreException; -import org.apache.james.util.io.ZeroedInputStream; import org.junit.jupiter.api.Test; import com.google.common.base.Strings; -import com.google.common.hash.Hashing; -import com.google.common.hash.HashingInputStream; import reactor.core.publisher.Mono; @@ -89,24 +84,4 @@ public interface CassandraBlobStoreContract extends MetricableBlobStoreContract .isInstanceOf(IllegalArgumentException.class) .hasMessage("Deleting the default bucket is forbidden"); } - - @Test - default void blobStoreShouldSupport100MBBlob() throws IOException { - ZeroedInputStream data = new ZeroedInputStream(100_000_000); - HashingInputStream writeHash = new HashingInputStream(Hashing.sha256(), data); - BlobId blobId = Mono.from(testee().save(testee().getDefaultBucketName(), writeHash, LOW_COST)).block(); - - InputStream bytes = testee().read(testee().getDefaultBucketName(), blobId); - HashingInputStream readHash = new HashingInputStream(Hashing.sha256(), bytes); - consumeStream(readHash); - - assertThat(readHash.hash().toString()).isEqualTo(writeHash.hash().toString()); - } - - private void consumeStream(InputStream tmpMsgIn) throws IOException { - byte[] discard = new byte[4096]; - while (tmpMsgIn.read(discard) != -1) { - // consume the rest of the stream - } - } } diff --git a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobStoreTest.java b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobStoreTest.java index 53ab6a26a3..9ac47f1464 100644 --- a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobStoreTest.java +++ b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobStoreTest.java @@ -19,8 +19,13 @@ package org.apache.james.blob.cassandra; +import static org.apache.james.blob.api.BlobStore.StoragePolicy.LOW_COST; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.spy; +import java.io.IOException; +import java.io.InputStream; + import org.apache.james.backends.cassandra.CassandraCluster; import org.apache.james.backends.cassandra.CassandraClusterExtension; import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration; @@ -32,9 +37,16 @@ import org.apache.james.blob.api.MetricableBlobStore; import org.apache.james.blob.api.PlainBlobId; import org.apache.james.metrics.api.MetricFactory; import org.apache.james.server.blob.deduplication.BlobStoreFactory; +import org.apache.james.util.io.ZeroedInputStream; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; +import com.google.common.hash.Hashing; +import com.google.common.hash.HashingInputStream; + +import reactor.core.publisher.Mono; + public class CassandraBlobStoreTest implements CassandraBlobStoreContract, DeduplicationBlobStoreContract { @RegisterExtension static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraBlobDataDefinition.MODULE); @@ -81,4 +93,24 @@ public class CassandraBlobStoreTest implements CassandraBlobStoreContract, Dedup public CassandraDefaultBucketDAO defaultBucketDAO() { return defaultBucketDAO; } -} \ No newline at end of file + + @Test + void blobStoreShouldSupport100MBBlob() throws IOException { + ZeroedInputStream data = new ZeroedInputStream(100_000_000); + HashingInputStream writeHash = new HashingInputStream(Hashing.sha256(), data); + BlobId blobId = Mono.from(testee().save(testee().getDefaultBucketName(), writeHash, LOW_COST)).block(); + + InputStream bytes = testee().read(testee().getDefaultBucketName(), blobId); + HashingInputStream readHash = new HashingInputStream(Hashing.sha256(), bytes); + consumeStream(readHash); + + assertThat(readHash.hash().toString()).isEqualTo(writeHash.hash().toString()); + } + + private void consumeStream(InputStream tmpMsgIn) throws IOException { + byte[] discard = new byte[4096]; + while (tmpMsgIn.read(discard) != -1) { + // consume the rest of the stream + } + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
