You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uniffle.apache.org by ro...@apache.org on 2023/03/15 06:10:23 UTC

[incubator-uniffle] branch master updated: [MINOR] test: fix tempdir leak in KerberizedHdfs tests (#721)

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

roryqi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-uniffle.git


The following commit(s) were added to refs/heads/master by this push:
     new 37d76599 [MINOR] test: fix tempdir leak in KerberizedHdfs tests (#721)
37d76599 is described below

commit 37d765998a6d5de31a0db4d4c1537b28790f21b4
Author: Kaijie Chen <ck...@apache.org>
AuthorDate: Wed Mar 15 14:10:16 2023 +0800

    [MINOR] test: fix tempdir leak in KerberizedHdfs tests (#721)
    
    ### What changes were proposed in this pull request?
    
    Use JUnit 5 managed `@TempDir` in `KerberizedHdfs` test.
    
    ### Why are the changes needed?
    
    The tempdir created by `KerberizedHdfs` is leaking.
    It may cause test failures in some condition.
    
    ### Does this PR introduce _any_ user-facing change?
    
    No.
    
    ### How was this patch tested?
    
    Before:
    
    ```console
    $ mvn test -Dtest=HadoopFilesystemProviderTest
    ...
    $ find . -name 'serverKS.jks'
    ./common/target/tmp/kerberizedDfsBaseDir1821275617120252168/serverKS.jks
    ```
    
    After:
    
    ```console
    $ mvn test -Dtest=HadoopFilesystemProviderTest
    ...
    $ find . -name 'serverKS.jks'
    ```
---
 .../java/org/apache/uniffle/common/KerberizedHdfs.java    | 15 +++++++--------
 .../org/apache/uniffle/common/KerberizedHdfsBase.java     | 10 +++++++++-
 2 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/common/src/test/java/org/apache/uniffle/common/KerberizedHdfs.java b/common/src/test/java/org/apache/uniffle/common/KerberizedHdfs.java
index 38f551b5..d3c691bb 100644
--- a/common/src/test/java/org/apache/uniffle/common/KerberizedHdfs.java
+++ b/common/src/test/java/org/apache/uniffle/common/KerberizedHdfs.java
@@ -25,8 +25,6 @@ import java.io.Serializable;
 import java.net.BindException;
 import java.net.ServerSocket;
 import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
 import java.security.PrivilegedExceptionAction;
 import java.util.ArrayList;
 import java.util.List;
@@ -75,8 +73,7 @@ public class KerberizedHdfs implements Serializable {
 
   private MiniKdc kdc;
   private File workDir;
-  private Path tempDir;
-  private Path kerberizedDfsBaseDir;
+  private File kerberizedDfsBaseDir;
 
   private MiniDFSCluster kerberizedDfsCluster;
 
@@ -91,9 +88,12 @@ public class KerberizedHdfs implements Serializable {
   // krb5.conf file path
   private String krb5ConfFile;
 
+  KerberizedHdfs(File workDir, File kerberizedDfsBaseDir) {
+    this.workDir = workDir;
+    this.kerberizedDfsBaseDir = kerberizedDfsBaseDir;
+  }
+
   protected void setup() throws Exception {
-    tempDir = Files.createTempDirectory("tempDir").toFile().toPath();
-    kerberizedDfsBaseDir = Files.createTempDirectory("kerberizedDfsBaseDir").toFile().toPath();
 
     startKDC();
     try {
@@ -159,7 +159,7 @@ public class KerberizedHdfs implements Serializable {
         CommonConfigurationKeysPublic.HADOOP_SECURITY_IMPERSONATION_PROVIDER_CLASS,
         TestDummyImpersonationProvider.class.getName());
 
-    String keystoresDir = kerberizedDfsBaseDir.toFile().getAbsolutePath();
+    String keystoresDir = kerberizedDfsBaseDir.getAbsolutePath();
     String sslConfDir = KeyStoreTestUtil.getClasspathDir(testRunnerCls);
     KeyStoreTestUtil.setupSSLConfig(keystoresDir, sslConfDir, conf, false);
 
@@ -222,7 +222,6 @@ public class KerberizedHdfs implements Serializable {
     kdcConf.setProperty(MiniKdc.ORG_DOMAIN, "COM");
     kdcConf.setProperty(MiniKdc.KDC_BIND_ADDRESS, hostName);
     kdcConf.setProperty(MiniKdc.KDC_PORT, "0");
-    workDir = tempDir.toFile();
     kdc = new MiniKdc(kdcConf, workDir);
     kdc.start();
 
diff --git a/common/src/test/java/org/apache/uniffle/common/KerberizedHdfsBase.java b/common/src/test/java/org/apache/uniffle/common/KerberizedHdfsBase.java
index aec36275..d0e30b25 100644
--- a/common/src/test/java/org/apache/uniffle/common/KerberizedHdfsBase.java
+++ b/common/src/test/java/org/apache/uniffle/common/KerberizedHdfsBase.java
@@ -17,7 +17,10 @@
 
 package org.apache.uniffle.common;
 
+import java.io.File;
+
 import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.io.TempDir;
 
 import org.apache.uniffle.common.security.HadoopSecurityContext;
 import org.apache.uniffle.common.security.NoOpSecurityContext;
@@ -30,8 +33,13 @@ public class KerberizedHdfsBase {
   protected static KerberizedHdfs kerberizedHdfs;
   protected static Class<?> testRunner = KerberizedHdfsBase.class;
 
+  @TempDir
+  private static File workDir;
+  @TempDir
+  private static File kerberizedDfsBaseDir;
+
   public static void init() throws Exception {
-    kerberizedHdfs = new KerberizedHdfs();
+    kerberizedHdfs = new KerberizedHdfs(workDir, kerberizedDfsBaseDir);
     kerberizedHdfs.setTestRunner(testRunner);
     kerberizedHdfs.setup();
   }