Skip to content

Commit a26d4a4

Browse files
committed
move TM tests to separate file
1 parent 2317aab commit a26d4a4

File tree

2 files changed

+180
-141
lines changed

2 files changed

+180
-141
lines changed

src/test/java/software/amazon/encryption/s3/S3AsyncEncryptionClientTest.java

Lines changed: 0 additions & 141 deletions
Original file line numberDiff line numberDiff line change
@@ -37,19 +37,11 @@
3737
import software.amazon.awssdk.services.s3.model.CopyObjectResponse;
3838
import software.amazon.awssdk.services.s3.model.DeleteObjectResponse;
3939
import software.amazon.awssdk.services.s3.model.DeleteObjectsResponse;
40-
import software.amazon.awssdk.services.s3.model.GetObjectRequest;
4140
import software.amazon.awssdk.services.s3.model.GetObjectResponse;
4241
import software.amazon.awssdk.services.s3.model.ObjectIdentifier;
4342
import software.amazon.awssdk.services.s3.model.PutObjectResponse;
4443
import software.amazon.awssdk.services.s3.model.S3Exception;
4544
import software.amazon.awssdk.services.s3.multipart.MultipartConfiguration;
46-
import software.amazon.awssdk.transfer.s3.S3TransferManager;
47-
import software.amazon.awssdk.transfer.s3.model.CompletedDownload;
48-
import software.amazon.awssdk.transfer.s3.model.Download;
49-
import software.amazon.awssdk.transfer.s3.model.DownloadRequest;
50-
import software.amazon.awssdk.transfer.s3.model.Upload;
51-
import software.amazon.awssdk.transfer.s3.model.UploadRequest;
52-
import software.amazon.awssdk.transfer.s3.progress.LoggingTransferListener;
5345
import software.amazon.encryption.s3.internal.InstructionFileConfig;
5446
import software.amazon.encryption.s3.materials.KmsKeyring;
5547
import software.amazon.encryption.s3.utils.BoundedInputStream;
@@ -69,7 +61,6 @@
6961
import java.util.Map;
7062
import java.util.concurrent.CompletableFuture;
7163
import java.util.concurrent.CompletionException;
72-
import java.util.concurrent.ExecutionException;
7364
import java.util.concurrent.ExecutorService;
7465
import java.util.concurrent.Executors;
7566

@@ -150,138 +141,6 @@ public void asyncCustomConfiguration() {
150141
s3Client.close();
151142
}
152143

153-
@Test
154-
public void transferManagerUploadString() {
155-
final String objectKey = appendTestSuffix("tm-string");
156-
final String input = "short test of s3 encryption client with transfer manager";
157-
S3AsyncClient v3AsyncClient = S3AsyncEncryptionClient.builder()
158-
.aesKey(AES_KEY)
159-
.build();
160-
S3TransferManager transferManager =
161-
S3TransferManager.builder()
162-
.s3Client(v3AsyncClient)
163-
.build();
164-
165-
Upload upload = transferManager.upload(UploadRequest.builder()
166-
.putObjectRequest((builder -> builder
167-
.bucket(BUCKET)
168-
.key(objectKey)
169-
.build()))
170-
.requestBody(AsyncRequestBody.fromString(input))
171-
.build());
172-
upload.completionFuture().join();
173-
174-
// tm download
175-
Download<ResponseBytes<GetObjectResponse>> download = transferManager.download(DownloadRequest.builder()
176-
.getObjectRequest(GetObjectRequest.builder()
177-
.bucket(BUCKET)
178-
.key(objectKey)
179-
.build())
180-
.responseTransformer(AsyncResponseTransformer.toBytes())
181-
.build());
182-
CompletedDownload<ResponseBytes<GetObjectResponse>> resp = download.completionFuture().join();
183-
assertEquals(input, resp.result().asUtf8String());
184-
185-
// Cleanup
186-
deleteObject(BUCKET, objectKey, v3AsyncClient);
187-
transferManager.close();
188-
}
189-
190-
@Test
191-
public void transferManagerUploadStream() throws IOException {
192-
final String objectKey = appendTestSuffix("tm-stream");
193-
194-
final long fileSizeLimit = 1024 * 1024 * 100;
195-
final InputStream inputStream = new BoundedInputStream(fileSizeLimit);
196-
final InputStream objectStreamForResultTm = new BoundedInputStream(fileSizeLimit);
197-
198-
S3AsyncClient v3AsyncClient = S3AsyncEncryptionClient.builder()
199-
.aesKey(AES_KEY)
200-
.enableDelayedAuthenticationMode(true)
201-
.enableMultipartPutObject(true)
202-
.build();
203-
S3TransferManager transferManager =
204-
S3TransferManager.builder()
205-
.s3Client(v3AsyncClient)
206-
.build();
207-
208-
ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
209-
Upload upload = transferManager.upload(UploadRequest.builder()
210-
.putObjectRequest((builder -> builder
211-
.bucket(BUCKET)
212-
.key(objectKey)
213-
.build()))
214-
.requestBody(AsyncRequestBody.fromInputStream(inputStream, fileSizeLimit, singleThreadExecutor))
215-
.addTransferListener(LoggingTransferListener.create())
216-
.build());
217-
upload.completionFuture().join();
218-
singleThreadExecutor.shutdown();
219-
220-
// tm download
221-
Download<ResponseInputStream<GetObjectResponse>> download = transferManager.download(DownloadRequest.builder()
222-
.getObjectRequest(GetObjectRequest.builder()
223-
.bucket(BUCKET)
224-
.key(objectKey)
225-
.build())
226-
.responseTransformer(AsyncResponseTransformer.toBlockingInputStream())
227-
.build());
228-
229-
CompletedDownload<ResponseInputStream<GetObjectResponse>> resp = download.completionFuture().join();
230-
assertTrue(IOUtils.contentEquals(objectStreamForResultTm, resp.result()));
231-
232-
// Cleanup
233-
deleteObject(BUCKET, objectKey, v3AsyncClient);
234-
transferManager.close();
235-
}
236-
237-
@Test
238-
public void transferManagerUploadStreamCrt() throws ExecutionException, InterruptedException, IOException {
239-
final String objectKey = appendTestSuffix("tm-stream-crt");
240-
241-
final long fileSizeLimit = 1024 * 1024 * 100;
242-
final InputStream inputStream = new BoundedInputStream(fileSizeLimit);
243-
final InputStream objectStreamForResultTm = new BoundedInputStream(fileSizeLimit);
244-
245-
S3AsyncClient wrappedCrt = S3AsyncClient.crtBuilder()
246-
.build();
247-
S3AsyncClient v3AsyncClient = S3AsyncEncryptionClient.builder()
248-
.wrappedClient(wrappedCrt)
249-
.aesKey(AES_KEY)
250-
.enableDelayedAuthenticationMode(true)
251-
.enableMultipartPutObject(true)
252-
.build();
253-
S3TransferManager transferManager =
254-
S3TransferManager.builder()
255-
.s3Client(v3AsyncClient)
256-
.build();
257-
258-
ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
259-
Upload upload = transferManager.upload(UploadRequest.builder()
260-
.putObjectRequest((builder -> builder
261-
.bucket(BUCKET)
262-
.key(objectKey)
263-
.build()))
264-
.requestBody(AsyncRequestBody.fromInputStream(inputStream, fileSizeLimit, singleThreadExecutor))
265-
.addTransferListener(LoggingTransferListener.create())
266-
.build());
267-
upload.completionFuture().join();
268-
singleThreadExecutor.shutdown();
269-
270-
Download<ResponseInputStream<GetObjectResponse>> download = transferManager.download(DownloadRequest.builder()
271-
.getObjectRequest(GetObjectRequest.builder()
272-
.bucket(BUCKET)
273-
.key(objectKey)
274-
.build())
275-
.responseTransformer(AsyncResponseTransformer.toBlockingInputStream())
276-
.build());
277-
download.completionFuture().join();
278-
CompletedDownload<ResponseInputStream<GetObjectResponse>> resp = download.completionFuture().get();
279-
280-
assertTrue(IOUtils.contentEquals(objectStreamForResultTm, resp.result()));
281-
deleteObject(BUCKET, objectKey, v3AsyncClient);
282-
transferManager.close();
283-
}
284-
285144
@Test
286145
public void asyncTopLevelConfigurationAllOptions() {
287146
final String objectKey = appendTestSuffix("async-top-level-all-options");
Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
package software.amazon.encryption.s3;
2+
3+
import org.apache.commons.io.IOUtils;
4+
import org.junit.jupiter.api.BeforeAll;
5+
import org.junit.jupiter.api.Test;
6+
import software.amazon.awssdk.core.ResponseBytes;
7+
import software.amazon.awssdk.core.ResponseInputStream;
8+
import software.amazon.awssdk.core.async.AsyncRequestBody;
9+
import software.amazon.awssdk.core.async.AsyncResponseTransformer;
10+
import software.amazon.awssdk.services.s3.S3AsyncClient;
11+
import software.amazon.awssdk.services.s3.model.GetObjectRequest;
12+
import software.amazon.awssdk.services.s3.model.GetObjectResponse;
13+
import software.amazon.awssdk.transfer.s3.S3TransferManager;
14+
import software.amazon.awssdk.transfer.s3.model.CompletedDownload;
15+
import software.amazon.awssdk.transfer.s3.model.Download;
16+
import software.amazon.awssdk.transfer.s3.model.DownloadRequest;
17+
import software.amazon.awssdk.transfer.s3.model.Upload;
18+
import software.amazon.awssdk.transfer.s3.model.UploadRequest;
19+
import software.amazon.awssdk.transfer.s3.progress.LoggingTransferListener;
20+
import software.amazon.encryption.s3.utils.BoundedInputStream;
21+
22+
import javax.crypto.KeyGenerator;
23+
import javax.crypto.SecretKey;
24+
import java.io.IOException;
25+
import java.io.InputStream;
26+
import java.security.NoSuchAlgorithmException;
27+
import java.util.concurrent.ExecutionException;
28+
import java.util.concurrent.ExecutorService;
29+
import java.util.concurrent.Executors;
30+
31+
import static org.junit.jupiter.api.Assertions.assertEquals;
32+
import static org.junit.jupiter.api.Assertions.assertTrue;
33+
import static software.amazon.encryption.s3.utils.S3EncryptionClientTestResources.BUCKET;
34+
import static software.amazon.encryption.s3.utils.S3EncryptionClientTestResources.appendTestSuffix;
35+
import static software.amazon.encryption.s3.utils.S3EncryptionClientTestResources.deleteObject;
36+
37+
public class TransferManagerTest {
38+
39+
private static SecretKey AES_KEY;
40+
41+
@BeforeAll
42+
public static void setUp() throws NoSuchAlgorithmException {
43+
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
44+
keyGen.init(256);
45+
AES_KEY = keyGen.generateKey();
46+
}
47+
48+
@Test
49+
public void transferManagerUploadString() {
50+
final String objectKey = appendTestSuffix("tm-string");
51+
final String input = "short test of s3 encryption client with transfer manager";
52+
S3AsyncClient v3AsyncClient = S3AsyncEncryptionClient.builder()
53+
.aesKey(AES_KEY)
54+
.build();
55+
S3TransferManager transferManager =
56+
S3TransferManager.builder()
57+
.s3Client(v3AsyncClient)
58+
.build();
59+
60+
Upload upload = transferManager.upload(UploadRequest.builder()
61+
.putObjectRequest((builder -> builder
62+
.bucket(BUCKET)
63+
.key(objectKey)
64+
.build()))
65+
.requestBody(AsyncRequestBody.fromString(input))
66+
.build());
67+
upload.completionFuture().join();
68+
69+
// tm download
70+
Download<ResponseBytes<GetObjectResponse>> download = transferManager.download(DownloadRequest.builder()
71+
.getObjectRequest(GetObjectRequest.builder()
72+
.bucket(BUCKET)
73+
.key(objectKey)
74+
.build())
75+
.responseTransformer(AsyncResponseTransformer.toBytes())
76+
.build());
77+
CompletedDownload<ResponseBytes<GetObjectResponse>> resp = download.completionFuture().join();
78+
assertEquals(input, resp.result().asUtf8String());
79+
80+
// Cleanup
81+
deleteObject(BUCKET, objectKey, v3AsyncClient);
82+
transferManager.close();
83+
}
84+
85+
@Test
86+
public void transferManagerUploadStream() throws IOException {
87+
final String objectKey = appendTestSuffix("tm-stream");
88+
89+
final long fileSizeLimit = 1024 * 1024 * 100;
90+
final InputStream inputStream = new BoundedInputStream(fileSizeLimit);
91+
final InputStream objectStreamForResultTm = new BoundedInputStream(fileSizeLimit);
92+
93+
S3AsyncClient v3AsyncClient = S3AsyncEncryptionClient.builder()
94+
.aesKey(AES_KEY)
95+
.enableDelayedAuthenticationMode(true)
96+
.enableMultipartPutObject(true)
97+
.build();
98+
S3TransferManager transferManager =
99+
S3TransferManager.builder()
100+
.s3Client(v3AsyncClient)
101+
.build();
102+
103+
ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
104+
Upload upload = transferManager.upload(UploadRequest.builder()
105+
.putObjectRequest((builder -> builder
106+
.bucket(BUCKET)
107+
.key(objectKey)
108+
.build()))
109+
.requestBody(AsyncRequestBody.fromInputStream(inputStream, fileSizeLimit, singleThreadExecutor))
110+
.addTransferListener(LoggingTransferListener.create())
111+
.build());
112+
upload.completionFuture().join();
113+
singleThreadExecutor.shutdown();
114+
115+
// tm download
116+
Download<ResponseInputStream<GetObjectResponse>> download = transferManager.download(DownloadRequest.builder()
117+
.getObjectRequest(GetObjectRequest.builder()
118+
.bucket(BUCKET)
119+
.key(objectKey)
120+
.build())
121+
.responseTransformer(AsyncResponseTransformer.toBlockingInputStream())
122+
.build());
123+
124+
CompletedDownload<ResponseInputStream<GetObjectResponse>> resp = download.completionFuture().join();
125+
assertTrue(IOUtils.contentEquals(objectStreamForResultTm, resp.result()));
126+
127+
// Cleanup
128+
deleteObject(BUCKET, objectKey, v3AsyncClient);
129+
transferManager.close();
130+
}
131+
132+
@Test
133+
public void transferManagerUploadStreamCrt() throws ExecutionException, InterruptedException, IOException {
134+
final String objectKey = appendTestSuffix("tm-stream-crt");
135+
136+
final long fileSizeLimit = 1024 * 1024 * 100;
137+
final InputStream inputStream = new BoundedInputStream(fileSizeLimit);
138+
final InputStream objectStreamForResultTm = new BoundedInputStream(fileSizeLimit);
139+
140+
S3AsyncClient wrappedCrt = S3AsyncClient.crtBuilder()
141+
.build();
142+
S3AsyncClient v3AsyncClient = S3AsyncEncryptionClient.builder()
143+
.wrappedClient(wrappedCrt)
144+
.aesKey(AES_KEY)
145+
.enableDelayedAuthenticationMode(true)
146+
.enableMultipartPutObject(true)
147+
.build();
148+
S3TransferManager transferManager =
149+
S3TransferManager.builder()
150+
.s3Client(v3AsyncClient)
151+
.build();
152+
153+
ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
154+
Upload upload = transferManager.upload(UploadRequest.builder()
155+
.putObjectRequest((builder -> builder
156+
.bucket(BUCKET)
157+
.key(objectKey)
158+
.build()))
159+
.requestBody(AsyncRequestBody.fromInputStream(inputStream, fileSizeLimit, singleThreadExecutor))
160+
.addTransferListener(LoggingTransferListener.create())
161+
.build());
162+
upload.completionFuture().join();
163+
singleThreadExecutor.shutdown();
164+
165+
Download<ResponseInputStream<GetObjectResponse>> download = transferManager.download(DownloadRequest.builder()
166+
.getObjectRequest(GetObjectRequest.builder()
167+
.bucket(BUCKET)
168+
.key(objectKey)
169+
.build())
170+
.responseTransformer(AsyncResponseTransformer.toBlockingInputStream())
171+
.build());
172+
download.completionFuture().join();
173+
CompletedDownload<ResponseInputStream<GetObjectResponse>> resp = download.completionFuture().get();
174+
175+
assertTrue(IOUtils.contentEquals(objectStreamForResultTm, resp.result()));
176+
deleteObject(BUCKET, objectKey, v3AsyncClient);
177+
transferManager.close();
178+
}
179+
180+
}

0 commit comments

Comments
 (0)