|
16 | 16 | package software.amazon.awssdk.transfer.s3;
|
17 | 17 |
|
18 | 18 | import static org.assertj.core.api.Assertions.assertThat;
|
| 19 | +import static org.junit.jupiter.api.Assumptions.assumeTrue; |
19 | 20 | import static software.amazon.awssdk.testutils.service.S3BucketUtils.temporaryBucketName;
|
20 | 21 |
|
21 | 22 | import java.io.IOException;
|
@@ -215,4 +216,31 @@ void upload_file_Interupted_CancelsTheListener(S3TransferManager tm) {
|
215 | 216 | assertThat(transferListener.getRatioTransferredList().get(transferListener.getRatioTransferredList().size() - 1))
|
216 | 217 | .isNotEqualTo(100.0);
|
217 | 218 | }
|
| 219 | + |
| 220 | + @ParameterizedTest |
| 221 | + @MethodSource("transferManagers") |
| 222 | + void upload_asyncRequestBody_ReportsProgressCorrectly(S3TransferManager tm) throws IOException { |
| 223 | + String content = RandomStringUtils.randomAscii(OBJ_SIZE); |
| 224 | + CaptureTransferListener transferListener = new CaptureTransferListener(); |
| 225 | + |
| 226 | + Upload upload = |
| 227 | + tm.upload(UploadRequest.builder() |
| 228 | + .putObjectRequest(b -> b.bucket(TEST_BUCKET).key(TEST_KEY)) |
| 229 | + .requestBody(AsyncRequestBody.fromString(content)) |
| 230 | + .addTransferListener(LoggingTransferListener.create()) |
| 231 | + .addTransferListener(transferListener) |
| 232 | + .build()); |
| 233 | + |
| 234 | + upload.completionFuture().join(); |
| 235 | + ResponseInputStream<GetObjectResponse> obj = s3.getObject(r -> r.bucket(TEST_BUCKET).key(TEST_KEY), |
| 236 | + ResponseTransformer.toInputStream()); |
| 237 | + |
| 238 | + assertThat(ChecksumUtils.computeCheckSum(content.getBytes(StandardCharsets.UTF_8))) |
| 239 | + .isEqualTo(ChecksumUtils.computeCheckSum(obj)); |
| 240 | + |
| 241 | + assertListenerForSuccessfulTransferComplete(transferListener); |
| 242 | + |
| 243 | + // ensure intermediate progress is reported |
| 244 | + assertThat(transferListener.getRatioTransferredList()).hasSizeGreaterThan(2); |
| 245 | + } |
218 | 246 | }
|
0 commit comments