You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/07/11 07:25:44 UTC

[james-project] 06/09: JAMES-2806 Avoid thread leak in Guice related test

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 a946f443f70309744489296e0e7f43bda0020d19
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Jul 10 13:51:33 2019 +0200

    JAMES-2806 Avoid thread leak in Guice related test
    
    Context (and related resources) were only closed for blobStore tests and
    not for integration tests.
    
    Also, tests should avoid calling underlying libraries
---
 .../apache/james/blob/objectstorage/ObjectStorageBlobsDAO.java |  7 +++++++
 .../james/blob/objectstorage/ObjectStorageBlobsDAOAWSTest.java | 10 +++-------
 .../james/blob/objectstorage/ObjectStorageBlobsDAOTest.java    |  2 +-
 3 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAO.java b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAO.java
index 139d789..2e40ef1 100644
--- a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAO.java
+++ b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAO.java
@@ -25,6 +25,8 @@ import java.io.InputStream;
 import java.util.Optional;
 import java.util.function.Supplier;
 
+import javax.annotation.PreDestroy;
+
 import org.apache.commons.io.IOUtils;
 import org.apache.james.blob.api.BlobId;
 import org.apache.james.blob.api.BlobStore;
@@ -83,6 +85,11 @@ public class ObjectStorageBlobsDAO implements BlobStore {
         return AwsS3ObjectStorage.daoBuilder(testConfig);
     }
 
+    @PreDestroy
+    public void close() {
+        blobStore.getContext().close();
+    }
+
     @Override
     public Mono<BlobId> save(BucketName bucketName, byte[] data) {
         Preconditions.checkNotNull(data);
diff --git a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSTest.java b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSTest.java
index 99183d2..a4eb027 100644
--- a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSTest.java
+++ b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOAWSTest.java
@@ -39,18 +39,15 @@ public class ObjectStorageBlobsDAOAWSTest implements MetricableBlobStoreContract
 
     private static final HashBlobId.Factory BLOB_ID_FACTORY = new HashBlobId.Factory();
 
-    private BucketName defaultBucketName;
-    private org.jclouds.blobstore.BlobStore blobStore;
     private ObjectStorageBlobsDAO objectStorageBlobsDAO;
     private AwsS3ObjectStorage awsS3ObjectStorage;
-    private AwsS3AuthConfiguration configuration;
     private BlobStore testee;
 
     @BeforeEach
     void setUp(DockerAwsS3Container dockerAwsS3) {
         awsS3ObjectStorage = new AwsS3ObjectStorage();
-        defaultBucketName = BucketName.of("e7a929fe-2003-48d4-aaa9-a65d4954379d");
-        configuration = AwsS3AuthConfiguration.builder()
+        BucketName defaultBucketName = BucketName.of("e7a929fe-2003-48d4-aaa9-a65d4954379d");
+        AwsS3AuthConfiguration configuration = AwsS3AuthConfiguration.builder()
             .endpoint(dockerAwsS3.getEndpoint())
             .accessKeyId(DockerAwsS3Container.ACCESS_KEY_ID)
             .secretKey(DockerAwsS3Container.SECRET_ACCESS_KEY)
@@ -62,7 +59,6 @@ public class ObjectStorageBlobsDAOAWSTest implements MetricableBlobStoreContract
             .namespace(defaultBucketName)
             .blobPutter(awsS3ObjectStorage.putBlob(configuration));
 
-        blobStore = builder.getSupplier().get();
         objectStorageBlobsDAO = builder.build();
         testee = new MetricableBlobStore(metricsTestExtension.getMetricFactory(), objectStorageBlobsDAO);
     }
@@ -71,7 +67,7 @@ public class ObjectStorageBlobsDAOAWSTest implements MetricableBlobStoreContract
     void tearDown() {
         testee.deleteBucket(testee.getDefaultBucketName()).block();
         testee.deleteBucket(CUSTOM).block();
-        blobStore.getContext().close();
+        objectStorageBlobsDAO.close();
         awsS3ObjectStorage.tearDown();
     }
 
diff --git a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOTest.java b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOTest.java
index 65f3f0f..3bac5d4 100644
--- a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOTest.java
+++ b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAOTest.java
@@ -97,7 +97,7 @@ public class ObjectStorageBlobsDAOTest implements MetricableBlobStoreContract, B
     void tearDown() {
         testee.deleteBucket(testee.getDefaultBucketName()).block();
         testee.deleteBucket(CUSTOM).block();
-        blobStore.getContext().close();
+        objectStorageBlobsDAO.close();
     }
 
     @Override


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org