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]

Reply via email to