diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestApplicationACLs.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestApplicationACLs.java index cab1679fafe..fa46464fa28 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestApplicationACLs.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestApplicationACLs.java @@ -22,7 +22,10 @@ import static org.mockito.Mockito.when; import static org.mockito.Matchers.any; +import java.io.File; +import java.io.FileWriter; import java.io.IOException; +import java.io.PrintWriter; import java.net.InetSocketAddress; import java.security.PrivilegedExceptionAction; import java.util.HashMap; @@ -30,6 +33,8 @@ import java.util.Map; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApp; +import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler; +import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairSchedulerConfiguration; import org.junit.Assert; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -104,6 +109,29 @@ public static void setup() throws InterruptedException, IOException { adminACL.addGroup(SUPER_GROUP); conf.set(YarnConfiguration.YARN_ADMIN_ACL, adminACL.getAclString()); + // If using FairScheduler, setup the queue allocations file + if (conf.get(YarnConfiguration.RM_SCHEDULER) + .equals(FairScheduler.class.getName())) { + final String testDir = new File(System.getProperty("test.build.data", + "/tmp")).getAbsolutePath(); + final String allocFile = new File(testDir, "test-queues.xml") + .getAbsolutePath(); + PrintWriter out = new PrintWriter(new FileWriter(allocFile)); + out.println(""); + out.println(""); + out.println(""); + out.println(" "); + out.println(" "); + out.println(""); + out.println(""); + out.println(" "); + out.println(" "); + out.println(""); + out.println(""); + out.close(); + conf.set(FairSchedulerConfiguration.ALLOCATION_FILE, allocFile); + } + resourceManager = new MockRM(conf) { @Override @@ -207,6 +235,10 @@ private ApplicationId submitAppAndGetAppId(AccessControlList viewACL, Resource resource = BuilderUtils.newResource(1024, 1); context.setResource(resource); amContainer.setApplicationACLs(acls); + if (conf.get(YarnConfiguration.RM_SCHEDULER) + .equals(FairScheduler.class.getName())) { + context.setQueue("root.default"); + } context.setAMContainerSpec(amContainer); submitRequest.setApplicationSubmissionContext(context); rmClient.submitApplication(submitRequest); @@ -424,8 +456,14 @@ private void verifyInvalidQueueWithAcl() throws Exception { GetApplicationReportResponse applicationReport = rmClient.getApplicationReport(appReportRequest); ApplicationReport appReport = applicationReport.getApplicationReport(); - Assert.assertTrue(appReport.getDiagnostics() - .contains("submitted by user owner to unknown queue: InvalidQueue")); + if (conf.get(YarnConfiguration.RM_SCHEDULER) + .equals(FairScheduler.class.getName())) { + Assert.assertTrue(appReport.getDiagnostics() + .contains("Application rejected by queue placement policy")); + } else { + Assert.assertTrue(appReport.getDiagnostics() + .contains("submitted by user owner to unknown queue: InvalidQueue")); + } } private void verifyAdministerQueueUserAccess() throws Exception {