This is an automated email from the ASF dual-hosted git repository.

mthakur pushed a commit to branch branch-3.4
in repository https://gitbox.apache.org/repos/asf/hadoop.git

commit 183a1f15097d286e34e61208d3bef169328e89e0
Author: Mukund Thakur <mtha...@cloudera.com>
AuthorDate: Tue May 28 11:27:33 2024 -0500

    HADOOP-19184. S3A Fix TestStagingCommitter.testJobCommitFailure (#6843)
    
    
    Follow up on HADOOP-18679
    
    Contributed by: Mukund Thakur
---
 .../org/apache/hadoop/fs/s3a/MockS3AFileSystem.java     |  6 +++++-
 .../hadoop/fs/s3a/commit/staging/StagingTestBase.java   | 17 +++++++++++++----
 .../fs/s3a/commit/staging/TestStagingCommitter.java     |  2 +-
 3 files changed, 19 insertions(+), 6 deletions(-)

diff --git 
a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/MockS3AFileSystem.java
 
b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/MockS3AFileSystem.java
index b7e55f01a371..bf3fd27701ab 100644
--- 
a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/MockS3AFileSystem.java
+++ 
b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/MockS3AFileSystem.java
@@ -353,7 +353,11 @@ public class MockS3AFileSystem extends S3AFileSystem {
       String key,
       boolean isFile)
       throws SdkException, IOException {
-    deleteObject(key);
+    mock.getS3AInternals()
+            .getAmazonS3Client("test")
+            .deleteObject(getRequestFactory()
+            .newDeleteObjectRequestBuilder(key)
+            .build());
   }
 
   @Override
diff --git 
a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/commit/staging/StagingTestBase.java
 
b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/commit/staging/StagingTestBase.java
index e64822d8c880..9fba584fbdcc 100644
--- 
a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/commit/staging/StagingTestBase.java
+++ 
b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/commit/staging/StagingTestBase.java
@@ -43,6 +43,9 @@ import 
software.amazon.awssdk.services.s3.model.ListMultipartUploadsResponse;
 import software.amazon.awssdk.services.s3.model.MultipartUpload;
 import software.amazon.awssdk.services.s3.model.UploadPartRequest;
 import software.amazon.awssdk.services.s3.model.UploadPartResponse;
+
+import org.apache.hadoop.fs.s3a.S3AInternals;
+import org.apache.hadoop.fs.s3a.S3AStore;
 import org.apache.hadoop.util.Lists;
 import org.apache.hadoop.thirdparty.com.google.common.collect.Maps;
 import org.junit.AfterClass;
@@ -129,9 +132,10 @@ public class StagingTestBase {
    * @throws IOException IO problems.
    */
   protected static S3AFileSystem createAndBindMockFSInstance(Configuration 
conf,
-      Pair<StagingTestBase.ClientResults, StagingTestBase.ClientErrors> 
outcome)
+      Pair<StagingTestBase.ClientResults, StagingTestBase.ClientErrors> 
outcome,
+                                                             S3Client 
mockS3Client)
       throws IOException {
-    S3AFileSystem mockFs = mockS3AFileSystemRobustly();
+    S3AFileSystem mockFs = mockS3AFileSystemRobustly(mockS3Client);
     MockS3AFileSystem wrapperFS = new MockS3AFileSystem(mockFs, outcome);
     URI uri = RAW_BUCKET_URI;
     wrapperFS.initialize(uri, conf);
@@ -142,8 +146,13 @@ public class StagingTestBase {
     return mockFs;
   }
 
-  private static S3AFileSystem mockS3AFileSystemRobustly() {
+  private static S3AFileSystem mockS3AFileSystemRobustly(S3Client 
mockS3Client) {
     S3AFileSystem mockFS = mock(S3AFileSystem.class);
+    S3AInternals s3AInternals = mock(S3AInternals.class);
+    when(mockFS.getS3AInternals()).thenReturn(s3AInternals);
+    when(s3AInternals.getStore()).thenReturn(mock(S3AStore.class));
+    when(s3AInternals.getAmazonS3Client(anyString()))
+        .thenReturn(mockS3Client);
     doNothing().when(mockFS).incrementReadOperations();
     doNothing().when(mockFS).incrementWriteOperations();
     doNothing().when(mockFS).incrementWriteOperations();
@@ -350,7 +359,7 @@ public class StagingTestBase {
       this.errors = new StagingTestBase.ClientErrors();
       this.mockClient = newMockS3Client(results, errors);
       this.mockFS = createAndBindMockFSInstance(jobConf,
-          Pair.of(results, errors));
+          Pair.of(results, errors), mockClient);
       this.wrapperFS = lookupWrapperFS(jobConf);
       // and bind the FS
       wrapperFS.setAmazonS3Client(mockClient);
diff --git 
a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/commit/staging/TestStagingCommitter.java
 
b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/commit/staging/TestStagingCommitter.java
index 71ed0b6891a5..fae7a6232d1c 100644
--- 
a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/commit/staging/TestStagingCommitter.java
+++ 
b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/commit/staging/TestStagingCommitter.java
@@ -158,7 +158,7 @@ public class TestStagingCommitter extends 
StagingTestBase.MiniDFSTest {
     this.errors = new StagingTestBase.ClientErrors();
     this.mockClient = newMockS3Client(results, errors);
     this.mockFS = createAndBindMockFSInstance(jobConf,
-        Pair.of(results, errors));
+        Pair.of(results, errors), mockClient);
     this.wrapperFS = lookupWrapperFS(jobConf);
     // and bind the FS
     wrapperFS.setAmazonS3Client(mockClient);


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-commits-h...@hadoop.apache.org

Reply via email to