HDFS-9888. Allow reseting KerberosName in unit tests. Contributed by Xiao Chen.
(cherry picked from commit 3e8099a45a4cfd4c5c0e3dce4370514cb2c90da9) (cherry picked from commit 00ff3d737c71e1a228ede64a6b9abd5227ef2117) (cherry picked from commit 9c1c48c0d44a45c4f96e8d60cfa6453a85523905) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/13414be1 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/13414be1 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/13414be1 Branch: refs/heads/branch-2.7 Commit: 13414be1a1d502e608818a9d7840880d794c8ab7 Parents: 1038e6b Author: Zhe Zhang <[email protected]> Authored: Fri Mar 4 09:48:05 2016 -0800 Committer: Zhe Zhang <[email protected]> Committed: Thu Aug 11 16:40:02 2016 -0700 ---------------------------------------------------------------------- .../security/authentication/util/KerberosName.java | 17 ++++++++++++++--- .../hadoop/security/UserGroupInformation.java | 2 +- .../hadoop/hdfs/server/balancer/TestBalancer.java | 12 +++++++----- 3 files changed, 22 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/13414be1/hadoop-common-project/hadoop-auth/src/main/java/org/apache/hadoop/security/authentication/util/KerberosName.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-auth/src/main/java/org/apache/hadoop/security/authentication/util/KerberosName.java b/hadoop-common-project/hadoop-auth/src/main/java/org/apache/hadoop/security/authentication/util/KerberosName.java index 7ae8ab2..0bc1109 100644 --- a/hadoop-common-project/hadoop-auth/src/main/java/org/apache/hadoop/security/authentication/util/KerberosName.java +++ b/hadoop-common-project/hadoop-auth/src/main/java/org/apache/hadoop/security/authentication/util/KerberosName.java @@ -25,6 +25,7 @@ import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; +import com.google.common.annotations.VisibleForTesting; import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.classification.InterfaceStability; import org.slf4j.Logger; @@ -90,6 +91,16 @@ public class KerberosName { } } + @VisibleForTesting + public static void resetDefaultRealm() { + try { + defaultRealm = KerberosUtil.getDefaultRealm(); + } catch (Exception ke) { + LOG.debug("resetting default realm failed, " + + "current default realm will still be used.", ke); + } + } + /** * Create a name from the full Kerberos principal name. * @param name full Kerberos principal name. @@ -412,16 +423,16 @@ public class KerberosName { } return ruleString; } - + /** * Indicates if the name rules have been set. - * + * * @return if the name rules have been set. */ public static boolean hasRulesBeenSet() { return rules != null; } - + static void printRules() throws IOException { int i = 0; for(Rule r: rules) { http://git-wip-us.apache.org/repos/asf/hadoop/blob/13414be1/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/UserGroupInformation.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/UserGroupInformation.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/UserGroupInformation.java index 7f4ae96..0597795 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/UserGroupInformation.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/UserGroupInformation.java @@ -314,7 +314,7 @@ public class UserGroupInformation { @InterfaceAudience.Private @VisibleForTesting - static void reset() { + public static void reset() { authenticationMethod = null; conf = null; groups = null; http://git-wip-us.apache.org/repos/asf/hadoop/blob/13414be1/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/balancer/TestBalancer.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/balancer/TestBalancer.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/balancer/TestBalancer.java index 5ddda0b..6713f3e 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/balancer/TestBalancer.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/balancer/TestBalancer.java @@ -93,6 +93,7 @@ import org.apache.hadoop.hdfs.server.datanode.SimulatedFSDataset; import org.apache.hadoop.http.HttpConfig; import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.minikdc.MiniKdc; +import org.apache.hadoop.security.authentication.util.KerberosName; import org.apache.hadoop.security.SecurityUtil; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.security.ssl.KeyStoreTestUtil; @@ -139,6 +140,7 @@ public class TestBalancer { SecurityUtil.setAuthenticationMethod( UserGroupInformation.AuthenticationMethod.KERBEROS, conf); UserGroupInformation.setConfiguration(conf); + KerberosName.resetDefaultRealm(); assertTrue("Expected configuration to enable security", UserGroupInformation.isSecurityEnabled()); @@ -270,7 +272,7 @@ public class TestBalancer { long[] usedSpace = new long[distribution.length]; System.arraycopy(distribution, 0, usedSpace, 0, distribution.length); - List<List<Block>> blockReports = + List<List<Block>> blockReports = new ArrayList<List<Block>>(usedSpace.length); Block[][] results = new Block[usedSpace.length][]; for(int i=0; i<usedSpace.length; i++) { @@ -327,7 +329,7 @@ public class TestBalancer { blocks, (short)(numDatanodes-1), distribution); // restart the cluster: do NOT format the cluster - conf.set(DFSConfigKeys.DFS_NAMENODE_SAFEMODE_THRESHOLD_PCT_KEY, "0.0f"); + conf.set(DFSConfigKeys.DFS_NAMENODE_SAFEMODE_THRESHOLD_PCT_KEY, "0.0f"); cluster = new MiniDFSCluster.Builder(conf).numDataNodes(numDatanodes) .format(false) .racks(racks) @@ -1556,10 +1558,10 @@ public class TestBalancer { @Test(timeout = 300000) public void testBalancerWithKeytabs() throws Exception { final Configuration conf = new HdfsConfiguration(); - initSecureConf(conf); - final UserGroupInformation ugi = UserGroupInformation.loginUserFromKeytabAndReturnUGI( - principal, keytabFile.getAbsolutePath()); try { + initSecureConf(conf); + final UserGroupInformation ugi = UserGroupInformation.loginUserFromKeytabAndReturnUGI( + principal, keytabFile.getAbsolutePath()); ugi.doAs(new PrivilegedExceptionAction<Void>() { @Override public Void run() throws Exception { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
