diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestContainerResizing.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestContainerResizing.java index 541539d892f..fdc175d9c7d 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestContainerResizing.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestContainerResizing.java @@ -18,14 +18,17 @@ package org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity; +import com.google.common.base.Supplier; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; +import java.util.concurrent.TimeoutException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.test.GenericTestUtils; import org.apache.hadoop.yarn.api.protocolrecords.AllocateResponse; import org.apache.hadoop.yarn.api.records.ApplicationAttemptId; import org.apache.hadoop.yarn.api.records.Container; @@ -206,7 +209,8 @@ protected Dispatcher createDispatcher() { // Wait for scheduler to finish processing kill events.. dispatcher.waitForEventThreadToWait(); - checkUsedResource(rm1, "default", 1 * GB, null); + waitForUsedResources(rm1, "default", 1 * GB, null); + Assert.assertEquals(1 * GB, app.getAppAttemptResourceUsage().getUsed().getMemorySize()); @@ -1005,6 +1009,21 @@ private void checkUsedResource(MockRM rm, String queueName, int memory, .getMemorySize()); } + private void waitForUsedResources(final MockRM rm, final String queueName, + final int memory, final String label) + throws TimeoutException, InterruptedException { + final CapacityScheduler cs = (CapacityScheduler) rm.getResourceScheduler(); + final CSQueue queue = cs.getQueue(queueName); + GenericTestUtils.waitFor(new Supplier() { + @Override + public Boolean get() { + return memory == queue.getQueueResourceUsage() + .getUsed(label == null ? RMNodeLabelsManager.NO_LABEL : label) + .getMemorySize(); + } + }, 10, 5000); + } + private void verifyContainerIncreased(AllocateResponse response, ContainerId containerId, int mem) { List increasedContainers =