From 5dfd7f4d41337e336e7702b69265ec61e74da39f Mon Sep 17 00:00:00 2001 From: Munendra S N Date: Sat, 5 Oct 2024 12:25:23 +0530 Subject: [PATCH] add integration test for cross-region-access-enabled --- .../aws/s3/TestS3FileIOIntegration.java | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/aws/src/integration/java/org/apache/iceberg/aws/s3/TestS3FileIOIntegration.java b/aws/src/integration/java/org/apache/iceberg/aws/s3/TestS3FileIOIntegration.java index 388260a54657..41a07401a1e6 100644 --- a/aws/src/integration/java/org/apache/iceberg/aws/s3/TestS3FileIOIntegration.java +++ b/aws/src/integration/java/org/apache/iceberg/aws/s3/TestS3FileIOIntegration.java @@ -182,6 +182,29 @@ public void testNewInputStreamWithAccessPoint() throws Exception { validateRead(s3FileIO); } + @Test + public void testCrossRegionAccessEnabled() throws Exception { + clientFactory.initialize( + ImmutableMap.of(S3FileIOProperties.CROSS_REGION_ACCESS_ENABLED, "true")); + S3Client s3Client = clientFactory.s3(); + String crossBucketObjectKey = String.format("%s/%s", prefix, UUID.randomUUID()); + String crossBucketObjectUri = + String.format("s3://%s/%s", crossRegionBucketName, crossBucketObjectKey); + try { + s3Client.putObject( + PutObjectRequest.builder() + .bucket(crossRegionBucketName) + .key(crossBucketObjectKey) + .build(), + RequestBody.fromBytes(contentBytes)); + // make a copy in cross-region bucket + S3FileIO s3FileIO = new S3FileIO(clientFactory::s3); + validateRead(s3FileIO, crossBucketObjectUri); + } finally { + AwsIntegTestUtil.cleanS3Bucket(s3Client, crossRegionBucketName, crossBucketObjectKey); + } + } + @Test public void testNewInputStreamWithCrossRegionAccessPoint() throws Exception { clientFactory.initialize(ImmutableMap.of(S3FileIOProperties.USE_ARN_REGION_ENABLED, "true")); @@ -550,7 +573,11 @@ private void write(S3FileIO s3FileIO, String uri) throws Exception { } private void validateRead(S3FileIO s3FileIO) throws Exception { - InputFile file = s3FileIO.newInputFile(objectUri); + validateRead(s3FileIO, objectUri); + } + + private void validateRead(S3FileIO s3FileIO, String s3Uri) throws Exception { + InputFile file = s3FileIO.newInputFile(s3Uri); assertThat(file.getLength()).isEqualTo(contentBytes.length); try (InputStream stream = file.newStream()) { String result = IoUtils.toUtf8String(stream);