YARN-4556. TestFifoScheduler.testResourceOverCommit fails. Contributed by Akihiro Suda / Eric Badger

This commit is contained in:
Eric Payne 2016-04-26 16:14:07 +00:00
parent 076215024b
commit 2ec33c4e3c
2 changed files with 25 additions and 4 deletions

View File

@ -528,6 +528,7 @@ public class TestFifoScheduler {
@Test @Test
public void testResourceOverCommit() throws Exception { public void testResourceOverCommit() throws Exception {
int waitCount;
MockRM rm = new MockRM(conf); MockRM rm = new MockRM(conf);
rm.start(); rm.start();
@ -580,9 +581,18 @@ public class TestFifoScheduler {
UpdateNodeResourceRequest.newInstance(nodeResourceMap); UpdateNodeResourceRequest.newInstance(nodeResourceMap);
AdminService as = rm.adminService; AdminService as = rm.adminService;
as.updateNodeResource(request); as.updateNodeResource(request);
waitCount = 0;
while (waitCount++ != 20) {
report_nm1 = rm.getResourceScheduler().getNodeReport(nm1.getNodeId());
if (report_nm1.getAvailableResource().getMemory() != 0) {
break;
}
LOG.info("Waiting for RMNodeResourceUpdateEvent to be handled... Tried "
+ waitCount + " times already..");
Thread.sleep(1000);
}
// Now, the used resource is still 4 GB, and available resource is minus value. // Now, the used resource is still 4 GB, and available resource is minus value.
report_nm1 = rm.getResourceScheduler().getNodeReport(nm1.getNodeId());
Assert.assertEquals(4 * GB, report_nm1.getUsedResource().getMemory()); Assert.assertEquals(4 * GB, report_nm1.getUsedResource().getMemory());
Assert.assertEquals(-2 * GB, report_nm1.getAvailableResource().getMemory()); Assert.assertEquals(-2 * GB, report_nm1.getAvailableResource().getMemory());
@ -590,7 +600,7 @@ public class TestFifoScheduler {
ContainerStatus containerStatus = BuilderUtils.newContainerStatus( ContainerStatus containerStatus = BuilderUtils.newContainerStatus(
c1.getId(), ContainerState.COMPLETE, "", 0); c1.getId(), ContainerState.COMPLETE, "", 0);
nm1.containerStatus(containerStatus); nm1.containerStatus(containerStatus);
int waitCount = 0; waitCount = 0;
while (attempt1.getJustFinishedContainers().size() < 1 while (attempt1.getJustFinishedContainers().size() < 1
&& waitCount++ != 20) { && waitCount++ != 20) {
LOG.info("Waiting for containers to be finished for app 1... Tried " LOG.info("Waiting for containers to be finished for app 1... Tried "

View File

@ -675,6 +675,7 @@ public class TestCapacityScheduler {
@Test @Test
public void testResourceOverCommit() throws Exception { public void testResourceOverCommit() throws Exception {
int waitCount;
Configuration conf = new Configuration(); Configuration conf = new Configuration();
conf.setClass(YarnConfiguration.RM_SCHEDULER, CapacityScheduler.class, conf.setClass(YarnConfiguration.RM_SCHEDULER, CapacityScheduler.class,
ResourceScheduler.class); ResourceScheduler.class);
@ -730,8 +731,18 @@ public class TestCapacityScheduler {
AdminService as = ((MockRM)rm).getAdminService(); AdminService as = ((MockRM)rm).getAdminService();
as.updateNodeResource(request); as.updateNodeResource(request);
waitCount = 0;
while (waitCount++ != 20) {
report_nm1 = rm.getResourceScheduler().getNodeReport(nm1.getNodeId());
if (report_nm1.getAvailableResource().getMemory() != 0) {
break;
}
LOG.info("Waiting for RMNodeResourceUpdateEvent to be handled... Tried "
+ waitCount + " times already..");
Thread.sleep(1000);
}
// Now, the used resource is still 4 GB, and available resource is minus value. // Now, the used resource is still 4 GB, and available resource is minus value.
report_nm1 = rm.getResourceScheduler().getNodeReport(nm1.getNodeId());
Assert.assertEquals(4 * GB, report_nm1.getUsedResource().getMemory()); Assert.assertEquals(4 * GB, report_nm1.getUsedResource().getMemory());
Assert.assertEquals(-2 * GB, report_nm1.getAvailableResource().getMemory()); Assert.assertEquals(-2 * GB, report_nm1.getAvailableResource().getMemory());
@ -739,7 +750,7 @@ public class TestCapacityScheduler {
ContainerStatus containerStatus = BuilderUtils.newContainerStatus( ContainerStatus containerStatus = BuilderUtils.newContainerStatus(
c1.getId(), ContainerState.COMPLETE, "", 0); c1.getId(), ContainerState.COMPLETE, "", 0);
nm1.containerStatus(containerStatus); nm1.containerStatus(containerStatus);
int waitCount = 0; waitCount = 0;
while (attempt1.getJustFinishedContainers().size() < 1 while (attempt1.getJustFinishedContainers().size() < 1
&& waitCount++ != 20) { && waitCount++ != 20) {
LOG.info("Waiting for containers to be finished for app 1... Tried " LOG.info("Waiting for containers to be finished for app 1... Tried "