This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 5757d7fbd5d2710a1a924d76f3f00eeaf05a12ea Author: Benoit Tellier <[email protected]> AuthorDate: Fri Jul 31 13:56:42 2020 +0700 JAMES-3028 Significantly fasten S3 test - Avoid docker restarts - Using memory backend Yield a x7 testing time improvement --- .../blob/objectstorage/aws/DockerAwsS3Container.java | 4 ++-- .../blob/objectstorage/aws/DockerAwsS3Extension.java | 20 ++------------------ .../blob/objectstorage/aws/S3BlobStoreTest.java | 16 ++++++++++------ .../blob/objectstorage/aws/S3DumbBlobStoreTest.java | 16 +++++++++------- 4 files changed, 23 insertions(+), 33 deletions(-) diff --git a/server/blob/blob-s3/src/test/java/org/apache/james/blob/objectstorage/aws/DockerAwsS3Container.java b/server/blob/blob-s3/src/test/java/org/apache/james/blob/objectstorage/aws/DockerAwsS3Container.java index 7b44d07..98e0e80 100644 --- a/server/blob/blob-s3/src/test/java/org/apache/james/blob/objectstorage/aws/DockerAwsS3Container.java +++ b/server/blob/blob-s3/src/test/java/org/apache/james/blob/objectstorage/aws/DockerAwsS3Container.java @@ -28,7 +28,7 @@ import org.testcontainers.containers.wait.strategy.Wait; public class DockerAwsS3Container { - private static final String AWS_S3_DOCKER_IMAGE = "zenko/cloudserver:8.2.3"; + private static final String AWS_S3_DOCKER_IMAGE = "zenko/cloudserver:8.2.6"; private static final int AWS_S3_PORT = 8000; private static final int ONE_TIME = 1; @@ -43,7 +43,7 @@ public class DockerAwsS3Container { this.awsS3Container = new GenericContainer<>(AWS_S3_DOCKER_IMAGE); this.awsS3Container .withExposedPorts(AWS_S3_PORT) - .withEnv("S3BACKEND", "file") + .withEnv("S3BACKEND", "mem") .withEnv("SCALITY_ACCESS_KEY_ID", ACCESS_KEY_ID) .withEnv("SCALITY_SECRET_ACCESS_KEY", SECRET_ACCESS_KEY) .withEnv("LOG_LEVEL", "trace") diff --git a/server/blob/blob-s3/src/test/java/org/apache/james/blob/objectstorage/aws/DockerAwsS3Extension.java b/server/blob/blob-s3/src/test/java/org/apache/james/blob/objectstorage/aws/DockerAwsS3Extension.java index 424b718..f250ddd 100644 --- a/server/blob/blob-s3/src/test/java/org/apache/james/blob/objectstorage/aws/DockerAwsS3Extension.java +++ b/server/blob/blob-s3/src/test/java/org/apache/james/blob/objectstorage/aws/DockerAwsS3Extension.java @@ -19,28 +19,12 @@ package org.apache.james.blob.objectstorage.aws; -import org.junit.jupiter.api.extension.AfterAllCallback; -import org.junit.jupiter.api.extension.BeforeAllCallback; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.api.extension.ParameterContext; import org.junit.jupiter.api.extension.ParameterResolutionException; import org.junit.jupiter.api.extension.ParameterResolver; -public class DockerAwsS3Extension implements ParameterResolver, BeforeAllCallback, AfterAllCallback { - - private DockerAwsS3Container awsS3Container; - - @Override - public void beforeAll(ExtensionContext context) { - awsS3Container = new DockerAwsS3Container(); - awsS3Container.start(); - } - - @Override - public void afterAll(ExtensionContext context) { - awsS3Container.stop(); - } - +public class DockerAwsS3Extension implements ParameterResolver { @Override public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException { return (parameterContext.getParameter().getType() == DockerAwsS3Container.class); @@ -48,6 +32,6 @@ public class DockerAwsS3Extension implements ParameterResolver, BeforeAllCallbac @Override public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException { - return awsS3Container; + return DockerAwsS3Singleton.singleton; } } diff --git a/server/blob/blob-s3/src/test/java/org/apache/james/blob/objectstorage/aws/S3BlobStoreTest.java b/server/blob/blob-s3/src/test/java/org/apache/james/blob/objectstorage/aws/S3BlobStoreTest.java index 25f4464..286c300 100644 --- a/server/blob/blob-s3/src/test/java/org/apache/james/blob/objectstorage/aws/S3BlobStoreTest.java +++ b/server/blob/blob-s3/src/test/java/org/apache/james/blob/objectstorage/aws/S3BlobStoreTest.java @@ -24,19 +24,19 @@ import org.apache.james.blob.api.BlobStore; import org.apache.james.blob.api.BlobStoreContract; import org.apache.james.blob.api.BucketName; import org.apache.james.blob.api.HashBlobId; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.extension.ExtendWith; @ExtendWith(DockerAwsS3Extension.class) class S3BlobStoreTest implements BlobStoreContract { - private S3BlobStore testee; - private S3DumbBlobStore s3DumbBlobStore; - - @BeforeEach - void setUp(DockerAwsS3Container dockerAwsS3) { + private static S3BlobStore testee; + private static S3DumbBlobStore s3DumbBlobStore; + @BeforeAll + static void setUpClass(DockerAwsS3Container dockerAwsS3) { AwsS3AuthConfiguration configuration = AwsS3AuthConfiguration.builder() .endpoint(dockerAwsS3.getEndpoint()) .accessKeyId(DockerAwsS3Container.ACCESS_KEY_ID) @@ -50,6 +50,10 @@ class S3BlobStoreTest implements BlobStoreContract { @AfterEach void tearDown() { s3DumbBlobStore.deleteAllBuckets().block(); + } + + @AfterAll + static void tearDownClass() { s3DumbBlobStore.close(); } diff --git a/server/blob/blob-s3/src/test/java/org/apache/james/blob/objectstorage/aws/S3DumbBlobStoreTest.java b/server/blob/blob-s3/src/test/java/org/apache/james/blob/objectstorage/aws/S3DumbBlobStoreTest.java index 49bd95e..4cb6ab6 100644 --- a/server/blob/blob-s3/src/test/java/org/apache/james/blob/objectstorage/aws/S3DumbBlobStoreTest.java +++ b/server/blob/blob-s3/src/test/java/org/apache/james/blob/objectstorage/aws/S3DumbBlobStoreTest.java @@ -20,18 +20,17 @@ package org.apache.james.blob.objectstorage.aws; import org.apache.james.blob.api.DumbBlobStore; import org.apache.james.blob.api.DumbBlobStoreContract; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.extension.ExtendWith; @ExtendWith(DockerAwsS3Extension.class) public class S3DumbBlobStoreTest implements DumbBlobStoreContract { + private static S3DumbBlobStore testee; - private S3DumbBlobStore testee; - - @BeforeEach - void setUp(DockerAwsS3Container dockerAwsS3) { - + @BeforeAll + static void setUp(DockerAwsS3Container dockerAwsS3) { AwsS3AuthConfiguration configuration = AwsS3AuthConfiguration.builder() .endpoint(dockerAwsS3.getEndpoint()) .accessKeyId(DockerAwsS3Container.ACCESS_KEY_ID) @@ -44,6 +43,10 @@ public class S3DumbBlobStoreTest implements DumbBlobStoreContract { @AfterEach void tearDown() { testee.deleteAllBuckets().block(); + } + + @AfterAll + static void tearDownClass() { testee.close(); } @@ -51,5 +54,4 @@ public class S3DumbBlobStoreTest implements DumbBlobStoreContract { public DumbBlobStore testee() { return testee; } - } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
