YARN-1933. Fixed test issues with TestAMRestart and TestNodeHealthService. Contributed by Jian He.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1587104 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Vinod Kumar Vavilapalli 2014-04-13 21:51:38 +00:00
parent 6351ee2a78
commit c6b70f4760
4 changed files with 29 additions and 10 deletions

View File

@ -118,6 +118,9 @@ Release 2.4.1 - UNRELEASED
YARN-1907. TestRMApplicationHistoryWriter#testRMWritingMassiveHistory YARN-1907. TestRMApplicationHistoryWriter#testRMWritingMassiveHistory
intermittently fails. (Mit Desai via kihwal) intermittently fails. (Mit Desai via kihwal)
YARN-1933. Fixed test issues with TestAMRestart and TestNodeHealthService.
(Jian He via vinodkv)
Release 2.4.0 - 2014-04-07 Release 2.4.0 - 2014-04-07
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -79,10 +79,16 @@ private Configuration getConfForNodeHealthScript() {
private void writeNodeHealthScriptFile(String scriptStr, boolean setExecutable) private void writeNodeHealthScriptFile(String scriptStr, boolean setExecutable)
throws IOException { throws IOException {
PrintWriter pw = new PrintWriter(new FileOutputStream(nodeHealthscriptFile)); PrintWriter pw = null;
try {
FileUtil.setWritable(nodeHealthscriptFile, true);
FileUtil.setReadable(nodeHealthscriptFile, true);
pw = new PrintWriter(new FileOutputStream(nodeHealthscriptFile));
pw.println(scriptStr); pw.println(scriptStr);
pw.flush(); pw.flush();
} finally {
pw.close(); pw.close();
}
FileUtil.setExecutable(nodeHealthscriptFile, setExecutable); FileUtil.setExecutable(nodeHealthscriptFile, setExecutable);
} }

View File

@ -977,7 +977,7 @@ T runWithRetries() throws Exception {
Thread.sleep(zkRetryInterval); Thread.sleep(zkRetryInterval);
continue; continue;
} }
LOG.error("Error while doing ZK operation.", ke); LOG.debug("Error while doing ZK operation.", ke);
throw ke; throw ke;
} }
} }

View File

@ -180,7 +180,6 @@ public void testAMRestartWithExistingContainers() throws Exception {
// complete container by sending the container complete event which has earlier // complete container by sending the container complete event which has earlier
// attempt's attemptId // attempt's attemptId
nm1.nodeHeartbeat(am1.getApplicationAttemptId(), 3, ContainerState.COMPLETE); nm1.nodeHeartbeat(am1.getApplicationAttemptId(), 3, ContainerState.COMPLETE);
rm1.waitForState(nm1, containerId3, RMContainerState.COMPLETED);
// Even though the completed container containerId3 event was sent to the // Even though the completed container containerId3 event was sent to the
// earlier failed attempt, new RMAppAttempt can also capture this container // earlier failed attempt, new RMAppAttempt can also capture this container
@ -189,7 +188,7 @@ public void testAMRestartWithExistingContainers() throws Exception {
RMAppAttempt newAttempt = RMAppAttempt newAttempt =
app1.getRMAppAttempt(am2.getApplicationAttemptId()); app1.getRMAppAttempt(am2.getApplicationAttemptId());
// 4 containers finished, acquired/allocated/reserved/completed. // 4 containers finished, acquired/allocated/reserved/completed.
Assert.assertEquals(4, newAttempt.getJustFinishedContainers().size()); waitForContainersToFinish(4, newAttempt);
boolean container3Exists = false, container4Exists = false, container5Exists = boolean container3Exists = false, container4Exists = false, container5Exists =
false, container6Exists = false; false, container6Exists = false;
for(ContainerStatus status : newAttempt.getJustFinishedContainers()) { for(ContainerStatus status : newAttempt.getJustFinishedContainers()) {
@ -230,11 +229,22 @@ public void testAMRestartWithExistingContainers() throws Exception {
Assert.assertFalse(schedulerNewAttempt.getLiveContainers().contains( Assert.assertFalse(schedulerNewAttempt.getLiveContainers().contains(
containerId2)); containerId2));
// all 4 normal containers finished. // all 4 normal containers finished.
Assert.assertEquals(5, newAttempt.getJustFinishedContainers().size()); System.out.println("New attempt's just finished containers: "
+ newAttempt.getJustFinishedContainers());
waitForContainersToFinish(5, newAttempt);
rm1.stop(); rm1.stop();
} }
private void waitForContainersToFinish(int expectedNum, RMAppAttempt attempt)
throws InterruptedException {
int count = 0;
while (attempt.getJustFinishedContainers().size() != expectedNum
&& count < 500) {
Thread.sleep(100);
count++;
}
}
@Test @Test
public void testNMTokensRebindOnAMRestart() throws Exception { public void testNMTokensRebindOnAMRestart() throws Exception {
YarnConfiguration conf = new YarnConfiguration(); YarnConfiguration conf = new YarnConfiguration();