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 a0d8cde  YARN-10982. Replace all occurences of queuePath with the new 
QueuePath class. Contributed by Tibor Kovacs
a0d8cde is described below

commit a0d8cde133a7d8719217567efaa4e66c583f790d
Author: Szilard Nemeth <snem...@apache.org>
AuthorDate: Thu Dec 9 17:51:44 2021 +0100

    YARN-10982. Replace all occurences of queuePath with the new QueuePath 
class. Contributed by Tibor Kovacs
---
 .../scheduler/capacity/AbstractCSQueue.java        | 25 +++---
 .../capacity/AbstractManagedParentQueue.java       |  2 +-
 .../capacity/AutoCreatedQueueTemplate.java         | 14 ++--
 .../scheduler/capacity/CSQueue.java                |  6 ++
 .../scheduler/capacity/CSQueueUtils.java           |  8 +-
 .../capacity/CapacitySchedulerConfiguration.java   | 57 +++++++-------
 .../scheduler/capacity/ManagedParentQueue.java     |  9 +--
 .../scheduler/capacity/ParentQueue.java            | 22 +++---
 .../scheduler/capacity/QueuePath.java              | 23 ++++++
 .../TestAbsoluteResourceConfiguration.java         | 90 +++++++++++-----------
 .../TestAbsoluteResourceWithAutoQueue.java         | 18 ++---
 .../capacity/TestAutoCreatedQueueTemplate.java     | 57 +++++++-------
 .../capacity/TestCSAllocateCustomResource.java     |  4 +-
 .../scheduler/capacity/TestCapacityScheduler.java  |  9 ++-
 .../TestCapacitySchedulerConfigValidator.java      | 35 +++++----
 .../scheduler/capacity/TestParentQueue.java        |  4 +-
 .../scheduler/capacity/TestQueuePath.java          | 10 +++
 .../TestRMWebServicesConfigurationMutation.java    | 15 ++--
 18 files changed, 233 insertions(+), 175 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/scheduler/capacity/AbstractCSQueue.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/AbstractCSQueue.java
index efdfa8e..097a9df 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/AbstractCSQueue.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/AbstractCSQueue.java
@@ -82,7 +82,6 @@ public abstract class AbstractCSQueue implements CSQueue {
   protected final QueueAllocationSettings queueAllocationSettings;
   volatile CSQueue parent;
   protected final QueuePath queuePath;
-  final String queueName;
   protected QueueNodeLabelsSettings queueNodeLabelsSettings;
   private volatile QueueAppLifetimeAndLimitSettings queueAppLifetimeSettings;
   private CSQueuePreemptionSettings preemptionSettings;
@@ -143,7 +142,6 @@ public abstract class AbstractCSQueue implements CSQueue {
     this.labelManager = cs.getRMContext().getNodeLabelManager();
     this.parent = parent;
     this.queuePath = createQueuePath(parent, queueName);
-    this.queueName = queuePath.getLeafName();
     this.resourceCalculator = cs.getResourceCalculator();
     this.activitiesManager = cs.getActivitiesManager();
 
@@ -176,7 +174,7 @@ public abstract class AbstractCSQueue implements CSQueue {
 
   protected void setupConfigurableCapacities(
       CapacitySchedulerConfiguration configuration) {
-    CSQueueUtils.loadCapacitiesByLabelsFromConf(getQueuePath(), 
queueCapacities,
+    CSQueueUtils.loadCapacitiesByLabelsFromConf(queuePath, queueCapacities,
         configuration, this.queueNodeLabelsSettings.getConfiguredNodeLabels());
   }
 
@@ -186,6 +184,11 @@ public abstract class AbstractCSQueue implements CSQueue {
   }
 
   @Override
+  public QueuePath getQueuePathObject() {
+    return this.queuePath;
+  }
+
+  @Override
   public float getCapacity() {
     return queueCapacities.getCapacity();
   }
@@ -241,7 +244,7 @@ public abstract class AbstractCSQueue implements CSQueue {
 
   @Override
   public String getQueueName() {
-    return queueName;
+    return this.queuePath.getLeafName();
   }
 
   @Override
@@ -279,11 +282,11 @@ public abstract class AbstractCSQueue implements CSQueue {
     writeLock.lock();
     try {
       // Sanity check
-      CSQueueUtils.checkMaxCapacity(getQueuePath(),
+      CSQueueUtils.checkMaxCapacity(this.queuePath,
           queueCapacities.getCapacity(), maximumCapacity);
       float absMaxCapacity = CSQueueUtils.computeAbsoluteMaximumCapacity(
           maximumCapacity, parent);
-      CSQueueUtils.checkAbsoluteCapacity(getQueuePath(),
+      CSQueueUtils.checkAbsoluteCapacity(this.queuePath,
           queueCapacities.getAbsoluteCapacity(), absMaxCapacity);
 
       queueCapacities.setMaximumCapacity(maximumCapacity);
@@ -301,11 +304,11 @@ public abstract class AbstractCSQueue implements CSQueue {
     writeLock.lock();
     try {
       // Sanity check
-      CSQueueUtils.checkMaxCapacity(getQueuePath(),
+      CSQueueUtils.checkMaxCapacity(this.queuePath,
           queueCapacities.getCapacity(nodeLabel), maximumCapacity);
       float absMaxCapacity = CSQueueUtils.computeAbsoluteMaximumCapacity(
           maximumCapacity, parent);
-      CSQueueUtils.checkAbsoluteCapacity(getQueuePath(),
+      CSQueueUtils.checkAbsoluteCapacity(this.queuePath,
           queueCapacities.getAbsoluteCapacity(nodeLabel), absMaxCapacity);
 
       queueCapacities.setMaximumCapacity(maximumCapacity);
@@ -518,7 +521,7 @@ public abstract class AbstractCSQueue implements CSQueue {
 
   private void validateAbsoluteVsPercentageCapacityConfig(
       CapacityConfigType localType) {
-    if (!getQueuePath().equals("root")
+    if (!queuePath.isRoot()
         && !this.capacityConfigType.equals(localType)) {
       throw new IllegalArgumentException("Queue '" + getQueuePath()
           + "' should use either percentage based capacity"
@@ -623,8 +626,8 @@ public abstract class AbstractCSQueue implements CSQueue {
     // consistency here.
     // TODO, improve this
     QueueInfo queueInfo = recordFactory.newRecordInstance(QueueInfo.class);
-    queueInfo.setQueueName(queueName);
-    queueInfo.setQueuePath(getQueuePath());
+    queueInfo.setQueueName(queuePath.getLeafName());
+    queueInfo.setQueuePath(queuePath.getFullPath());
     
queueInfo.setAccessibleNodeLabels(queueNodeLabelsSettings.getAccessibleNodeLabels());
     queueInfo.setCapacity(queueCapacities.getCapacity());
     queueInfo.setMaximumCapacity(queueCapacities.getMaximumCapacity());
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/AbstractManagedParentQueue.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/AbstractManagedParentQueue.java
index 9c16de0..7d14976 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/AbstractManagedParentQueue.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/AbstractManagedParentQueue.java
@@ -208,7 +208,7 @@ public abstract class AbstractManagedParentQueue extends 
ParentQueue {
     if (!(newChildCap >= 0 && newChildCap < 1.0f + CSQueueUtils.EPSILON)) {
       throw new SchedulerDynamicEditException(
           "Sum of child queues should exceed 100% for auto creating parent "
-              + "queue : " + queueName);
+              + "queue : " + getQueueName());
     }
   }
 }
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/AutoCreatedQueueTemplate.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/AutoCreatedQueueTemplate.java
index 0a3d49a..1603b19 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/AutoCreatedQueueTemplate.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/AutoCreatedQueueTemplate.java
@@ -20,13 +20,12 @@ package 
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity;
 
 import org.apache.hadoop.classification.VisibleForTesting;
 
-import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.hadoop.util.Lists;
 import static 
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration.AUTO_QUEUE_CREATION_V2_PREFIX;
 import static 
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration.ROOT;
 import static 
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration.getQueuePrefix;
@@ -50,7 +49,7 @@ public class AutoCreatedQueueTemplate {
   private final Map<String, String> parentOnlyProperties = new HashMap<>();
 
   public AutoCreatedQueueTemplate(CapacitySchedulerConfiguration configuration,
-                                  String queuePath) {
+                                  QueuePath queuePath) {
     setTemplateConfigEntries(configuration, queuePath);
   }
 
@@ -155,14 +154,13 @@ public class AutoCreatedQueueTemplate {
    * yarn.scheduler.capacity.root.*.auto-queue-creation-v2.template.capacity
    */
   private void setTemplateConfigEntries(CapacitySchedulerConfiguration 
configuration,
-                                        String queuePath) {
+                                        QueuePath queuePath) {
     ConfigurationProperties configurationProperties =
         configuration.getConfigurationProperties();
 
-    List<String> queuePathParts = new ArrayList<>(Arrays.asList(
-        queuePath.split("\\.")));
+    List<String> queuePathParts = Lists.newArrayList(queuePath.iterator());
 
-    if (queuePathParts.size() <= 1 && !queuePath.equals(ROOT)) {
+    if (queuePathParts.size() <= 1 && !queuePath.isRoot()) {
       // This is an invalid queue path
       return;
     }
@@ -175,7 +173,7 @@ public class AutoCreatedQueueTemplate {
     int supportedWildcardLevel = Math.min(queuePathMaxIndex - 1,
         MAX_WILDCARD_LEVEL);
     // Allow root to have template properties
-    if (queuePath.equals(ROOT)) {
+    if (queuePath.isRoot()) {
       supportedWildcardLevel = 0;
     }
 
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/CSQueue.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/CSQueue.java
index 2acc1d4..90cb4f3 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/CSQueue.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/CSQueue.java
@@ -89,6 +89,12 @@ public interface CSQueue extends SchedulerQueue<CSQueue> {
    */
   public String getQueuePath();
 
+  /**
+   * Gets the queue path object.
+   * @return the object of the queue
+   */
+  QueuePath getQueuePathObject();
+
   public PrivilegedEntity getPrivilegedEntity();
 
   Resource getMaximumAllocation();
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/CSQueueUtils.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/CSQueueUtils.java
index 410117a..244bb62 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/CSQueueUtils.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/CSQueueUtils.java
@@ -36,7 +36,7 @@ public class CSQueueUtils {
   /*
    * Used only by tests
    */
-  public static void checkMaxCapacity(String queuePath,
+  public static void checkMaxCapacity(QueuePath queuePath,
       float capacity, float maximumCapacity) {
     if (maximumCapacity < 0.0f || maximumCapacity > 1.0f) {
       throw new IllegalArgumentException(
@@ -48,7 +48,7 @@ public class CSQueueUtils {
   /*
    * Used only by tests
    */
-  public static void checkAbsoluteCapacity(String queuePath,
+  public static void checkAbsoluteCapacity(QueuePath queuePath,
       float absCapacity, float absMaxCapacity) {
     if (absMaxCapacity < (absCapacity - EPSILON)) {
       throw new IllegalArgumentException("Illegal call to setMaxCapacity. "
@@ -67,7 +67,7 @@ public class CSQueueUtils {
   }
 
   public static void loadCapacitiesByLabelsFromConf(
-      String queuePath, QueueCapacities queueCapacities,
+      QueuePath queuePath, QueueCapacities queueCapacities,
       CapacitySchedulerConfiguration csConf, Set<String> nodeLabels) {
     queueCapacities.clearConfigurableFields();
 
@@ -81,7 +81,7 @@ public class CSQueueUtils {
             label,
             csConf.getMaximumAMResourcePercentPerPartition(queuePath, label));
         queueCapacities.setWeight(label,
-            csConf.getNonLabeledQueueWeight(queuePath));
+            csConf.getNonLabeledQueueWeight(queuePath.getFullPath()));
       } else{
         queueCapacities.setCapacity(label,
             csConf.getLabeledQueueCapacity(queuePath, label) / 100);
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 615a4d0..e88f83a 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
@@ -542,15 +542,15 @@ public class CapacitySchedulerConfiguration extends 
ReservationSchedulerConfigur
     set(getNodeLabelPrefix(queue, label) + CAPACITY, weight + WEIGHT_SUFFIX);
   }
 
-  public float getLabeledQueueWeight(String queue, String label) {
-    String configuredValue = get(getNodeLabelPrefix(queue, label) + CAPACITY);
+  public float getLabeledQueueWeight(QueuePath queue, String label) {
+    String configuredValue = get(getNodeLabelPrefix(queue.getFullPath(), 
label) + CAPACITY);
     float weight = extractFloatValueFromWeightConfig(configuredValue);
-    throwExceptionForUnexpectedWeight(weight, queue, label);
+    throwExceptionForUnexpectedWeight(weight, queue.getFullPath(), label);
     return weight;
   }
 
-  public float getNonLabeledQueueCapacity(String queue) {
-    String configuredCapacity = get(getQueuePrefix(queue) + CAPACITY);
+  public float getNonLabeledQueueCapacity(QueuePath queue) {
+    String configuredCapacity = get(getQueuePrefix(queue.getFullPath()) + 
CAPACITY);
     boolean absoluteResourceConfigured = (configuredCapacity != null)
         && RESOURCE_PATTERN.matcher(configuredCapacity).find();
     if (absoluteResourceConfigured || configuredWeightAsCapacity(
@@ -559,10 +559,10 @@ public class CapacitySchedulerConfiguration extends 
ReservationSchedulerConfigur
       // root.From AbstractCSQueue, absolute resource will be parsed and
       // updated. Once nodes are added/removed in cluster, capacity in
       // percentage will also be re-calculated.
-      return queue.equals("root") ? 100.0f : 0f;
+      return queue.isRoot() ? 100.0f : 0f;
     }
 
-    float capacity = queue.equals("root")
+    float capacity = queue.isRoot()
         ? 100.0f
         : (configuredCapacity == null)
             ? 0f
@@ -573,7 +573,7 @@ public class CapacitySchedulerConfiguration extends 
ReservationSchedulerConfigur
           "Illegal " + "capacity of " + capacity + " for queue " + queue);
     }
     LOG.debug("CSConf - getCapacity: queuePrefix={}, capacity={}",
-        getQueuePrefix(queue), capacity);
+        getQueuePrefix(queue.getFullPath()), capacity);
 
     return capacity;
   }
@@ -601,8 +601,8 @@ public class CapacitySchedulerConfiguration extends 
ReservationSchedulerConfigur
 
   }
 
-  public float getNonLabeledQueueMaximumCapacity(String queue) {
-    String configuredCapacity = get(getQueuePrefix(queue) + MAXIMUM_CAPACITY);
+  public float getNonLabeledQueueMaximumCapacity(QueuePath queue) {
+    String configuredCapacity = get(getQueuePrefix(queue.getFullPath()) + 
MAXIMUM_CAPACITY);
     boolean matcher = (configuredCapacity != null)
         && RESOURCE_PATTERN.matcher(configuredCapacity).find();
     if (matcher) {
@@ -816,9 +816,9 @@ public class CapacitySchedulerConfiguration extends 
ReservationSchedulerConfigur
     }
   }
 
-  private float internalGetLabeledQueueCapacity(String queue, String label,
+  private float internalGetLabeledQueueCapacity(QueuePath queue, String label,
       String suffix, float defaultValue) {
-    String capacityPropertyName = getNodeLabelPrefix(queue, label) + suffix;
+    String capacityPropertyName = getNodeLabelPrefix(queue.getFullPath(), 
label) + suffix;
     String configuredCapacity = get(capacityPropertyName);
     boolean absoluteResourceConfigured =
         (configuredCapacity != null) && RESOURCE_PATTERN.matcher(
@@ -829,10 +829,10 @@ public class CapacitySchedulerConfiguration extends 
ReservationSchedulerConfigur
       // root.From AbstractCSQueue, absolute resource, and weight will be 
parsed
       // and updated separately. Once nodes are added/removed in cluster,
       // capacity is percentage will also be re-calculated.
-      return queue.equals("root") ? 100.0f : defaultValue;
+      return queue.isRoot() ? 100.0f : defaultValue;
     }
 
-    float capacity = queue.equals("root") ? 100.0f
+    float capacity = queue.isRoot() ? 100.0f
         : getFloat(capacityPropertyName, defaultValue);
     if (capacity < MINIMUM_CAPACITY_VALUE
         || capacity > MAXIMUM_CAPACITY_VALUE) {
@@ -843,17 +843,17 @@ public class CapacitySchedulerConfiguration extends 
ReservationSchedulerConfigur
     }
     if (LOG.isDebugEnabled()) {
       LOG.debug(
-          "CSConf - getCapacityOfLabel: prefix=" + getNodeLabelPrefix(queue,
+          "CSConf - getCapacityOfLabel: prefix=" + 
getNodeLabelPrefix(queue.getFullPath(),
               label) + ", capacity=" + capacity);
     }
     return capacity;
   }
 
-  public float getLabeledQueueCapacity(String queue, String label) {
+  public float getLabeledQueueCapacity(QueuePath queue, String label) {
     return internalGetLabeledQueueCapacity(queue, label, CAPACITY, 0f);
   }
 
-  public float getLabeledQueueMaximumCapacity(String queue, String label) {
+  public float getLabeledQueueMaximumCapacity(QueuePath queue, String label) {
     return internalGetLabeledQueueCapacity(queue, label, MAXIMUM_CAPACITY, 
100f);
   }
 
@@ -870,13 +870,13 @@ public class CapacitySchedulerConfiguration extends 
ReservationSchedulerConfigur
     set(getQueuePrefix(queue) + DEFAULT_NODE_LABEL_EXPRESSION, exp);
   }
 
-  public float getMaximumAMResourcePercentPerPartition(String queue,
+  public float getMaximumAMResourcePercentPerPartition(QueuePath queue,
       String label) {
     // If per-partition max-am-resource-percent is not configured,
     // use default value as max-am-resource-percent for this queue.
-    return getFloat(getNodeLabelPrefix(queue, label)
+    return getFloat(getNodeLabelPrefix(queue.getFullPath(), label)
         + MAXIMUM_AM_RESOURCE_SUFFIX,
-        getMaximumApplicationMasterResourcePerQueuePercent(queue));
+        
getMaximumApplicationMasterResourcePerQueuePercent(queue.getFullPath()));
   }
 
   public void setMaximumAMResourcePercentPerPartition(String queue,
@@ -2190,6 +2190,11 @@ public class CapacitySchedulerConfiguration extends 
ReservationSchedulerConfigur
   }
 
   @Private
+  public QueuePath getAutoCreatedQueueObjectTemplateConfPrefix(String 
queuePath) {
+    return new QueuePath(queuePath, AUTO_CREATED_LEAF_QUEUE_TEMPLATE_PREFIX);
+  }
+
+  @Private
   public static final String FAIL_AUTO_CREATION_ON_EXCEEDING_CAPACITY =
       "auto-create-child-queue.fail-on-exceeding-parent-capacity";
 
@@ -2565,13 +2570,13 @@ public class CapacitySchedulerConfiguration extends 
ReservationSchedulerConfigur
   }
 
   @VisibleForTesting
-  public void setMinimumResourceRequirement(String label, String queue,
+  public void setMinimumResourceRequirement(String label, QueuePath queue,
       Resource resource) {
     updateMinMaxResourceToConf(label, queue, resource, CAPACITY);
   }
 
   @VisibleForTesting
-  public void setMaximumResourceRequirement(String label, String queue,
+  public void setMaximumResourceRequirement(String label, QueuePath queue,
       Resource resource) {
     updateMinMaxResourceToConf(label, queue, resource, MAXIMUM_CAPACITY);
   }
@@ -2586,9 +2591,9 @@ public class CapacitySchedulerConfiguration extends 
ReservationSchedulerConfigur
     return queueResourceVectors;
   }
 
-  private void updateMinMaxResourceToConf(String label, String queue,
+  private void updateMinMaxResourceToConf(String label, QueuePath queue,
       Resource resource, String type) {
-    if (queue.equals("root")) {
+    if (queue.isRoot()) {
       throw new IllegalArgumentException(
           "Cannot set resource, root queue will take 100% of cluster 
capacity");
     }
@@ -2603,9 +2608,9 @@ public class CapacitySchedulerConfiguration extends 
ReservationSchedulerConfigur
             + ResourceUtils.
             getCustomResourcesStrings(resource) + "]");
 
-    String prefix = getQueuePrefix(queue) + type;
+    String prefix = getQueuePrefix(queue.getFullPath()) + type;
     if (!label.isEmpty()) {
-      prefix = getQueuePrefix(queue) + ACCESSIBLE_NODE_LABELS + DOT + label
+      prefix = getQueuePrefix(queue.getFullPath()) + ACCESSIBLE_NODE_LABELS + 
DOT + label
           + DOT + type;
     }
     set(prefix, resourceString.toString());
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/ManagedParentQueue.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/ManagedParentQueue.java
index e415ac1..6e7325c 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/ManagedParentQueue.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/ManagedParentQueue.java
@@ -23,7 +23,6 @@ import org.apache.hadoop.yarn.exceptions.YarnException;
 import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceLimits;
 import org.apache.hadoop.yarn.server.resourcemanager.scheduler
     .SchedulerDynamicEditException;
-import 
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.AbstractCSQueue.CapacityConfigType;
 import 
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.queuemanagement.GuaranteedOrZeroCapacityOverTimePolicy;
 import org.apache.hadoop.yarn.server.resourcemanager.scheduler.common.fica
     .FiCaSchedulerApp;
@@ -122,7 +121,7 @@ public class ManagedParentQueue extends 
AbstractManagedParentQueue {
       LOG.info(
           "Reinitialized Managed Parent Queue: [{}] with capacity [{}]"
               + " with max capacity [{}]",
-          queueName, super.getCapacity(), super.getMaximumCapacity());
+          getQueueName(), super.getCapacity(), super.getMaximumCapacity());
     } catch (YarnException ye) {
       LOG.error("Exception while computing policy changes for leaf queue : "
           + getQueuePath(), ye);
@@ -165,12 +164,12 @@ public class ManagedParentQueue extends 
AbstractManagedParentQueue {
     CapacitySchedulerConfiguration conf =
         super.initializeLeafQueueConfigs(leafQueueTemplateConfPrefix);
     builder.configuration(conf);
-    String templateQueuePath = csContext.getConfiguration()
-        .getAutoCreatedQueueTemplateConfPrefix(getQueuePath());
+    QueuePath templateQueuePath = csContext.getConfiguration()
+        .getAutoCreatedQueueObjectTemplateConfPrefix(getQueuePath());
 
     Set<String> templateConfiguredNodeLabels = csContext
         .getCapacitySchedulerQueueManager().getConfiguredNodeLabels()
-        .getLabelsByQueue(templateQueuePath);
+        .getLabelsByQueue(templateQueuePath.getFullPath());
     for (String nodeLabel : templateConfiguredNodeLabels) {
       Resource templateMinResource = conf.getMinimumResourceRequirement(
           nodeLabel, csContext.getConfiguration()
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/ParentQueue.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/ParentQueue.java
index 0f302b8..aec2bd8 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/ParentQueue.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/ParentQueue.java
@@ -128,7 +128,7 @@ public class ParentQueue extends AbstractCSQueue {
     this.scheduler = cs;
     this.rootQueue = (parent == null);
 
-    float rawCapacity = csConf.getNonLabeledQueueCapacity(getQueuePath());
+    float rawCapacity = csConf.getNonLabeledQueueCapacity(this.queuePath);
 
     if (rootQueue &&
         (rawCapacity != 
CapacitySchedulerConfiguration.MAXIMUM_CAPACITY_VALUE)) {
@@ -161,7 +161,7 @@ public class ParentQueue extends AbstractCSQueue {
     writeLock.lock();
     try {
       autoCreatedQueueTemplate = new AutoCreatedQueueTemplate(
-          csConf, getQueuePath());
+          csConf, this.queuePath);
       super.setupQueueConfigs(clusterResource, csConf);
       StringBuilder aclsString = new StringBuilder();
       for (Map.Entry<AccessType, AccessControlList> e : acls.entrySet()) {
@@ -182,7 +182,7 @@ public class ParentQueue extends AbstractCSQueue {
               ((ParentQueue) parent).getQueueOrderingPolicyConfigName());
       queueOrderingPolicy.setQueues(childQueues);
 
-      LOG.info(queueName + ", " + getCapacityOrWeightString()
+      LOG.info(getQueueName() + ", " + getCapacityOrWeightString()
           + ", absoluteCapacity=" + this.queueCapacities.getAbsoluteCapacity()
           + ", maxCapacity=" + this.queueCapacities.getMaximumCapacity()
           + ", absoluteMaxCapacity=" + this.queueCapacities
@@ -333,7 +333,7 @@ public class ParentQueue extends AbstractCSQueue {
             throw new IOException(
                 "Parent Queues" + " capacity: " + parentMinResource
                     + " is less than" + " to its children:" + minRes
-                    + " for queue:" + queueName);
+                    + " for queue:" + getQueueName());
           }
         }
       }
@@ -355,7 +355,7 @@ public class ParentQueue extends AbstractCSQueue {
               // It is wrong when percent sum != {0, 1}
               throw new IOException(
                   "Illegal" + " capacity sum of " + childrenPctSum
-                      + " for children of queue " + queueName + " for label="
+                      + " for children of queue " + getQueueName() + " for 
label="
                       + nodeLabel + ". It should be either 0 or 1.0");
             } else{
               // We also allow children's percent sum = 0 under the following
@@ -368,7 +368,7 @@ public class ParentQueue extends AbstractCSQueue {
                     > PRECISION) && (!allowZeroCapacitySum)) {
                   throw new IOException(
                       "Illegal" + " capacity sum of " + childrenPctSum
-                          + " for children of queue " + queueName
+                          + " for children of queue " + getQueueName()
                           + " for label=" + nodeLabel
                           + ". It is set to 0, but parent percent != 0, and "
                           + "doesn't allow children capacity to set to 0");
@@ -383,8 +383,8 @@ public class ParentQueue extends AbstractCSQueue {
                 && !allowZeroCapacitySum) {
               throw new IOException(
                   "Illegal" + " capacity sum of " + childrenPctSum
-                      + " for children of queue " + queueName + " for label="
-                      + nodeLabel + ". queue=" + queueName
+                      + " for children of queue " + getQueueName() + " for 
label="
+                      + nodeLabel + ". queue=" + getQueueName()
                       + " has zero capacity, but child"
                       + "queues have positive capacities");
             }
@@ -470,7 +470,7 @@ public class ParentQueue extends AbstractCSQueue {
   }
 
   public String toString() {
-    return queueName + ": " +
+    return getQueueName() + ": " +
         "numChildQueue= " + childQueues.size() + ", " +
         getCapacityOrWeightString() + ", " +
         "absoluteCapacity=" + queueCapacities.getAbsoluteCapacity() + ", " +
@@ -768,9 +768,9 @@ public class ParentQueue extends AbstractCSQueue {
       String userName, String queue) throws AccessControlException {
     writeLock.lock();
     try {
-      if (queue.equals(queueName)) {
+      if (queue.equals(getQueueName())) {
         throw new AccessControlException(
-            "Cannot submit application " + "to non-leaf queue: " + queueName);
+            "Cannot submit application " + "to non-leaf queue: " + 
getQueueName());
       }
 
       if (getState() != QueueState.RUNNING) {
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/QueuePath.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/QueuePath.java
index 3ca7735..37cfa2e 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/QueuePath.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/QueuePath.java
@@ -24,6 +24,7 @@ import java.util.NoSuchElementException;
 import java.util.Objects;
 
 import static 
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration.DOT;
+import static 
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration.ROOT;
 
 /**
  * This is a helper class which represents a queue path, and has easy access
@@ -60,6 +61,15 @@ public class QueuePath implements Iterable<String> {
   }
 
   /**
+   * Concatenate queue path parts into one queue path string.
+   * @param parts Parts of the full queue pathAutoCreatedQueueTemplate
+   * @return full path of the given queue parts
+   */
+  public static String concatenatePath(String... parts) {
+    return String.join(DOT, parts);
+  }
+
+  /**
    * This method is responsible for splitting up a full queue path into parent
    * path and leaf name.
    * @param fullPath Full path of the queue to be processed
@@ -68,6 +78,11 @@ public class QueuePath implements Iterable<String> {
     parent = null;
     leaf = fullPath;
 
+    if (leaf == null) {
+      leaf = "";
+      return;
+    }
+
     int lastDotIdx = fullPath.lastIndexOf(DOT);
     if (lastDotIdx > -1) {
       parent = fullPath.substring(0, lastDotIdx).trim();
@@ -122,6 +137,14 @@ public class QueuePath implements Iterable<String> {
   }
 
   /**
+   * Convenience getter to check if the queue is the root queue.
+   * @return True if the path is root
+   */
+  public boolean isRoot() {
+    return !hasParent() && leaf.equals(ROOT);
+  }
+
+  /**
    * Creates a new {@code QueuePath} from the current full path as parent, and
    * the appended child queue path as leaf.
    * @param childQueue path of leaf queue
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/TestAbsoluteResourceConfiguration.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/TestAbsoluteResourceConfiguration.java
index 7114728..0846233 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/TestAbsoluteResourceConfiguration.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/TestAbsoluteResourceConfiguration.java
@@ -44,18 +44,21 @@ public class TestAbsoluteResourceConfiguration {
   private static final String QUEUEA2 = "queueA2";
   private static final String QUEUEB1 = "queueB1";
 
-  private static final String QUEUEA_FULL = CapacitySchedulerConfiguration.ROOT
-      + "." + QUEUEA;
-  private static final String QUEUEB_FULL = CapacitySchedulerConfiguration.ROOT
-      + "." + QUEUEB;
-  private static final String QUEUEC_FULL = CapacitySchedulerConfiguration.ROOT
-      + "." + QUEUEC;
-  private static final String QUEUED_FULL = CapacitySchedulerConfiguration.ROOT
-      + "." + QUEUED;
-
-  private static final String QUEUEA1_FULL = QUEUEA_FULL + "." + QUEUEA1;
-  private static final String QUEUEA2_FULL = QUEUEA_FULL + "." + QUEUEA2;
-  private static final String QUEUEB1_FULL = QUEUEB_FULL + "." + QUEUEB1;
+  private static final QueuePath QUEUEA_FULL =
+          new QueuePath(CapacitySchedulerConfiguration.ROOT, QUEUEA);
+  private static final QueuePath QUEUEB_FULL =
+          new QueuePath(CapacitySchedulerConfiguration.ROOT, QUEUEB);
+  private static final QueuePath QUEUEC_FULL =
+          new QueuePath(CapacitySchedulerConfiguration.ROOT, QUEUEC);
+  private static final QueuePath QUEUED_FULL =
+          new QueuePath(CapacitySchedulerConfiguration.ROOT, QUEUED);
+
+  private static final QueuePath QUEUEA1_FULL =
+          new QueuePath(QUEUEA_FULL.getFullPath() + "." + QUEUEA1);
+  private static final QueuePath QUEUEA2_FULL =
+          new QueuePath(QUEUEA_FULL.getFullPath() + "." + QUEUEA2);
+  private static final QueuePath QUEUEB1_FULL =
+          new QueuePath(QUEUEB_FULL.getFullPath() + "." + QUEUEB1);
 
   private static final Resource QUEUE_A_MINRES = Resource.newInstance(100 * GB,
       10);
@@ -100,18 +103,18 @@ public class TestAbsoluteResourceConfiguration {
 
     // Set default capacities like normal configuration.
     if (isCapacityNeeded) {
-      csConf.setCapacity(QUEUEA_FULL, 50f);
-      csConf.setCapacity(QUEUEB_FULL, 25f);
-      csConf.setCapacity(QUEUEC_FULL, 25f);
-      csConf.setCapacity(QUEUED_FULL, 25f);
+      csConf.setCapacity(QUEUEA_FULL.getFullPath(), 50f);
+      csConf.setCapacity(QUEUEB_FULL.getFullPath(), 25f);
+      csConf.setCapacity(QUEUEC_FULL.getFullPath(), 25f);
+      csConf.setCapacity(QUEUED_FULL.getFullPath(), 25f);
     }
 
-    csConf.setAutoCreateChildQueueEnabled(QUEUED_FULL, true);
+    csConf.setAutoCreateChildQueueEnabled(QUEUED_FULL.getFullPath(), true);
 
     // Setup leaf queue template configs
-    csConf.setAutoCreatedLeafQueueTemplateCapacityByLabel(QUEUED_FULL, "",
+    
csConf.setAutoCreatedLeafQueueTemplateCapacityByLabel(QUEUED_FULL.getFullPath(),
 "",
         QUEUE_D_TEMPL_MINRES);
-    csConf.setAutoCreatedLeafQueueTemplateMaxCapacity(QUEUED_FULL, "",
+    
csConf.setAutoCreatedLeafQueueTemplateMaxCapacity(QUEUED_FULL.getFullPath(), "",
         QUEUE_D_TEMPL_MAXRES);
 
     return csConf;
@@ -122,17 +125,17 @@ public class TestAbsoluteResourceConfiguration {
     CapacitySchedulerConfiguration csConf = new 
CapacitySchedulerConfiguration();
     csConf.setQueues(CapacitySchedulerConfiguration.ROOT,
         new String[]{QUEUEA, QUEUEB, QUEUEC});
-    csConf.setQueues(QUEUEA_FULL, new String[]{QUEUEA1, QUEUEA2});
-    csConf.setQueues(QUEUEB_FULL, new String[]{QUEUEB1});
+    csConf.setQueues(QUEUEA_FULL.getFullPath(), new String[]{QUEUEA1, 
QUEUEA2});
+    csConf.setQueues(QUEUEB_FULL.getFullPath(), new String[]{QUEUEB1});
 
     // Set default capacities like normal configuration.
     if (isCapacityNeeded) {
-      csConf.setCapacity(QUEUEA_FULL, 50f);
-      csConf.setCapacity(QUEUEB_FULL, 25f);
-      csConf.setCapacity(QUEUEC_FULL, 25f);
-      csConf.setCapacity(QUEUEA1_FULL, 50f);
-      csConf.setCapacity(QUEUEA2_FULL, 50f);
-      csConf.setCapacity(QUEUEB1_FULL, 100f);
+      csConf.setCapacity(QUEUEA_FULL.getFullPath(), 50f);
+      csConf.setCapacity(QUEUEB_FULL.getFullPath(), 25f);
+      csConf.setCapacity(QUEUEC_FULL.getFullPath(), 25f);
+      csConf.setCapacity(QUEUEA1_FULL.getFullPath(), 50f);
+      csConf.setCapacity(QUEUEA2_FULL.getFullPath(), 50f);
+      csConf.setCapacity(QUEUEB1_FULL.getFullPath(), 100f);
     }
 
     return csConf;
@@ -140,6 +143,7 @@ public class TestAbsoluteResourceConfiguration {
 
   private CapacitySchedulerConfiguration setupMinMaxResourceConfiguration(
       CapacitySchedulerConfiguration csConf) {
+
     // Update min/max resource to queueA/B/C
     csConf.setMinimumResourceRequirement("", QUEUEA_FULL, QUEUE_A_MINRES);
     csConf.setMinimumResourceRequirement("", QUEUEB_FULL, QUEUE_B_MINRES);
@@ -180,22 +184,22 @@ public class TestAbsoluteResourceConfiguration {
 
     Assert.assertEquals("Min resource configured for QUEUEA is not correct",
         QUEUE_A_MINRES,
-        csConf.getMinimumResourceRequirement("", QUEUEA_FULL, resourceTypes));
+        csConf.getMinimumResourceRequirement("", QUEUEA_FULL.getFullPath(), 
resourceTypes));
     Assert.assertEquals("Max resource configured for QUEUEA is not correct",
         QUEUE_A_MAXRES,
-        csConf.getMaximumResourceRequirement("", QUEUEA_FULL, resourceTypes));
+        csConf.getMaximumResourceRequirement("", QUEUEA_FULL.getFullPath(), 
resourceTypes));
     Assert.assertEquals("Min resource configured for QUEUEB is not correct",
         QUEUE_B_MINRES,
-        csConf.getMinimumResourceRequirement("", QUEUEB_FULL, resourceTypes));
+        csConf.getMinimumResourceRequirement("", QUEUEB_FULL.getFullPath(), 
resourceTypes));
     Assert.assertEquals("Max resource configured for QUEUEB is not correct",
         QUEUE_B_MAXRES,
-        csConf.getMaximumResourceRequirement("", QUEUEB_FULL, resourceTypes));
+        csConf.getMaximumResourceRequirement("", QUEUEB_FULL.getFullPath(), 
resourceTypes));
     Assert.assertEquals("Min resource configured for QUEUEC is not correct",
         QUEUE_C_MINRES,
-        csConf.getMinimumResourceRequirement("", QUEUEC_FULL, resourceTypes));
+        csConf.getMinimumResourceRequirement("", QUEUEC_FULL.getFullPath(), 
resourceTypes));
     Assert.assertEquals("Max resource configured for QUEUEC is not correct",
         QUEUE_C_MAXRES,
-        csConf.getMaximumResourceRequirement("", QUEUEC_FULL, resourceTypes));
+        csConf.getMaximumResourceRequirement("", QUEUEC_FULL.getFullPath(), 
resourceTypes));
 
     csConf.setClass(YarnConfiguration.RM_SCHEDULER, CapacityScheduler.class,
         ResourceScheduler.class);
@@ -487,9 +491,9 @@ public class TestAbsoluteResourceConfiguration {
     // 1. Explicitly set percentage based config for parent queues. This will
     // make Queue A,B and C with percentage based and A1,A2 or B1 with absolute
     // resource.
-    csConf.setCapacity(QUEUEA_FULL, 50f);
-    csConf.setCapacity(QUEUEB_FULL, 25f);
-    csConf.setCapacity(QUEUEC_FULL, 25f);
+    csConf.setCapacity(QUEUEA_FULL.getFullPath(), 50f);
+    csConf.setCapacity(QUEUEB_FULL.getFullPath(), 25f);
+    csConf.setCapacity(QUEUEC_FULL.getFullPath(), 25f);
 
     // Get queue object to verify min/max resource configuration.
     CapacityScheduler cs = (CapacityScheduler) rm.getResourceScheduler();
@@ -534,13 +538,13 @@ public class TestAbsoluteResourceConfiguration {
         new CapacitySchedulerConfiguration();
     csConf.setQueues(CapacitySchedulerConfiguration.ROOT,
         new String[] {QUEUEA, QUEUEB});
-    csConf.setQueues(QUEUEA_FULL, new String[] {QUEUEA1, QUEUEA2});
+    csConf.setQueues(QUEUEA_FULL.getFullPath(), new String[] {QUEUEA1, 
QUEUEA2});
 
     // Set default capacities like normal configuration.
-    csConf.setCapacity(QUEUEA_FULL, "[memory=125]");
-    csConf.setCapacity(QUEUEB_FULL, "[memory=0]");
-    csConf.setCapacity(QUEUEA1_FULL, "[memory=100]");
-    csConf.setCapacity(QUEUEA2_FULL, "[memory=25]");
+    csConf.setCapacity(QUEUEA_FULL.getFullPath(), "[memory=125]");
+    csConf.setCapacity(QUEUEB_FULL.getFullPath(), "[memory=0]");
+    csConf.setCapacity(QUEUEA1_FULL.getFullPath(), "[memory=100]");
+    csConf.setCapacity(QUEUEA2_FULL.getFullPath(), "[memory=25]");
 
     // Update min/max resource to queueA
     csConf.setMinimumResourceRequirement("", QUEUEA_FULL, QUEUE_A_MINRES);
@@ -560,8 +564,8 @@ public class TestAbsoluteResourceConfiguration {
     // doesnt throw exception saying "Parent queue 'root.A' and
     // child queue 'root.A.A2' should use either percentage
     // based capacityconfiguration or absolute resource together for label"
-    csConf.setCapacity(QUEUEA1_FULL, "[memory=125]");
-    csConf.setCapacity(QUEUEA2_FULL, "[memory=0]");
+    csConf.setCapacity(QUEUEA1_FULL.getFullPath(), "[memory=125]");
+    csConf.setCapacity(QUEUEA2_FULL.getFullPath(), "[memory=0]");
 
     // Get queue object to verify min/max resource configuration.
     CapacityScheduler cs = (CapacityScheduler) rm.getResourceScheduler();
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/TestAbsoluteResourceWithAutoQueue.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/TestAbsoluteResourceWithAutoQueue.java
index 2bad8b7..326b9d0 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/TestAbsoluteResourceWithAutoQueue.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/TestAbsoluteResourceWithAutoQueue.java
@@ -96,15 +96,15 @@ public class TestAbsoluteResourceWithAutoQueue
   private CapacitySchedulerConfiguration setupMinMaxResourceConfiguration(
       CapacitySchedulerConfiguration csConf) {
     // Update min/max resource to queueA/B/C
-    csConf.setMinimumResourceRequirement("", QUEUEA_FULL, QUEUE_A_MINRES);
-    csConf.setMinimumResourceRequirement("", QUEUEB_FULL, QUEUE_B_MINRES);
-    csConf.setMinimumResourceRequirement("", QUEUEC_FULL, QUEUE_C_MINRES);
-    csConf.setMinimumResourceRequirement("", QUEUED_FULL, QUEUE_D_MINRES);
-
-    csConf.setMaximumResourceRequirement("", QUEUEA_FULL, QUEUE_A_MAXRES);
-    csConf.setMaximumResourceRequirement("", QUEUEB_FULL, QUEUE_B_MAXRES);
-    csConf.setMaximumResourceRequirement("", QUEUEC_FULL, QUEUE_C_MAXRES);
-    csConf.setMaximumResourceRequirement("", QUEUED_FULL, QUEUE_D_MAXRES);
+    csConf.setMinimumResourceRequirement("", new QueuePath(QUEUEA_FULL), 
QUEUE_A_MINRES);
+    csConf.setMinimumResourceRequirement("", new QueuePath(QUEUEB_FULL), 
QUEUE_B_MINRES);
+    csConf.setMinimumResourceRequirement("", new QueuePath(QUEUEC_FULL), 
QUEUE_C_MINRES);
+    csConf.setMinimumResourceRequirement("", new QueuePath(QUEUED_FULL), 
QUEUE_D_MINRES);
+
+    csConf.setMaximumResourceRequirement("", new QueuePath(QUEUEA_FULL), 
QUEUE_A_MAXRES);
+    csConf.setMaximumResourceRequirement("", new QueuePath(QUEUEB_FULL), 
QUEUE_B_MAXRES);
+    csConf.setMaximumResourceRequirement("", new QueuePath(QUEUEC_FULL), 
QUEUE_C_MAXRES);
+    csConf.setMaximumResourceRequirement("", new QueuePath(QUEUED_FULL), 
QUEUE_D_MAXRES);
 
     return csConf;
   }
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/TestAutoCreatedQueueTemplate.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/TestAutoCreatedQueueTemplate.java
index 37f1378..5b58feb 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/TestAutoCreatedQueueTemplate.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/TestAutoCreatedQueueTemplate.java
@@ -25,11 +25,12 @@ import org.junit.Test;
 import static 
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration.AUTO_CREATE_CHILD_QUEUE_AUTO_REMOVAL_ENABLE;
 
 public class TestAutoCreatedQueueTemplate {
-  private static final String TEST_QUEUE_ABC = "root.a.b.c";
-  private static final String TEST_QUEUE_AB = "root.a.b";
-  private static final String TEST_QUEUE_A = "root.a";
-  private static final String TEST_QUEUE_B = "root.b";
+  private static final QueuePath TEST_QUEUE_ABC = new QueuePath("root.a.b.c");
+  private static final QueuePath TEST_QUEUE_AB = new QueuePath("root.a.b");
+  private static final QueuePath TEST_QUEUE_A = new QueuePath("root.a");
+  private static final QueuePath TEST_QUEUE_B = new QueuePath("root.b");
   private static final String ROOT = "root";
+
   private CapacitySchedulerConfiguration conf;
 
   @Before
@@ -43,13 +44,13 @@ public class TestAutoCreatedQueueTemplate {
 
   @Test
   public void testNonWildCardTemplate() {
-    conf.set(getTemplateKey(TEST_QUEUE_AB, "capacity"), "6w");
+    conf.set(getTemplateKey(TEST_QUEUE_AB.getFullPath(), "capacity"), "6w");
     AutoCreatedQueueTemplate template =
         new AutoCreatedQueueTemplate(conf, TEST_QUEUE_AB);
-    template.setTemplateEntriesForChild(conf, TEST_QUEUE_ABC);
+    template.setTemplateEntriesForChild(conf, TEST_QUEUE_ABC.getFullPath());
 
     Assert.assertEquals("weight is not set", 6f,
-        conf.getNonLabeledQueueWeight(TEST_QUEUE_ABC), 10e-6);
+        conf.getNonLabeledQueueWeight(TEST_QUEUE_ABC.getFullPath()), 10e-6);
 
   }
 
@@ -58,10 +59,10 @@ public class TestAutoCreatedQueueTemplate {
     conf.set(getTemplateKey("root.a.*", "capacity"), "6w");
     AutoCreatedQueueTemplate template =
         new AutoCreatedQueueTemplate(conf, TEST_QUEUE_AB);
-    template.setTemplateEntriesForChild(conf, TEST_QUEUE_ABC);
+    template.setTemplateEntriesForChild(conf, TEST_QUEUE_ABC.getFullPath());
 
     Assert.assertEquals("weight is not set", 6f,
-        conf.getNonLabeledQueueWeight(TEST_QUEUE_ABC), 10e-6);
+        conf.getNonLabeledQueueWeight(TEST_QUEUE_ABC.getFullPath()), 10e-6);
 
   }
 
@@ -69,18 +70,18 @@ public class TestAutoCreatedQueueTemplate {
   public void testIgnoredWhenRootWildcarded() {
     conf.set(getTemplateKey("*", "capacity"), "6w");
     AutoCreatedQueueTemplate template =
-        new AutoCreatedQueueTemplate(conf, ROOT);
-    template.setTemplateEntriesForChild(conf, TEST_QUEUE_A);
+        new AutoCreatedQueueTemplate(conf, new QueuePath(ROOT));
+    template.setTemplateEntriesForChild(conf, TEST_QUEUE_A.getFullPath());
 
     Assert.assertEquals("weight is set", -1f,
-        conf.getNonLabeledQueueWeight(TEST_QUEUE_A), 10e-6);
+        conf.getNonLabeledQueueWeight(TEST_QUEUE_A.getFullPath()), 10e-6);
   }
 
   @Test
   public void testIgnoredWhenNoParent() {
     conf.set(getTemplateKey("root", "capacity"), "6w");
     AutoCreatedQueueTemplate template =
-        new AutoCreatedQueueTemplate(conf, ROOT);
+        new AutoCreatedQueueTemplate(conf, new QueuePath(ROOT));
     template.setTemplateEntriesForChild(conf, ROOT);
 
     Assert.assertEquals("weight is set", -1f,
@@ -95,21 +96,21 @@ public class TestAutoCreatedQueueTemplate {
 
     AutoCreatedQueueTemplate template =
         new AutoCreatedQueueTemplate(conf, TEST_QUEUE_AB);
-    template.setTemplateEntriesForChild(conf, TEST_QUEUE_ABC);
+    template.setTemplateEntriesForChild(conf, TEST_QUEUE_ABC.getFullPath());
 
     Assert.assertEquals(
         "explicit template does not have the highest precedence", 6f,
-        conf.getNonLabeledQueueWeight(TEST_QUEUE_ABC), 10e-6);
+        conf.getNonLabeledQueueWeight(TEST_QUEUE_ABC.getFullPath()), 10e-6);
 
     CapacitySchedulerConfiguration newConf =
         new CapacitySchedulerConfiguration();
     newConf.set(getTemplateKey("root.a.*", "capacity"), "4w");
     template =
         new AutoCreatedQueueTemplate(newConf, TEST_QUEUE_AB);
-    template.setTemplateEntriesForChild(newConf, TEST_QUEUE_ABC);
+    template.setTemplateEntriesForChild(newConf, TEST_QUEUE_ABC.getFullPath());
 
     Assert.assertEquals("precedence is invalid", 4f,
-        newConf.getNonLabeledQueueWeight(TEST_QUEUE_ABC), 10e-6);
+        newConf.getNonLabeledQueueWeight(TEST_QUEUE_ABC.getFullPath()), 10e-6);
   }
 
   @Test
@@ -117,10 +118,10 @@ public class TestAutoCreatedQueueTemplate {
     conf.set(getTemplateKey("root", "capacity"), "2w");
 
     AutoCreatedQueueTemplate template =
-        new AutoCreatedQueueTemplate(conf, ROOT);
-    template.setTemplateEntriesForChild(conf, TEST_QUEUE_A);
+        new AutoCreatedQueueTemplate(conf, new QueuePath(ROOT));
+    template.setTemplateEntriesForChild(conf, TEST_QUEUE_A.getFullPath());
     Assert.assertEquals("root property is not set", 2f,
-        conf.getNonLabeledQueueWeight(TEST_QUEUE_A), 10e-6);
+        conf.getNonLabeledQueueWeight(TEST_QUEUE_A.getFullPath()), 10e-6);
   }
 
   @Test
@@ -133,21 +134,21 @@ public class TestAutoCreatedQueueTemplate {
         "root", AUTO_CREATE_CHILD_QUEUE_AUTO_REMOVAL_ENABLE), false);
 
     AutoCreatedQueueTemplate template =
-        new AutoCreatedQueueTemplate(conf, ROOT);
-    template.setTemplateEntriesForChild(conf, TEST_QUEUE_A);
-    template.setTemplateEntriesForChild(conf, TEST_QUEUE_B, true);
+        new AutoCreatedQueueTemplate(conf, new QueuePath(ROOT));
+    template.setTemplateEntriesForChild(conf, TEST_QUEUE_A.getFullPath());
+    template.setTemplateEntriesForChild(conf, TEST_QUEUE_B.getFullPath(), 
true);
 
     Assert.assertNull("default-node-label-expression is set for parent",
-        conf.getDefaultNodeLabelExpression(TEST_QUEUE_A));
+        conf.getDefaultNodeLabelExpression(TEST_QUEUE_A.getFullPath()));
     Assert.assertEquals("default-node-label-expression is not set for leaf",
-        "test", conf.getDefaultNodeLabelExpression(TEST_QUEUE_B));
+        "test", 
conf.getDefaultNodeLabelExpression(TEST_QUEUE_B.getFullPath()));
     Assert.assertFalse("auto queue removal is not disabled for parent",
-        conf.isAutoExpiredDeletionEnabled(TEST_QUEUE_A));
+        conf.isAutoExpiredDeletionEnabled(TEST_QUEUE_A.getFullPath()));
     Assert.assertEquals("weight should not be overridden when set by " +
             "queue type specific template",
-        10f, conf.getNonLabeledQueueWeight(TEST_QUEUE_B), 10e-6);
+        10f, conf.getNonLabeledQueueWeight(TEST_QUEUE_B.getFullPath()), 10e-6);
     Assert.assertEquals("weight should be set by common template",
-        2f, conf.getNonLabeledQueueWeight(TEST_QUEUE_A), 10e-6);
+        2f, conf.getNonLabeledQueueWeight(TEST_QUEUE_A.getFullPath()), 10e-6);
 
   }
 
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/TestCSAllocateCustomResource.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/TestCSAllocateCustomResource.java
index 36b3c9b..5b233f2 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/TestCSAllocateCustomResource.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/TestCSAllocateCustomResource.java
@@ -299,9 +299,9 @@ public class TestCSAllocateCustomResource {
     // Define top-level queues
     newConf.setQueues(CapacitySchedulerConfiguration.ROOT,
         new String[] {"a", "b", "c"});
-    newConf.setMinimumResourceRequirement("", "root.a",
+    newConf.setMinimumResourceRequirement("", new QueuePath("root", "a"),
         aMINRES);
-    newConf.setMaximumResourceRequirement("", "root.a",
+    newConf.setMaximumResourceRequirement("", new QueuePath("root", "a"),
         aMAXRES);
 
     newConf.setClass(CapacitySchedulerConfiguration.RESOURCE_CALCULATOR_CLASS,
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/TestCapacityScheduler.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/TestCapacityScheduler.java
index efa736d..c3548cc 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/TestCapacityScheduler.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/TestCapacityScheduler.java
@@ -676,12 +676,15 @@ public class TestCapacityScheduler {
   @Test
   public void testMaximumCapacitySetup() {
     float delta = 0.0000001f;
+    QueuePath queuePathA = new QueuePath(A);
     CapacitySchedulerConfiguration conf = new CapacitySchedulerConfiguration();
-    
assertEquals(CapacitySchedulerConfiguration.MAXIMUM_CAPACITY_VALUE,conf.getNonLabeledQueueMaximumCapacity(A),delta);
+    assertEquals(CapacitySchedulerConfiguration.MAXIMUM_CAPACITY_VALUE,
+            conf.getNonLabeledQueueMaximumCapacity(queuePathA), delta);
     conf.setMaximumCapacity(A, 50.0f);
-    assertEquals(50.0f, conf.getNonLabeledQueueMaximumCapacity(A),delta);
+    assertEquals(50.0f, conf.getNonLabeledQueueMaximumCapacity(queuePathA), 
delta);
     conf.setMaximumCapacity(A, -1);
-    
assertEquals(CapacitySchedulerConfiguration.MAXIMUM_CAPACITY_VALUE,conf.getNonLabeledQueueMaximumCapacity(A),delta);
+    assertEquals(CapacitySchedulerConfiguration.MAXIMUM_CAPACITY_VALUE,
+            conf.getNonLabeledQueueMaximumCapacity(queuePathA), delta);
   }
 
   @Test
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/TestCapacitySchedulerConfigValidator.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/TestCapacitySchedulerConfigValidator.java
index ad114d9..1bee66e 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/TestCapacitySchedulerConfigValidator.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/TestCapacitySchedulerConfigValidator.java
@@ -60,14 +60,14 @@ public class TestCapacitySchedulerConfigValidator {
   private static final String LEAF_A = "leafA";
   private static final String LEAF_B = "leafB";
 
-  private static final String PARENT_A_FULL_PATH = 
CapacitySchedulerConfiguration.ROOT
-      + "." + PARENT_A;
-  private static final String LEAF_A_FULL_PATH = PARENT_A_FULL_PATH
-      + "." + LEAF_A;
-  private static final String PARENT_B_FULL_PATH = 
CapacitySchedulerConfiguration.ROOT
-      + "." + PARENT_B;
-  private static final String LEAF_B_FULL_PATH = PARENT_B_FULL_PATH
-      + "." + LEAF_B;
+  private static final QueuePath PARENT_A_FULL_PATH =
+          new QueuePath(CapacitySchedulerConfiguration.ROOT + "." + PARENT_A);
+  private static final QueuePath LEAF_A_FULL_PATH =
+          new QueuePath(PARENT_A_FULL_PATH + "." + LEAF_A);
+  private static final QueuePath PARENT_B_FULL_PATH =
+          new QueuePath(CapacitySchedulerConfiguration.ROOT + "." + PARENT_B);
+  private static final QueuePath LEAF_B_FULL_PATH =
+          new QueuePath(PARENT_B_FULL_PATH + "." + LEAF_B);
 
   private final Resource A_MINRES = Resource.newInstance(16 * GB, 10);
   private final Resource B_MINRES = Resource.newInstance(32 * GB, 5);
@@ -225,7 +225,8 @@ public class TestCapacitySchedulerConfigValidator {
     CapacitySchedulerConfiguration oldConfiguration = cs.getConfiguration();
     CapacitySchedulerConfiguration newConfiguration =
         new CapacitySchedulerConfiguration(cs.getConfiguration());
-    newConfiguration.setMaximumResourceRequirement("", LEAF_A_FULL_PATH, 
FULL_MAXRES);
+    newConfiguration.setMaximumResourceRequirement("",
+            LEAF_A_FULL_PATH, FULL_MAXRES);
     try {
       CapacitySchedulerConfigValidator
           .validateCSConfiguration(oldConfiguration, newConfiguration, 
rmContext);
@@ -245,7 +246,8 @@ public class TestCapacitySchedulerConfigValidator {
     CapacitySchedulerConfiguration oldConfiguration = cs.getConfiguration();
     CapacitySchedulerConfiguration newConfiguration =
         new CapacitySchedulerConfiguration(cs.getConfiguration());
-    newConfiguration.setMaximumResourceRequirement("", LEAF_A_FULL_PATH, 
VCORE_EXCEEDED_MAXRES);
+    newConfiguration.setMaximumResourceRequirement("",
+            LEAF_A_FULL_PATH, VCORE_EXCEEDED_MAXRES);
     try {
       CapacitySchedulerConfigValidator
           .validateCSConfiguration(oldConfiguration, newConfiguration, 
rmContext);
@@ -264,7 +266,8 @@ public class TestCapacitySchedulerConfigValidator {
     CapacitySchedulerConfiguration oldConfiguration = cs.getConfiguration();
     CapacitySchedulerConfiguration newConfiguration =
         new CapacitySchedulerConfiguration(cs.getConfiguration());
-    newConfiguration.setMaximumResourceRequirement("", LEAF_A_FULL_PATH, 
FULL_MAXRES);
+    newConfiguration.setMaximumResourceRequirement("",
+            LEAF_A_FULL_PATH, FULL_MAXRES);
     try {
       CapacitySchedulerConfigValidator
           .validateCSConfiguration(oldConfiguration, newConfiguration, 
rmContext);
@@ -284,7 +287,8 @@ public class TestCapacitySchedulerConfigValidator {
     CapacitySchedulerConfiguration oldConfiguration = cs.getConfiguration();
     CapacitySchedulerConfiguration newConfiguration =
         new CapacitySchedulerConfiguration(cs.getConfiguration());
-    newConfiguration.setMaximumResourceRequirement("", LEAF_A_FULL_PATH, 
VCORE_EXCEEDED_MAXRES);
+    newConfiguration.setMaximumResourceRequirement("",
+            LEAF_A_FULL_PATH, VCORE_EXCEEDED_MAXRES);
     try {
       CapacitySchedulerConfigValidator
           .validateCSConfiguration(oldConfiguration, newConfiguration, 
rmContext);
@@ -304,7 +308,8 @@ public class TestCapacitySchedulerConfigValidator {
     CapacitySchedulerConfiguration oldConfiguration = cs.getConfiguration();
     CapacitySchedulerConfiguration newConfiguration =
         new CapacitySchedulerConfiguration(cs.getConfiguration());
-    newConfiguration.setMaximumResourceRequirement("", LEAF_A_FULL_PATH, 
GPU_EXCEEDED_MAXRES_GPU);
+    newConfiguration.setMaximumResourceRequirement("",
+            LEAF_A_FULL_PATH, GPU_EXCEEDED_MAXRES_GPU);
     try {
       CapacitySchedulerConfigValidator
           .validateCSConfiguration(oldConfiguration, newConfiguration, 
rmContext);
@@ -595,8 +600,8 @@ public class TestCapacitySchedulerConfigValidator {
 
     csConf.setQueues(CapacitySchedulerConfiguration.ROOT,
         new String[]{PARENT_A, PARENT_B});
-    csConf.setQueues(PARENT_A_FULL_PATH, new String[]{LEAF_A});
-    csConf.setQueues(PARENT_B_FULL_PATH, new String[]{LEAF_B});
+    csConf.setQueues(PARENT_A_FULL_PATH.getFullPath(), new String[]{LEAF_A});
+    csConf.setQueues(PARENT_B_FULL_PATH.getFullPath(), new String[]{LEAF_B});
 
     if (useDominantRC) {
       setupGpuResourceValues();
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/TestParentQueue.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/TestParentQueue.java
index fe90ca8..31ece4f 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/TestParentQueue.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/TestParentQueue.java
@@ -131,10 +131,10 @@ public class TestParentQueue {
     // Define top-level queues
     conf.setQueues(CapacitySchedulerConfiguration.ROOT, new String[]{A, B});
 
-    conf.setMinimumResourceRequirement("", Q_A,
+    conf.setMinimumResourceRequirement("", new QueuePath(Q_A),
         QUEUE_A_RESOURCE);
 
-    conf.setMinimumResourceRequirement("", Q_B,
+    conf.setMinimumResourceRequirement("", new QueuePath(Q_B),
         QUEUE_B_RESOURCE);
 
     LOG.info("Setup top-level queues a and b with absolute resource");
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/TestQueuePath.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/TestQueuePath.java
index bfbc0de..7eb577d 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/TestQueuePath.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/TestQueuePath.java
@@ -55,6 +55,16 @@ public class TestQueuePath {
   }
 
   @Test
+  public void testNullPath() {
+    QueuePath queuePathWithNullPath = new QueuePath(null);
+
+    Assert.assertNull(queuePathWithNullPath.getParent());
+    Assert.assertEquals("", queuePathWithNullPath.getLeafName());
+    Assert.assertEquals("", queuePathWithNullPath.getFullPath());
+    Assert.assertFalse(queuePathWithNullPath.isRoot());
+  }
+
+  @Test
   public void testIterator() {
     QueuePath queuePath = new QueuePath(TEST_QUEUE);
     QueuePath queuePathWithEmptyPart = new QueuePath("root..level_2");
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesConfigurationMutation.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesConfigurationMutation.java
index 34b7c12..1559986 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesConfigurationMutation.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesConfigurationMutation.java
@@ -33,6 +33,7 @@ import 
org.apache.hadoop.yarn.server.resourcemanager.ResourceManager;
 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;
+import 
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.QueuePath;
 import org.apache.hadoop.yarn.webapp.GenericExceptionHandler;
 import org.apache.hadoop.yarn.webapp.GuiceServletConfig;
 import org.apache.hadoop.yarn.webapp.JerseyTestBase;
@@ -292,9 +293,9 @@ public class TestRMWebServicesConfigurationMutation extends 
JerseyTestBase {
         ((CapacityScheduler) rm.getResourceScheduler()).getConfiguration();
     assertEquals(4, newCSConf.getQueues("root").length);
     assertEquals(2, newCSConf.getQueues("root.d").length);
-    assertEquals(25.0f, newCSConf.getNonLabeledQueueCapacity("root.d.d1"),
+    assertEquals(25.0f, newCSConf.getNonLabeledQueueCapacity(new 
QueuePath("root.d.d1")),
         0.01f);
-    assertEquals(75.0f, newCSConf.getNonLabeledQueueCapacity("root.d.d2"),
+    assertEquals(75.0f, newCSConf.getNonLabeledQueueCapacity(new 
QueuePath("root.d.d2")),
         0.01f);
 
     CapacitySchedulerConfiguration newConf = getSchedulerConf();
@@ -330,8 +331,8 @@ public class TestRMWebServicesConfigurationMutation extends 
JerseyTestBase {
     CapacitySchedulerConfiguration newCSConf =
         ((CapacityScheduler) rm.getResourceScheduler()).getConfiguration();
     assertEquals(4, newCSConf.getQueues("root").length);
-    assertEquals(25.0f, newCSConf.getNonLabeledQueueCapacity("root.d"), 0.01f);
-    assertEquals(50.0f, newCSConf.getNonLabeledQueueCapacity("root.b"), 0.01f);
+    assertEquals(25.0f, newCSConf.getNonLabeledQueueCapacity(new 
QueuePath("root.d")), 0.01f);
+    assertEquals(50.0f, newCSConf.getNonLabeledQueueCapacity(new 
QueuePath("root.b")), 0.01f);
   }
 
   @Test
@@ -576,7 +577,7 @@ public class TestRMWebServicesConfigurationMutation extends 
JerseyTestBase {
     CapacitySchedulerConfiguration newCSConf =
         ((CapacityScheduler) rm.getResourceScheduler()).getConfiguration();
     assertEquals(2, newCSConf.getQueues("root").length);
-    assertEquals(100.0f, newCSConf.getNonLabeledQueueCapacity("root.b"),
+    assertEquals(100.0f, newCSConf.getNonLabeledQueueCapacity(new 
QueuePath("root.b")),
         0.01f);
   }
 
@@ -718,8 +719,8 @@ public class TestRMWebServicesConfigurationMutation extends 
JerseyTestBase {
     assertEquals(Status.OK.getStatusCode(), response.getStatus());
     CapacitySchedulerConfiguration newCSConf =
         ((CapacityScheduler) rm.getResourceScheduler()).getConfiguration();
-    assertEquals(50.0f, newCSConf.getNonLabeledQueueCapacity("root.a"), 0.01f);
-    assertEquals(50.0f, newCSConf.getNonLabeledQueueCapacity("root.b"), 0.01f);
+    assertEquals(50.0f, newCSConf.getNonLabeledQueueCapacity(new 
QueuePath("root.a")), 0.01f);
+    assertEquals(50.0f, newCSConf.getNonLabeledQueueCapacity(new 
QueuePath("root.b")), 0.01f);
   }
 
   @Test

---------------------------------------------------------------------
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