diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestContainerResourceUsage.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestContainerResourceUsage.java index 74c70d8..866f4a0 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestContainerResourceUsage.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestContainerResourceUsage.java @@ -50,6 +50,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.mortbay.log.Log; public class TestContainerResourceUsage { @@ -310,6 +311,7 @@ private void amRestartTests(boolean keepRunningContainers) amContainerId.getContainerId(), ContainerState.COMPLETE); rm.waitForState(am0.getApplicationAttemptId(), RMAppAttemptState.FAILED); + rm.drainEvents(); long memorySeconds = 0; long vcoreSeconds = 0; @@ -383,6 +385,9 @@ private void amRestartTests(boolean keepRunningContainers) MockRM.finishAMAndVerifyAppState(app, rm, nm, am1); + rm.drainEvents(); + + waitforContainerState(rmContainers, ContainerState.COMPLETE, 30); // Calculate container usage metrics for second attempt. for (RMContainer c : rmContainers) { AggregateAppResourceUsage ru = calculateContainerResourceMetrics(c); @@ -401,6 +406,23 @@ private void amRestartTests(boolean keepRunningContainers) return; } + private void waitforContainerState(Collection rmContainers, + ContainerState complete, int tick) throws InterruptedException { + while (tick > 0) { + int counter = 0; + for (RMContainer rmcont : rmContainers) { + if (rmcont.getContainerState() == ContainerState.COMPLETE) { + counter++; + } + } + if (rmContainers.size() == counter) { + return; + } + Thread.sleep(1000); + tick--; + } + } + private AggregateAppResourceUsage calculateContainerResourceMetrics( RMContainer rmContainer) { Resource resource = rmContainer.getContainer().getResource();