Skip to content

Commit 75fbe14

Browse files
authored
Merge pull request #2354 from adobe/2334-support-crc64nvme-checksums
Support crc64nvme checksum
2 parents 46673a5 + dd97462 commit 75fbe14

26 files changed

+354
-344
lines changed

CHANGELOG.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,10 @@ Version 4.x is JDK17 LTS bytecode compatible, with Docker and JUnit / direct Jav
146146
* Refactorings
147147
* TBD
148148
* Version updates (deliverable dependencies)
149-
* TBD
149+
* Bump spring-boot.version from 3.4.4 to 3.4.5
150+
* Bump testcontainers.version from 1.20.6 to 1.21.0
150151
* Version updates (build dependencies)
151-
* TBD
152+
* Bump github/codeql-action from 3.28.15 to 3.28.16
152153

153154
## 4.1.1
154155
Version 4.x is JDK17 LTS bytecode compatible, with Docker and JUnit / direct Java integration.

integration-tests/src/test/kotlin/com/adobe/testing/s3mock/its/AclIT.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ internal class AclIT : S3TestBase() {
108108
val userName = "John Doe"
109109
val granteeId = "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2ef"
110110
val granteeName = "Jane Doe"
111-
val granteeEmail = "jane@doe.com"
111+
"jane@doe.com"
112112
s3Client.putObjectAcl {
113113
it.bucket(bucketName)
114114
it.key(sourceKey)

integration-tests/src/test/kotlin/com/adobe/testing/s3mock/its/AwsChunkedEncodingIT.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import com.adobe.testing.s3mock.util.DigestUtil
2020
import org.assertj.core.api.Assertions.assertThat
2121
import org.junit.jupiter.api.Test
2222
import org.junit.jupiter.api.TestInfo
23-
import software.amazon.awssdk.core.checksums.Algorithm
23+
import software.amazon.awssdk.checksums.DefaultChecksumAlgorithm
2424
import software.amazon.awssdk.core.sync.RequestBody
2525
import software.amazon.awssdk.services.s3.model.ChecksumAlgorithm
2626
import java.io.File
@@ -49,7 +49,7 @@ internal class AwsChunkedEncodingIT : S3TestBase() {
4949
val uploadFile = File(UPLOAD_FILE_NAME)
5050
val uploadFileIs: InputStream = FileInputStream(uploadFile)
5151
val expectedEtag = "\"${DigestUtil.hexDigest(uploadFileIs)}\""
52-
val expectedChecksum = DigestUtil.checksumFor(uploadFile.toPath(), Algorithm.SHA256)
52+
val expectedChecksum = DigestUtil.checksumFor(uploadFile.toPath(), DefaultChecksumAlgorithm.SHA256)
5353

5454
val putObjectResponse = s3Client.putObject(
5555
{

integration-tests/src/test/kotlin/com/adobe/testing/s3mock/its/GetPutDeleteObjectIT.kt

Lines changed: 32 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ import org.junit.jupiter.params.ParameterizedTest
2525
import org.junit.jupiter.params.provider.CsvSource
2626
import org.junit.jupiter.params.provider.MethodSource
2727
import org.springframework.http.ContentDisposition
28+
import software.amazon.awssdk.checksums.DefaultChecksumAlgorithm
2829
import software.amazon.awssdk.core.async.AsyncRequestBody
29-
import software.amazon.awssdk.core.checksums.Algorithm
3030
import software.amazon.awssdk.core.sync.RequestBody
3131
import software.amazon.awssdk.services.s3.S3AsyncClient
3232
import software.amazon.awssdk.services.s3.S3Client
@@ -313,7 +313,7 @@ internal class GetPutDeleteObjectIT : S3TestBase() {
313313
@S3VerifiedSuccess(year = 2025)
314314
fun testPutGetHeadDeleteObjects_nonExistentKey(testInfo: TestInfo) {
315315
val key = UPLOAD_FILE_NAME
316-
val uploadFile = File(UPLOAD_FILE_NAME)
316+
File(UPLOAD_FILE_NAME)
317317
val bucketName = givenBucket(testInfo)
318318
givenObject(bucketName, key)
319319

@@ -463,7 +463,7 @@ internal class GetPutDeleteObjectIT : S3TestBase() {
463463
@S3VerifiedSuccess(year = 2025)
464464
fun testPutObject_getObjectAttributes(testInfo: TestInfo) {
465465
val uploadFile = File(UPLOAD_FILE_NAME)
466-
val expectedChecksum = DigestUtil.checksumFor(uploadFile.toPath(), Algorithm.SHA1)
466+
val expectedChecksum = DigestUtil.checksumFor(uploadFile.toPath(), DefaultChecksumAlgorithm.SHA1)
467467
val bucketName = givenBucket(testInfo)
468468

469469
val eTag = s3Client.putObject({
@@ -499,7 +499,7 @@ internal class GetPutDeleteObjectIT : S3TestBase() {
499499
val uploadFile = File(UPLOAD_FILE_NAME)
500500
val bucketName = givenBucket(testInfo)
501501

502-
val eTag = s3Client.putObject({
502+
s3Client.putObject({
503503
it.bucket(bucketName)
504504
it.key(UPLOAD_FILE_NAME)
505505
it.metadata(mapOf("key1" to "value1", "key2" to "value2"))
@@ -519,20 +519,17 @@ internal class GetPutDeleteObjectIT : S3TestBase() {
519519
@S3VerifiedSuccess(year = 2025)
520520
@ParameterizedTest
521521
@MethodSource(value = ["checksumAlgorithms"])
522-
fun testPutObject_checksumAlgorithm_http(checksumAlgorithm: ChecksumAlgorithm) {
523-
if(checksumAlgorithm != ChecksumAlgorithm.SHA256) {
524-
//TODO: find out why the SHA256 checksum sent by the Java SDKv2 is wrong and this test is failing...
525-
testChecksumAlgorithm(SAMPLE_FILE, checksumAlgorithm, s3ClientHttp)
526-
testChecksumAlgorithm(SAMPLE_FILE_LARGE, checksumAlgorithm, s3ClientHttp)
527-
testChecksumAlgorithm(TEST_IMAGE, checksumAlgorithm, s3ClientHttp)
528-
testChecksumAlgorithm(TEST_IMAGE_LARGE, checksumAlgorithm, s3ClientHttp)
529-
}
522+
fun testPutObject_checksumAlgorithm_http(checksumAlgorithm: software.amazon.awssdk.checksums.spi.ChecksumAlgorithm) {
523+
testChecksumAlgorithm(SAMPLE_FILE, checksumAlgorithm, s3ClientHttp)
524+
testChecksumAlgorithm(SAMPLE_FILE_LARGE, checksumAlgorithm, s3ClientHttp)
525+
testChecksumAlgorithm(TEST_IMAGE, checksumAlgorithm, s3ClientHttp)
526+
testChecksumAlgorithm(TEST_IMAGE_LARGE, checksumAlgorithm, s3ClientHttp)
530527
}
531528

532529
@S3VerifiedSuccess(year = 2025)
533530
@ParameterizedTest
534531
@MethodSource(value = ["checksumAlgorithms"])
535-
fun testPutObject_checksumAlgorithm_https(checksumAlgorithm: ChecksumAlgorithm) {
532+
fun testPutObject_checksumAlgorithm_https(checksumAlgorithm: software.amazon.awssdk.checksums.spi.ChecksumAlgorithm) {
536533
testChecksumAlgorithm(SAMPLE_FILE, checksumAlgorithm, s3Client)
537534
testChecksumAlgorithm(SAMPLE_FILE_LARGE, checksumAlgorithm, s3Client)
538535
testChecksumAlgorithm(TEST_IMAGE, checksumAlgorithm, s3Client)
@@ -541,21 +538,21 @@ internal class GetPutDeleteObjectIT : S3TestBase() {
541538

542539
private fun GetPutDeleteObjectIT.testChecksumAlgorithm(
543540
testFileName: String,
544-
checksumAlgorithm: ChecksumAlgorithm,
541+
checksumAlgorithm: software.amazon.awssdk.checksums.spi.ChecksumAlgorithm,
545542
s3Client: S3Client,
546543
) {
547544
val uploadFile = File(testFileName)
548-
val expectedChecksum = DigestUtil.checksumFor(uploadFile.toPath(), checksumAlgorithm.toAlgorithm())
545+
val expectedChecksum = DigestUtil.checksumFor(uploadFile.toPath(), checksumAlgorithm)
549546
val bucketName = givenBucket(randomName)
550547

551548
s3Client.putObject({
552549
it.bucket(bucketName)
553550
it.key(testFileName)
554-
it.checksumAlgorithm(checksumAlgorithm)
551+
it.checksumAlgorithm(checksumAlgorithm.toAlgorithm())
555552
},
556553
RequestBody.fromFile(uploadFile)
557554
).also {
558-
val putChecksum = it.checksum(checksumAlgorithm)
555+
val putChecksum = it.checksum(checksumAlgorithm.toAlgorithm())
559556
assertThat(putChecksum).isNotBlank
560557
assertThat(putChecksum).isEqualTo(expectedChecksum)
561558
}
@@ -565,7 +562,7 @@ internal class GetPutDeleteObjectIT : S3TestBase() {
565562
it.key(testFileName)
566563
it.checksumMode(ChecksumMode.ENABLED)
567564
}.use {
568-
val getChecksum = it.response().checksum(checksumAlgorithm)
565+
val getChecksum = it.response().checksum(checksumAlgorithm.toAlgorithm())
569566
assertThat(getChecksum).isNotBlank
570567
assertThat(getChecksum).isEqualTo(expectedChecksum)
571568
}
@@ -575,7 +572,7 @@ internal class GetPutDeleteObjectIT : S3TestBase() {
575572
it.key(testFileName)
576573
it.checksumMode(ChecksumMode.ENABLED)
577574
}.also {
578-
val headChecksum = it.checksum(checksumAlgorithm)
575+
val headChecksum = it.checksum(checksumAlgorithm.toAlgorithm())
579576
assertThat(headChecksum).isNotBlank
580577
assertThat(headChecksum).isEqualTo(expectedChecksum)
581578
}
@@ -584,7 +581,7 @@ internal class GetPutDeleteObjectIT : S3TestBase() {
584581
@S3VerifiedSuccess(year = 2025)
585582
@ParameterizedTest
586583
@MethodSource(value = ["checksumAlgorithms"])
587-
fun testPutObject_checksumAlgorithm_async_http(checksumAlgorithm: ChecksumAlgorithm) {
584+
fun testPutObject_checksumAlgorithm_async_http(checksumAlgorithm: software.amazon.awssdk.checksums.spi.ChecksumAlgorithm) {
588585
testChecksumAlgorithm_async(SAMPLE_FILE, checksumAlgorithm, s3AsyncClientHttp)
589586
testChecksumAlgorithm_async(SAMPLE_FILE_LARGE, checksumAlgorithm, s3AsyncClientHttp)
590587
testChecksumAlgorithm_async(TEST_IMAGE, checksumAlgorithm, s3AsyncClientHttp)
@@ -604,7 +601,7 @@ internal class GetPutDeleteObjectIT : S3TestBase() {
604601
@S3VerifiedSuccess(year = 2025)
605602
@ParameterizedTest
606603
@MethodSource(value = ["checksumAlgorithms"])
607-
fun testPutObject_checksumAlgorithm_async_https(checksumAlgorithm: ChecksumAlgorithm) {
604+
fun testPutObject_checksumAlgorithm_async_https(checksumAlgorithm: software.amazon.awssdk.checksums.spi.ChecksumAlgorithm) {
608605
testChecksumAlgorithm_async(SAMPLE_FILE, checksumAlgorithm, s3AsyncClient)
609606
testChecksumAlgorithm_async(SAMPLE_FILE_LARGE, checksumAlgorithm, s3AsyncClient)
610607
testChecksumAlgorithm_async(TEST_IMAGE, checksumAlgorithm, s3AsyncClient)
@@ -623,21 +620,21 @@ internal class GetPutDeleteObjectIT : S3TestBase() {
623620

624621
private fun GetPutDeleteObjectIT.testChecksumAlgorithm_async(
625622
testFileName: String,
626-
checksumAlgorithm: ChecksumAlgorithm,
623+
checksumAlgorithm: software.amazon.awssdk.checksums.spi.ChecksumAlgorithm,
627624
s3Client: S3AsyncClient,
628625
) {
629626
val uploadFile = File(testFileName)
630-
val expectedChecksum = DigestUtil.checksumFor(uploadFile.toPath(), checksumAlgorithm.toAlgorithm())
627+
val expectedChecksum = DigestUtil.checksumFor(uploadFile.toPath(), checksumAlgorithm)
631628
val bucketName = givenBucket(randomName)
632629

633630
s3Client.putObject({
634631
it.bucket(bucketName)
635632
it.key(testFileName)
636-
it.checksumAlgorithm(checksumAlgorithm)
633+
it.checksumAlgorithm(checksumAlgorithm.toAlgorithm())
637634
},
638635
AsyncRequestBody.fromFile(uploadFile)
639636
).join().also {
640-
val putChecksum = it.checksum(checksumAlgorithm)
637+
val putChecksum = it.checksum(checksumAlgorithm.toAlgorithm())
641638
assertThat(putChecksum).isNotBlank
642639
assertThat(putChecksum).isEqualTo(expectedChecksum)
643640
}
@@ -647,7 +644,7 @@ internal class GetPutDeleteObjectIT : S3TestBase() {
647644
it.key(testFileName)
648645
it.checksumMode(ChecksumMode.ENABLED)
649646
}.use {
650-
val getChecksum = it.response().checksum(checksumAlgorithm)
647+
val getChecksum = it.response().checksum(checksumAlgorithm.toAlgorithm())
651648
assertThat(getChecksum).isNotBlank
652649
assertThat(getChecksum).isEqualTo(expectedChecksum)
653650
}
@@ -657,7 +654,7 @@ internal class GetPutDeleteObjectIT : S3TestBase() {
657654
it.key(testFileName)
658655
it.checksumMode(ChecksumMode.ENABLED)
659656
}.also {
660-
val headChecksum = it.checksum(checksumAlgorithm)
657+
val headChecksum = it.checksum(checksumAlgorithm.toAlgorithm())
661658
assertThat(headChecksum).isNotBlank
662659
assertThat(headChecksum).isEqualTo(expectedChecksum)
663660
}
@@ -670,25 +667,26 @@ internal class GetPutDeleteObjectIT : S3TestBase() {
670667
ChecksumAlgorithm.SHA256 -> this.checksumSHA256(checksum)
671668
ChecksumAlgorithm.CRC32 -> this.checksumCRC32(checksum)
672669
ChecksumAlgorithm.CRC32_C -> this.checksumCRC32C(checksum)
673-
//ChecksumAlgorithm.CRC64_NVME -> this.checksumCRC64NVME(checksum)
670+
ChecksumAlgorithm.CRC64_NVME -> this.checksumCRC64NVME(checksum)
674671
else -> error("Unknown checksum algorithm")
675672
}
676673

677674
@S3VerifiedSuccess(year = 2025)
678675
@ParameterizedTest
679676
@MethodSource(value = ["checksumAlgorithms"])
680-
fun testPutObject_checksum(checksumAlgorithm: ChecksumAlgorithm, testInfo: TestInfo) {
677+
fun testPutObject_checksum(checksumAlgorithm: software.amazon.awssdk.checksums.spi.ChecksumAlgorithm,
678+
testInfo: TestInfo) {
681679
val uploadFile = File(UPLOAD_FILE_NAME)
682-
val expectedChecksum = DigestUtil.checksumFor(uploadFile.toPath(), checksumAlgorithm.toAlgorithm())
680+
val expectedChecksum = DigestUtil.checksumFor(uploadFile.toPath(), checksumAlgorithm)
683681
val bucketName = givenBucket(testInfo)
684682

685683
s3Client.putObject({
686-
it.checksum(expectedChecksum, checksumAlgorithm)
684+
it.checksum(expectedChecksum, checksumAlgorithm.toAlgorithm())
687685
it.bucket(bucketName).key(UPLOAD_FILE_NAME)
688686
},
689687
RequestBody.fromFile(uploadFile)
690688
).also {
691-
val putChecksum = it.checksum(checksumAlgorithm)!!
689+
val putChecksum = it.checksum(checksumAlgorithm.toAlgorithm())!!
692690
assertThat(putChecksum).isNotBlank
693691
assertThat(putChecksum).isEqualTo(expectedChecksum)
694692
}
@@ -698,7 +696,7 @@ internal class GetPutDeleteObjectIT : S3TestBase() {
698696
it.key(UPLOAD_FILE_NAME)
699697
it.checksumMode(ChecksumMode.ENABLED)
700698
}.use {
701-
val getChecksum = it.response().checksum(checksumAlgorithm)
699+
val getChecksum = it.response().checksum(checksumAlgorithm.toAlgorithm())
702700
assertThat(getChecksum).isNotBlank
703701
assertThat(getChecksum).isEqualTo(expectedChecksum)
704702
}
@@ -708,7 +706,7 @@ internal class GetPutDeleteObjectIT : S3TestBase() {
708706
it.key(UPLOAD_FILE_NAME)
709707
it.checksumMode(ChecksumMode.ENABLED)
710708
}.also {
711-
val headChecksum = it.checksum(checksumAlgorithm)
709+
val headChecksum = it.checksum(checksumAlgorithm.toAlgorithm())
712710
assertThat(headChecksum).isNotBlank
713711
assertThat(headChecksum).isEqualTo(expectedChecksum)
714712
}

integration-tests/src/test/kotlin/com/adobe/testing/s3mock/its/ListObjectsIT.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -254,9 +254,6 @@ internal class ListObjectsIT : S3TestBase() {
254254
fun listV1(parameters: Param, testInfo: TestInfo) {
255255
val bucketName = givenBucket(testInfo)
256256
val uploadFile = File(UPLOAD_FILE_NAME)
257-
val weirdStuff = "\u0001" // key invalid in XML
258-
val prefix = "shouldHonorEncodingTypeV2/"
259-
val key = "$prefix$weirdStuff${uploadFile.name}$weirdStuff"
260257

261258
for(key in ALL_OBJECTS) {
262259
s3Client.putObject(
@@ -308,9 +305,6 @@ internal class ListObjectsIT : S3TestBase() {
308305
fun listV2(parameters: Param, testInfo: TestInfo) {
309306
val bucketName = givenBucket(testInfo)
310307
val uploadFile = File(UPLOAD_FILE_NAME)
311-
val weirdStuff = "\u0001" // key invalid in XML
312-
val prefix = "shouldHonorEncodingTypeV2/"
313-
val key = "$prefix$weirdStuff${uploadFile.name}$weirdStuff"
314308

315309
for(key in ALL_OBJECTS) {
316310
s3Client.putObject(

integration-tests/src/test/kotlin/com/adobe/testing/s3mock/its/MultiPartIT.kt

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ import org.junit.jupiter.params.provider.MethodSource
3030
import org.springframework.web.util.UriUtils
3131
import software.amazon.awssdk.awscore.exception.AwsErrorDetails
3232
import software.amazon.awssdk.awscore.exception.AwsServiceException
33+
import software.amazon.awssdk.checksums.DefaultChecksumAlgorithm
3334
import software.amazon.awssdk.core.async.AsyncRequestBody
34-
import software.amazon.awssdk.core.checksums.Algorithm.CRC32
3535
import software.amazon.awssdk.core.sync.RequestBody
3636
import software.amazon.awssdk.services.s3.S3AsyncClient
3737
import software.amazon.awssdk.services.s3.S3Client
@@ -75,7 +75,7 @@ internal class MultiPartIT : S3TestBase() {
7575
},
7676
AsyncRequestBody.fromFile(uploadFile)
7777
).join().also {
78-
assertThat(it.checksumCRC32()).isEqualTo(DigestUtil.checksumFor(uploadFile.toPath(), CRC32))
78+
assertThat(it.checksumCRC32()).isEqualTo(DigestUtil.checksumFor(uploadFile.toPath(), DefaultChecksumAlgorithm.CRC32))
7979
}
8080

8181
s3AsyncClient.waiter().waitUntilObjectExists {
@@ -308,9 +308,9 @@ internal class MultiPartIT : S3TestBase() {
308308
)
309309
val etag2 = partResponse2.eTag()
310310
val checksum2 = partResponse2.checksumCRC32()
311-
val localChecksum1 = DigestUtil.checksumFor(tempFile.toPath(), CRC32)
311+
val localChecksum1 = DigestUtil.checksumFor(tempFile.toPath(), DefaultChecksumAlgorithm.CRC32)
312312
assertThat(checksum1).isEqualTo(localChecksum1)
313-
val localChecksum2 = DigestUtil.checksumFor(uploadFile.toPath(), CRC32)
313+
val localChecksum2 = DigestUtil.checksumFor(uploadFile.toPath(), DefaultChecksumAlgorithm.CRC32)
314314
assertThat(checksum2).isEqualTo(localChecksum2)
315315

316316
val completeMultipartUpload = s3Client.completeMultipartUpload {
@@ -358,29 +358,30 @@ internal class MultiPartIT : S3TestBase() {
358358
@S3VerifiedSuccess(year = 2025)
359359
@ParameterizedTest
360360
@MethodSource(value = ["checksumAlgorithms"])
361-
fun testUploadPart_checksumAlgorithm(checksumAlgorithm: ChecksumAlgorithm, testInfo: TestInfo) {
361+
fun testUploadPart_checksumAlgorithm(checksumAlgorithm: software.amazon.awssdk.checksums.spi.ChecksumAlgorithm,
362+
testInfo: TestInfo) {
362363
val bucketName = givenBucket(testInfo)
363364
val uploadFile = File(UPLOAD_FILE_NAME)
364-
val expectedChecksum = DigestUtil.checksumFor(uploadFile.toPath(), checksumAlgorithm.toAlgorithm())
365+
val expectedChecksum = DigestUtil.checksumFor(uploadFile.toPath(), checksumAlgorithm)
365366
val initiateMultipartUploadResult = s3Client.createMultipartUpload {
366367
it.bucket(bucketName)
367368
it.key(UPLOAD_FILE_NAME)
368-
it.checksumAlgorithm(checksumAlgorithm)
369+
it.checksumAlgorithm(checksumAlgorithm.toAlgorithm())
369370
}
370371
val uploadId = initiateMultipartUploadResult.uploadId()
371372

372373
s3Client.uploadPart({
373374
it.bucket(initiateMultipartUploadResult.bucket())
374375
it.key(initiateMultipartUploadResult.key())
375376
it.uploadId(uploadId)
376-
it.checksumAlgorithm(checksumAlgorithm)
377+
it.checksumAlgorithm(checksumAlgorithm.toAlgorithm())
377378
it.partNumber(1)
378379
it.contentLength(uploadFile.length()).build()
379380
//.lastPart(true)
380381
},
381382
RequestBody.fromFile(uploadFile),
382383
).also {
383-
val actualChecksum = it.checksum(checksumAlgorithm)
384+
val actualChecksum = it.checksum(checksumAlgorithm.toAlgorithm())
384385
assertThat(actualChecksum).isNotBlank
385386
assertThat(actualChecksum).isEqualTo(expectedChecksum)
386387
}
@@ -394,29 +395,30 @@ internal class MultiPartIT : S3TestBase() {
394395
@S3VerifiedSuccess(year = 2025)
395396
@ParameterizedTest
396397
@MethodSource(value = ["checksumAlgorithms"])
397-
fun testMultipartUpload_checksum(checksumAlgorithm: ChecksumAlgorithm, testInfo: TestInfo) {
398+
fun testMultipartUpload_checksum(checksumAlgorithm: software.amazon.awssdk.checksums.spi.ChecksumAlgorithm,
399+
testInfo: TestInfo) {
398400
val bucketName = givenBucket(testInfo)
399401
val uploadFile = File(UPLOAD_FILE_NAME)
400-
val expectedChecksum = DigestUtil.checksumFor(uploadFile.toPath(), checksumAlgorithm.toAlgorithm())
402+
val expectedChecksum = DigestUtil.checksumFor(uploadFile.toPath(), checksumAlgorithm)
401403
val initiateMultipartUploadResult = s3Client.createMultipartUpload {
402404
it.bucket(bucketName)
403405
it.key(UPLOAD_FILE_NAME)
404-
it.checksumAlgorithm(checksumAlgorithm)
406+
it.checksumAlgorithm(checksumAlgorithm.toAlgorithm())
405407
}
406408
val uploadId = initiateMultipartUploadResult.uploadId()
407409

408410
s3Client.uploadPart({
409411
it.bucket(initiateMultipartUploadResult.bucket())
410412
it.key(initiateMultipartUploadResult.key())
411413
it.uploadId(uploadId)
412-
it.checksum(expectedChecksum, checksumAlgorithm)
414+
it.checksum(expectedChecksum, checksumAlgorithm.toAlgorithm())
413415
it.partNumber(1)
414416
it.contentLength(uploadFile.length()).build()
415417
//.lastPart(true)
416418
},
417419
RequestBody.fromFile(uploadFile),
418420
).also {
419-
val actualChecksum = it.checksum(checksumAlgorithm)
421+
val actualChecksum = it.checksum(checksumAlgorithm.toAlgorithm())
420422
assertThat(actualChecksum).isNotBlank
421423
assertThat(actualChecksum).isEqualTo(expectedChecksum)
422424
}
@@ -467,6 +469,7 @@ internal class MultiPartIT : S3TestBase() {
467469
ChecksumAlgorithm.SHA256 -> this.checksumSHA256(checksum)
468470
ChecksumAlgorithm.CRC32 -> this.checksumCRC32(checksum)
469471
ChecksumAlgorithm.CRC32_C -> this.checksumCRC32C(checksum)
472+
ChecksumAlgorithm.CRC64_NVME -> this.checksumCRC64NVME(checksum)
470473
else -> error("Unknown checksum algorithm")
471474
}
472475

@@ -1221,7 +1224,7 @@ internal class MultiPartIT : S3TestBase() {
12211224
@S3VerifiedSuccess(year = 2025)
12221225
fun transferManagerCopy_noSuchDestinationBucket(testInfo: TestInfo) {
12231226
val sourceKey = UPLOAD_FILE_NAME
1224-
val (bucketName, putObjectResult) = givenBucketAndObject(testInfo, sourceKey)
1227+
val (_, _) = givenBucketAndObject(testInfo, sourceKey)
12251228
val destinationBucketName = givenBucket()
12261229
val destinationKey = "copyOf/$sourceKey"
12271230

0 commit comments

Comments
 (0)