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 a888d58 YARN-10409. Improve MockQueueHierarchyBuilder to detect queue ambiguity. Contributed by Gergely Pollak a888d58 is described below commit a888d580d8ab5bcab522613fbbe24e2d94aa20ff Author: Szilard Nemeth <snem...@apache.org> AuthorDate: Sat Aug 29 15:24:50 2020 +0200 YARN-10409. Improve MockQueueHierarchyBuilder to detect queue ambiguity. Contributed by Gergely Pollak --- .../placement/MockQueueHierarchyBuilder.java | 18 ++++++++++++++++++ .../placement/TestUserGroupMappingPlacementRule.java | 4 ++-- 2 files changed, 20 insertions(+), 2 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/placement/MockQueueHierarchyBuilder.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/MockQueueHierarchyBuilder.java index e2e6ad2..c08c80a 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/MockQueueHierarchyBuilder.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/MockQueueHierarchyBuilder.java @@ -19,11 +19,13 @@ package org.apache.hadoop.yarn.server.resourcemanager.placement; import com.google.common.collect.Maps; +import com.google.common.collect.Sets; import org.apache.commons.compress.utils.Lists; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.*; import java.util.List; import java.util.Map; +import java.util.Set; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -33,6 +35,8 @@ class MockQueueHierarchyBuilder { private static final String QUEUE_SEP = "."; private List<String> queuePaths = Lists.newArrayList(); private List<String> managedParentQueues = Lists.newArrayList(); + private Set<String> ambiguous = Sets.newHashSet(); + private Map<String, String> shortNameMapping = Maps.newHashMap(); private CapacitySchedulerQueueManager queueManager; public static MockQueueHierarchyBuilder create() { @@ -75,6 +79,14 @@ class MockQueueHierarchyBuilder { for (String queuePath : queuePaths) { addQueues(queues, queuePath); } + + ambiguous.forEach(queue -> { + if (queue.equals("root")) { + return; + } + when(queueManager.isAmbiguous(queue)).thenReturn(true); + when(queueManager.getQueue(queue)).thenReturn(null); + }); } private void addQueues(Map<String, AbstractCSQueue> queues, @@ -89,6 +101,12 @@ class MockQueueHierarchyBuilder { currentQueuePath += currentQueuePath.equals("") ? queueName : QUEUE_SEP + queueName; + if (shortNameMapping.containsKey(queueName) && + !shortNameMapping.get(queueName).equals(currentQueuePath)) { + ambiguous.add(queueName); + } + shortNameMapping.put(queueName, currentQueuePath); + if (managedParentQueues.contains(parentPath) && !isLeaf) { throw new IllegalStateException("Cannot add a queue under " + "managed parent"); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/TestUserGroupMappingPlacementRule.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/TestUserGroupMappingPlacementRule.java index 0b0a195..6cd1d52 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/TestUserGroupMappingPlacementRule.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/TestUserGroupMappingPlacementRule.java @@ -84,7 +84,6 @@ public class TestUserGroupMappingPlacementRule { .build(); when(queueManager.getQueue(isNull())).thenReturn(null); - when(queueManager.isAmbiguous("primarygrouponly")).thenReturn(true); rule.setQueueManager(queueManager); ApplicationSubmissionContext asc = Records.newRecord( ApplicationSubmissionContext.class); @@ -349,7 +348,7 @@ public class TestUserGroupMappingPlacementRule { .build()); } - @Test(expected = YarnException.class) + @Test public void testUserMappingToNestedUserPrimaryGroupWithAmbiguousQueues() throws YarnException { // u:%user:%user, submitter nosecondarygroupuser, queue is ambiguous @@ -362,6 +361,7 @@ public class TestUserGroupMappingPlacementRule { .parentQueue("%primary_group") .build()) .inputUser("nosecondarygroupuser") + .expectedQueue("default") .build()); } --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org