Skip to content

Commit 448c1e5

Browse files
authored
Move S3 CRT related class out of s3-tranfer-manager module to s3 module (#3195)
* Move S3 CRT related class from s3-tranfer-manager module to s3 module * Update AbstractS3AsyncClient
1 parent 91da041 commit 448c1e5

File tree

31 files changed

+961
-235
lines changed

31 files changed

+961
-235
lines changed

services-custom/s3-transfer-manager/pom.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,6 @@
8181
<artifactId>aws-crt</artifactId>
8282
<version>${awscrt.version}</version>
8383
</dependency>
84-
<dependency>
85-
<groupId>software.amazon.awssdk</groupId>
86-
<artifactId>http-client-spi</artifactId>
87-
<version>${awsjavasdk.version}</version>
88-
</dependency>
8984
<dependency>
9085
<groupId>software.amazon.awssdk</groupId>
9186
<artifactId>arns</artifactId>

services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/internal/DefaultS3TransferManager.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import software.amazon.awssdk.core.async.AsyncRequestBody;
2626
import software.amazon.awssdk.core.async.AsyncResponseTransformer;
2727
import software.amazon.awssdk.core.exception.SdkClientException;
28+
import software.amazon.awssdk.services.s3.internal.crt.S3CrtAsyncClient;
2829
import software.amazon.awssdk.services.s3.internal.resource.S3AccessPointResource;
2930
import software.amazon.awssdk.services.s3.internal.resource.S3ArnConverter;
3031
import software.amazon.awssdk.services.s3.internal.resource.S3Resource;

services-custom/s3-transfer-manager/src/test/java/software/amazon/awssdk/transfer/s3/internal/DefaultS3CrtAsyncClientTest.java

Lines changed: 0 additions & 63 deletions
This file was deleted.

services-custom/s3-transfer-manager/src/test/java/software/amazon/awssdk/transfer/s3/internal/S3TransferManagerListenerTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import software.amazon.awssdk.core.async.AsyncResponseTransformer;
4646
import software.amazon.awssdk.core.async.DrainingSubscriber;
4747
import software.amazon.awssdk.core.exception.SdkClientException;
48+
import software.amazon.awssdk.services.s3.internal.crt.S3CrtAsyncClient;
4849
import software.amazon.awssdk.services.s3.model.GetObjectRequest;
4950
import software.amazon.awssdk.services.s3.model.GetObjectResponse;
5051
import software.amazon.awssdk.services.s3.model.PutObjectRequest;

services-custom/s3-transfer-manager/src/test/java/software/amazon/awssdk/transfer/s3/internal/S3TransferManagerPauseAndResumeTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import org.mockito.ArgumentCaptor;
3838
import software.amazon.awssdk.core.async.AsyncResponseTransformer;
3939
import software.amazon.awssdk.core.exception.SdkClientException;
40+
import software.amazon.awssdk.services.s3.internal.crt.S3CrtAsyncClient;
4041
import software.amazon.awssdk.services.s3.model.GetObjectRequest;
4142
import software.amazon.awssdk.services.s3.model.GetObjectResponse;
4243
import software.amazon.awssdk.services.s3.model.HeadObjectResponse;

services-custom/s3-transfer-manager/src/test/java/software/amazon/awssdk/transfer/s3/internal/S3TransferManagerTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import software.amazon.awssdk.core.ResponseBytes;
3131
import software.amazon.awssdk.core.async.AsyncRequestBody;
3232
import software.amazon.awssdk.core.async.AsyncResponseTransformer;
33+
import software.amazon.awssdk.services.s3.internal.crt.S3CrtAsyncClient;
3334
import software.amazon.awssdk.services.s3.model.CopyObjectRequest;
3435
import software.amazon.awssdk.services.s3.model.CopyObjectResponse;
3536
import software.amazon.awssdk.services.s3.model.GetObjectRequest;

services/s3/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,12 @@
7575
<artifactId>profiles</artifactId>
7676
<version>${awsjavasdk.version}</version>
7777
</dependency>
78+
<dependency>
79+
<groupId>software.amazon.awssdk.crt</groupId>
80+
<artifactId>aws-crt</artifactId>
81+
<version>${awscrt.version}</version>
82+
<scope>provided</scope>
83+
</dependency>
7884
<!-- Test Dependencies -->
7985
<dependency>
8086
<artifactId>commons-io</artifactId>
Lines changed: 11 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* permissions and limitations under the License.
1414
*/
1515

16-
package software.amazon.awssdk.transfer.s3;
16+
package software.amazon.awssdk.services.s3.crt;
1717

1818
import static org.assertj.core.api.Assertions.assertThatThrownBy;
1919
import static software.amazon.awssdk.testutils.service.S3BucketUtils.temporaryBucketName;
@@ -24,12 +24,14 @@
2424
import org.junit.jupiter.api.AfterAll;
2525
import org.junit.jupiter.api.BeforeAll;
2626
import org.junit.jupiter.api.Test;
27+
import software.amazon.awssdk.crt.CrtResource;
28+
import software.amazon.awssdk.services.s3.S3IntegrationTestBase;
29+
import software.amazon.awssdk.services.s3.internal.crt.S3CrtAsyncClient;
2730
import software.amazon.awssdk.services.s3.model.GetObjectRequest;
2831
import software.amazon.awssdk.services.s3.model.NoSuchBucketException;
2932
import software.amazon.awssdk.services.s3.model.NoSuchKeyException;
30-
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
3133
import software.amazon.awssdk.testutils.RandomTempFile;
32-
import software.amazon.awssdk.transfer.s3.internal.S3CrtAsyncClient;
34+
import software.amazon.awssdk.testutils.service.AwsTestBase;
3335

3436
public class CrtExceptionTransformationIntegrationTest extends S3IntegrationTestBase {
3537

@@ -39,30 +41,25 @@ public class CrtExceptionTransformationIntegrationTest extends S3IntegrationTest
3941

4042
private static final int OBJ_SIZE = 8 * 1024;
4143
private static RandomTempFile testFile;
42-
private static S3TransferManager transferManager;
4344
private static S3CrtAsyncClient s3Crt;
4445

4546
@BeforeAll
46-
public static void setupFixture() throws IOException {
47-
createBucket(BUCKET);
47+
public static void setupFixture() throws Exception {
48+
S3IntegrationTestBase.setUp();
49+
S3IntegrationTestBase.createBucket(BUCKET);
4850
testFile = new RandomTempFile(BUCKET, OBJ_SIZE);
4951
s3Crt = S3CrtAsyncClient.builder()
50-
.credentialsProvider(CREDENTIALS_PROVIDER_CHAIN)
52+
.credentialsProvider(AwsTestBase.CREDENTIALS_PROVIDER_CHAIN)
5153
.region(S3IntegrationTestBase.DEFAULT_REGION)
5254
.build();
53-
transferManager =
54-
S3TransferManager.builder()
55-
.s3ClientConfiguration(b -> b.credentialsProvider(CREDENTIALS_PROVIDER_CHAIN)
56-
.region(S3IntegrationTestBase.DEFAULT_REGION))
57-
.build();
5855
}
5956

6057
@AfterAll
6158
public static void tearDownFixture() {
62-
deleteBucketAndAllContents(BUCKET);
59+
S3IntegrationTestBase.deleteBucketAndAllContents(BUCKET);
6360
s3Crt.close();
64-
transferManager.close();
6561
testFile.delete();
62+
CrtResource.waitForNoResources();
6663
}
6764

6865
@Test
@@ -83,28 +80,6 @@ public void getObjectNoSuchBucket() throws IOException {
8380
.hasMessageContaining("software.amazon.awssdk.services.s3.model.NoSuchBucketException: The specified bucket does not exist");
8481
}
8582

86-
@Test
87-
public void transferManagerDownloadObjectWithNoSuchKey() throws IOException {
88-
String randomBaseDirectory = Files.createTempDirectory(getClass().getSimpleName()).toString();
89-
assertThatThrownBy(() -> transferManager.downloadFile(DownloadFileRequest.builder()
90-
.getObjectRequest(GetObjectRequest.builder().bucket(BUCKET).key("randomKey").build())
91-
.destination(Paths.get(randomBaseDirectory).resolve("testFile"))
92-
.build()).completionFuture().join())
93-
.hasCauseInstanceOf(NoSuchKeyException.class)
94-
.hasMessageContaining("software.amazon.awssdk.services.s3.model.NoSuchKeyException: The specified key does not exist");
95-
}
96-
97-
@Test
98-
public void transferManagerDownloadObjectWithNoSuchBucket() throws IOException {
99-
String randomBaseDirectory = Files.createTempDirectory(getClass().getSimpleName()).toString();
100-
assertThatThrownBy(() -> transferManager.downloadFile(DownloadFileRequest.builder()
101-
.getObjectRequest(GetObjectRequest.builder().bucket("nonExistingTestBucket").key(KEY).build())
102-
.destination(Paths.get(randomBaseDirectory).resolve("testFile"))
103-
.build()).completionFuture().join())
104-
.hasCauseInstanceOf(NoSuchBucketException.class)
105-
.hasMessageContaining("software.amazon.awssdk.services.s3.model.NoSuchBucketException: The specified bucket does not exist");
106-
}
107-
10883
@Test
10984
public void putObjectNoSuchKey() throws IOException {
11085
String randomBaseDirectory = Files.createTempDirectory(getClass().getSimpleName()).toString();
@@ -123,14 +98,4 @@ public void putObjectNoSuchBucket() throws IOException {
12398
.hasCauseInstanceOf(NoSuchBucketException.class)
12499
.hasMessageContaining("software.amazon.awssdk.services.s3.model.NoSuchBucketException: The specified bucket does not exist");
125100
}
126-
127-
@Test
128-
public void transferManagerUploadObjectWithNoSuchObject() throws IOException{
129-
assertThatThrownBy(() -> transferManager.uploadFile(UploadFileRequest.builder()
130-
.putObjectRequest(PutObjectRequest.builder().bucket("nonExistingTestBucket").key("someKey").build())
131-
.source(testFile.toPath())
132-
.build()).completionFuture().join())
133-
.hasCauseInstanceOf(NoSuchBucketException.class)
134-
.hasMessageContaining("software.amazon.awssdk.services.s3.model.NoSuchBucketException: The specified bucket does not exist");
135-
}
136101
}
Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* permissions and limitations under the License.
1414
*/
1515

16-
package software.amazon.awssdk.transfer.s3;
16+
package software.amazon.awssdk.services.s3.crt;
1717

1818
import static software.amazon.awssdk.testutils.service.S3BucketUtils.temporaryBucketName;
1919

@@ -35,10 +35,13 @@
3535
import software.amazon.awssdk.core.ResponseInputStream;
3636
import software.amazon.awssdk.core.async.AsyncRequestBody;
3737
import software.amazon.awssdk.core.sync.ResponseTransformer;
38+
import software.amazon.awssdk.crt.CrtResource;
39+
import software.amazon.awssdk.services.s3.S3IntegrationTestBase;
40+
import software.amazon.awssdk.services.s3.internal.crt.S3CrtAsyncClient;
3841
import software.amazon.awssdk.services.s3.model.GetObjectResponse;
42+
import software.amazon.awssdk.services.s3.utils.ChecksumUtils;
3943
import software.amazon.awssdk.testutils.RandomTempFile;
40-
import software.amazon.awssdk.transfer.s3.internal.S3CrtAsyncClient;
41-
import software.amazon.awssdk.transfer.s3.util.ChecksumUtils;
44+
import software.amazon.awssdk.testutils.service.AwsTestBase;
4245

4346
public class S3CrtClientPutObjectIntegrationTest extends S3IntegrationTestBase {
4447
private static final String TEST_BUCKET = temporaryBucketName(S3CrtClientPutObjectIntegrationTest.class);
@@ -56,7 +59,7 @@ public static void setup() throws Exception {
5659
testFile = new RandomTempFile(TEST_KEY, OBJ_SIZE);
5760

5861
s3Crt = S3CrtAsyncClient.builder()
59-
.credentialsProvider(CREDENTIALS_PROVIDER_CHAIN)
62+
.credentialsProvider(AwsTestBase.CREDENTIALS_PROVIDER_CHAIN)
6063
.region(S3IntegrationTestBase.DEFAULT_REGION)
6164
.build();
6265
}
@@ -66,7 +69,7 @@ public static void teardown() throws IOException {
6669
S3IntegrationTestBase.deleteBucketAndAllContents(TEST_BUCKET);
6770
Files.delete(testFile.toPath());
6871
s3Crt.close();
69-
S3IntegrationTestBase.cleanUp();
72+
CrtResource.waitForNoResources();
7073
}
7174

7275
@Test
Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* permissions and limitations under the License.
1414
*/
1515

16-
package software.amazon.awssdk.transfer.s3;
16+
package software.amazon.awssdk.services.s3.crt;
1717

1818
import static org.assertj.core.api.Assertions.assertThat;
1919
import static software.amazon.awssdk.testutils.service.S3BucketUtils.temporaryBucketName;
@@ -31,12 +31,14 @@
3131
import org.junit.jupiter.api.Test;
3232
import software.amazon.awssdk.core.async.AsyncResponseTransformer;
3333
import software.amazon.awssdk.core.async.SdkPublisher;
34+
import software.amazon.awssdk.crt.CrtResource;
3435
import software.amazon.awssdk.http.async.SimpleSubscriber;
36+
import software.amazon.awssdk.services.s3.S3IntegrationTestBase;
37+
import software.amazon.awssdk.services.s3.internal.crt.S3CrtAsyncClient;
3538
import software.amazon.awssdk.services.s3.model.GetObjectResponse;
3639
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
3740
import software.amazon.awssdk.testutils.RandomTempFile;
3841
import software.amazon.awssdk.testutils.service.AwsTestBase;
39-
import software.amazon.awssdk.transfer.s3.internal.S3CrtAsyncClient;
4042
import software.amazon.awssdk.utils.Md5Utils;
4143

4244
public class S3CrtGetObjectIntegrationTest extends S3IntegrationTestBase {
@@ -47,7 +49,8 @@ public class S3CrtGetObjectIntegrationTest extends S3IntegrationTestBase {
4749
private static ExecutorService executorService;
4850

4951
@BeforeAll
50-
public static void setup() throws IOException {
52+
public static void setup() throws Exception {
53+
S3IntegrationTestBase.setUp();
5154
S3IntegrationTestBase.createBucket(BUCKET);
5255
crtClient = S3CrtAsyncClient.builder()
5356
.region(S3IntegrationTestBase.DEFAULT_REGION)
@@ -66,7 +69,7 @@ public static void cleanup() {
6669
crtClient.close();
6770
S3IntegrationTestBase.deleteBucketAndAllContents(BUCKET);
6871
executorService.shutdown();
69-
S3IntegrationTestBase.cleanUp();
72+
CrtResource.waitForNoResources();
7073
}
7174

7275
@Test

0 commit comments

Comments
 (0)