diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesAppsModification.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesAppsModification.java index 76281d4..8e58a39 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesAppsModification.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesAppsModification.java @@ -22,7 +22,10 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assume.assumeTrue; +import java.io.File; +import java.io.FileWriter; import java.io.IOException; +import java.io.PrintWriter; import java.io.StringReader; import java.io.StringWriter; import java.util.Arrays; @@ -52,6 +55,8 @@ import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppState; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration; +import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler; +import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairSchedulerConfiguration; import org.apache.hadoop.yarn.server.resourcemanager.security.QueueACLsManager; import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppState; import org.apache.hadoop.yarn.server.security.ApplicationACLsManager; @@ -97,6 +102,11 @@ private boolean setAuthFilter = false; + private static final String TEST_DIR = new File(System.getProperty( + "test.build.data", "/tmp")).getAbsolutePath(); + private static final String ALLOC_FILE = new File(TEST_DIR, + "test-queues.xml").getAbsolutePath(); + public class GuiceServletConfig extends GuiceServletContextListener { @Override @@ -138,11 +148,26 @@ protected Properties getConfiguration(String configPrefix, @Override protected void configureServlets() { + try { + PrintWriter out = new PrintWriter(new FileWriter(ALLOC_FILE)); + out.println(""); + out.println(""); + out.println(""); + out.println(" someuser "); + out.println(" "); + out.println(" someuser "); + out.println(" "); + out.println(""); + out.println(""); + out.close(); + } catch(IOException e) { + } bind(JAXBContextResolver.class); bind(RMWebServices.class); bind(GenericExceptionHandler.class); conf.setInt(YarnConfiguration.RM_AM_MAX_ATTEMPTS, YarnConfiguration.DEFAULT_RM_AM_MAX_ATTEMPTS); + conf.set(FairSchedulerConfiguration.ALLOCATION_FILE, ALLOC_FILE); rm = new MockRM(conf); bind(ResourceManager.class).toInstance(rm); bind(RMContext.class).toInstance(rm.getRMContext()); @@ -432,15 +457,20 @@ public void testSingleAppKillUnauthorized() throws Exception { boolean isCapacityScheduler = rm.getResourceScheduler() instanceof CapacityScheduler; - assumeTrue("Currently this test is only supported on CapacityScheduler", - isCapacityScheduler); - - // default root queue allows anyone to have admin acl - CapacitySchedulerConfiguration csconf = - new CapacitySchedulerConfiguration(); - csconf.setAcl("root", QueueACL.ADMINISTER_QUEUE, "someuser"); - csconf.setAcl("root.default", QueueACL.ADMINISTER_QUEUE, "someuser"); - rm.getResourceScheduler().reinitialize(csconf, rm.getRMContext()); + boolean isFairScheduler = + rm.getResourceScheduler() instanceof FairScheduler; + assumeTrue("This test is only supported on Capacity and Fair Scheduler", + isCapacityScheduler || isFairScheduler); + // FairScheduler use ALLOCATION_FILE to configure ACL + if (isCapacityScheduler) { + // default root queue allows anyone to have admin acl + CapacitySchedulerConfiguration csconf = + new CapacitySchedulerConfiguration(); + csconf.setAcl("root", QueueACL.ADMINISTER_QUEUE, "someuser"); + csconf.setAcl("root.default", QueueACL.ADMINISTER_QUEUE, "someuser"); + rm.getResourceScheduler().reinitialize(csconf, rm.getRMContext()); + } + rm.start(); MockNM amNodeManager = rm.registerNode("127.0.0.1:1234", 2048);