github-advanced-security[bot] commented on code in PR #15238:
URL: https://github.com/apache/druid/pull/15238#discussion_r1369478254
##########
extensions-core/s3-extensions/src/test/java/org/apache/druid/storage/s3/S3DataSegmentPullerTest.java:
##########
@@ -165,6 +165,65 @@
AmazonS3Exception exception = new
AmazonS3Exception("S3DataSegmentPullerTest");
exception.setErrorCode("NoSuchKey");
exception.setStatusCode(404);
+
EasyMock.expect(s3Client.doesObjectExist(EasyMock.eq(object0.getBucketName()),
EasyMock.eq(object0.getKey())))
+ .andReturn(true)
+ .once();
+ EasyMock.expect(s3Client.getObject(EasyMock.eq(bucket),
EasyMock.eq(object0.getKey())))
+ .andThrow(exception)
+ .once();
+ S3DataSegmentPuller puller = new S3DataSegmentPuller(s3Client);
+
+ EasyMock.replay(s3Client);
+ Assert.assertThrows(
+ SegmentLoadingException.class,
+ () -> puller.getSegmentFiles(
+ new CloudObjectLocation(
+ bucket,
+ object0.getKey()
+ ), tmpDir
+ )
+ );
+ EasyMock.verify(s3Client);
+
+ File expected = new File(tmpDir, "renames-0");
+ Assert.assertFalse(expected.exists());
+ }
+
+ @Test
+ public void testGZUncompressOn5xxError() throws IOException,
SegmentLoadingException
+ {
+ final String bucket = "bucket";
+ final String keyPrefix = "prefix/dir/0";
+ final ServerSideEncryptingAmazonS3 s3Client =
EasyMock.createStrictMock(ServerSideEncryptingAmazonS3.class);
+ final byte[] value = bucket.getBytes(StandardCharsets.UTF_8);
+
+ final File tmpFile = temporaryFolder.newFile("gzTest.gz");
+
+ try (OutputStream outputStream = new GZIPOutputStream(new
FileOutputStream(tmpFile))) {
+ outputStream.write(value);
+ }
+
+ S3Object object0 = new S3Object();
+
+ object0.setBucketName(bucket);
+ object0.setKey(keyPrefix + "/renames-0.gz");
+ object0.getObjectMetadata().setLastModified(new Date(0));
+ object0.setObjectContent(new FileInputStream(tmpFile));
Review Comment:
## Potential input resource leak
This FileInputStream is not always closed on method exit.
[Show more
details](https://github.com/apache/druid/security/code-scanning/2078)
##########
extensions-core/s3-extensions/src/test/java/org/apache/druid/storage/s3/S3DataSegmentPullerTest.java:
##########
@@ -165,6 +165,65 @@
AmazonS3Exception exception = new
AmazonS3Exception("S3DataSegmentPullerTest");
exception.setErrorCode("NoSuchKey");
exception.setStatusCode(404);
+
EasyMock.expect(s3Client.doesObjectExist(EasyMock.eq(object0.getBucketName()),
EasyMock.eq(object0.getKey())))
+ .andReturn(true)
+ .once();
+ EasyMock.expect(s3Client.getObject(EasyMock.eq(bucket),
EasyMock.eq(object0.getKey())))
+ .andThrow(exception)
+ .once();
+ S3DataSegmentPuller puller = new S3DataSegmentPuller(s3Client);
+
+ EasyMock.replay(s3Client);
+ Assert.assertThrows(
+ SegmentLoadingException.class,
+ () -> puller.getSegmentFiles(
+ new CloudObjectLocation(
+ bucket,
+ object0.getKey()
+ ), tmpDir
+ )
+ );
+ EasyMock.verify(s3Client);
+
+ File expected = new File(tmpDir, "renames-0");
+ Assert.assertFalse(expected.exists());
+ }
+
+ @Test
+ public void testGZUncompressOn5xxError() throws IOException,
SegmentLoadingException
+ {
+ final String bucket = "bucket";
+ final String keyPrefix = "prefix/dir/0";
+ final ServerSideEncryptingAmazonS3 s3Client =
EasyMock.createStrictMock(ServerSideEncryptingAmazonS3.class);
+ final byte[] value = bucket.getBytes(StandardCharsets.UTF_8);
+
+ final File tmpFile = temporaryFolder.newFile("gzTest.gz");
+
+ try (OutputStream outputStream = new GZIPOutputStream(new
FileOutputStream(tmpFile))) {
Review Comment:
## Potential output resource leak
This FileOutputStream is not always closed on method exit.
[Show more
details](https://github.com/apache/druid/security/code-scanning/5927)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]