This is an automated email from the ASF dual-hosted git repository.

snemeth pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 66a08e9  YARN-11038. Fix testQueueSubmitWithACL* tests in 
TestAppManager. Contributed by Tamas Domok
66a08e9 is described below

commit 66a08e933ae8f1737f8771e1316bb44c97aa6500
Author: Szilard Nemeth <snem...@apache.org>
AuthorDate: Wed Dec 8 16:41:35 2021 +0100

    YARN-11038. Fix testQueueSubmitWithACL* tests in TestAppManager. 
Contributed by Tamas Domok
---
 .../server/resourcemanager/TestAppManager.java     | 129 ++++++++++-----------
 1 file changed, 62 insertions(+), 67 deletions(-)

diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestAppManager.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestAppManager.java
index f916264..4a393cc 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestAppManager.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestAppManager.java
@@ -274,10 +274,41 @@ public class TestAppManager extends AppManagerTestBase{
     setupDispatcher(rmContext, conf);
   }
 
+  private static PlacementManager createMockPlacementManager(
+      String userRegex, String placementQueue, String placementParentQueue
+  ) throws YarnException {
+    PlacementManager placementMgr = mock(PlacementManager.class);
+    doAnswer(new Answer<ApplicationPlacementContext>() {
+
+      @Override
+      public ApplicationPlacementContext answer(InvocationOnMock invocation)
+          throws Throwable {
+        return new ApplicationPlacementContext(placementQueue, 
placementParentQueue);
+      }
+
+    }).when(placementMgr).placeApplication(
+        any(ApplicationSubmissionContext.class),
+        matches(userRegex),
+        any(Boolean.class));
+
+    return placementMgr;
+  }
+
+  private TestRMAppManager createAppManager(RMContext context, Configuration 
configuration) {
+    ApplicationMasterService masterService = new 
ApplicationMasterService(context,
+        context.getScheduler());
+
+    return new TestRMAppManager(context,
+        new ClientToAMTokenSecretManagerInRM(),
+        context.getScheduler(), masterService,
+        new ApplicationACLsManager(configuration), configuration);
+  }
+
   @Test
   public void testQueueSubmitWithACLsEnabledWithQueueMapping()
-      throws IOException, YarnException, InterruptedException {
-    YarnConfiguration conf = new YarnConfiguration();
+      throws YarnException {
+    YarnConfiguration conf = new YarnConfiguration(new Configuration(false));
+    conf.set(YarnConfiguration.YARN_ACL_ENABLE, "true");
     conf.setClass(YarnConfiguration.RM_SCHEDULER, CapacityScheduler.class,
         ResourceScheduler.class);
 
@@ -285,11 +316,11 @@ public class TestAppManager extends AppManagerTestBase{
         CapacitySchedulerConfiguration(conf, false);
     csConf.set(PREFIX + "root.queues", "default,test");
 
-    csConf.setFloat(PREFIX + "root.default.capacity", 50.0f);
-    csConf.setFloat(PREFIX + "root.default.maximum-capacity", 100.0f);
+    csConf.setCapacity("root.default", 50.0f);
+    csConf.setMaximumCapacity("root.default", 100.0f);
 
-    csConf.setFloat(PREFIX + "root.test.capacity", 50.0f);
-    csConf.setFloat(PREFIX + "root.test.maximum-capacity", 100.0f);
+    csConf.setCapacity("root.test", 50.0f);
+    csConf.setMaximumCapacity("root.test", 100.0f);
 
     csConf.set(PREFIX + "root.acl_submit_applications", " ");
     csConf.set(PREFIX + "root.acl_administer_queue", " ");
@@ -300,55 +331,30 @@ public class TestAppManager extends AppManagerTestBase{
     csConf.set(PREFIX + "root.test.acl_submit_applications", "test");
     csConf.set(PREFIX + "root.test.acl_administer_queue", "test");
 
-    csConf.set(PREFIX + "root.test.acl_submit_applications", "test");
-    csConf.set(PREFIX + "root.test.acl_administer_queue", "test");
-
-    csConf.set(YarnConfiguration.YARN_ACL_ENABLE, "true");
-
-    // Setup a PlacementManager returns a new queue
-    PlacementManager placementMgr = mock(PlacementManager.class);
-    doAnswer(new Answer<ApplicationPlacementContext>() {
-
-      @Override
-      public ApplicationPlacementContext answer(InvocationOnMock invocation)
-          throws Throwable {
-        return new ApplicationPlacementContext("test");
-      }
-
-    }).when(placementMgr).placeApplication(
-        any(ApplicationSubmissionContext.class), matches("test"));
-
-    asContext.setQueue("oldQueue");
+    asContext.setQueue("test");
 
-    MockRM newMockRM = new MockRM(conf);
+    MockRM newMockRM = new MockRM(csConf);
     RMContext newMockRMContext = newMockRM.getRMContext();
-    newMockRMContext.setQueuePlacementManager(placementMgr);
-    ApplicationMasterService masterService =
-        new ApplicationMasterService(newMockRMContext,
-            newMockRMContext.getScheduler());
-
-    TestRMAppManager newAppMonitor = new TestRMAppManager(newMockRMContext,
-        new ClientToAMTokenSecretManagerInRM(),
-        newMockRMContext.getScheduler(), masterService,
-        new ApplicationACLsManager(conf), conf);
+    
newMockRMContext.setQueuePlacementManager(createMockPlacementManager("test", 
"test", null));
+    TestRMAppManager newAppMonitor = createAppManager(newMockRMContext, conf);
 
-    //only user test has permission to submit to 'test' queue
     newAppMonitor.submitApplication(asContext, "test");
+    RMApp app = newMockRMContext.getRMApps().get(appId);
+    Assert.assertNotNull("app should not be null", app);
+    Assert.assertEquals("the queue should be placed on 'test' queue", "test", 
app.getQueue());
 
     try {
-      //should fail since user does not have permission to submit to queue
-      // 'test'
       asContext.setApplicationId(appId = MockApps.newAppID(2));
       newAppMonitor.submitApplication(asContext, "test1");
+      Assert.fail("should fail since test1 does not have permission to submit 
to queue");
     } catch(YarnException e) {
       assertTrue(e.getCause() instanceof AccessControlException);
     }
   }
 
   @Test
-  public void
-  testQueueSubmitWithACLsEnabledWithQueueMappingForAutoCreatedQueue()
-      throws IOException, YarnException, InterruptedException {
+  public void 
testQueueSubmitWithACLsEnabledWithQueueMappingForAutoCreatedQueue()
+      throws IOException, YarnException {
     YarnConfiguration conf = new YarnConfiguration();
     conf.set(YarnConfiguration.YARN_ACL_ENABLE, "true");
     conf.setClass(YarnConfiguration.RM_SCHEDULER, CapacityScheduler.class,
@@ -358,8 +364,11 @@ public class TestAppManager extends AppManagerTestBase{
         conf, false);
     csConf.set(PREFIX + "root.queues", "default,managedparent");
 
-    csConf.setFloat(PREFIX + "root.default.capacity", 50.0f);
-    csConf.setFloat(PREFIX + "root.default.maximum-capacity", 100.0f);
+    csConf.setCapacity("root.default", 50.0f);
+    csConf.setMaximumCapacity("root.default", 100.0f);
+
+    csConf.setCapacity("root.managedparent", 50.0f);
+    csConf.setMaximumCapacity("root.managedparent", 100.0f);
 
     csConf.set(PREFIX + "root.acl_submit_applications", " ");
     csConf.set(PREFIX + "root.acl_administer_queue", " ");
@@ -374,22 +383,9 @@ public class TestAppManager extends AppManagerTestBase{
     csConf.setAutoCreatedLeafQueueConfigCapacity("root.managedparent", 30f);
     csConf.setAutoCreatedLeafQueueConfigMaxCapacity("root.managedparent", 
100f);
 
-    // Setup a PlacementManager returns a new queue
-    PlacementManager placementMgr = mock(PlacementManager.class);
-    doAnswer(new Answer<ApplicationPlacementContext>() {
-
-      @Override
-      public ApplicationPlacementContext answer(InvocationOnMock invocation)
-          throws Throwable {
-        return new ApplicationPlacementContext("user1", "managedparent");
-      }
-
-    }).when(placementMgr).placeApplication(
-        any(ApplicationSubmissionContext.class), matches("user1|user2"));
-
     asContext.setQueue("oldQueue");
 
-    MockRM newMockRM = new MockRM(conf);
+    MockRM newMockRM = new MockRM(csConf);
     CapacityScheduler cs =
         ((CapacityScheduler) newMockRM.getResourceScheduler());
     ManagedParentQueue managedParentQueue = new ManagedParentQueue(cs,
@@ -398,22 +394,21 @@ public class TestAppManager extends AppManagerTestBase{
         managedParentQueue);
 
     RMContext newMockRMContext = newMockRM.getRMContext();
-    newMockRMContext.setQueuePlacementManager(placementMgr);
-    ApplicationMasterService masterService = new ApplicationMasterService(
-        newMockRMContext, newMockRMContext.getScheduler());
-
-    TestRMAppManager newAppMonitor = new TestRMAppManager(newMockRMContext,
-        new ClientToAMTokenSecretManagerInRM(), 
newMockRMContext.getScheduler(),
-        masterService, new ApplicationACLsManager(conf), conf);
+    newMockRMContext.setQueuePlacementManager(createMockPlacementManager(
+        "user1|user2", "user1", "managedparent"));
+    TestRMAppManager newAppMonitor = createAppManager(newMockRMContext, conf);
 
-    //only user test has permission to submit to 'user1' queue
     newAppMonitor.submitApplication(asContext, "user1");
+    RMApp app = newMockRMContext.getRMApps().get(appId);
+    Assert.assertNotNull("app should not be null", app);
+    Assert.assertEquals("the queue should be placed on 'managedparent.user1' 
queue",
+        "managedparent.user1",
+        app.getQueue());
 
     try {
-      //should fail since user does not have permission to submit to queue
-      // 'managedparent'
       asContext.setApplicationId(appId = MockApps.newAppID(2));
       newAppMonitor.submitApplication(asContext, "user2");
+      Assert.fail("should fail since user2 does not have permission to submit 
to queue");
     } catch (YarnException e) {
       assertTrue(e.getCause() instanceof AccessControlException);
     }

---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-commits-h...@hadoop.apache.org

Reply via email to