Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -113,12 +113,8 @@ public void testWriteAndHappy() throws IOException
{
chunkSize = 10;
ByteBuffer bb = ByteBuffer.allocate(Integer.BYTES);
try (RetryableS3OutputStream out = new RetryableS3OutputStream(
config,
s3,
path,
s3UploadManager
)) {
try (RetryableS3OutputStream out =
new RetryableS3OutputStream(config, s3, path, s3UploadManager)) {
for (int i = 0; i < 25; i++) {
bb.clear();
bb.putInt(i);
Expand All @@ -135,12 +131,8 @@ public void testWriteSizeLargerThanConfiguredMaxChunkSizeShouldSucceed() throws
{
chunkSize = 10;
ByteBuffer bb = ByteBuffer.allocate(Integer.BYTES * 3);
try (RetryableS3OutputStream out = new RetryableS3OutputStream(
config,
s3,
path,
s3UploadManager
)) {
try (RetryableS3OutputStream out =
new RetryableS3OutputStream(config, s3, path, s3UploadManager)) {
bb.clear();
bb.putInt(1);
bb.putInt(2);
Expand All @@ -156,12 +148,8 @@ public void testWriteSizeLargerThanConfiguredMaxChunkSizeShouldSucceed() throws
public void testWriteSmallBufferShouldSucceed() throws IOException
{
chunkSize = 128;
try (RetryableS3OutputStream out = new RetryableS3OutputStream(
config,
s3,
path,
s3UploadManager
)) {
try (RetryableS3OutputStream out =
new RetryableS3OutputStream(config, s3, path, s3UploadManager)) {
for (int i = 0; i < 600; i++) {
out.write(i);
}
Expand All @@ -171,19 +159,31 @@ public void testWriteSmallBufferShouldSucceed() throws IOException
s3.assertCompleted(chunkSize, 600);
}

@Test
public void testWriteSmallBufferExactChunkSizeShouldSucceed() throws IOException
{
chunkSize = 128;
final int fileSize = 128 * 5;
try (RetryableS3OutputStream out =
new RetryableS3OutputStream(config, s3, path, s3UploadManager)) {
for (int i = 0; i < fileSize; i++) {
out.write(i);
}
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
}
// each chunk 128 bytes, so there should be 5 chunks.
Assert.assertEquals(5, s3.partRequests.size());
s3.assertCompleted(chunkSize, fileSize);
}

@Test
public void testSuccessToUploadAfterRetry() throws IOException
{
final TestAmazonS3 s3 = new TestAmazonS3(1);

chunkSize = 10;
ByteBuffer bb = ByteBuffer.allocate(Integer.BYTES);
try (RetryableS3OutputStream out = new RetryableS3OutputStream(
config,
s3,
path,
s3UploadManager
)) {
try (RetryableS3OutputStream out =
new RetryableS3OutputStream(config, s3, path, s3UploadManager)) {
for (int i = 0; i < 25; i++) {
bb.clear();
bb.putInt(i);
Expand All @@ -201,12 +201,8 @@ public void testFailToUploadAfterRetries() throws IOException
final TestAmazonS3 s3 = new TestAmazonS3(3);

ByteBuffer bb = ByteBuffer.allocate(Integer.BYTES);
try (RetryableS3OutputStream out = new RetryableS3OutputStream(
config,
s3,
path,
s3UploadManager
)) {
try (RetryableS3OutputStream out =
new RetryableS3OutputStream(config, s3, path, s3UploadManager)) {
for (int i = 0; i < 2; i++) {
bb.clear();
bb.putInt(i);
Expand Down Expand Up @@ -284,13 +280,16 @@ private void assertCompleted(long chunkSize, long expectedFileSize)
Set<Integer> partNumbersFromRequest = partRequests.stream().map(UploadPartRequest::getPartNumber).collect(Collectors.toSet());
Assert.assertEquals(partRequests.size(), partNumbersFromRequest.size());

for (int i = 0; i < partRequests.size(); i++) {
if (i < partRequests.size() - 1) {
Assert.assertEquals(chunkSize, partRequests.get(i).getPartSize());
} else {
Assert.assertTrue(chunkSize >= partRequests.get(i).getPartSize());
// Verify sizes of uploaded chunks
int numSmallerChunks = 0;
for (UploadPartRequest part : partRequests) {
Assert.assertTrue(part.getPartSize() <= chunkSize);
if (part.getPartSize() < chunkSize) {
++numSmallerChunks;
}
}
Assert.assertTrue(numSmallerChunks <= 1);

final List<PartETag> eTags = completeRequest.getPartETags();
Assert.assertEquals(partRequests.size(), eTags.size());
Assert.assertEquals(
Expand Down