Skip to content

Commit b2dbba9

Browse files
author
Anirav Kareddy
committed
running each test case 10 times
1 parent 546e49b commit b2dbba9

File tree

1 file changed

+99
-95
lines changed

1 file changed

+99
-95
lines changed

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

Lines changed: 99 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -310,126 +310,130 @@ public void failsWhenBothBufferSizeAndDelayedAuthModeEnabled() {
310310

311311
@Test
312312
public void customSetBufferSizeWithLargeObject() throws IOException {
313-
final String objectKey = appendTestSuffix("large-object-test-custom-buffer-size");
313+
for(int i=0; i < 10; i++) {
314+
final String objectKey = appendTestSuffix("large-object-test-custom-buffer-size");
314315

315-
Security.addProvider(new BouncyCastleProvider());
316-
Provider provider = Security.getProvider("BC");
316+
Security.addProvider(new BouncyCastleProvider());
317+
Provider provider = Security.getProvider("BC");
317318

318-
// V3 Client with custom max buffer size 32 MiB.
319-
S3Client v3ClientWithBuffer32MiB = S3EncryptionClient.builder()
320-
.aesKey(AES_KEY)
321-
.cryptoProvider(provider)
322-
.setBufferSize(32 * 1024 * 1024)
323-
.build();
319+
// V3 Client with custom max buffer size 32 MiB.
320+
S3Client v3ClientWithBuffer32MiB = S3EncryptionClient.builder()
321+
.aesKey(AES_KEY)
322+
.cryptoProvider(provider)
323+
.setBufferSize(32 * 1024 * 1024)
324+
.build();
324325

325-
// V3 Client with default buffer size (i.e. 64MiB)
326-
// When enableDelayedAuthenticationMode is set to true, delayed authentication mode always takes priority over buffered mode.
327-
S3Client v3ClientWithDelayedAuth = S3EncryptionClient.builder()
328-
.aesKey(AES_KEY)
329-
.cryptoProvider(provider)
330-
.enableDelayedAuthenticationMode(true)
331-
.build();
326+
// V3 Client with default buffer size (i.e. 64MiB)
327+
// When enableDelayedAuthenticationMode is set to true, delayed authentication mode always takes priority over buffered mode.
328+
S3Client v3ClientWithDelayedAuth = S3EncryptionClient.builder()
329+
.aesKey(AES_KEY)
330+
.cryptoProvider(provider)
331+
.enableDelayedAuthenticationMode(true)
332+
.build();
332333

333-
// Tight bound on the custom buffer size limit of 32MiB
334-
final long fileSizeExceedingDefaultLimit = 1024 * 1024 * 32 + 1;
334+
// Tight bound on the custom buffer size limit of 32MiB
335+
final long fileSizeExceedingDefaultLimit = 1024 * 1024 * 32 + 1;
335336

336-
byte[] data = new byte[(int) fileSizeExceedingDefaultLimit];
337-
for(int j=0; j < data.length; j++) {
338-
data[j] = (byte) (j % 256);
339-
}
340-
final InputStream largeObjectStream = new ByteArrayInputStream(data);
341-
v3ClientWithBuffer32MiB.putObject(PutObjectRequest.builder()
342-
.bucket(BUCKET)
343-
.key(objectKey)
344-
.build(), RequestBody.fromInputStream(largeObjectStream, fileSizeExceedingDefaultLimit));
337+
byte[] data = new byte[(int) fileSizeExceedingDefaultLimit];
338+
for(int j=0; j < data.length; j++) {
339+
data[j] = (byte) (j % 256);
340+
}
341+
final InputStream largeObjectStream = new ByteArrayInputStream(data);
342+
v3ClientWithBuffer32MiB.putObject(PutObjectRequest.builder()
343+
.bucket(BUCKET)
344+
.key(objectKey)
345+
.build(), RequestBody.fromInputStream(largeObjectStream, fileSizeExceedingDefaultLimit));
345346

346-
largeObjectStream.close();
347+
largeObjectStream.close();
347348

348-
// Object is larger than Buffer, so getObject fails
349-
assertThrows(S3EncryptionClientException.class, () -> v3ClientWithBuffer32MiB.getObjectAsBytes(builder -> builder
350-
.bucket(BUCKET)
351-
.key(objectKey)));
349+
// Object is larger than Buffer, so getObject fails
350+
assertThrows(S3EncryptionClientException.class, () -> v3ClientWithBuffer32MiB.getObjectAsBytes(builder -> builder
351+
.bucket(BUCKET)
352+
.key(objectKey)));
352353

353-
// You have to either enable the delayed auth mode or increase max buffer size (but in allowed bounds)
354-
ResponseInputStream<GetObjectResponse> response = v3ClientWithDelayedAuth.getObject(builder -> builder
355-
.bucket(BUCKET)
356-
.key(objectKey));
354+
// You have to either enable the delayed auth mode or increase max buffer size (but in allowed bounds)
355+
ResponseInputStream<GetObjectResponse> response = v3ClientWithDelayedAuth.getObject(builder -> builder
356+
.bucket(BUCKET)
357+
.key(objectKey));
357358

358-
// Create a new ByteArrayInputStream for comparison
359-
InputStream expectedStream = new ByteArrayInputStream(data);
360-
assertTrue(IOUtils.contentEquals(expectedStream, response));
361-
response.close();
359+
// Create a new ByteArrayInputStream for comparison
360+
InputStream expectedStream = new ByteArrayInputStream(data);
361+
assertTrue(IOUtils.contentEquals(expectedStream, response));
362+
response.close();
362363

363-
// Cleanup
364-
deleteObject(BUCKET, objectKey, v3ClientWithBuffer32MiB);
365-
v3ClientWithBuffer32MiB.close();
366-
v3ClientWithDelayedAuth.close();
364+
// Cleanup
365+
deleteObject(BUCKET, objectKey, v3ClientWithBuffer32MiB);
366+
v3ClientWithBuffer32MiB.close();
367+
v3ClientWithDelayedAuth.close();
368+
}
367369
}
368370

369371
@Test
370372
public void customSetBufferSizeWithLargeObjectAsyncClient() throws IOException {
371-
final String objectKey = appendTestSuffix("large-object-test-custom-buffer-size-async");
373+
for(int i=0; i < 10; i++) {
374+
final String objectKey = appendTestSuffix("large-object-test-custom-buffer-size-async");
372375

373-
Security.addProvider(new BouncyCastleProvider());
374-
Provider provider = Security.getProvider("BC");
376+
Security.addProvider(new BouncyCastleProvider());
377+
Provider provider = Security.getProvider("BC");
375378

376-
// V3 Client with custom max buffer size 32 MiB.
377-
S3AsyncClient v3ClientWithBuffer32MiB = S3AsyncEncryptionClient.builder()
378-
.aesKey(AES_KEY)
379-
.cryptoProvider(provider)
380-
.setBufferSize(32 * 1024 * 1024)
381-
.build();
379+
// V3 Client with custom max buffer size 32 MiB.
380+
S3AsyncClient v3ClientWithBuffer32MiB = S3AsyncEncryptionClient.builder()
381+
.aesKey(AES_KEY)
382+
.cryptoProvider(provider)
383+
.setBufferSize(32 * 1024 * 1024)
384+
.build();
382385

383-
// V3 Client with default buffer size (i.e. 64MiB)
384-
// When enableDelayedAuthenticationMode is set to true, delayed authentication mode always takes priority over buffered mode.
385-
S3AsyncClient v3ClientWithDelayedAuth = S3AsyncEncryptionClient.builder()
386-
.aesKey(AES_KEY)
387-
.cryptoProvider(provider)
388-
.enableDelayedAuthenticationMode(true)
389-
.build();
386+
// V3 Client with default buffer size (i.e. 64MiB)
387+
// When enableDelayedAuthenticationMode is set to true, delayed authentication mode always takes priority over buffered mode.
388+
S3AsyncClient v3ClientWithDelayedAuth = S3AsyncEncryptionClient.builder()
389+
.aesKey(AES_KEY)
390+
.cryptoProvider(provider)
391+
.enableDelayedAuthenticationMode(true)
392+
.build();
390393

391-
// Tight bound on the custom buffer size limit of 32MiB
392-
final long fileSizeExceedingDefaultLimit = 1024 * 1024 * 32 + 1;
393-
byte[] data = new byte[(int) fileSizeExceedingDefaultLimit];
394-
for(int j=0; j < data.length; j++) {
395-
data[j] = (byte) (j % 256);
396-
}
397-
final InputStream largeObjectStream = new ByteArrayInputStream(data);
398-
ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
399-
CompletableFuture<PutObjectResponse> futurePut = v3ClientWithBuffer32MiB.putObject(PutObjectRequest.builder()
400-
.bucket(BUCKET)
401-
.key(objectKey)
402-
.build(), AsyncRequestBody.fromInputStream(largeObjectStream, fileSizeExceedingDefaultLimit, singleThreadExecutor));
394+
// Tight bound on the custom buffer size limit of 32MiB
395+
final long fileSizeExceedingDefaultLimit = 1024 * 1024 * 32 + 1;
396+
byte[] data = new byte[(int) fileSizeExceedingDefaultLimit];
397+
for(int j=0; j < data.length; j++) {
398+
data[j] = (byte) (j % 256);
399+
}
400+
final InputStream largeObjectStream = new ByteArrayInputStream(data);
401+
ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
402+
CompletableFuture<PutObjectResponse> futurePut = v3ClientWithBuffer32MiB.putObject(PutObjectRequest.builder()
403+
.bucket(BUCKET)
404+
.key(objectKey)
405+
.build(), AsyncRequestBody.fromInputStream(largeObjectStream, fileSizeExceedingDefaultLimit, singleThreadExecutor));
403406

404-
futurePut.join();
405-
largeObjectStream.close();
406-
singleThreadExecutor.shutdown();
407+
futurePut.join();
408+
largeObjectStream.close();
409+
singleThreadExecutor.shutdown();
407410

408-
try {
409-
// Object is larger than Buffer, so getObject fails
410-
CompletableFuture<ResponseInputStream<GetObjectResponse>> futureResponse = v3ClientWithBuffer32MiB.getObject(builder -> builder
411+
try {
412+
// Object is larger than Buffer, so getObject fails
413+
CompletableFuture<ResponseInputStream<GetObjectResponse>> futureResponse = v3ClientWithBuffer32MiB.getObject(builder -> builder
414+
.bucket(BUCKET)
415+
.key(objectKey), AsyncResponseTransformer.toBlockingInputStream());
416+
futureResponse.join();
417+
} catch (CompletionException e) {
418+
assertEquals(S3EncryptionClientException.class, e.getCause().getClass());
419+
}
420+
421+
// You have to either enable the delayed auth mode or increase max buffer size (but in allowed bounds)
422+
CompletableFuture<ResponseInputStream<GetObjectResponse>> futureGet = v3ClientWithDelayedAuth.getObject(builder -> builder
411423
.bucket(BUCKET)
412424
.key(objectKey), AsyncResponseTransformer.toBlockingInputStream());
413-
futureResponse.join();
414-
} catch (CompletionException e) {
415-
assertEquals(S3EncryptionClientException.class, e.getCause().getClass());
416-
}
425+
ResponseInputStream<GetObjectResponse> output = futureGet.join();
417426

418-
// You have to either enable the delayed auth mode or increase max buffer size (but in allowed bounds)
419-
CompletableFuture<ResponseInputStream<GetObjectResponse>> futureGet = v3ClientWithDelayedAuth.getObject(builder -> builder
420-
.bucket(BUCKET)
421-
.key(objectKey), AsyncResponseTransformer.toBlockingInputStream());
422-
ResponseInputStream<GetObjectResponse> output = futureGet.join();
427+
ByteArrayInputStream expectedStream = new ByteArrayInputStream(data);
428+
assertTrue(IOUtils.contentEquals(expectedStream, output));
423429

424-
ByteArrayInputStream expectedStream = new ByteArrayInputStream(data);
425-
assertTrue(IOUtils.contentEquals(expectedStream, output));
430+
output.close();
426431

427-
output.close();
428-
429-
// Cleanup
430-
deleteObject(BUCKET, objectKey, v3ClientWithBuffer32MiB);
431-
v3ClientWithBuffer32MiB.close();
432-
v3ClientWithDelayedAuth.close();
432+
// Cleanup
433+
deleteObject(BUCKET, objectKey, v3ClientWithBuffer32MiB);
434+
v3ClientWithBuffer32MiB.close();
435+
v3ClientWithDelayedAuth.close();
436+
}
433437
}
434438

435439
@Test

0 commit comments

Comments
 (0)