This is an automated email from the ASF dual-hosted git repository. pbacsko 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 04cd311 YARN-10658. CapacityScheduler QueueInfo add queue path field to avoid ambiguous QueueName. Contributed by Qi Zhu. 04cd311 is described below commit 04cd3115ba3f078eea7e76c3bb7d5228266378d8 Author: Peter Bacsko <pbac...@cloudera.com> AuthorDate: Mon Mar 8 12:29:44 2021 +0100 YARN-10658. CapacityScheduler QueueInfo add queue path field to avoid ambiguous QueueName. Contributed by Qi Zhu. --- .../apache/hadoop/yarn/api/records/QueueInfo.java | 26 ++++++++++++---- .../src/main/proto/yarn_protos.proto | 1 + .../apache/hadoop/yarn/client/cli/QueueCLI.java | 2 ++ .../hadoop/yarn/client/ProtocolHATestBase.java | 2 +- .../apache/hadoop/yarn/client/cli/TestYarnCLI.java | 10 +++++-- .../yarn/api/records/impl/pb/QueueInfoPBImpl.java | 16 ++++++++++ .../apache/hadoop/yarn/api/TestPBImplRecords.java | 3 +- .../scheduler/capacity/AbstractCSQueue.java | 1 + .../TestConfigurationMutationACLPolicies.java | 17 ++++++----- .../scheduler/TestSchedulerApplicationAttempt.java | 3 +- .../scheduler/capacity/TestCapacityScheduler.java | 6 ++++ .../TestCapacitySchedulerNewQueueAutoCreation.java | 35 ++++++++++++++++++++++ .../scheduler/capacity/TestLeafQueue.java | 15 ++++++---- 13 files changed, 114 insertions(+), 23 deletions(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/QueueInfo.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/QueueInfo.java index 803adad..eb703cd 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/QueueInfo.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/QueueInfo.java @@ -54,7 +54,8 @@ public abstract class QueueInfo { @Private @Unstable - public static QueueInfo newInstance(String queueName, float capacity, + public static QueueInfo newInstance(String queueName, + String queuePath, float capacity, float maximumCapacity, float currentCapacity, List<QueueInfo> childQueues, List<ApplicationReport> applications, QueueState queueState, Set<String> accessibleNodeLabels, @@ -62,6 +63,7 @@ public abstract class QueueInfo { boolean preemptionDisabled, float weight) { QueueInfo queueInfo = Records.newRecord(QueueInfo.class); queueInfo.setQueueName(queueName); + queueInfo.setQueuePath(queuePath); queueInfo.setCapacity(capacity); queueInfo.setMaximumCapacity(maximumCapacity); queueInfo.setCurrentCapacity(currentCapacity); @@ -78,14 +80,15 @@ public abstract class QueueInfo { @Private @Unstable - public static QueueInfo newInstance(String queueName, float capacity, + public static QueueInfo newInstance(String queueName, + String queuePath, float capacity, float maximumCapacity, float currentCapacity, List<QueueInfo> childQueues, List<ApplicationReport> applications, QueueState queueState, Set<String> accessibleNodeLabels, String defaultNodeLabelExpression, QueueStatistics queueStatistics, boolean preemptionDisabled, float weight, Map<String, QueueConfigurations> queueConfigurations) { - QueueInfo queueInfo = QueueInfo.newInstance(queueName, capacity, + QueueInfo queueInfo = QueueInfo.newInstance(queueName, queuePath, capacity, maximumCapacity, currentCapacity, childQueues, applications, queueState, accessibleNodeLabels, @@ -97,7 +100,8 @@ public abstract class QueueInfo { @Private @Unstable - public static QueueInfo newInstance(String queueName, float capacity, + public static QueueInfo newInstance(String queueName, + String queuePath, float capacity, float maximumCapacity, float currentCapacity, List<QueueInfo> childQueues, List<ApplicationReport> applications, QueueState queueState, Set<String> accessibleNodeLabels, @@ -105,7 +109,7 @@ public abstract class QueueInfo { boolean preemptionDisabled, float weight, Map<String, QueueConfigurations> queueConfigurations, boolean intraQueuePreemptionDisabled) { - QueueInfo queueInfo = QueueInfo.newInstance(queueName, capacity, + QueueInfo queueInfo = QueueInfo.newInstance(queueName, queuePath, capacity, maximumCapacity, currentCapacity, childQueues, applications, queueState, accessibleNodeLabels, @@ -126,6 +130,18 @@ public abstract class QueueInfo { @Private @Unstable public abstract void setQueueName(String queueName); + + /** + * Get the <em>path</em> of the queue. + * @return <em>path</em> of the queue + */ + @Public + @Stable + public abstract String getQueuePath(); + + @Private + @Unstable + public abstract void setQueuePath(String queuePath); /** * Get the <em>configured capacity</em> of the queue. diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto index 467f26a..0b360df 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto @@ -610,6 +610,7 @@ message QueueInfoProto { repeated QueueConfigurationsMapProto queueConfigurationsMap = 12; optional bool intraQueuePreemptionDisabled = 13; optional float weight = 14; + optional string queuePath = 15; } message QueueConfigurationsProto { diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/QueueCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/QueueCLI.java index 98f714f..c356643 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/QueueCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/QueueCLI.java @@ -125,6 +125,8 @@ public class QueueCLI extends YarnCLI { private void printQueueInfo(PrintWriter writer, QueueInfo queueInfo) { writer.print("Queue Name : "); writer.println(queueInfo.getQueueName()); + writer.print("Queue Path : "); + writer.println(queueInfo.getQueuePath()); writer.print("\tState : "); writer.println(queueInfo.getQueueState()); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/ProtocolHATestBase.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/ProtocolHATestBase.java index 8c89cf8..3972ca6 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/ProtocolHATestBase.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/ProtocolHATestBase.java @@ -668,7 +668,7 @@ public abstract class ProtocolHATestBase extends ClientBaseWithFixes { } public QueueInfo createFakeQueueInfo() { - return QueueInfo.newInstance("root", 100f, 100f, 50f, null, + return QueueInfo.newInstance("root", "root", 100f, 100f, 50f, null, createFakeAppReports(), QueueState.RUNNING, null, null, null, false, -1.0f, null, false); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java index 90e2a75..1ed7dab 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java @@ -1718,7 +1718,9 @@ public class TestYarnCLI { Set<String> nodeLabels = new HashSet<String>(); nodeLabels.add("GPU"); nodeLabels.add("JDK_7"); - QueueInfo queueInfo = QueueInfo.newInstance("queueA", 0.4f, 0.8f, 0.5f, + QueueInfo queueInfo = QueueInfo. + newInstance("queueA", "root.queueA", + 0.4f, 0.8f, 0.5f, null, null, QueueState.RUNNING, nodeLabels, "GPU", null, false, -1.0f, null, false); @@ -1730,6 +1732,7 @@ public class TestYarnCLI { PrintWriter pw = new PrintWriter(baos); pw.println("Queue Information : "); pw.println("Queue Name : " + "queueA"); + pw.println("Queue Path : " + "root.queueA"); pw.println("\tState : " + "RUNNING"); pw.println("\tCapacity : " + "40.00%"); pw.println("\tCurrent Capacity : " + "50.00%"); @@ -1888,7 +1891,9 @@ public class TestYarnCLI { @Test public void testGetQueueInfoWithEmptyNodeLabel() throws Exception { QueueCLI cli = createAndGetQueueCLI(); - QueueInfo queueInfo = QueueInfo.newInstance("queueA", 0.4f, 0.8f, 0.5f, + QueueInfo queueInfo = QueueInfo. + newInstance("queueA", "root.queueA", + 0.4f, 0.8f, 0.5f, null, null, QueueState.RUNNING, null, null, null, true, -1.0f, null, true); when(client.getQueueInfo(any(String.class))).thenReturn(queueInfo); @@ -1899,6 +1904,7 @@ public class TestYarnCLI { PrintWriter pw = new PrintWriter(baos); pw.println("Queue Information : "); pw.println("Queue Name : " + "queueA"); + pw.println("Queue Path : " + "root.queueA"); pw.println("\tState : " + "RUNNING"); pw.println("\tCapacity : " + "40.00%"); pw.println("\tCurrent Capacity : " + "50.00%"); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/QueueInfoPBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/QueueInfoPBImpl.java index cb3757b..c69fddb 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/QueueInfoPBImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/QueueInfoPBImpl.java @@ -102,6 +102,12 @@ public class QueueInfoPBImpl extends QueueInfo { } @Override + public String getQueuePath() { + QueueInfoProtoOrBuilder p = viaProto ? proto : builder; + return (p.hasQueuePath()) ? p.getQueuePath() : null; + } + + @Override public QueueState getQueueState() { QueueInfoProtoOrBuilder p = viaProto ? proto : builder; if (!p.hasState()) { @@ -167,6 +173,16 @@ public class QueueInfoPBImpl extends QueueInfo { } @Override + public void setQueuePath(String queuePath) { + maybeInitBuilder(); + if (queuePath == null) { + builder.clearQueuePath(); + return; + } + builder.setQueuePath(queuePath); + } + + @Override public void setQueueState(QueueState queueState) { maybeInitBuilder(); if (queueState == null) { diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestPBImplRecords.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestPBImplRecords.java index 7792cad..96624d6 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestPBImplRecords.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestPBImplRecords.java @@ -432,7 +432,8 @@ public class TestPBImplRecords extends BasePBImplRecordsTest { generateByNewInstance(ContainerUpdateResponse.class); // genByNewInstance does not apply to QueueInfo, cause // it is recursive(has sub queues) - typeValueCache.put(QueueInfo.class, QueueInfo.newInstance("root", 1.0f, + typeValueCache.put(QueueInfo.class, QueueInfo. + newInstance("root", "root", 1.0f, 1.0f, 0.1f, null, null, QueueState.RUNNING, ImmutableSet.of("x", "y"), "x && y", null, false, -1.0f, null, false)); generateByNewInstance(QueueStatistics.class); 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 7aa8e01..2d85d61 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 @@ -716,6 +716,7 @@ public abstract class AbstractCSQueue implements CSQueue { // TODO, improve this QueueInfo queueInfo = recordFactory.newRecordInstance(QueueInfo.class); queueInfo.setQueueName(queueName); + queueInfo.setQueuePath(queuePath); queueInfo.setAccessibleNodeLabels(accessibleLabels); queueInfo.setCapacity(queueCapacities.getCapacity()); queueInfo.setMaximumCapacity(queueCapacities.getMaximumCapacity()); 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/TestConfigurationMutationACLPolicies.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestConfigurationMutationACLPolicies.java index 90e12ac..1304a88 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestConfigurationMutationACLPolicies.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestConfigurationMutationACLPolicies.java @@ -59,23 +59,26 @@ public class TestConfigurationMutationACLPolicies { rmContext = mock(RMContext.class); scheduler = mock(MutableConfScheduler.class); when(rmContext.getScheduler()).thenReturn(scheduler); - mockQueue("a", scheduler); - mockQueue("b", scheduler); - mockQueue("b1", scheduler); + mockQueue("a", "root.a", scheduler); + mockQueue("b", "root.b", scheduler); + mockQueue("b1", "root.b1", scheduler); } - private void mockQueue(String queueName, MutableConfScheduler scheduler) + private void mockQueue(String queueName, + String queuePath, MutableConfScheduler confScheduler) throws IOException { - QueueInfo queueInfo = QueueInfo.newInstance(queueName, 0, 0, 0, null, null, + QueueInfo queueInfo = QueueInfo. + newInstance(queueName, queuePath, 0, 0, + 0, null, null, null, null, null, null, false, -1.0f, null, false); - when(scheduler.getQueueInfo(eq(queueName), anyBoolean(), anyBoolean())) + when(confScheduler.getQueueInfo(eq(queueName), anyBoolean(), anyBoolean())) .thenReturn(queueInfo); Queue queue = mock(Queue.class); when(queue.hasAccess(eq(QueueACL.ADMINISTER_QUEUE), eq(GOOD_USER))) .thenReturn(true); when(queue.hasAccess(eq(QueueACL.ADMINISTER_QUEUE), eq(BAD_USER))) .thenReturn(false); - when(scheduler.getQueue(eq(queueName))).thenReturn(queue); + when(confScheduler.getQueue(eq(queueName))).thenReturn(queue); } @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/TestSchedulerApplicationAttempt.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestSchedulerApplicationAttempt.java index 93d52bd..2a8f579 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestSchedulerApplicationAttempt.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestSchedulerApplicationAttempt.java @@ -216,7 +216,8 @@ public class TestSchedulerApplicationAttempt { private Queue createQueue(String name, Queue parent, float capacity) { QueueMetrics metrics = QueueMetrics.forQueue(name, parent, false, conf); - QueueInfo queueInfo = QueueInfo.newInstance(name, capacity, 1.0f, 0, null, + QueueInfo queueInfo = QueueInfo.newInstance(name, + "root." + name, capacity, 1.0f, 0, null, null, QueueState.RUNNING, null, "", null, false, -1.0f, null, false); ActiveUsersManager activeUsersManager = new ActiveUsersManager(metrics); Queue queue = mock(Queue.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 d5d89ca..b6c0802 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 @@ -1146,6 +1146,8 @@ public class TestCapacityScheduler extends CapacitySchedulerTestBase { QueueInfo queueInfo = resourceManager.getResourceScheduler().getQueueInfo("a", true, true); Assert.assertEquals("Queue Name should be a", "a", queueInfo.getQueueName()); + Assert.assertEquals("Queue Path should be root.a", "root.a", + queueInfo.getQueuePath()); Assert.assertEquals("Child Queues size should be 2", 2, queueInfo.getChildQueues().size()); @@ -4362,12 +4364,16 @@ public class TestCapacityScheduler extends CapacitySchedulerTestBase { QueueInfo queueInfoA = cs.getQueueInfo("a", true, false); Assert.assertEquals("Queue Name should be a", "a", queueInfoA.getQueueName()); + Assert.assertEquals("Queue Path should be root.a", "root.a", + queueInfoA.getQueuePath()); Assert.assertEquals("Default Node Label Expression should be x", "x", queueInfoA.getDefaultNodeLabelExpression()); QueueInfo queueInfoB = cs.getQueueInfo("b", true, false); Assert.assertEquals("Queue Name should be b", "b", queueInfoB.getQueueName()); + Assert.assertEquals("Queue Path should be root.b", "root.b", + queueInfoB.getQueuePath()); Assert.assertEquals("Default Node Label Expression should be y", "y", queueInfoB.getDefaultNodeLabelExpression()); } 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/TestCapacitySchedulerNewQueueAutoCreation.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/TestCapacitySchedulerNewQueueAutoCreation.java index 45c411f..f493fe6 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/TestCapacitySchedulerNewQueueAutoCreation.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/TestCapacitySchedulerNewQueueAutoCreation.java @@ -876,6 +876,41 @@ public class TestCapacitySchedulerNewQueueAutoCreation b.getQueueResourceQuotas().getEffectiveMinResource().getMemorySize()); } + @Test + public void testQueueInfoIfAmbiguousQueueNames() throws Exception { + startScheduler(); + + AbstractCSQueue b = (AbstractCSQueue) cs. + getQueue("root.b"); + Assert.assertFalse(b.isDynamicQueue()); + Assert.assertEquals("root.b", + b.getQueueInfo().getQueuePath()); + + createQueue("root.a.b.b"); + + AbstractCSQueue bAutoParent = (AbstractCSQueue) cs. + getQueue("root.a.b"); + Assert.assertTrue(bAutoParent.isDynamicQueue()); + Assert.assertTrue(bAutoParent.hasChildQueues()); + Assert.assertEquals("root.a.b", + bAutoParent.getQueueInfo().getQueuePath()); + + AbstractCSQueue bAutoLeafQueue = + (AbstractCSQueue) cs.getQueue("root.a.b.b"); + Assert.assertTrue(bAutoLeafQueue.isDynamicQueue()); + Assert.assertFalse(bAutoLeafQueue.hasChildQueues()); + Assert.assertEquals("root.a.b.b", + bAutoLeafQueue.getQueueInfo().getQueuePath()); + + // Make sure all queue name are ambiguous + Assert.assertEquals("b", + b.getQueueInfo().getQueueName()); + Assert.assertEquals("b", + bAutoParent.getQueueInfo().getQueueName()); + Assert.assertEquals("b", + bAutoLeafQueue.getQueueInfo().getQueueName()); + } + protected LeafQueue createQueue(String queuePath) throws YarnException { return autoQueueHandler.autoCreateQueue( CSQueueUtils.extractQueuePath(queuePath)); 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/TestLeafQueue.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/TestLeafQueue.java index 1a45908..6262d85 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/TestLeafQueue.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/TestLeafQueue.java @@ -4786,7 +4786,7 @@ public class TestLeafQueue { // Queue "test" consumes 100% of the cluster, so its capacity and absolute // capacity are both 1.0f. - Queue queue = createQueue("test", null, 1.0f, 1.0f, res); + Queue queue = createQueue("test", "root.test", null, 1.0f, 1.0f, res); final String user = "user1"; FiCaSchedulerApp app = new FiCaSchedulerApp(appAttId, user, queue, @@ -4803,7 +4803,7 @@ public class TestLeafQueue { // Queue "test2" is a child of root and its capacity is 50% of root. As a // child of root, its absolute capaicty is also 50%. - queue = createQueue("test2", null, 0.5f, 0.5f, + queue = createQueue("test2", "root.test2", null, 0.5f, 0.5f, Resources.divideAndCeil(dominantResourceCalculator, res, 2)); app = new FiCaSchedulerApp(appAttId, user, queue, queue.getAbstractUsersManager(), rmContext); @@ -4816,7 +4816,8 @@ public class TestLeafQueue { // Queue "test2.1" is 50% of queue "test2", which is 50% of the cluster. // Therefore, "test2.1" capacity is 50% and absolute capacity is 25%. - AbstractCSQueue qChild = createQueue("test2.1", queue, 0.5f, 0.25f, + AbstractCSQueue qChild = + createQueue("test2.1", "root.test2.1", queue, 0.5f, 0.25f, Resources.divideAndCeil(dominantResourceCalculator, res, 4)); app = new FiCaSchedulerApp(appAttId, user, qChild, qChild.getAbstractUsersManager(), rmContext); @@ -4828,7 +4829,7 @@ public class TestLeafQueue { app.getResourceUsageReport().getClusterUsagePercentage(), 0.01f); // test that queueUsagePercentage returns neither NaN nor Infinite - AbstractCSQueue zeroQueue = createQueue("test2.2", null, + AbstractCSQueue zeroQueue = createQueue("test2.2", "root.test2.2", null, Float.MIN_VALUE, Float.MIN_VALUE, Resources.multiply(res, Float.MIN_VALUE)); app = new FiCaSchedulerApp(appAttId, user, zeroQueue, @@ -4901,10 +4902,12 @@ public class TestLeafQueue { return attId; } - private AbstractCSQueue createQueue(String name, Queue parent, float capacity, + private AbstractCSQueue + createQueue(String name, String path, Queue parent, float capacity, float absCap, Resource res) { CSQueueMetrics metrics = CSQueueMetrics.forQueue(name, parent, false, cs.getConf()); - QueueInfo queueInfo = QueueInfo.newInstance(name, capacity, 1.0f, 0, null, + QueueInfo queueInfo = QueueInfo. + newInstance(name, path, capacity, 1.0f, 0, null, null, QueueState.RUNNING, null, "", null, false, -1.0f, null, false); ActiveUsersManager activeUsersManager = new ActiveUsersManager(metrics); AbstractCSQueue queue = mock(AbstractCSQueue.class); --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org