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 sn...@apache.org on 2020/01/15 08:55:58 UTC
[hadoop] branch trunk updated: YARN-9970. Refactor
TestUserGroupMappingPlacementRule#verifyQueueMapping. Contributed by
Manikandan R
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 7c5cecc YARN-9970. Refactor TestUserGroupMappingPlacementRule#verifyQueueMapping. Contributed by Manikandan R
7c5cecc is described below
commit 7c5cecc3b3c00886a5bc39a9a8cad6ca1088b095
Author: Szilard Nemeth <sn...@apache.org>
AuthorDate: Wed Jan 15 09:55:41 2020 +0100
YARN-9970. Refactor TestUserGroupMappingPlacementRule#verifyQueueMapping. Contributed by Manikandan R
---
.../resourcemanager/placement/QueueMapping.java | 183 +++++++++++
.../placement/UserGroupMappingPlacementRule.java | 153 +++-------
.../capacity/CapacitySchedulerConfiguration.java | 12 +-
.../placement/TestPlacementManager.java | 14 +-
.../TestUserGroupMappingPlacementRule.java | 339 +++++++++++++++++----
.../TestCapacitySchedulerAutoCreatedQueueBase.java | 53 ++--
.../TestCapacitySchedulerQueueMappingFactory.java | 170 ++++++-----
.../scheduler/capacity/TestQueueMappings.java | 12 +-
8 files changed, 645 insertions(+), 291 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/QueueMapping.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/QueueMapping.java
new file mode 100644
index 0000000..bd0e0e2
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/placement/QueueMapping.java
@@ -0,0 +1,183 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.yarn.server.resourcemanager.placement;
+
+import org.apache.hadoop.classification.InterfaceAudience.Private;
+
+/**
+ * Queue Mapping class to hold the queue mapping information.
+ *
+ */
+@Private
+public class QueueMapping {
+
+ /**
+ * Builder class for QueueMapping.
+ *
+ */
+ public static class QueueMappingBuilder {
+
+ private MappingType type;
+ private String source;
+ private String queue;
+ private String parentQueue;
+
+ public QueueMappingBuilder() {
+ }
+
+ public static QueueMappingBuilder create() {
+ return new QueueMappingBuilder();
+ }
+
+ public QueueMappingBuilder type(MappingType mappingType) {
+ this.type = mappingType;
+ return this;
+ }
+
+ public QueueMappingBuilder source(String mappingSource) {
+ this.source = mappingSource;
+ return this;
+ }
+
+ public QueueMappingBuilder queue(String mappingQueue) {
+ this.queue = mappingQueue;
+ return this;
+ }
+
+ public QueueMappingBuilder parentQueue(String mappingParentQueue) {
+ this.parentQueue = mappingParentQueue;
+ return this;
+ }
+
+ public QueueMapping build() {
+ return new QueueMapping(this);
+ }
+ }
+
+ private QueueMapping(QueueMappingBuilder builder) {
+ this.type = builder.type;
+ this.source = builder.source;
+ this.queue = builder.queue;
+ this.parentQueue = builder.parentQueue;
+ }
+
+ /**
+ * Different types of mapping.
+ *
+ */
+ public enum MappingType {
+
+ USER("u"), GROUP("g");
+
+ private final String type;
+
+ MappingType(String type) {
+ this.type = type;
+ }
+
+ public String toString() {
+ return type;
+ }
+
+ };
+
+ private MappingType type;
+ private String source;
+ private String queue;
+ private String parentQueue;
+
+ private final static String DELIMITER = ":";
+
+ public String getQueue() {
+ return queue;
+ }
+
+ public String getParentQueue() {
+ return parentQueue;
+ }
+
+ public boolean hasParentQueue() {
+ return parentQueue != null;
+ }
+
+ public MappingType getType() {
+ return type;
+ }
+
+ public String getSource() {
+ return source;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result =
+ prime * result + ((parentQueue == null) ? 0 : parentQueue.hashCode());
+ result = prime * result + ((queue == null) ? 0 : queue.hashCode());
+ result = prime * result + ((source == null) ? 0 : source.hashCode());
+ result = prime * result + ((type == null) ? 0 : type.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ QueueMapping other = (QueueMapping) obj;
+ if (parentQueue == null) {
+ if (other.parentQueue != null) {
+ return false;
+ }
+ } else if (!parentQueue.equals(other.parentQueue)) {
+ return false;
+ }
+ if (queue == null) {
+ if (other.queue != null) {
+ return false;
+ }
+ } else if (!queue.equals(other.queue)) {
+ return false;
+ }
+ if (source == null) {
+ if (other.source != null) {
+ return false;
+ }
+ } else if (!source.equals(other.source)) {
+ return false;
+ }
+ if (type != other.type) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return type.toString() + DELIMITER + source + DELIMITER
+ + (parentQueue != null ? parentQueue + "." + queue : queue);
+ }
+}
\ No newline at end of file
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 5221ace..6dce9c7 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
@@ -23,18 +23,15 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.apache.hadoop.classification.InterfaceAudience.Private;
import org.apache.hadoop.security.Groups;
import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.exceptions.YarnException;
-import org.apache.hadoop.yarn.server.resourcemanager.placement.UserGroupMappingPlacementRule.QueueMapping.MappingType;
-
-import com.google.common.annotations.VisibleForTesting;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceScheduler;
+import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping.MappingType;
+import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping.QueueMappingBuilder;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.AutoCreatedLeafQueue;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CSQueue;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler;
@@ -44,6 +41,10 @@ import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.Capacity
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.LeafQueue;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.ManagedParentQueue;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.ParentQueue;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.annotations.VisibleForTesting;
public class UserGroupMappingPlacementRule extends PlacementRule {
private static final Logger LOG = LoggerFactory
@@ -60,91 +61,6 @@ public class UserGroupMappingPlacementRule extends PlacementRule {
private Groups groups;
private CapacitySchedulerQueueManager queueManager;
- @Private
- public static class QueueMapping {
-
- public enum MappingType {
-
- USER("u"), GROUP("g");
- private final String type;
-
- private MappingType(String type) {
- this.type = type;
- }
-
- public String toString() {
- return type;
- }
-
- };
-
- MappingType type;
- String source;
- String queue;
- String parentQueue;
-
- public final static String DELIMITER = ":";
-
- public QueueMapping(MappingType type, String source, String queue) {
- this.type = type;
- this.source = source;
- this.queue = queue;
- this.parentQueue = null;
- }
-
- public QueueMapping(MappingType type, String source,
- String queue, String parentQueue) {
- this.type = type;
- this.source = source;
- this.queue = queue;
- this.parentQueue = parentQueue;
- }
-
- public String getQueue() {
- return queue;
- }
-
- public String getParentQueue() {
- return parentQueue;
- }
-
- public boolean hasParentQueue() {
- return parentQueue != null;
- }
-
- public MappingType getType() {
- return type;
- }
-
- public String getSource() {
- return source;
- }
-
- @Override
- public int hashCode() {
- return super.hashCode();
- }
-
- @Override
- public boolean equals(Object obj) {
- if (obj instanceof QueueMapping) {
- QueueMapping other = (QueueMapping) obj;
- return (other.type.equals(type) &&
- other.source.equals(source) &&
- other.queue.equals(queue));
- } else {
- return false;
- }
- }
-
- public String toString() {
- return type.toString() + DELIMITER + source + DELIMITER +
- (parentQueue != null ?
- parentQueue + "." + queue :
- queue);
- }
- }
-
public UserGroupMappingPlacementRule(){
this(false, null, null);
}
@@ -179,15 +95,19 @@ public class UserGroupMappingPlacementRule extends PlacementRule {
private ApplicationPlacementContext getPlacementForUser(String user)
throws IOException {
for (QueueMapping mapping : mappings) {
- if (mapping.type == MappingType.USER) {
- if (mapping.source.equals(CURRENT_USER_MAPPING)) {
+ if (mapping.getType() == MappingType.USER) {
+ if (mapping.getSource().equals(CURRENT_USER_MAPPING)) {
if (mapping.getParentQueue() != null
&& mapping.getParentQueue().equals(PRIMARY_GROUP_MAPPING)
&& mapping.getQueue().equals(CURRENT_USER_MAPPING)) {
if (this.queueManager
.getQueue(groups.getGroups(user).get(0)) != null) {
- QueueMapping queueMapping = new QueueMapping(mapping.getType(),
- mapping.getSource(), user, groups.getGroups(user).get(0));
+ QueueMapping queueMapping =
+ QueueMappingBuilder.create()
+ .type(mapping.getType())
+ .source(mapping.getSource()).queue(user)
+ .parentQueue(groups.getGroups(user).get(0))
+ .build();
validateQueueMapping(queueMapping);
return getPlacementContext(queueMapping, user);
} else {
@@ -198,16 +118,21 @@ public class UserGroupMappingPlacementRule extends PlacementRule {
&& mapping.getQueue().equals(CURRENT_USER_MAPPING)) {
String secondaryGroup = getSecondaryGroup(user);
if (secondaryGroup != null) {
- QueueMapping queueMapping = new QueueMapping(mapping.getType(),
- mapping.getSource(), user, secondaryGroup);
+ QueueMapping queueMapping =
+ QueueMappingBuilder.create()
+ .type(mapping.getType())
+ .source(mapping.getSource())
+ .queue(user)
+ .parentQueue(secondaryGroup)
+ .build();
validateQueueMapping(queueMapping);
return getPlacementContext(queueMapping, user);
} else {
return null;
}
- } else if (mapping.queue.equals(CURRENT_USER_MAPPING)) {
+ } else if (mapping.getQueue().equals(CURRENT_USER_MAPPING)) {
return getPlacementContext(mapping, user);
- } else if (mapping.queue.equals(PRIMARY_GROUP_MAPPING)) {
+ } else if (mapping.getQueue().equals(PRIMARY_GROUP_MAPPING)) {
if (this.queueManager
.getQueue(groups.getGroups(user).get(0)) != null) {
return getPlacementContext(mapping,
@@ -215,7 +140,7 @@ public class UserGroupMappingPlacementRule extends PlacementRule {
} else {
return null;
}
- } else if (mapping.queue.equals(SECONDARY_GROUP_MAPPING)) {
+ } else if (mapping.getQueue().equals(SECONDARY_GROUP_MAPPING)) {
String secondaryGroup = getSecondaryGroup(user);
if (secondaryGroup != null) {
return getPlacementContext(mapping, secondaryGroup);
@@ -226,10 +151,10 @@ public class UserGroupMappingPlacementRule extends PlacementRule {
return getPlacementContext(mapping);
}
}
- if (user.equals(mapping.source)) {
- if (mapping.queue.equals(PRIMARY_GROUP_MAPPING)) {
+ if (user.equals(mapping.getSource())) {
+ if (mapping.getQueue().equals(PRIMARY_GROUP_MAPPING)) {
return getPlacementContext(mapping, groups.getGroups(user).get(0));
- } else if (mapping.queue.equals(SECONDARY_GROUP_MAPPING)) {
+ } else if (mapping.getQueue().equals(SECONDARY_GROUP_MAPPING)) {
String secondaryGroup = getSecondaryGroup(user);
if (secondaryGroup != null) {
return getPlacementContext(mapping, secondaryGroup);
@@ -241,10 +166,10 @@ public class UserGroupMappingPlacementRule extends PlacementRule {
}
}
}
- if (mapping.type == MappingType.GROUP) {
+ if (mapping.getType() == MappingType.GROUP) {
for (String userGroups : groups.getGroups(user)) {
- if (userGroups.equals(mapping.source)) {
- if (mapping.queue.equals(CURRENT_USER_MAPPING)) {
+ if (userGroups.equals(mapping.getSource())) {
+ if (mapping.getQueue().equals(CURRENT_USER_MAPPING)) {
return getPlacementContext(mapping, user);
}
return getPlacementContext(mapping);
@@ -292,7 +217,7 @@ public class UserGroupMappingPlacementRule extends PlacementRule {
private ApplicationPlacementContext getPlacementContext(QueueMapping mapping,
String leafQueueName) {
- if (!StringUtils.isEmpty(mapping.parentQueue)) {
+ if (!StringUtils.isEmpty(mapping.getParentQueue())) {
return new ApplicationPlacementContext(leafQueueName,
mapping.getParentQueue());
} else{
@@ -426,16 +351,24 @@ public class UserGroupMappingPlacementRule extends PlacementRule {
&& (queuePath.getParentQueue().equals(PRIMARY_GROUP_MAPPING)
|| queuePath.getParentQueue().equals(SECONDARY_GROUP_MAPPING))) {
// dynamic parent queue
- return new QueueMapping(mapping.getType(), mapping.getSource(),
- queuePath.getLeafQueue(), queuePath.getParentQueue());
+ return QueueMappingBuilder.create()
+ .type(mapping.getType())
+ .source(mapping.getSource())
+ .queue(queuePath.getLeafQueue())
+ .parentQueue(queuePath.getParentQueue())
+ .build();
} else if (queuePath.hasParentQueue()) {
//if parent queue is specified,
// then it should exist and be an instance of ManagedParentQueue
QueuePlacementRuleUtils.validateQueueMappingUnderParentQueue(
queueManager.getQueue(queuePath.getParentQueue()),
queuePath.getParentQueue(), queuePath.getLeafQueue());
- return new QueueMapping(mapping.getType(), mapping.getSource(),
- queuePath.getLeafQueue(), queuePath.getParentQueue());
+ return QueueMappingBuilder.create()
+ .type(mapping.getType())
+ .source(mapping.getSource())
+ .queue(queuePath.getLeafQueue())
+ .parentQueue(queuePath.getParentQueue())
+ .build();
}
return null;
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacitySchedulerConfiguration.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacitySchedulerConfiguration.java
index c1ce6da..d57e391 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacitySchedulerConfiguration.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacitySchedulerConfiguration.java
@@ -39,8 +39,9 @@ import org.apache.hadoop.yarn.exceptions.YarnRuntimeException;
import org.apache.hadoop.yarn.nodelabels.CommonNodeLabelsManager;
import org.apache.hadoop.yarn.security.AccessType;
import org.apache.hadoop.yarn.server.resourcemanager.nodelabels.RMNodeLabelsManager;
+import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping;
+import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping.QueueMappingBuilder;
import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMappingEntity;
-import org.apache.hadoop.yarn.server.resourcemanager.placement.UserGroupMappingPlacementRule.QueueMapping;
import org.apache.hadoop.yarn.server.resourcemanager.reservation.ReservationSchedulerConfiguration;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerUtils;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.AppPriorityACLConfigurationParser.AppPriorityACLKeyType;
@@ -1119,10 +1120,11 @@ public class CapacitySchedulerConfiguration extends ReservationSchedulerConfigur
throw new IllegalArgumentException(
"unknown mapping prefix " + mapping[0]);
}
- m = new QueueMapping(
- mappingType,
- mapping[1],
- mapping[2]);
+ m = QueueMappingBuilder.create()
+ .type(mappingType)
+ .source(mapping[1])
+ .queue(mapping[2])
+ .build();
} catch (Throwable t) {
throw new IllegalArgumentException(
"Illegal queue mapping " + mappingValue);
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/TestPlacementManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/TestPlacementManager.java
index db5cd60..3b85fda 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/TestPlacementManager.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/placement/TestPlacementManager.java
@@ -22,6 +22,8 @@ import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.server.resourcemanager.MockRM;
+import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping.MappingType;
+import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping.QueueMappingBuilder;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceScheduler;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration;
@@ -70,11 +72,13 @@ public class TestPlacementManager {
.getQueuePlacementManager();
List<PlacementRule> queuePlacementRules = new ArrayList<>();
- UserGroupMappingPlacementRule.QueueMapping userQueueMapping =
- new UserGroupMappingPlacementRule.QueueMapping(
- UserGroupMappingPlacementRule.QueueMapping.MappingType.USER,
- USER1,
- getQueueMapping(PARENT_QUEUE, USER1));
+ QueueMapping userQueueMapping = QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source(USER1)
+ .queue(
+ getQueueMapping(PARENT_QUEUE,
+ USER1))
+ .build();
UserGroupMappingPlacementRule ugRule = new UserGroupMappingPlacementRule(
false, Arrays.asList(userQueueMapping), null);
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 5cd6ea1..e663a14 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
@@ -31,8 +31,9 @@ import org.apache.hadoop.security.NullGroupsMapping;
import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.exceptions.YarnException;
-import org.apache.hadoop.yarn.server.resourcemanager.placement.UserGroupMappingPlacementRule.QueueMapping;
-import org.apache.hadoop.yarn.server.resourcemanager.placement.UserGroupMappingPlacementRule.QueueMapping.MappingType;
+import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping.MappingType;
+import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping.QueueMappingBuilder;
+import org.apache.hadoop.yarn.server.resourcemanager.placement.TestUserGroupMappingPlacementRule.QueueMappingTestData.QueueMappingTestDataBuilder;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerQueueManager;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.LeafQueue;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.ParentQueue;
@@ -52,21 +53,16 @@ public class TestUserGroupMappingPlacementRule {
SimpleGroupsMapping.class, GroupMappingServiceProvider.class);
}
- private void verifyQueueMapping(QueueMapping queueMapping, String inputUser,
- String expectedQueue) throws YarnException {
- verifyQueueMapping(queueMapping, inputUser,
- YarnConfiguration.DEFAULT_QUEUE_NAME, expectedQueue, false);
- }
+ private void verifyQueueMapping(QueueMappingTestData queueMappingTestData)
+ throws YarnException {
- private void verifyQueueMapping(QueueMapping queueMapping, String inputUser,
- String inputQueue, String expectedQueue, boolean overwrite) throws YarnException {
- verifyQueueMapping(queueMapping, inputUser, inputQueue, expectedQueue,
- overwrite, null);
- }
+ QueueMapping queueMapping = queueMappingTestData.queueMapping;
+ String inputUser = queueMappingTestData.inputUser;
+ String inputQueue = queueMappingTestData.inputQueue;
+ String expectedQueue = queueMappingTestData.expectedQueue;
+ boolean overwrite = queueMappingTestData.overwrite;
+ String expectedParentQueue = queueMappingTestData.expectedParentQueue;
- private void verifyQueueMapping(QueueMapping queueMapping, String inputUser,
- String inputQueue, String expectedQueue, boolean overwrite,
- String expectedParentQueue) throws YarnException {
Groups groups = new Groups(conf);
UserGroupMappingPlacementRule rule = new UserGroupMappingPlacementRule(
overwrite, Arrays.asList(queueMapping), groups);
@@ -109,16 +105,28 @@ public class TestUserGroupMappingPlacementRule {
@Test
public void testSecondaryGroupMapping() throws YarnException {
verifyQueueMapping(
- new QueueMapping(MappingType.USER, "%user", "%secondary_group"), "a",
- "asubgroup2");
+ QueueMappingTestDataBuilder.create()
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("%user")
+ .queue("%secondary_group").build())
+ .inputUser("a")
+ .expectedQueue("asubgroup2")
+ .build());
// PrimaryGroupMapping.class returns only primary group, no secondary groups
conf.setClass(CommonConfigurationKeys.HADOOP_SECURITY_GROUP_MAPPING,
PrimaryGroupMapping.class, GroupMappingServiceProvider.class);
-
verifyQueueMapping(
- new QueueMapping(MappingType.USER, "%user", "%secondary_group"), "a",
- "default");
+ QueueMappingTestDataBuilder.create()
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("%user")
+ .queue("%secondary_group")
+ .build())
+ .inputUser("a")
+ .expectedQueue("default")
+ .build());
}
@Test
@@ -127,8 +135,15 @@ public class TestUserGroupMappingPlacementRule {
NullGroupsMapping.class, GroupMappingServiceProvider.class);
try {
verifyQueueMapping(
- new QueueMapping(MappingType.USER, "%user", "%secondary_group"), "a",
- "default");
+ QueueMappingTestDataBuilder.create()
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("%user")
+ .queue("%secondary_group")
+ .build())
+ .inputUser("a")
+ .expectedQueue("default")
+ .build());
fail("No Groups for user 'a'");
} catch (YarnException e) {
// Exception is expected as there are no groups for given user
@@ -137,59 +152,253 @@ public class TestUserGroupMappingPlacementRule {
@Test
public void testMapping() throws YarnException {
-
- verifyQueueMapping(new QueueMapping(MappingType.USER, "a", "q1"), "a", "q1");
- verifyQueueMapping(new QueueMapping(MappingType.GROUP, "agroup", "q1"),
- "a", "q1");
- verifyQueueMapping(new QueueMapping(MappingType.USER, "%user", "q2"), "a",
- "q2");
- verifyQueueMapping(new QueueMapping(MappingType.USER, "%user", "%user"),
- "a", "a");
verifyQueueMapping(
- new QueueMapping(MappingType.USER, "%user", "%primary_group"), "a",
- "agroup");
- // Queue "bgroup" is not configured, hence "default" should be used
+ QueueMappingTestDataBuilder.create()
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("a")
+ .queue("q1")
+ .build())
+ .inputUser("a")
+ .expectedQueue("q1")
+ .build());
+ verifyQueueMapping(
+ QueueMappingTestDataBuilder.create()
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.GROUP)
+ .source("agroup")
+ .queue("q1")
+ .build())
+ .inputUser("a")
+ .expectedQueue("q1")
+ .build());
+ verifyQueueMapping(
+ QueueMappingTestDataBuilder.create()
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("%user")
+ .queue("q2")
+ .build())
+ .inputUser("a")
+ .expectedQueue("q2")
+ .build());
+ verifyQueueMapping(
+ QueueMappingTestDataBuilder.create()
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("%user")
+ .queue("%user")
+ .build())
+ .inputUser("a")
+ .expectedQueue("a")
+ .build());
+ verifyQueueMapping(
+ QueueMappingTestDataBuilder.create()
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("%user")
+ .queue("%primary_group")
+ .build())
+ .inputUser("a")
+ .expectedQueue("agroup")
+ .build());
verifyQueueMapping(
- new QueueMapping(MappingType.USER, "%user", "%primary_group"), "b",
- "default");
+ QueueMappingTestDataBuilder.create()
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("%user")
+ .queue("%user")
+ .parentQueue("%primary_group")
+ .build())
+ .inputUser("a")
+ .expectedQueue("a")
+ .expectedParentQueue("agroup")
+ .build());
verifyQueueMapping(
- new QueueMapping(MappingType.USER, "%user", "%user", "%primary_group"),
- "a", YarnConfiguration.DEFAULT_QUEUE_NAME, "a", false, "agroup");
+ QueueMappingTestDataBuilder.create()
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("%user")
+ .queue("%user")
+ .parentQueue("%secondary_group")
+ .build())
+ .inputUser("b")
+ .expectedQueue("b")
+ .expectedParentQueue("bsubgroup2")
+ .build());
verifyQueueMapping(
- new QueueMapping(MappingType.USER, "%user", "%user",
- "%secondary_group"),
- "b", YarnConfiguration.DEFAULT_QUEUE_NAME, "b", false, "bsubgroup2");
- verifyQueueMapping(new QueueMapping(MappingType.GROUP, "asubgroup1", "q1"),
- "a", "q1");
+ QueueMappingTestDataBuilder.create()
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.GROUP)
+ .source("asubgroup1")
+ .queue("q1")
+ .build())
+ .inputUser("a")
+ .expectedQueue("q1")
+ .build());
// specify overwritten, and see if user specified a queue, and it will be
// overridden
- verifyQueueMapping(new QueueMapping(MappingType.USER, "user", "q1"), "user",
- "q2", "q1", true);
-
- // if overwritten not specified, it should be which user specified
- verifyQueueMapping(new QueueMapping(MappingType.USER, "user", "q1"), "user",
- "q2", "q2", false);
+ verifyQueueMapping(
+ QueueMappingTestDataBuilder.create()
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("user")
+ .queue("q1")
+ .build())
+ .inputUser("user")
+ .inputQueue("q2")
+ .expectedQueue("q1")
+ .overwrite(true)
+ .build());
- // if overwritten not specified, it should be which user specified
- verifyQueueMapping(
- new QueueMapping(MappingType.GROUP, "usergroup", "%user", "usergroup"),
- "user", "default", "user", false);
+ // if overwritten not specified, it should be which user specified
+ verifyQueueMapping(
+ QueueMappingTestDataBuilder.create()
+ .queueMapping(QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("user")
+ .queue("q1")
+ .build())
+ .inputUser("user")
+ .inputQueue("q2")
+ .expectedQueue("q2")
+ .build());
- // if overwritten not specified, it should be which user specified
- verifyQueueMapping(
- new QueueMapping(MappingType.GROUP, "usergroup", "%user", "usergroup"),
- "user", "agroup", "user", true);
+ // 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("default")
+ .expectedQueue("user")
+ .build());
- //If user specific queue is enabled for a specified group under a given
- // parent queue
- verifyQueueMapping(
- new QueueMapping(MappingType.GROUP, "agroup", "%user", "parent1"), "a",
- "a");
+ // 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("agroup")
+ .expectedQueue("user")
+ .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("parent1")
+ .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());
+ }
+
+ /**
+ * Queue Mapping test class to prepare the test data.
+ *
+ */
+ public static final class QueueMappingTestData {
- //If user specific queue is enabled for a specified group without parent
- // queue
- verifyQueueMapping(new QueueMapping(MappingType.GROUP, "agroup", "%user"),
- "a", "a");
+ private QueueMapping queueMapping;
+ private String inputUser;
+ private String inputQueue;
+ private String expectedQueue;
+ private boolean overwrite;
+ private String expectedParentQueue;
+
+ private QueueMappingTestData(QueueMappingTestDataBuilder builder) {
+ this.queueMapping = builder.queueMapping;
+ this.inputUser = builder.inputUser;
+ this.inputQueue = builder.inputQueue;
+ this.expectedQueue = builder.expectedQueue;
+ this.overwrite = builder.overwrite;
+ this.expectedParentQueue = builder.expectedParentQueue;
+ }
+
+ /**
+ * Builder class to prepare the Queue Mapping test data.
+ *
+ */
+ public static class QueueMappingTestDataBuilder {
+
+ private QueueMapping queueMapping = null;
+ private String inputUser = null;
+ private String inputQueue = YarnConfiguration.DEFAULT_QUEUE_NAME;
+ private String expectedQueue = null;
+ private boolean overwrite = false;
+ private String expectedParentQueue = null;
+
+ public QueueMappingTestDataBuilder() {
+
+ }
+
+ public static QueueMappingTestDataBuilder create() {
+ return new QueueMappingTestDataBuilder();
+ }
+
+ public QueueMappingTestDataBuilder queueMapping(QueueMapping mapping) {
+ this.queueMapping = mapping;
+ return this;
+ }
+
+ public QueueMappingTestDataBuilder inputUser(String user) {
+ this.inputUser = user;
+ return this;
+ }
+
+ public QueueMappingTestDataBuilder inputQueue(String queue) {
+ this.inputQueue = queue;
+ return this;
+ }
+
+ public QueueMappingTestDataBuilder expectedQueue(String outputQueue) {
+ this.expectedQueue = outputQueue;
+ return this;
+ }
+
+ public QueueMappingTestDataBuilder overwrite(boolean overwriteMappings) {
+ this.overwrite = overwriteMappings;
+ return this;
+ }
+
+ public QueueMappingTestDataBuilder expectedParentQueue(
+ String outputParentQueue) {
+ this.expectedParentQueue = outputParentQueue;
+ return this;
+ }
+
+ public QueueMappingTestData build() {
+ return new QueueMappingTestData(this);
+ }
+ }
}
}
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacitySchedulerAutoCreatedQueueBase.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacitySchedulerAutoCreatedQueueBase.java
index 9527e80..ae30e4a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacitySchedulerAutoCreatedQueueBase.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacitySchedulerAutoCreatedQueueBase.java
@@ -46,8 +46,8 @@ import org.apache.hadoop.yarn.server.resourcemanager.nodelabels
import org.apache.hadoop.yarn.server.resourcemanager.nodelabels.RMNodeLabelsManager;
import org.apache.hadoop.yarn.server.resourcemanager.placement
.ApplicationPlacementContext;
-import org.apache.hadoop.yarn.server.resourcemanager.placement
- .UserGroupMappingPlacementRule;
+import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping;
+import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping.QueueMappingBuilder;
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApp;
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppEventType;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ContainerUpdates;
@@ -268,19 +268,19 @@ public class TestCapacitySchedulerAutoCreatedQueueBase {
queuePlacementRules.add(YarnConfiguration.USER_GROUP_PLACEMENT_RULE);
conf.setQueuePlacementRules(queuePlacementRules);
- List<UserGroupMappingPlacementRule.QueueMapping> existingMappings =
- conf.getQueueMappings();
+ List<QueueMapping> existingMappings = conf.getQueueMappings();
//set queue mapping
- List<UserGroupMappingPlacementRule.QueueMapping> queueMappings =
- new ArrayList<>();
+ List<QueueMapping> queueMappings = new ArrayList<>();
for (int i = 0; i < userIds.length; i++) {
//Set C as parent queue name for auto queue creation
- UserGroupMappingPlacementRule.QueueMapping userQueueMapping =
- new UserGroupMappingPlacementRule.QueueMapping(
- UserGroupMappingPlacementRule.QueueMapping.MappingType.USER,
- USER + userIds[i],
- getQueueMapping(parentQueue, USER + userIds[i]));
+ QueueMapping userQueueMapping = QueueMappingBuilder.create()
+ .type(QueueMapping.MappingType.USER)
+ .source(USER + userIds[i])
+ .queue(
+ getQueueMapping(parentQueue,
+ USER + userIds[i]))
+ .build();
queueMappings.add(userQueueMapping);
}
@@ -295,12 +295,10 @@ public class TestCapacitySchedulerAutoCreatedQueueBase {
(String parentQueue, CapacitySchedulerConfiguration conf, String
leafQueueName) {
- List<UserGroupMappingPlacementRule.QueueMapping> existingMappings =
- conf.getQueueMappings();
+ List<QueueMapping> existingMappings = conf.getQueueMappings();
//set queue mapping
- List<UserGroupMappingPlacementRule.QueueMapping> queueMappings =
- new ArrayList<>();
+ List<QueueMapping> queueMappings = new ArrayList<>();
//setup group mapping
conf.setClass(CommonConfigurationKeys.HADOOP_SECURITY_GROUP_MAPPING,
@@ -309,11 +307,13 @@ public class TestCapacitySchedulerAutoCreatedQueueBase {
TEST_GROUPUSER +"=" + TEST_GROUP + ";invalid_user=invalid_group");
Groups.getUserToGroupsMappingServiceWithLoadedConfiguration(conf);
- UserGroupMappingPlacementRule.QueueMapping userQueueMapping =
- new UserGroupMappingPlacementRule.QueueMapping(
- UserGroupMappingPlacementRule.QueueMapping.MappingType.GROUP,
- TEST_GROUP,
- getQueueMapping(parentQueue, leafQueueName));
+ QueueMapping userQueueMapping = QueueMappingBuilder.create()
+ .type(QueueMapping.MappingType.GROUP)
+ .source(TEST_GROUP)
+ .queue(
+ getQueueMapping(parentQueue,
+ leafQueueName))
+ .build();
queueMappings.add(userQueueMapping);
existingMappings.addAll(queueMappings);
@@ -514,13 +514,14 @@ public class TestCapacitySchedulerAutoCreatedQueueBase {
return rmApp.getApplicationId();
}
- protected List<UserGroupMappingPlacementRule.QueueMapping> setupQueueMapping(
+ protected List<QueueMapping> setupQueueMapping(
CapacityScheduler newCS, String user, String parentQueue, String queue) {
- List<UserGroupMappingPlacementRule.QueueMapping> queueMappings =
- new ArrayList<>();
- queueMappings.add(new UserGroupMappingPlacementRule.QueueMapping(
- UserGroupMappingPlacementRule.QueueMapping.MappingType.USER, user,
- getQueueMapping(parentQueue, queue)));
+ List<QueueMapping> queueMappings = new ArrayList<>();
+ queueMappings.add(QueueMappingBuilder.create()
+ .type(QueueMapping.MappingType.USER)
+ .source(user)
+ .queue(getQueueMapping(parentQueue, queue))
+ .build());
newCS.getConfiguration().setQueueMappings(queueMappings);
return queueMappings;
}
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacitySchedulerQueueMappingFactory.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacitySchedulerQueueMappingFactory.java
index 79b6f24..c2fea87 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacitySchedulerQueueMappingFactory.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacitySchedulerQueueMappingFactory.java
@@ -26,6 +26,9 @@ import org.apache.hadoop.yarn.exceptions.YarnException;
import org.apache.hadoop.yarn.server.resourcemanager.MockRM;
import org.apache.hadoop.yarn.server.resourcemanager.placement.ApplicationPlacementContext;
import org.apache.hadoop.yarn.server.resourcemanager.placement.PlacementRule;
+import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping;
+import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping.MappingType;
+import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping.QueueMappingBuilder;
import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMappingEntity;
import org.apache.hadoop.yarn.server.resourcemanager.placement.UserGroupMappingPlacementRule;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceScheduler;
@@ -62,19 +65,19 @@ public class TestCapacitySchedulerQueueMappingFactory {
conf.setQueuePlacementRules(queuePlacementRules);
- List<UserGroupMappingPlacementRule.QueueMapping> existingMappingsForUG =
- conf.getQueueMappings();
+ List<QueueMapping> existingMappingsForUG = conf.getQueueMappings();
//set queue mapping
- List<UserGroupMappingPlacementRule.QueueMapping> queueMappingsForUG =
- new ArrayList<>();
+ List<QueueMapping> queueMappingsForUG = new ArrayList<>();
for (int i = 0; i < sourceIds.length; i++) {
//Set C as parent queue name for auto queue creation
- UserGroupMappingPlacementRule.QueueMapping userQueueMapping =
- new UserGroupMappingPlacementRule.QueueMapping(
- UserGroupMappingPlacementRule.QueueMapping.MappingType.USER,
- USER + sourceIds[i],
- getQueueMapping(parentQueue, USER + sourceIds[i]));
+ QueueMapping userQueueMapping = QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source(USER + sourceIds[i])
+ .queue(
+ getQueueMapping(parentQueue,
+ USER + sourceIds[i]))
+ .build();
queueMappingsForUG.add(userQueueMapping);
}
@@ -152,23 +155,25 @@ public class TestCapacitySchedulerQueueMappingFactory {
queuePlacementRules.add(QUEUE_MAPPING_RULE_USER_GROUP);
conf.setQueuePlacementRules(queuePlacementRules);
- List<UserGroupMappingPlacementRule.QueueMapping> existingMappingsForUG =
- conf.getQueueMappings();
+ List<QueueMapping> existingMappingsForUG = conf.getQueueMappings();
// set queue mapping
- List<UserGroupMappingPlacementRule.QueueMapping> queueMappingsForUG =
- new ArrayList<>();
+ List<QueueMapping> queueMappingsForUG = new ArrayList<>();
// u:user1:b1
- UserGroupMappingPlacementRule.QueueMapping userQueueMapping1 =
- new UserGroupMappingPlacementRule.QueueMapping(
- UserGroupMappingPlacementRule.QueueMapping.MappingType.USER, "user1",
- "b1");
+ QueueMapping userQueueMapping1 = QueueMappingBuilder.create()
+ .type(QueueMapping.MappingType.USER)
+ .source("user1")
+ .queue("b1")
+ .build();
+
// u:%user:parentqueue.%user
- UserGroupMappingPlacementRule.QueueMapping userQueueMapping2 =
- new UserGroupMappingPlacementRule.QueueMapping(
- UserGroupMappingPlacementRule.QueueMapping.MappingType.USER, "%user",
- getQueueMapping("c", "%user"));
+ QueueMapping userQueueMapping2 = QueueMappingBuilder.create()
+ .type(QueueMapping.MappingType.USER)
+ .source("%user")
+ .queue(getQueueMapping("c", "%user"))
+ .build();
+
queueMappingsForUG.add(userQueueMapping1);
queueMappingsForUG.add(userQueueMapping2);
@@ -221,26 +226,32 @@ public class TestCapacitySchedulerQueueMappingFactory {
*/
// set queue mapping
- List<UserGroupMappingPlacementRule.QueueMapping> queueMappingsForUG =
- new ArrayList<>();
+ List<QueueMapping> queueMappingsForUG = new ArrayList<>();
// u:%user:%primary_group.%user
- UserGroupMappingPlacementRule.QueueMapping userQueueMapping1 =
- new UserGroupMappingPlacementRule.QueueMapping(
- UserGroupMappingPlacementRule.QueueMapping.MappingType.USER,
- "%user", getQueueMapping("%primary_group", "%user"));
+ QueueMapping userQueueMapping1 = QueueMappingBuilder.create()
+ .type(QueueMapping.MappingType.USER)
+ .source("%user")
+ .queue(
+ getQueueMapping("%primary_group",
+ "%user"))
+ .build();
// u:%user:%secondary_group.%user
- UserGroupMappingPlacementRule.QueueMapping userQueueMapping2 =
- new UserGroupMappingPlacementRule.QueueMapping(
- UserGroupMappingPlacementRule.QueueMapping.MappingType.USER,
- "%user", getQueueMapping("%secondary_group", "%user"));
+ QueueMapping userQueueMapping2 = QueueMappingBuilder.create()
+ .type(QueueMapping.MappingType.USER)
+ .source("%user")
+ .queue(
+ getQueueMapping("%secondary_group",
+ "%user"))
+ .build();
// u:b4:%secondary_group
- UserGroupMappingPlacementRule.QueueMapping userQueueMapping3 =
- new UserGroupMappingPlacementRule.QueueMapping(
- UserGroupMappingPlacementRule.QueueMapping.MappingType.USER,
- "b4", "%secondary_group");
+ QueueMapping userQueueMapping3 = QueueMappingBuilder.create()
+ .type(QueueMapping.MappingType.USER)
+ .source("b4")
+ .queue("%secondary_group")
+ .build();
queueMappingsForUG.add(userQueueMapping1);
queueMappingsForUG.add(userQueueMapping2);
queueMappingsForUG.add(userQueueMapping3);
@@ -276,20 +287,26 @@ public class TestCapacitySchedulerQueueMappingFactory {
*/
// set queue mapping
- List<UserGroupMappingPlacementRule.QueueMapping> queueMappingsForUG =
- new ArrayList<>();
+ List<QueueMapping> queueMappingsForUG = new ArrayList<>();
// u:%user:%primary_group.%user
- UserGroupMappingPlacementRule.QueueMapping userQueueMapping1 =
- new UserGroupMappingPlacementRule.QueueMapping(
- UserGroupMappingPlacementRule.QueueMapping.MappingType.USER,
- "%user", getQueueMapping("%primary_group", "%user"));
+ QueueMapping userQueueMapping1 = QueueMappingBuilder.create()
+ .type(QueueMapping.MappingType.USER)
+ .source("%user")
+ .queue(
+ getQueueMapping("%primary_group",
+ "%user"))
+ .build();
// u:%user:%secondary_group.%user
- UserGroupMappingPlacementRule.QueueMapping userQueueMapping2 =
- new UserGroupMappingPlacementRule.QueueMapping(
- UserGroupMappingPlacementRule.QueueMapping.MappingType.USER,
- "%user", getQueueMapping("%secondary_group", "%user"));
+ QueueMapping userQueueMapping2 = QueueMappingBuilder.create()
+ .type(QueueMapping.MappingType.USER)
+ .source("%user")
+ .queue(
+ getQueueMapping(
+ "%secondary_group", "%user")
+ )
+ .build();
queueMappingsForUG.add(userQueueMapping2);
queueMappingsForUG.add(userQueueMapping1);
@@ -298,8 +315,7 @@ public class TestCapacitySchedulerQueueMappingFactory {
}
private void testNestedUserQueueWithDynamicParentQueue(
- List<UserGroupMappingPlacementRule.QueueMapping> mapping, boolean primary,
- String user)
+ List<QueueMapping> mapping, boolean primary, String user)
throws Exception {
CapacitySchedulerConfiguration conf = new CapacitySchedulerConfiguration();
setupQueueConfiguration(conf);
@@ -312,8 +328,7 @@ public class TestCapacitySchedulerQueueMappingFactory {
queuePlacementRules.add(QUEUE_MAPPING_RULE_USER_GROUP);
conf.setQueuePlacementRules(queuePlacementRules);
- List<UserGroupMappingPlacementRule.QueueMapping> existingMappingsForUG =
- conf.getQueueMappings();
+ List<QueueMapping> existingMappingsForUG = conf.getQueueMappings();
existingMappingsForUG.addAll(mapping);
conf.setQueueMappings(existingMappingsForUG);
@@ -367,24 +382,24 @@ public class TestCapacitySchedulerQueueMappingFactory {
queuePlacementRules.add(QUEUE_MAPPING_RULE_USER_GROUP);
conf.setQueuePlacementRules(queuePlacementRules);
- List<UserGroupMappingPlacementRule.QueueMapping> existingMappingsForUG =
- conf.getQueueMappings();
+ List<QueueMapping> existingMappingsForUG = conf.getQueueMappings();
// set queue mapping
- List<UserGroupMappingPlacementRule.QueueMapping> queueMappingsForUG =
- new ArrayList<>();
+ List<QueueMapping> queueMappingsForUG = new ArrayList<>();
// u:user1:b1
- UserGroupMappingPlacementRule.QueueMapping userQueueMapping1 =
- new UserGroupMappingPlacementRule.QueueMapping(
- UserGroupMappingPlacementRule.QueueMapping.MappingType.USER,
- "user1", "b1");
+ QueueMapping userQueueMapping1 = QueueMappingBuilder.create()
+ .type(QueueMapping.MappingType.USER)
+ .source("user1")
+ .queue("b1")
+ .build();
// u:user2:%primary_group
- UserGroupMappingPlacementRule.QueueMapping userQueueMapping2 =
- new UserGroupMappingPlacementRule.QueueMapping(
- UserGroupMappingPlacementRule.QueueMapping.MappingType.USER,
- "user2", "%primary_group");
+ QueueMapping userQueueMapping2 = QueueMappingBuilder.create()
+ .type(QueueMapping.MappingType.USER)
+ .source("user2")
+ .queue("%primary_group")
+ .build();
queueMappingsForUG.add(userQueueMapping1);
queueMappingsForUG.add(userQueueMapping2);
@@ -436,30 +451,31 @@ public class TestCapacitySchedulerQueueMappingFactory {
queuePlacementRules.add(QUEUE_MAPPING_RULE_USER_GROUP);
conf.setQueuePlacementRules(queuePlacementRules);
- List<UserGroupMappingPlacementRule.QueueMapping> existingMappingsForUG =
- conf.getQueueMappings();
+ List<QueueMapping> existingMappingsForUG = conf.getQueueMappings();
// set queue mapping
- List<UserGroupMappingPlacementRule.QueueMapping> queueMappingsForUG =
- new ArrayList<>();
+ List<QueueMapping> queueMappingsForUG = new ArrayList<>();
// u:user1:b1
- UserGroupMappingPlacementRule.QueueMapping userQueueMapping1 =
- new UserGroupMappingPlacementRule.QueueMapping(
- UserGroupMappingPlacementRule.QueueMapping.MappingType.USER,
- "user1", "b1");
+ QueueMapping userQueueMapping1 = QueueMappingBuilder.create()
+ .type(QueueMapping.MappingType.USER)
+ .source("user1")
+ .queue("b1")
+ .build();
// u:user2:%primary_group
- UserGroupMappingPlacementRule.QueueMapping userQueueMapping2 =
- new UserGroupMappingPlacementRule.QueueMapping(
- UserGroupMappingPlacementRule.QueueMapping.MappingType.USER,
- "user2", "%primary_group");
+ QueueMapping userQueueMapping2 = QueueMappingBuilder.create()
+ .type(QueueMapping.MappingType.USER)
+ .source("user2")
+ .queue("%primary_group")
+ .build();
// u:b4:%secondary_group
- UserGroupMappingPlacementRule.QueueMapping userQueueMapping3 =
- new UserGroupMappingPlacementRule.QueueMapping(
- UserGroupMappingPlacementRule.QueueMapping.MappingType.USER, "b4",
- "%secondary_group");
+ QueueMapping userQueueMapping3 = QueueMappingBuilder.create()
+ .type(QueueMapping.MappingType.USER)
+ .source("b4")
+ .queue("%secondary_group")
+ .build();
queueMappingsForUG.add(userQueueMapping1);
queueMappingsForUG.add(userQueueMapping2);
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestQueueMappings.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestQueueMappings.java
index fbf092f..2e7009e 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestQueueMappings.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestQueueMappings.java
@@ -23,9 +23,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.server.resourcemanager.RMContext;
+import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping;
+import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping.MappingType;
+import org.apache.hadoop.yarn.server.resourcemanager.placement.QueueMapping.QueueMappingBuilder;
import org.apache.hadoop.yarn.server.resourcemanager.placement.UserGroupMappingPlacementRule;
-import org.apache.hadoop.yarn.server.resourcemanager.placement.UserGroupMappingPlacementRule.QueueMapping;
-import org.apache.hadoop.yarn.server.resourcemanager.placement.UserGroupMappingPlacementRule.QueueMapping.MappingType;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -91,7 +92,12 @@ public class TestQueueMappings {
// space trimming
conf.set(CapacitySchedulerConfiguration.QUEUE_MAPPING, " u : a : " + Q1);
cs.reinitialize(conf, null);
- checkQMapping(new QueueMapping(MappingType.USER, "a", Q1));
+ checkQMapping(
+ QueueMappingBuilder.create()
+ .type(MappingType.USER)
+ .source("a")
+ .queue(Q1)
+ .build());
}
@Test (timeout = 60000)
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org