You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by pr...@apache.org on 2020/06/22 07:19:50 UTC
[hadoop] branch trunk updated: YARN-10321. Break down
TestUserGroupMappingPlacementRule#testMapping into test scenarios
This is an automated email from the ASF dual-hosted git repository.
prabhujoseph 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 ce1008f YARN-10321. Break down TestUserGroupMappingPlacementRule#testMapping into test scenarios
ce1008f is described below
commit ce1008fe61a70d23845c05fad0380ae4906e74f5
Author: Prabhu Joseph <pr...@apache.org>
AuthorDate: Mon Jun 22 12:47:46 2020 +0530
YARN-10321. Break down TestUserGroupMappingPlacementRule#testMapping into test scenarios
Contributed by Szilard Nemeth. Reviewed by Gergely Pollak.
---
.../placement/UserGroupMappingPlacementRule.java | 4 +-
.../TestUserGroupMappingPlacementRule.java | 476 ++++++++++++---------
2 files changed, 275 insertions(+), 205 deletions(-)
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/UserGroupMappingPlacementRule.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/UserGroupMappingPlacementRule.java
index 0e8cb9c..a68f3c6 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/UserGroupMappingPlacementRule.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/UserGroupMappingPlacementRule.java
@@ -141,7 +141,7 @@ public class UserGroupMappingPlacementRule extends PlacementRule {
} else {
if (LOG.isDebugEnabled()) {
LOG.debug("Creating placement context for user {} using " +
- "static user static mapping", user);
+ "current user static mapping", user);
}
return getPlacementContext(mapping);
}
@@ -173,7 +173,7 @@ public class UserGroupMappingPlacementRule extends PlacementRule {
} else {
if (LOG.isDebugEnabled()) {
LOG.debug("Creating placement context for user {} using " +
- "static user static mapping", user);
+ "current user static mapping", user);
}
return getPlacementContext(mapping);
}
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 5d2aaa1..432c009 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
@@ -169,7 +169,7 @@ public class TestUserGroupMappingPlacementRule {
}
@Test
- public void testNullGroupMapping() throws YarnException {
+ public void testNullGroupMapping() {
conf.setClass(CommonConfigurationKeys.HADOOP_SECURITY_GROUP_MAPPING,
NullGroupsMapping.class, GroupMappingServiceProvider.class);
try {
@@ -190,246 +190,316 @@ public class TestUserGroupMappingPlacementRule {
}
@Test
- public void testMapping() throws YarnException {
- //if a mapping rule defines no parent, we cannot expect auto creation,
- // so we must provide already existing queues
+ public void testSimpleUserMappingToSpecificQueue() throws YarnException {
verifyQueueMapping(
QueueMappingTestDataBuilder.create()
- .queueMapping(QueueMappingBuilder.create()
- .type(MappingType.USER)
- .source("a")
- .queue("a")
- .build())
- .inputUser("a")
- .expectedQueue("a")
- .build());
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("a")
+ .queue("a")
+ .build())
+ .inputUser("a")
+ .expectedQueue("a")
+ .build());
+ }
+
+ @Test
+ public void testSimpleGroupMappingToSpecificQueue() throws YarnException {
verifyQueueMapping(
QueueMappingTestDataBuilder.create()
- .queueMapping(QueueMappingBuilder.create()
- .type(MappingType.GROUP)
- .source("agroup")
- .queue("a")
- .build())
- .inputUser("a")
- .expectedQueue("a")
- .build());
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.GROUP)
+ .source("agroup")
+ .queue("a")
+ .build())
+ .inputUser("a")
+ .expectedQueue("a")
+ .build());
+ }
+
+ @Test
+ public void testUserMappingToSpecificQueueForEachUser() throws YarnException {
verifyQueueMapping(
QueueMappingTestDataBuilder.create()
- .queueMapping(QueueMappingBuilder.create()
- .type(MappingType.USER)
- .source("%user")
- .queue("b")
- .build())
- .inputUser("a")
- .expectedQueue("b")
- .build());
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("%user")
+ .queue("b")
+ .build())
+ .inputUser("a")
+ .expectedQueue("b")
+ .build());
+ }
+
+ @Test
+ public void testUserMappingToQueueNamedAsUsername() throws YarnException {
verifyQueueMapping(
QueueMappingTestDataBuilder.create()
- .queueMapping(QueueMappingBuilder.create()
- .type(MappingType.USER)
- .source("%user")
- .queue("%user")
- .build())
- .inputUser("a")
- .expectedQueue("a")
- .build());
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("%user")
+ .queue("%user")
+ .build())
+ .inputUser("a")
+ .expectedQueue("a")
+ .build());
+ }
+
+ @Test
+ public void testUserMappingToQueueNamedGroupOfTheUser() throws YarnException {
verifyQueueMapping(
QueueMappingTestDataBuilder.create()
- .queueMapping(QueueMappingBuilder.create()
- .type(MappingType.USER)
- .source("%user")
- .queue("%primary_group")
- .build())
- .inputUser("a")
- .expectedQueue("agroup")
- .expectedParentQueue("root")
- .build());
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("%user")
+ .queue("%primary_group")
+ .build())
+ .inputUser("a")
+ .expectedQueue("agroup")
+ .expectedParentQueue("root")
+ .build());
+ }
+
+ @Test
+ public void testUserMappingToQueueNamedAsUsernameWithPrimaryGroupAsParentQueue()
+ throws YarnException {
verifyQueueMapping(
QueueMappingTestDataBuilder.create()
- .queueMapping(QueueMappingBuilder.create()
- .type(MappingType.USER)
- .source("%user")
- .queue("%user")
- .parentQueue("%primary_group")
- .build())
- .inputUser("a")
- .expectedQueue("a")
- .expectedParentQueue("root.agroup")
- .build());
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("%user")
+ .queue("%user")
+ .parentQueue("%primary_group")
+ .build())
+ .inputUser("a")
+ .expectedQueue("a")
+ .expectedParentQueue("root.agroup")
+ .build());
+ }
+
+ @Test
+ public void testUserMappingToQueueNamedAsUsernameWithSecondaryGroupAsParentQueue()
+ throws YarnException {
verifyQueueMapping(
QueueMappingTestDataBuilder.create()
- .queueMapping(QueueMappingBuilder.create()
- .type(MappingType.USER)
- .source("%user")
- .queue("%user")
- .parentQueue("%secondary_group")
- .build())
- .inputUser("b")
- .expectedQueue("b")
- .expectedParentQueue("root.bsubgroup2")
- .build());
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("%user")
+ .queue("%user")
+ .parentQueue("%secondary_group")
+ .build())
+ .inputUser("b")
+ .expectedQueue("b")
+ .expectedParentQueue("root.bsubgroup2")
+ .build());
+ }
+
+ @Test
+ public void testGroupMappingToStaticQueue() throws YarnException {
verifyQueueMapping(
QueueMappingTestDataBuilder.create()
- .queueMapping(QueueMappingBuilder.create()
- .type(MappingType.GROUP)
- .source("asubgroup1")
- .queue("a")
- .build())
- .inputUser("a")
- .expectedQueue("a")
- .build());
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.GROUP)
+ .source("asubgroup1")
+ .queue("a")
+ .build())
+ .inputUser("a")
+ .expectedQueue("a")
+ .build());
+ }
- // "agroup" queue exists
+ @Test
+ public void testUserMappingToQueueNamedAsGroupNameWithRootAsParentQueue()
+ throws YarnException {
verifyQueueMapping(
QueueMappingTestDataBuilder.create()
- .queueMapping(QueueMappingBuilder.create()
- .type(MappingType.USER)
- .source("%user")
- .queue("%primary_group")
- .parentQueue("root")
- .build())
- .inputUser("a")
- .expectedQueue("agroup")
- .expectedParentQueue("root")
- .build());
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("%user")
+ .queue("%primary_group")
+ .parentQueue("root")
+ .build())
+ .inputUser("a")
+ .expectedQueue("agroup")
+ .expectedParentQueue("root")
+ .build());
+ }
+ @Test
+ public void testUserMappingToPrimaryGroupQueueDoesNotExistUnmanagedParent()
+ throws YarnException {
// "abcgroup" queue doesn't exist, %primary_group queue, not managed parent
verifyQueueMapping(
QueueMappingTestDataBuilder.create()
- .queueMapping(QueueMappingBuilder.create()
- .type(MappingType.USER)
- .source("%user")
- .queue("%primary_group")
- .parentQueue("bsubgroup2")
- .build())
- .inputUser("abc")
- .expectedQueue("default")
- .build());
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("%user")
+ .queue("%primary_group")
+ .parentQueue("bsubgroup2")
+ .build())
+ .inputUser("abc")
+ .expectedQueue("default")
+ .build());
+ }
+ @Test
+ public void testUserMappingToPrimaryGroupQueueDoesNotExistManagedParent()
+ throws YarnException {
// "abcgroup" queue doesn't exist, %primary_group queue, managed parent
verifyQueueMapping(
QueueMappingTestDataBuilder.create()
- .queueMapping(QueueMappingBuilder.create()
- .type(MappingType.USER)
- .source("%user")
- .queue("%primary_group")
- .parentQueue("managedParent")
- .build())
- .inputUser("abc")
- .expectedQueue("abcgroup")
- .expectedParentQueue("root.managedParent")
- .build());
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("%user")
+ .queue("%primary_group")
+ .parentQueue("managedParent")
+ .build())
+ .inputUser("abc")
+ .expectedQueue("abcgroup")
+ .expectedParentQueue("root.managedParent")
+ .build());
+ }
+ @Test
+ public void testUserMappingToSecondaryGroupQueueDoesNotExist()
+ throws YarnException {
// "abcgroup" queue doesn't exist, %secondary_group queue
verifyQueueMapping(
QueueMappingTestDataBuilder.create()
- .queueMapping(QueueMappingBuilder.create()
- .type(MappingType.USER)
- .source("%user")
- .queue("%secondary_group")
- .parentQueue("bsubgroup2")
- .build())
- .inputUser("abc")
- .expectedQueue("default")
- .build());
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("%user")
+ .queue("%secondary_group")
+ .parentQueue("bsubgroup2")
+ .build())
+ .inputUser("abc")
+ .expectedQueue("default")
+ .build());
+ }
+ @Test
+ public void testUserMappingToSecondaryGroupQueueUnderParent()
+ throws YarnException {
// "asubgroup2" queue exists, %secondary_group queue
verifyQueueMapping(
QueueMappingTestDataBuilder.create()
- .queueMapping(QueueMappingBuilder.create()
- .type(MappingType.USER)
- .source("%user")
- .queue("%secondary_group")
- .parentQueue("root")
- .build())
- .inputUser("a")
- .expectedQueue("asubgroup2")
- .expectedParentQueue("root")
- .build());
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("%user")
+ .queue("%secondary_group")
+ .parentQueue("root")
+ .build())
+ .inputUser("a")
+ .expectedQueue("asubgroup2")
+ .expectedParentQueue("root")
+ .build());
+ }
+ @Test
+ public void testUserMappingToSpecifiedQueueOverwritesInputQueueFromMapping()
+ throws YarnException {
// specify overwritten, and see if user specified a queue, and it will be
// overridden
- verifyQueueMapping(
- QueueMappingTestDataBuilder.create()
- .queueMapping(QueueMappingBuilder.create()
- .type(MappingType.USER)
- .source("user")
- .queue("a")
- .build())
- .inputUser("user")
- .inputQueue("b")
- .expectedQueue("a")
- .overwrite(true)
- .build());
-
- // if overwritten not specified, it should be which user specified
- verifyQueueMapping(
- QueueMappingTestDataBuilder.create()
- .queueMapping(QueueMappingBuilder.create()
- .type(MappingType.USER)
- .source("user")
- .queue("a")
- .build())
- .inputUser("user")
- .inputQueue("b")
- .expectedQueue("b")
- .build());
-
- // if overwritten not specified, it should be which user specified
- verifyQueueMapping(
- QueueMappingTestDataBuilder.create()
- .queueMapping(QueueMappingBuilder.create()
- .type(MappingType.GROUP)
- .source("usergroup")
- .queue("%user")
- .parentQueue("usergroup")
- .build())
- .inputUser("user")
- .inputQueue("a")
- .expectedQueue("a")
- .build());
-
- // if overwritten not specified, it should be which user specified
- verifyQueueMapping(
- QueueMappingTestDataBuilder.create()
- .queueMapping(QueueMappingBuilder.create()
- .type(MappingType.GROUP)
- .source("usergroup")
- .queue("b")
- .parentQueue("root.bsubgroup2")
- .build())
- .inputUser("user")
- .inputQueue("a")
- .expectedQueue("b")
- .overwrite(true)
- .build());
-
- // If user specific queue is enabled for a specified group under a given
- // parent queue
- verifyQueueMapping(
- QueueMappingTestDataBuilder.create()
- .queueMapping(QueueMappingBuilder.create()
- .type(MappingType.GROUP)
- .source("agroup")
- .queue("%user")
- .parentQueue("root.agroup")
- .build())
- .inputUser("a")
- .expectedQueue("a")
- .build());
-
- // If user specific queue is enabled for a specified group without parent
- // queue
- verifyQueueMapping(
- QueueMappingTestDataBuilder.create()
- .queueMapping(QueueMappingBuilder.create()
- .type(MappingType.GROUP)
- .source("agroup")
- .queue("%user")
- .build())
- .inputUser("a")
- .expectedQueue("a")
- .build());
+ verifyQueueMapping(
+ QueueMappingTestDataBuilder.create()
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("user")
+ .queue("a")
+ .build())
+ .inputUser("user")
+ .inputQueue("b")
+ .expectedQueue("a")
+ .overwrite(true)
+ .build());
+ }
+
+ @Test
+ public void testUserMappingToExplicitlySpecifiedQueue() throws YarnException {
+ // if overwritten not specified, it should be which user specified
+ verifyQueueMapping(
+ QueueMappingTestDataBuilder.create()
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("user")
+ .queue("a")
+ .build())
+ .inputUser("user")
+ .inputQueue("b")
+ .expectedQueue("b")
+ .build());
+ }
+
+ @Test
+ public void testGroupMappingToExplicitlySpecifiedQueue()
+ throws YarnException {
+ // if overwritten not specified, it should be which user specified
+ verifyQueueMapping(
+ QueueMappingTestDataBuilder.create()
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.GROUP)
+ .source("usergroup")
+ .queue("%user")
+ .parentQueue("usergroup")
+ .build())
+ .inputUser("user")
+ .inputQueue("a")
+ .expectedQueue("a")
+ .build());
+ }
+
+ @Test
+ public void testGroupMappingToSpecifiedQueueOverwritesInputQueueFromMapping()
+ throws YarnException {
+ // if overwritten not specified, it should be which user specified
+ verifyQueueMapping(
+ QueueMappingTestDataBuilder.create()
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.GROUP)
+ .source("usergroup")
+ .queue("b")
+ .parentQueue("root.bsubgroup2")
+ .build())
+ .inputUser("user")
+ .inputQueue("a")
+ .expectedQueue("b")
+ .overwrite(true)
+ .build());
+ }
+
+ @Test
+ public void testGroupMappingToSpecifiedQueueUnderAGivenParentQueue()
+ throws YarnException {
+ // If user specific queue is enabled for a specified group under a given
+ // parent queue
+ verifyQueueMapping(
+ QueueMappingTestDataBuilder.create()
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.GROUP)
+ .source("agroup")
+ .queue("%user")
+ .parentQueue("root.agroup")
+ .build())
+ .inputUser("a")
+ .expectedQueue("a")
+ .build());
+ }
+
+ @Test
+ public void testGroupMappingToSpecifiedQueueWithoutParentQueue()
+ throws YarnException {
+ // If user specific queue is enabled for a specified group without parent
+ // queue
+ verifyQueueMapping(
+ QueueMappingTestDataBuilder.create()
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.GROUP)
+ .source("agroup")
+ .queue("%user")
+ .build())
+ .inputUser("a")
+ .expectedQueue("a")
+ .build());
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org