瀏覽代碼

MAPREDUCE-4858. Fixed TestWebUIAuthorization. Contributed by Arun C. Murthy.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1@1418202 13f79535-47bb-0310-9956-ffa450edef68
Arun Murthy 12 年之前
父節點
當前提交
f785d072c4

+ 2 - 0
CHANGES.txt

@@ -366,6 +366,8 @@ Release 1.1.2 - Unreleased
     MAPREDUCE-4699. Fixed unit test failures - TestFairScheduler and 
     TestCapacityScheduler. (Gopal V via sseth)
 
+    MAPREDUCE-4858. Fixed TestWebUIAuthorization. (acmurthy) 
+
 Release 1.1.1 - 2012.11.18
 
   INCOMPATIBLE CHANGES

+ 8 - 1
src/hdfs/org/apache/hadoop/hdfs/server/namenode/NameNode.java

@@ -91,6 +91,8 @@ import org.apache.hadoop.security.token.SecretManager.InvalidToken;
 import org.apache.hadoop.security.token.Token;
 import org.apache.hadoop.util.ServicePlugin;
 import org.apache.hadoop.util.StringUtils;
+import org.apache.hadoop.security.authorize.PolicyProvider;
+import org.apache.hadoop.util.ReflectionUtils;
 
 /**********************************************************
  * NameNode serves as both directory namespace manager and
@@ -278,7 +280,12 @@ public class NameNode implements ClientProtocol, DatanodeProtocol,
     if (serviceAuthEnabled = 
           conf.getBoolean(
             ServiceAuthorizationManager.SERVICE_AUTHORIZATION_CONFIG, false)) {
-      ServiceAuthorizationManager.refresh(conf, new HDFSPolicyProvider());
+      PolicyProvider policyProvider = 
+          (PolicyProvider)(ReflectionUtils.newInstance(
+              conf.getClass(PolicyProvider.POLICY_PROVIDER_CONFIG, 
+                  HDFSPolicyProvider.class, PolicyProvider.class), 
+              conf));
+        ServiceAuthorizationManager.refresh(conf, policyProvider);
     }
     
     myMetrics = NameNodeInstrumentation.create(conf);

+ 9 - 1
src/test/org/apache/hadoop/mapred/TestWebUIAuthorization.java

@@ -45,6 +45,8 @@ import org.apache.hadoop.mapreduce.JobContext;
 import org.apache.hadoop.security.Groups;
 import org.apache.hadoop.security.ShellBasedUnixGroupsMapping;
 import org.apache.hadoop.security.UserGroupInformation;
+import org.apache.hadoop.security.authorize.HadoopPolicyProvider;
+import org.apache.hadoop.security.authorize.PolicyProvider;
 import org.junit.Test;
 
 public class TestWebUIAuthorization extends ClusterMapReduceTestCase {
@@ -780,7 +782,13 @@ public class TestWebUIAuthorization extends ClusterMapReduceTestCase {
     Properties props = new Properties();
     props.setProperty("hadoop.http.filter.initializers",
         DummyFilterInitializer.class.getName());
-    props.setProperty(CommonConfigurationKeys.HADOOP_SECURITY_AUTHORIZATION, "true");
+    props.setProperty(CommonConfigurationKeys.HADOOP_SECURITY_AUTHORIZATION, 
+        "true");
+    props.setProperty(PolicyProvider.POLICY_PROVIDER_CONFIG, 
+        HadoopPolicyProvider.class.getName());
+    props.setProperty(
+        CommonConfigurationKeys.HADOOP_SECURITY_INSTRUMENTATION_REQUIRES_ADMIN, 
+        "true");
     props.setProperty(JobConf.MR_ADMINS, mrAdminUser + " " + mrAdminGroup);
 
     startCluster(true, props);