HDFS-9888. Allow reseting KerberosName in unit tests. Contributed by Xiao Chen.
(cherry picked from commit3e8099a45a
) (cherry picked from commit00ff3d737c
) (cherry picked from commit9c1c48c0d4
)
This commit is contained in:
parent
1038e6b476
commit
13414be1a1
|
@ -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) {
|
||||
|
|
|
@ -314,7 +314,7 @@ public class UserGroupInformation {
|
|||
|
||||
@InterfaceAudience.Private
|
||||
@VisibleForTesting
|
||||
static void reset() {
|
||||
public static void reset() {
|
||||
authenticationMethod = null;
|
||||
conf = null;
|
||||
groups = null;
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue