You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by xy...@apache.org on 2018/04/10 19:39:12 UTC
[34/50] [abbrv] hadoop git commit: YARN-7574. Add support for Node
Labels on Auto Created Leaf Queue Template. Contributed by Suma Shivaprasad.
http://git-wip-us.apache.org/repos/asf/hadoop/blob/821b0de4/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacitySchedulerAutoCreatedQueueBase.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacitySchedulerAutoCreatedQueueBase.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacitySchedulerAutoCreatedQueueBase.java
index 6c6ac20..addec66 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacitySchedulerAutoCreatedQueueBase.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacitySchedulerAutoCreatedQueueBase.java
@@ -29,6 +29,7 @@ import org.apache.hadoop.security.TestGroupsCaching;
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.api.records.NodeId;
+import org.apache.hadoop.yarn.api.records.NodeLabel;
import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.event.AsyncDispatcher;
@@ -65,6 +66,8 @@ import org.apache.hadoop.yarn.server.resourcemanager.scheduler.event
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair
.SimpleGroupsMapping;
import org.apache.hadoop.yarn.server.utils.BuilderUtils;
+import org.apache.hadoop.yarn.util.Records;
+import org.apache.hadoop.yarn.util.YarnVersionInfo;
import org.apache.hadoop.yarn.util.resource.Resources;
import org.junit.After;
import org.junit.Assert;
@@ -89,6 +92,8 @@ import static org.apache.hadoop.yarn.server.resourcemanager.scheduler
.capacity.CapacitySchedulerConfiguration.DOT;
import static org.apache.hadoop.yarn.server.resourcemanager.scheduler
.capacity.CapacitySchedulerConfiguration.FAIR_APP_ORDERING_POLICY;
+import static org.apache.hadoop.yarn.server.resourcemanager.scheduler
+ .capacity.CapacitySchedulerConfiguration.ROOT;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@@ -99,7 +104,7 @@ public class TestCapacitySchedulerAutoCreatedQueueBase {
private static final Log LOG = LogFactory.getLog(
TestCapacitySchedulerAutoCreatedQueueBase.class);
public static final int GB = 1024;
- public final static ContainerUpdates NULL_UPDATE_REQUESTS =
+ public static final ContainerUpdates NULL_UPDATE_REQUESTS =
new ContainerUpdates();
public static final String A = CapacitySchedulerConfiguration.ROOT + ".a";
@@ -112,9 +117,6 @@ public class TestCapacitySchedulerAutoCreatedQueueBase {
public static final String B1 = B + ".b1";
public static final String B2 = B + ".b2";
public static final String B3 = B + ".b3";
- public static final String C1 = C + ".c1";
- public static final String C2 = C + ".c2";
- public static final String C3 = C + ".c3";
public static final float A_CAPACITY = 20f;
public static final float B_CAPACITY = 40f;
public static final float C_CAPACITY = 20f;
@@ -124,8 +126,6 @@ public class TestCapacitySchedulerAutoCreatedQueueBase {
public static final float B1_CAPACITY = 60f;
public static final float B2_CAPACITY = 20f;
public static final float B3_CAPACITY = 20f;
- public static final float C1_CAPACITY = 20f;
- public static final float C2_CAPACITY = 20f;
public static final int NODE_MEMORY = 16;
@@ -147,12 +147,14 @@ public class TestCapacitySchedulerAutoCreatedQueueBase {
public static final String NODEL_LABEL_GPU = "GPU";
public static final String NODEL_LABEL_SSD = "SSD";
+ public static final float NODE_LABEL_GPU_TEMPLATE_CAPACITY = 30.0f;
+ public static final float NODEL_LABEL_SSD_TEMPLATE_CAPACITY = 40.0f;
+
protected MockRM mockRM = null;
protected MockNM nm1 = null;
protected MockNM nm2 = null;
protected MockNM nm3 = null;
protected CapacityScheduler cs;
- private final TestCapacityScheduler tcs = new TestCapacityScheduler();
protected SpyDispatcher dispatcher;
private static EventHandler<Event> rmAppEventEventHandler;
@@ -215,15 +217,29 @@ public class TestCapacitySchedulerAutoCreatedQueueBase {
}
protected void setupNodes(MockRM newMockRM) throws Exception {
+ NodeLabel ssdLabel = Records.newRecord(NodeLabel.class);
+ ssdLabel.setName(NODEL_LABEL_SSD);
+ ssdLabel.setExclusivity(true);
+
nm1 = // label = SSD
- new MockNM("h1:1234", NODE_MEMORY * GB, NODE1_VCORES, newMockRM
- .getResourceTrackerService());
+ new MockNM("h1:1234",
+ Resource.newInstance(NODE_MEMORY * GB, NODE1_VCORES),
+ newMockRM.getResourceTrackerService(),
+ YarnVersionInfo.getVersion(),
+ new HashSet<NodeLabel>() {{ add(ssdLabel); }});
+
nm1.registerNode();
- nm2 = // label = GPU
- new MockNM("h2:1234", NODE_MEMORY * GB, NODE2_VCORES, newMockRM
- .getResourceTrackerService
- ());
+ NodeLabel gpuLabel = Records.newRecord(NodeLabel.class);
+ ssdLabel.setName(NODEL_LABEL_GPU);
+ ssdLabel.setExclusivity(true);
+
+ //Label = GPU
+ nm2 = new MockNM("h2:1234",
+ Resource.newInstance(NODE_MEMORY * GB, NODE2_VCORES),
+ newMockRM.getResourceTrackerService(),
+ YarnVersionInfo.getVersion(),
+ new HashSet<NodeLabel>() {{ add(gpuLabel); }});
nm2.registerNode();
nm3 = // label = ""
@@ -295,19 +311,23 @@ public class TestCapacitySchedulerAutoCreatedQueueBase {
/**
* @param conf, to be modified
- * @return, CS configuration which has C as an auto creation enabled parent
- * queue
- * <p>
- * root / \ \ \ a b c d / \ / | \ a1 a2 b1
- * b2 b3
+ * @return, CS configuration which has C
+ * as an auto creation enabled parent queue
+ * <p>
+ * root
+ * / \ \ \
+ * a b c d
+ * / \ / | \
+ * a1 a2 b1 b2 b3
*/
+
public static CapacitySchedulerConfiguration setupQueueConfiguration(
CapacitySchedulerConfiguration conf) {
//setup new queues with one of them auto enabled
// Define top-level queues
// Set childQueue for root
- conf.setQueues(CapacitySchedulerConfiguration.ROOT,
+ conf.setQueues(ROOT,
new String[] { "a", "b", "c", "d" });
conf.setCapacity(A, A_CAPACITY);
@@ -339,6 +359,19 @@ public class TestCapacitySchedulerAutoCreatedQueueBase {
conf.setAutoCreatedLeafQueueConfigUserLimit(C, 100);
conf.setAutoCreatedLeafQueueConfigUserLimitFactor(C, 3.0f);
+ conf.setAutoCreatedLeafQueueTemplateCapacityByLabel(C, NODEL_LABEL_GPU,
+ NODE_LABEL_GPU_TEMPLATE_CAPACITY);
+ conf.setAutoCreatedLeafQueueTemplateMaxCapacity(C, NODEL_LABEL_GPU, 100.0f);
+ conf.setAutoCreatedLeafQueueTemplateCapacityByLabel(C, NODEL_LABEL_SSD,
+ NODEL_LABEL_SSD_TEMPLATE_CAPACITY);
+ conf.setAutoCreatedLeafQueueTemplateMaxCapacity(C, NODEL_LABEL_SSD,
+ 100.0f);
+
+ conf.setDefaultNodeLabelExpression(C, NODEL_LABEL_GPU);
+ conf.setAutoCreatedLeafQueueConfigDefaultNodeLabelExpression
+ (C, NODEL_LABEL_SSD);
+
+
LOG.info("Setup " + C + " as an auto leaf creation enabled parent queue");
conf.setUserLimitFactor(D, 1.0f);
@@ -363,8 +396,13 @@ public class TestCapacitySchedulerAutoCreatedQueueBase {
accessibleNodeLabelsOnC.add(NO_LABEL);
conf.setAccessibleNodeLabels(C, accessibleNodeLabelsOnC);
- conf.setCapacityByLabel(C, NODEL_LABEL_GPU, 50);
- conf.setCapacityByLabel(C, NODEL_LABEL_SSD, 50);
+ conf.setAccessibleNodeLabels(ROOT, accessibleNodeLabelsOnC);
+ conf.setCapacityByLabel(ROOT, NODEL_LABEL_GPU, 100f);
+ conf.setCapacityByLabel(ROOT, NODEL_LABEL_SSD, 100f);
+
+ conf.setAccessibleNodeLabels(C, accessibleNodeLabelsOnC);
+ conf.setCapacityByLabel(C, NODEL_LABEL_GPU, 100f);
+ conf.setCapacityByLabel(C, NODEL_LABEL_SSD, 100f);
LOG.info("Setup " + D + " as an auto leaf creation enabled parent queue");
@@ -541,19 +579,21 @@ public class TestCapacitySchedulerAutoCreatedQueueBase {
autoCreatedLeafQueue.getMaxApplicationsPerUser());
}
- protected void validateInitialQueueEntitlement(CSQueue parentQueue,
- String leafQueueName, float expectedTotalChildQueueAbsCapacity,
+ protected void validateInitialQueueEntitlement(CSQueue parentQueue, String
+ leafQueueName, Map<String, Float>
+ expectedTotalChildQueueAbsCapacityByLabel,
Set<String> nodeLabels)
- throws SchedulerDynamicEditException {
+ throws SchedulerDynamicEditException, InterruptedException {
validateInitialQueueEntitlement(cs, parentQueue, leafQueueName,
- expectedTotalChildQueueAbsCapacity, nodeLabels);
+ expectedTotalChildQueueAbsCapacityByLabel, nodeLabels);
}
protected void validateInitialQueueEntitlement(
CapacityScheduler capacityScheduler, CSQueue parentQueue,
- String leafQueueName, float expectedTotalChildQueueAbsCapacity,
+ String leafQueueName,
+ Map<String, Float> expectedTotalChildQueueAbsCapacityByLabel,
Set<String> nodeLabels)
- throws SchedulerDynamicEditException {
+ throws SchedulerDynamicEditException, InterruptedException {
ManagedParentQueue autoCreateEnabledParentQueue =
(ManagedParentQueue) parentQueue;
@@ -561,11 +601,7 @@ public class TestCapacitySchedulerAutoCreatedQueueBase {
(GuaranteedOrZeroCapacityOverTimePolicy) autoCreateEnabledParentQueue
.getAutoCreatedQueueManagementPolicy();
- assertEquals(expectedTotalChildQueueAbsCapacity,
- policy.getAbsoluteActivatedChildQueueCapacity(), EPSILON);
-
- AutoCreatedLeafQueue leafQueue =
- (AutoCreatedLeafQueue) capacityScheduler.getQueue(leafQueueName);
+ AutoCreatedLeafQueue leafQueue = (AutoCreatedLeafQueue) capacityScheduler.getQueue(leafQueueName);
Map<String, QueueEntitlement> expectedEntitlements = new HashMap<>();
QueueCapacities cap = autoCreateEnabledParentQueue.getLeafQueueTemplate()
@@ -573,6 +609,10 @@ public class TestCapacitySchedulerAutoCreatedQueueBase {
for (String label : nodeLabels) {
validateCapacitiesByLabel(autoCreateEnabledParentQueue, leafQueue, label);
+ assertEquals(true, policy.isActive(leafQueue, label));
+
+ assertEquals(expectedTotalChildQueueAbsCapacityByLabel.get(label),
+ policy.getAbsoluteActivatedChildQueueCapacity(label), EPSILON);
QueueEntitlement expectedEntitlement = new QueueEntitlement(
cap.getCapacity(label), cap.getMaximumCapacity(label));
@@ -581,21 +621,19 @@ public class TestCapacitySchedulerAutoCreatedQueueBase {
validateEffectiveMinResource(leafQueue, label, expectedEntitlements);
}
-
- assertEquals(true, policy.isActive(leafQueue));
}
- protected void validateCapacitiesByLabel(
- ManagedParentQueue autoCreateEnabledParentQueue,
- AutoCreatedLeafQueue leafQueue, String label) {
- assertEquals(
- autoCreateEnabledParentQueue.getLeafQueueTemplate().getQueueCapacities()
- .getCapacity(), leafQueue.getQueueCapacities().getCapacity(label),
- EPSILON);
- assertEquals(
- autoCreateEnabledParentQueue.getLeafQueueTemplate().getQueueCapacities()
- .getMaximumCapacity(),
- leafQueue.getQueueCapacities().getMaximumCapacity(label), EPSILON);
+ protected void validateCapacitiesByLabel(ManagedParentQueue
+ autoCreateEnabledParentQueue, AutoCreatedLeafQueue leafQueue, String
+ label) throws InterruptedException {
+ assertEquals(autoCreateEnabledParentQueue.getLeafQueueTemplate()
+ .getQueueCapacities().getCapacity(label),
+ leafQueue.getQueueCapacities()
+ .getCapacity(label), EPSILON);
+ assertEquals(autoCreateEnabledParentQueue.getLeafQueueTemplate()
+ .getQueueCapacities().getMaximumCapacity(label),
+ leafQueue.getQueueCapacities()
+ .getMaximumCapacity(label), EPSILON);
}
protected void validateEffectiveMinResource(CSQueue leafQueue,
@@ -621,8 +659,10 @@ public class TestCapacitySchedulerAutoCreatedQueueBase {
}
protected void validateActivatedQueueEntitlement(CSQueue parentQueue,
- String leafQueueName, float expectedTotalChildQueueAbsCapacity,
- List<QueueManagementChange> queueManagementChanges)
+ String leafQueueName, Map<String, Float>
+ expectedTotalChildQueueAbsCapacity,
+ List<QueueManagementChange> queueManagementChanges, Set<String>
+ expectedNodeLabels)
throws SchedulerDynamicEditException {
ManagedParentQueue autoCreateEnabledParentQueue =
(ManagedParentQueue) parentQueue;
@@ -633,67 +673,84 @@ public class TestCapacitySchedulerAutoCreatedQueueBase {
QueueCapacities cap = autoCreateEnabledParentQueue.getLeafQueueTemplate()
.getQueueCapacities();
- QueueEntitlement expectedEntitlement = new QueueEntitlement(
- cap.getCapacity(), cap.getMaximumCapacity());
- //validate capacity
- validateQueueEntitlements(leafQueueName, expectedEntitlement,
- queueManagementChanges);
+ AutoCreatedLeafQueue leafQueue = (AutoCreatedLeafQueue)
+ cs.getQueue(leafQueueName);
- //validate parent queue state
- assertEquals(expectedTotalChildQueueAbsCapacity,
- policy.getAbsoluteActivatedChildQueueCapacity(), EPSILON);
+ Map<String, QueueEntitlement> expectedEntitlements = new HashMap<>();
- AutoCreatedLeafQueue leafQueue = (AutoCreatedLeafQueue) cs.getQueue(
- leafQueueName);
+ for (String label : expectedNodeLabels) {
+ //validate leaf queue state
+ assertEquals(true, policy.isActive(leafQueue, label));
+
+ QueueEntitlement expectedEntitlement = new QueueEntitlement(
+ cap.getCapacity(label), cap.getMaximumCapacity(label));
+
+ //validate parent queue state
+ assertEquals(expectedTotalChildQueueAbsCapacity.get(label),
+ policy.getAbsoluteActivatedChildQueueCapacity(label), EPSILON);
+
+ expectedEntitlements.put(label, expectedEntitlement);
+ }
- //validate leaf queue state
- assertEquals(true, policy.isActive(leafQueue));
+ //validate capacity
+ validateQueueEntitlements(leafQueueName, expectedEntitlements,
+ queueManagementChanges, expectedNodeLabels);
}
protected void validateDeactivatedQueueEntitlement(CSQueue parentQueue,
- String leafQueueName, float expectedTotalChildQueueAbsCapacity,
- List<QueueManagementChange> queueManagementChanges)
+ String leafQueueName, Map<String, Float>
+ expectedTotalChildQueueAbsCapacity,
+ List<QueueManagementChange>
+ queueManagementChanges)
throws SchedulerDynamicEditException {
- QueueEntitlement expectedEntitlement = new QueueEntitlement(0.0f, 1.0f);
+ QueueEntitlement expectedEntitlement =
+ new QueueEntitlement(0.0f, 1.0f);
ManagedParentQueue autoCreateEnabledParentQueue =
(ManagedParentQueue) parentQueue;
- AutoCreatedLeafQueue leafQueue = (AutoCreatedLeafQueue) cs.getQueue(
- leafQueueName);
+ AutoCreatedLeafQueue leafQueue =
+ (AutoCreatedLeafQueue) cs.getQueue(leafQueueName);
GuaranteedOrZeroCapacityOverTimePolicy policy =
(GuaranteedOrZeroCapacityOverTimePolicy) autoCreateEnabledParentQueue
.getAutoCreatedQueueManagementPolicy();
- //validate parent queue state
- assertEquals(expectedTotalChildQueueAbsCapacity,
- policy.getAbsoluteActivatedChildQueueCapacity(), EPSILON);
+ Map<String, QueueEntitlement> expectedEntitlements = new HashMap<>();
- //validate leaf queue state
- assertEquals(false, policy.isActive(leafQueue));
+ for (String label : accessibleNodeLabelsOnC) {
+ //validate parent queue state
+ LOG.info("Validating label " + label);
+ assertEquals(expectedTotalChildQueueAbsCapacity.get(label), policy
+ .getAbsoluteActivatedChildQueueCapacity(label), EPSILON);
+
+ //validate leaf queue state
+ assertEquals(false, policy.isActive(leafQueue, label));
+ expectedEntitlements.put(label, expectedEntitlement);
+ }
//validate capacity
- validateQueueEntitlements(leafQueueName, expectedEntitlement,
- queueManagementChanges);
+ validateQueueEntitlements(leafQueueName, expectedEntitlements,
+ queueManagementChanges, accessibleNodeLabelsOnC);
}
- private void validateQueueEntitlements(String leafQueueName,
- QueueEntitlement expectedEntitlement,
- List<QueueManagementChange> queueEntitlementChanges) {
+ void validateQueueEntitlements(String leafQueueName,
+ Map<String, QueueEntitlement> expectedEntitlements,
+ List<QueueManagementChange>
+ queueEntitlementChanges, Set<String> expectedNodeLabels) {
AutoCreatedLeafQueue leafQueue = (AutoCreatedLeafQueue) cs.getQueue(
leafQueueName);
- validateQueueEntitlementChangesForLeafQueue(leafQueue, expectedEntitlement,
- queueEntitlementChanges);
+ validateQueueEntitlementChanges(leafQueue, expectedEntitlements,
+ queueEntitlementChanges, expectedNodeLabels);
}
- private void validateQueueEntitlementChangesForLeafQueue(CSQueue leafQueue,
- QueueEntitlement expectedQueueEntitlement,
- final List<QueueManagementChange> queueEntitlementChanges) {
+ private void validateQueueEntitlementChanges(AutoCreatedLeafQueue leafQueue,
+ Map<String, QueueEntitlement> expectedQueueEntitlements,
+ final List<QueueManagementChange> queueEntitlementChanges, Set<String>
+ expectedNodeLabels) {
boolean found = false;
- Map<String, QueueEntitlement> expectedQueueEntitlements = new HashMap<>();
for (QueueManagementChange entitlementChange : queueEntitlementChanges) {
if (leafQueue.getQueueName().equals(
entitlementChange.getQueue().getQueueName())) {
@@ -701,13 +758,12 @@ public class TestCapacitySchedulerAutoCreatedQueueBase {
AutoCreatedLeafQueueConfig updatedQueueTemplate =
entitlementChange.getUpdatedQueueTemplate();
- for (String label : accessibleNodeLabelsOnC) {
+ for (String label : expectedNodeLabels) {
QueueEntitlement newEntitlement = new QueueEntitlement(
updatedQueueTemplate.getQueueCapacities().getCapacity(label),
- updatedQueueTemplate.getQueueCapacities()
- .getMaximumCapacity(label));
- assertEquals(expectedQueueEntitlement, newEntitlement);
- expectedQueueEntitlements.put(label, expectedQueueEntitlement);
+ updatedQueueTemplate.getQueueCapacities().getMaximumCapacity
+ (label));
+ assertEquals(expectedQueueEntitlements.get(label), newEntitlement);
validateEffectiveMinResource(leafQueue, label,
expectedQueueEntitlements);
}
@@ -716,9 +772,20 @@ public class TestCapacitySchedulerAutoCreatedQueueBase {
}
}
if (!found) {
- fail("Could not find the specified leaf queue in entitlement changes : "
- + leafQueue.getQueueName());
+ fail(
+ "Could not find the specified leaf queue in entitlement changes : "
+ + leafQueue.getQueueName());
}
}
+ protected Map<String, Float> populateExpectedAbsCapacityByLabelForParentQueue
+ (int numLeafQueues) {
+ Map<String, Float> expectedChildQueueAbsCapacity = new HashMap<>();
+ expectedChildQueueAbsCapacity.put(NODEL_LABEL_GPU,
+ NODE_LABEL_GPU_TEMPLATE_CAPACITY/100 * numLeafQueues);
+ expectedChildQueueAbsCapacity.put(NODEL_LABEL_SSD,
+ NODEL_LABEL_SSD_TEMPLATE_CAPACITY/100 * numLeafQueues);
+ expectedChildQueueAbsCapacity.put(NO_LABEL, 0.1f * numLeafQueues);
+ return expectedChildQueueAbsCapacity;
+ }
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/821b0de4/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacitySchedulerAutoQueueCreation.java
----------------------------------------------------------------------
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/TestCapacitySchedulerAutoQueueCreation.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/TestCapacitySchedulerAutoQueueCreation.java
index 027d58c..0a530dd 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/TestCapacitySchedulerAutoQueueCreation.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/TestCapacitySchedulerAutoQueueCreation.java
@@ -72,15 +72,18 @@ import org.junit.Test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
import static org.apache.hadoop.yarn.nodelabels.CommonNodeLabelsManager
.NO_LABEL;
-import static org.apache.hadoop.yarn.server.resourcemanager.placement
- .UserGroupMappingPlacementRule.CURRENT_USER_MAPPING;
-import static org.apache.hadoop.yarn.server.resourcemanager.scheduler
- .capacity.CSQueueUtils.EPSILON;
+import static org.apache.hadoop.yarn.server.resourcemanager.placement.UserGroupMappingPlacementRule.CURRENT_USER_MAPPING;
+import static org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CSQueueUtils.EPSILON;
+
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@@ -90,7 +93,7 @@ import static org.mockito.Mockito.when;
/**
* Tests for creation and reinitialization of auto created leaf queues
- * under a ManagedParentQueue.
+ * and capacity management under a ManagedParentQueue.
*/
public class TestCapacitySchedulerAutoQueueCreation
extends TestCapacitySchedulerAutoCreatedQueueBase {
@@ -105,7 +108,7 @@ public class TestCapacitySchedulerAutoQueueCreation
4);
- @Test(timeout = 10000)
+ @Test(timeout = 20000)
public void testAutoCreateLeafQueueCreation() throws Exception {
try {
@@ -122,7 +125,12 @@ public class TestCapacitySchedulerAutoQueueCreation
ManagedParentQueue parentQueue = (ManagedParentQueue) cs.getQueue(
PARENT_QUEUE);
assertEquals(parentQueue, autoCreatedLeafQueue.getParent());
- validateInitialQueueEntitlement(parentQueue, USER0, 0.1f, accessibleNodeLabelsOnC);
+
+ Map<String, Float> expectedChildQueueAbsCapacity =
+ populateExpectedAbsCapacityByLabelForParentQueue(1);
+ validateInitialQueueEntitlement(parentQueue, USER0,
+ expectedChildQueueAbsCapacity, accessibleNodeLabelsOnC);
+
validateUserAndAppLimits(autoCreatedLeafQueue, 1000, 1000);
assertTrue(autoCreatedLeafQueue
@@ -136,7 +144,14 @@ public class TestCapacitySchedulerAutoQueueCreation
(AutoCreatedLeafQueue) cs.getQueue(TEST_GROUPUSER);
parentQueue = (ManagedParentQueue) cs.getQueue("d");
assertEquals(parentQueue, autoCreatedLeafQueue.getParent());
- validateInitialQueueEntitlement(parentQueue, TEST_GROUPUSER, 0.02f,
+
+ expectedChildQueueAbsCapacity =
+ new HashMap<String, Float>() {{
+ put(NO_LABEL, 0.02f);
+ }};
+
+ validateInitialQueueEntitlement(parentQueue, TEST_GROUPUSER,
+ expectedChildQueueAbsCapacity,
new HashSet<String>() {{ add(NO_LABEL); }});
} finally {
@@ -173,10 +188,17 @@ public class TestCapacitySchedulerAutoQueueCreation
USER0);
ManagedParentQueue parentQueue = (ManagedParentQueue) cs.getQueue(
PARENT_QUEUE);
+
assertEquals(parentQueue, user0Queue.getParent());
assertEquals(parentQueue, user1Queue.getParent());
- validateInitialQueueEntitlement(parentQueue, USER0, 0.2f, accessibleNodeLabelsOnC);
- validateInitialQueueEntitlement(parentQueue, USER1, 0.2f, accessibleNodeLabelsOnC);
+
+ Map<String, Float>
+ expectedAbsChildQueueCapacity =
+ populateExpectedAbsCapacityByLabelForParentQueue(2);
+ validateInitialQueueEntitlement(parentQueue, USER0,
+ expectedAbsChildQueueCapacity, accessibleNodeLabelsOnC);
+ validateInitialQueueEntitlement(parentQueue, USER1,
+ expectedAbsChildQueueCapacity, accessibleNodeLabelsOnC);
ApplicationAttemptId appAttemptId = appsInC.get(0);
@@ -184,7 +206,8 @@ public class TestCapacitySchedulerAutoQueueCreation
RecordFactory recordFactory = RecordFactoryProvider.getRecordFactory(
null);
ResourceRequest r1 = TestUtils.createResourceRequest(ResourceRequest.ANY,
- 1 * GB, 1, true, priority, recordFactory);
+ 1 * GB, 1, true, priority,
+ recordFactory);
cs.allocate(appAttemptId, Collections.<ResourceRequest>singletonList(r1),
null, Collections.<ContainerId>emptyList(), Collections.singletonList(host),
@@ -216,8 +239,12 @@ public class TestCapacitySchedulerAutoQueueCreation
AutoCreatedLeafQueue leafQueue = (AutoCreatedLeafQueue) cs.getQueue(
USER1);
+
+ expectedAbsChildQueueCapacity =
+ populateExpectedAbsCapacityByLabelForParentQueue(1);
+
validateInitialQueueEntitlement(parentQueue, leafQueue.getQueueName(),
- 0.1f, accessibleNodeLabelsOnC);
+ expectedAbsChildQueueCapacity, accessibleNodeLabelsOnC);
} finally {
cleanupQueue(USER0);
@@ -498,52 +525,80 @@ public class TestCapacitySchedulerAutoQueueCreation
CSQueue parentQueue = cs.getQueue(PARENT_QUEUE);
//submit app1 as USER1
- submitApp(mockRM, parentQueue, USER1, USER1, 1, 1);
- validateInitialQueueEntitlement(parentQueue, USER1, 0.1f, accessibleNodeLabelsOnC);
+ ApplicationId user1AppId = submitApp(mockRM, parentQueue, USER1, USER1,
+ 1, 1);
+ Map<String, Float> expectedAbsChildQueueCapacity =
+ populateExpectedAbsCapacityByLabelForParentQueue(1);
+ validateInitialQueueEntitlement(parentQueue, USER1,
+ expectedAbsChildQueueCapacity, accessibleNodeLabelsOnC);
//submit another app2 as USER2
ApplicationId user2AppId = submitApp(mockRM, parentQueue, USER2, USER2, 2,
1);
- validateInitialQueueEntitlement(parentQueue, USER2, 0.2f, accessibleNodeLabelsOnC);
+
+ expectedAbsChildQueueCapacity =
+ populateExpectedAbsCapacityByLabelForParentQueue(2);
+ validateInitialQueueEntitlement(parentQueue, USER2,
+ expectedAbsChildQueueCapacity, accessibleNodeLabelsOnC);
//submit another app3 as USER1
submitApp(mockRM, parentQueue, USER1, USER1, 3, 2);
//validate total activated abs capacity remains the same
GuaranteedOrZeroCapacityOverTimePolicy autoCreatedQueueManagementPolicy =
- (GuaranteedOrZeroCapacityOverTimePolicy) ((ManagedParentQueue)
- parentQueue)
+ (GuaranteedOrZeroCapacityOverTimePolicy) ((ManagedParentQueue) parentQueue)
.getAutoCreatedQueueManagementPolicy();
- assertEquals(autoCreatedQueueManagementPolicy
- .getAbsoluteActivatedChildQueueCapacity(), 0.2f, EPSILON);
- //submit user_3 app. This cant be scheduled since there is no capacity
+ for (String nodeLabel : accessibleNodeLabelsOnC) {
+ assertEquals(expectedAbsChildQueueCapacity.get(nodeLabel),
+ autoCreatedQueueManagementPolicy.getAbsoluteActivatedChildQueueCapacity(nodeLabel), EPSILON);
+ }
+
+ //submit user_3 app. This cant be allocated since there is no capacity
+ // in NO_LABEL, SSD but can be in GPU label
submitApp(mockRM, parentQueue, USER3, USER3, 4, 1);
final CSQueue user3LeafQueue = cs.getQueue(USER3);
validateCapacities((AutoCreatedLeafQueue) user3LeafQueue, 0.0f, 0.0f,
1.0f, 1.0f);
-
- assertEquals(autoCreatedQueueManagementPolicy
- .getAbsoluteActivatedChildQueueCapacity(), 0.2f, EPSILON);
-
- //deactivate USER2 queue
+ validateCapacitiesByLabel((ManagedParentQueue) parentQueue,
+ (AutoCreatedLeafQueue)
+ user3LeafQueue, NODEL_LABEL_GPU);
+
+ assertEquals(0.2f, autoCreatedQueueManagementPolicy
+ .getAbsoluteActivatedChildQueueCapacity(NO_LABEL), EPSILON);
+ assertEquals(0.9f, autoCreatedQueueManagementPolicy.getAbsoluteActivatedChildQueueCapacity(NODEL_LABEL_GPU),
+ EPSILON);
+
+ //Verify that AMs can be allocated
+ //Node 1 has SSD and default node label expression on C is SSD.
+ //This validates that the default node label expression with SSD is set
+ // on the AM attempt
+ // and app attempt reaches ALLOCATED state for a dynamic queue 'USER1'
+ mockRM.launchAM(mockRM.getRMContext().getRMApps().get(user1AppId),
+ mockRM, nm1);
+
+// //deactivate USER2 queue
cs.killAllAppsInQueue(USER2);
mockRM.waitForState(user2AppId, RMAppState.KILLED);
- //Verify if USER_2 can be deactivated since it has no pending appsA
+ //Verify if USER_2 can be deactivated since it has no pending apps
List<QueueManagementChange> queueManagementChanges =
autoCreatedQueueManagementPolicy.computeQueueManagementChanges();
ManagedParentQueue managedParentQueue = (ManagedParentQueue) parentQueue;
- managedParentQueue.validateAndApplyQueueManagementChanges(
- queueManagementChanges);
+ managedParentQueue.
+ validateAndApplyQueueManagementChanges(queueManagementChanges);
- validateDeactivatedQueueEntitlement(parentQueue, USER2, 0.2f,
- queueManagementChanges);
+ validateDeactivatedQueueEntitlement(parentQueue, USER2,
+ expectedAbsChildQueueCapacity, queueManagementChanges);
- //USER_3 should now get activated
- validateActivatedQueueEntitlement(parentQueue, USER3, 0.2f,
- queueManagementChanges);
+ //USER_3 should now get activated for SSD, NO_LABEL
+ Set<String> expectedNodeLabelsUpdated = new HashSet<>();
+ expectedNodeLabelsUpdated.add(NO_LABEL);
+ expectedNodeLabelsUpdated.add(NODEL_LABEL_SSD);
+
+ validateActivatedQueueEntitlement(parentQueue, USER3,
+ expectedAbsChildQueueCapacity , queueManagementChanges, expectedNodeLabelsUpdated);
} finally {
cleanupQueue(USER1);
@@ -565,13 +620,18 @@ public class TestCapacitySchedulerAutoQueueCreation
//submit app1 as USER1
submitApp(newMockRM, parentQueue, USER1, USER1, 1, 1);
- validateInitialQueueEntitlement(newCS, parentQueue, USER1, 0.1f, accessibleNodeLabelsOnC);
- CSQueue user1LeafQueue = newCS.getQueue(USER1);
+ Map<String, Float> expectedAbsChildQueueCapacity =
+ populateExpectedAbsCapacityByLabelForParentQueue(1);
+ validateInitialQueueEntitlement(newCS, parentQueue, USER1,
+ expectedAbsChildQueueCapacity, accessibleNodeLabelsOnC);
//submit another app2 as USER2
- submitApp(newMockRM, parentQueue, USER2, USER2, 2, 1);
- validateInitialQueueEntitlement(newCS, parentQueue, USER2, 0.2f, accessibleNodeLabelsOnC);
- CSQueue user2LeafQueue = newCS.getQueue(USER2);
+ ApplicationId user2AppId = submitApp(newMockRM, parentQueue, USER2, USER2, 2,
+ 1);
+ expectedAbsChildQueueCapacity =
+ populateExpectedAbsCapacityByLabelForParentQueue(2);
+ validateInitialQueueEntitlement(newCS, parentQueue, USER2,
+ expectedAbsChildQueueCapacity, accessibleNodeLabelsOnC);
//validate total activated abs capacity remains the same
GuaranteedOrZeroCapacityOverTimePolicy autoCreatedQueueManagementPolicy =
@@ -579,7 +639,7 @@ public class TestCapacitySchedulerAutoQueueCreation
parentQueue)
.getAutoCreatedQueueManagementPolicy();
assertEquals(autoCreatedQueueManagementPolicy
- .getAbsoluteActivatedChildQueueCapacity(), 0.2f, EPSILON);
+ .getAbsoluteActivatedChildQueueCapacity(NO_LABEL), 0.2f, EPSILON);
//submit user_3 app. This cant be scheduled since there is no capacity
submitApp(newMockRM, parentQueue, USER3, USER3, 3, 1);
@@ -588,7 +648,7 @@ public class TestCapacitySchedulerAutoQueueCreation
1.0f, 1.0f);
assertEquals(autoCreatedQueueManagementPolicy
- .getAbsoluteActivatedChildQueueCapacity(), 0.2f, EPSILON);
+ .getAbsoluteActivatedChildQueueCapacity(NO_LABEL), 0.2f, EPSILON);
// add new NM.
newMockRM.registerNode("127.0.0.3:1234", 125 * GB, 20);
@@ -596,31 +656,33 @@ public class TestCapacitySchedulerAutoQueueCreation
// There will be change in effective resource when nodes are added
// since we deal with percentages
- Resource MAX_RES = Resources.addTo(TEMPLATE_MAX_RES,
- Resources.createResource(125 * GB, 20));
+ Resource MAX_RES = Resources.addTo(TEMPLATE_MAX_RES, Resources.createResource(125 *
+ GB, 20));
Resource MIN_RES = Resources.createResource(14438, 6);
Assert.assertEquals("Effective Min resource for USER3 is not correct",
- Resources.none(),
- user3LeafQueue.getQueueResourceQuotas().getEffectiveMinResource());
+ Resources.none(), user3LeafQueue.getQueueResourceQuotas()
+ .getEffectiveMinResource());
Assert.assertEquals("Effective Max resource for USER3 is not correct",
- MAX_RES,
- user3LeafQueue.getQueueResourceQuotas().getEffectiveMaxResource());
+ MAX_RES, user3LeafQueue
+ .getQueueResourceQuotas()
+ .getEffectiveMaxResource());
+ CSQueue user1LeafQueue = newCS.getQueue(USER1);
+ CSQueue user2LeafQueue = newCS.getQueue(USER2);
Assert.assertEquals("Effective Min resource for USER2 is not correct",
- MIN_RES,
- user1LeafQueue.getQueueResourceQuotas().getEffectiveMinResource());
+ MIN_RES, user1LeafQueue.getQueueResourceQuotas()
+ .getEffectiveMinResource());
Assert.assertEquals("Effective Max resource for USER2 is not correct",
- MAX_RES,
- user1LeafQueue.getQueueResourceQuotas().getEffectiveMaxResource());
+ MAX_RES, user1LeafQueue.getQueueResourceQuotas().getEffectiveMaxResource());
Assert.assertEquals("Effective Min resource for USER1 is not correct",
- MIN_RES,
- user2LeafQueue.getQueueResourceQuotas().getEffectiveMinResource());
+ MIN_RES, user2LeafQueue.getQueueResourceQuotas()
+ .getEffectiveMinResource());
Assert.assertEquals("Effective Max resource for USER1 is not correct",
- MAX_RES,
- user2LeafQueue.getQueueResourceQuotas().getEffectiveMaxResource());
+ MAX_RES, user2LeafQueue.getQueueResourceQuotas()
+ .getEffectiveMaxResource());
// unregister one NM.
newMockRM.unRegisterNode(nm3);
@@ -629,11 +691,11 @@ public class TestCapacitySchedulerAutoQueueCreation
// After loosing one NM, resources will reduce
Assert.assertEquals("Effective Min resource for USER2 is not correct",
- MIN_RES_UPDATED,
- user1LeafQueue.getQueueResourceQuotas().getEffectiveMinResource());
+ MIN_RES_UPDATED, user1LeafQueue.getQueueResourceQuotas().getEffectiveMinResource
+ ());
Assert.assertEquals("Effective Max resource for USER2 is not correct",
- MAX_RES_UPDATED,
- user2LeafQueue.getQueueResourceQuotas().getEffectiveMaxResource());
+ MAX_RES_UPDATED, user2LeafQueue.getQueueResourceQuotas()
+ .getEffectiveMaxResource());
} finally {
cleanupQueue(USER1);
@@ -647,25 +709,6 @@ public class TestCapacitySchedulerAutoQueueCreation
}
@Test
- public void testAutoCreatedQueueInheritsNodeLabels() throws Exception {
-
- try {
- String host = "127.0.0.1";
- RMNode node = MockNodes.newNodeInfo(0, MockNodes.newResource(4 * GB), 1,
- host);
- cs.handle(new NodeAddedSchedulerEvent(node));
-
- CSQueue parentQueue = cs.getQueue(PARENT_QUEUE);
-
- submitApp(USER1, USER1, NODEL_LABEL_GPU);
- //submit app1 as USER1
- validateInitialQueueEntitlement(parentQueue, USER1, 0.1f, accessibleNodeLabelsOnC);
- } finally {
- cleanupQueue(USER1);
- }
- }
-
- @Test
public void testReinitializeQueuesWithAutoCreatedLeafQueues()
throws Exception {
@@ -679,12 +722,20 @@ public class TestCapacitySchedulerAutoQueueCreation
//submit app1 as USER1
submitApp(newMockRM, parentQueue, USER1, USER1, 1, 1);
- validateInitialQueueEntitlement(newCS, parentQueue, USER1, 0.1f, accessibleNodeLabelsOnC);
+
+ Map<String, Float> expectedChildQueueAbsCapacity =
+ populateExpectedAbsCapacityByLabelForParentQueue(1);
+ validateInitialQueueEntitlement(newCS, parentQueue, USER1,
+ expectedChildQueueAbsCapacity, accessibleNodeLabelsOnC);
//submit another app2 as USER2
- ApplicationId user2AppId = submitApp(newMockRM, parentQueue, USER2, USER2,
- 2, 1);
- validateInitialQueueEntitlement(newCS, parentQueue, USER2, 0.2f, accessibleNodeLabelsOnC);
+ ApplicationId user2AppId = submitApp(newMockRM, parentQueue, USER2,
+ USER2, 2,
+ 1);
+ expectedChildQueueAbsCapacity =
+ populateExpectedAbsCapacityByLabelForParentQueue(2);
+ validateInitialQueueEntitlement(newCS, parentQueue, USER2,
+ expectedChildQueueAbsCapacity, accessibleNodeLabelsOnC);
//update parent queue capacity
conf.setCapacity(C, 30f);
@@ -709,19 +760,27 @@ public class TestCapacitySchedulerAutoQueueCreation
//submit app1 as USER3
submitApp(newMockRM, parentQueue, USER3, USER3, 3, 1);
- validateInitialQueueEntitlement(newCS, parentQueue, USER3, 0.27f, accessibleNodeLabelsOnC);
- AutoCreatedLeafQueue user3Queue = (AutoCreatedLeafQueue) newCS.getQueue(
- USER1);
- validateCapacities(user3Queue, 0.3f, 0.09f, 0.4f, 0.2f);
+ AutoCreatedLeafQueue user3Queue =
+ (AutoCreatedLeafQueue) newCS.getQueue(USER1);
+ validateCapacities(user3Queue, 0.3f, 0.09f, 0.4f,0.2f);
+
validateUserAndAppLimits(user3Queue, 900, 900);
//submit app1 as USER1 - is already activated. there should be no diff
// in capacities
submitApp(newMockRM, parentQueue, USER3, USER3, 4, 2);
- validateInitialQueueEntitlement(newCS, parentQueue, USER3, 0.27f, accessibleNodeLabelsOnC);
- validateCapacities(user3Queue, 0.3f, 0.09f, 0.4f, 0.2f);
+
+ validateCapacities(user3Queue, 0.3f, 0.09f, 0.4f,0.2f);
+
validateUserAndAppLimits(user3Queue, 900, 900);
+ GuaranteedOrZeroCapacityOverTimePolicy autoCreatedQueueManagementPolicy =
+ (GuaranteedOrZeroCapacityOverTimePolicy) ((ManagedParentQueue)
+ parentQueue)
+ .getAutoCreatedQueueManagementPolicy();
+ assertEquals(0.27f, autoCreatedQueueManagementPolicy
+ .getAbsoluteActivatedChildQueueCapacity
+ (NO_LABEL), EPSILON);
} finally {
cleanupQueue(USER1);
cleanupQueue(USER2);
http://git-wip-us.apache.org/repos/asf/hadoop/blob/821b0de4/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestQueueManagementDynamicEditPolicy.java
----------------------------------------------------------------------
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/TestQueueManagementDynamicEditPolicy.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/TestQueueManagementDynamicEditPolicy.java
index 5ff249f..66b488d 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/TestQueueManagementDynamicEditPolicy.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/TestQueueManagementDynamicEditPolicy.java
@@ -24,7 +24,10 @@ import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity
import org.junit.Before;
import org.junit.Test;
+import java.util.Map;
+import static org.apache.hadoop.yarn.nodelabels.CommonNodeLabelsManager
+ .NO_LABEL;
import static org.apache.hadoop.yarn.server.resourcemanager.scheduler
.capacity.CSQueueUtils.EPSILON;
import static org.junit.Assert.assertEquals;
@@ -54,21 +57,27 @@ public class TestQueueManagementDynamicEditPolicy extends
parentQueue)
.getAutoCreatedQueueManagementPolicy();
assertEquals(0f, autoCreatedQueueManagementPolicy
- .getAbsoluteActivatedChildQueueCapacity(), EPSILON);
+ .getAbsoluteActivatedChildQueueCapacity(NO_LABEL), EPSILON);
//submit app1 as USER1
ApplicationId user1AppId = submitApp(mockRM, parentQueue, USER1, USER1, 1,
1);
- validateInitialQueueEntitlement(parentQueue, USER1, 0.1f, accessibleNodeLabelsOnC);
+ Map<String, Float> expectedAbsChildQueueCapacity =
+ populateExpectedAbsCapacityByLabelForParentQueue(1);
+ validateInitialQueueEntitlement(parentQueue, USER1,
+ expectedAbsChildQueueCapacity, accessibleNodeLabelsOnC);
//submit another app2 as USER2
ApplicationId user2AppId = submitApp(mockRM, parentQueue, USER2, USER2, 2,
1);
- validateInitialQueueEntitlement(parentQueue, USER2, 0.2f, accessibleNodeLabelsOnC);
+ expectedAbsChildQueueCapacity =
+ populateExpectedAbsCapacityByLabelForParentQueue(2);
+ validateInitialQueueEntitlement(parentQueue, USER2,
+ expectedAbsChildQueueCapacity, accessibleNodeLabelsOnC);
//validate total activated abs capacity
assertEquals(0.2f, autoCreatedQueueManagementPolicy
- .getAbsoluteActivatedChildQueueCapacity(), EPSILON);
+ .getAbsoluteActivatedChildQueueCapacity(NO_LABEL), EPSILON);
//submit user_3 app. This cant be scheduled since there is no capacity
submitApp(mockRM, parentQueue, USER3, USER3, 3, 1);
@@ -77,7 +86,7 @@ public class TestQueueManagementDynamicEditPolicy extends
1.0f, 1.0f);
assertEquals(autoCreatedQueueManagementPolicy
- .getAbsoluteActivatedChildQueueCapacity(), 0.2f, EPSILON);
+ .getAbsoluteActivatedChildQueueCapacity(NO_LABEL), 0.2f, EPSILON);
//deactivate USER2 queue
cs.killAllAppsInQueue(USER2);
@@ -88,8 +97,8 @@ public class TestQueueManagementDynamicEditPolicy extends
mockRM.waitForState(user1AppId, RMAppState.KILLED);
policy.editSchedule();
-
- waitForPolicyState(0.1f, autoCreatedQueueManagementPolicy, 1000);
+ waitForPolicyState(0.1f, autoCreatedQueueManagementPolicy, NO_LABEL,
+ 1000);
validateCapacities((AutoCreatedLeafQueue) user3LeafQueue, 0.5f, 0.1f,
1.0f, 1.0f);
@@ -105,13 +114,12 @@ public class TestQueueManagementDynamicEditPolicy extends
}
private void waitForPolicyState(float expectedVal,
- GuaranteedOrZeroCapacityOverTimePolicy queueManagementPolicy, int
- timesec) throws
- InterruptedException {
+ GuaranteedOrZeroCapacityOverTimePolicy queueManagementPolicy, String
+ nodeLabel, int timesec) throws InterruptedException {
long start = System.currentTimeMillis();
while (System.currentTimeMillis() - start < timesec * 1000) {
if (Float.compare(expectedVal, queueManagementPolicy
- .getAbsoluteActivatedChildQueueCapacity()) != 0) {
+ .getAbsoluteActivatedChildQueueCapacity(nodeLabel)) > EPSILON) {
Thread.sleep(100);
} else {
break;
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org