From c26f6e59aed8a9728a548f39dcfb748c6d53f4df Mon Sep 17 00:00:00 2001 From: wen_yi Date: Mon, 16 Mar 2020 12:37:12 +0800 Subject: [PATCH 1/2] HBASE-23970 --- .../TestUsersOperationsWithSecureHadoop.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/TestUsersOperationsWithSecureHadoop.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/TestUsersOperationsWithSecureHadoop.java index 807dd501ca1d..ab5c76239055 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/TestUsersOperationsWithSecureHadoop.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/TestUsersOperationsWithSecureHadoop.java @@ -30,7 +30,9 @@ import java.io.File; import java.io.IOException; import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import org.apache.commons.configuration.ConfigurationException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.AuthUtil; import org.apache.hadoop.hbase.HBaseClassTestRule; @@ -65,11 +67,19 @@ public class TestUsersOperationsWithSecureHadoop { private static String CLIENT_NAME; @BeforeClass - public static void destroyAndSetup() throws Exception { - //destroy localhost kerberos users - Process process = Runtime.getRuntime().exec(new String[]{"bash", "-c", "kdestroy"}); - process.waitFor(2, TimeUnit.SECONDS); - // setup mini kdc + public static void checkAndSetup() throws Exception { + // check localhost kerberos users + Process process = Runtime.getRuntime().exec(new String[]{"bash", "-c", "klist"}); + boolean wait = process.waitFor(2, TimeUnit.SECONDS); + if (wait) { + int ret = process.exitValue(); + if (ret == 0) { + throw new ConfigurationException("localhost holds kerberos tickets currently, need to destroy first!"); + } + } else { + throw new TimeoutException("check localhost kerberos users timeout(exec cmd 'klist')!"); + } + // setup MiniKdc KDC = TEST_UTIL.setupMiniKdc(KEYTAB_FILE); PRINCIPAL = "hbase/" + HOST; CLIENT_NAME = "foo"; From 130bb66571097fdd408a7312fb3a0c1557fd1361 Mon Sep 17 00:00:00 2001 From: wen_yi Date: Tue, 24 Mar 2020 11:40:01 +0800 Subject: [PATCH 2/2] HBASE-23970 --- .../security/TestUsersOperationsWithSecureHadoop.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/TestUsersOperationsWithSecureHadoop.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/TestUsersOperationsWithSecureHadoop.java index d240f91786b1..93f0b4e6bcf2 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/TestUsersOperationsWithSecureHadoop.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/TestUsersOperationsWithSecureHadoop.java @@ -29,6 +29,7 @@ import java.io.File; import java.io.IOException; +import java.util.concurrent.TimeUnit; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.AuthUtil; @@ -64,7 +65,15 @@ public class TestUsersOperationsWithSecureHadoop { private static String CLIENT_NAME; @BeforeClass - public static void setUp() throws Exception { + public static void checkAndSetUp() throws Exception { + // check localhost kerberos users + Process process = Runtime.getRuntime().exec(new String[]{"bash", "-c", "klist"}); + boolean wait = process.waitFor(2, TimeUnit.SECONDS); + assertTrue("localhost exec klist timeout!", wait); + int ret = process.exitValue(); + assertTrue("localhost have an existing ticket!",ret != 0); + + // setup MiniKdc KDC = TEST_UTIL.setupMiniKdc(KEYTAB_FILE); PRINCIPAL = "hbase/" + HOST; CLIENT_NAME = "foo";