YARN-5994. TestCapacityScheduler.testAMLimitUsage fails intermittently. Contributed by Eric Badger

(cherry picked from commit 157a9f3104)
This commit is contained in:
Eric Payne 2017-04-14 10:53:09 -05:00
parent ecaedca5c4
commit d27f74d915
1 changed files with 14 additions and 3 deletions

View File

@ -46,6 +46,7 @@
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.security.token.Token;
import org.apache.hadoop.security.token.TokenIdentifier;
import org.apache.hadoop.test.GenericTestUtils;
import org.apache.hadoop.yarn.LocalConfigurationProvider;
import org.apache.hadoop.yarn.api.ApplicationMasterProtocol;
import org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest;
@ -150,6 +151,7 @@
import org.junit.Test;
import org.mockito.Mockito;
import com.google.common.base.Supplier;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
@ -3159,7 +3161,7 @@ public void testDefaultNodeLabelExpressionQueueConfig() throws Exception {
Assert.assertEquals(queueInfoB.getDefaultNodeLabelExpression(), "y");
}
@Test(timeout = 30000)
@Test(timeout = 60000)
public void testAMLimitUsage() throws Exception {
CapacitySchedulerConfiguration config =
@ -3287,11 +3289,12 @@ protected RMNodeLabelsManager createNodeLabelManager() {
private void verifyAMLimitForLeafQueue(CapacitySchedulerConfiguration config)
throws Exception {
MockRM rm = setUpMove(config);
rm.registerNode("127.0.0.1:1234", 2 * GB);
final int nodeMemory = 4 * GB;
rm.registerNode("127.0.0.1:1234", nodeMemory);
String queueName = "a1";
String userName = "user_0";
ResourceScheduler scheduler = rm.getRMContext().getScheduler();
final ResourceScheduler scheduler = rm.getRMContext().getScheduler();
LeafQueue queueA =
(LeafQueue) ((CapacityScheduler) scheduler).getQueue(queueName);
Resource amResourceLimit = queueA.getAMResourceLimit();
@ -3303,6 +3306,14 @@ private void verifyAMLimitForLeafQueue(CapacitySchedulerConfiguration config)
Resource.newInstance(amResourceLimit.getMemorySize() + 2048,
amResourceLimit.getVirtualCores() + 1);
// Wait for the scheduler to be updated with new node capacity
GenericTestUtils.waitFor(new Supplier<Boolean>() {
@Override
public Boolean get() {
return scheduler.getMaximumResourceCapability().getMemorySize() == nodeMemory;
}
}, 100, 60 * 1000);
rm.submitApp(amResource1, "app-1", userName, null, queueName);
rm.submitApp(amResource2, "app-2", userName, null, queueName);