Browse Source

YARN-2785. Fixed intermittent TestContainerResourceUsage failure. Contributed by Varun Vasudev.

(cherry picked from commit 27715ec63bd77f1d31ee922b7daba85071da54ca)
Zhijie Shen 10 years ago
parent
commit
3e41828639

+ 3 - 0
hadoop-yarn-project/CHANGES.txt

@@ -761,6 +761,9 @@ Release 2.6.0 - UNRELEASED
     beyond HFDS delegation-token expiry even when RM is a proxy-user (YARN-2704).
     (Jian He via vinodkv)
 
+    YARN-2785. Fixed intermittent TestContainerResourceUsage failure. (Varun Vasudev
+    via zjshen)
+
 Release 2.5.1 - 2014-09-05
 
   INCOMPATIBLE CHANGES

+ 16 - 5
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestContainerResourceUsage.java

@@ -70,7 +70,7 @@ public class TestContainerResourceUsage {
   public void tearDown() {
   }
 
-  @Test (timeout = 60000)
+  @Test (timeout = 120000)
   public void testUsageWithOneAttemptAndOneContainer() throws Exception {
     MockRM rm = new MockRM(conf);
     rm.start();
@@ -102,7 +102,12 @@ public class TestContainerResourceUsage {
            .getRMContainer(attempt0.getMasterContainer().getId());
 
     // Allow metrics to accumulate.
-    Thread.sleep(1000);
+    int sleepInterval = 1000;
+    int cumulativeSleepTime = 0;
+    while (rmAppMetrics.getMemorySeconds() <= 0 && cumulativeSleepTime < 5000) {
+      Thread.sleep(sleepInterval);
+      cumulativeSleepTime += sleepInterval;
+    }
 
     rmAppMetrics = app0.getRMAppMetrics();
     Assert.assertTrue(
@@ -127,7 +132,7 @@ public class TestContainerResourceUsage {
     rm.stop();
   }
 
-  @Test (timeout = 60000)
+  @Test (timeout = 120000)
   public void testUsageWithMultipleContainersAndRMRestart() throws Exception {
     // Set max attempts to 1 so that when the first attempt fails, the app
     // won't try to start a new one.
@@ -180,8 +185,14 @@ public class TestContainerResourceUsage {
             .getSchedulerAppInfo(attempt0.getAppAttemptId())
               .getLiveContainers();
 
-    // Give the metrics time to accumulate.
-    Thread.sleep(1000);
+    // Allow metrics to accumulate.
+    int sleepInterval = 1000;
+    int cumulativeSleepTime = 0;
+    while (app0.getRMAppMetrics().getMemorySeconds() <= 0
+        && cumulativeSleepTime < 5000) {
+      Thread.sleep(sleepInterval);
+      cumulativeSleepTime += sleepInterval;
+    }
 
     // Stop all non-AM containers
     for (Container c : conts) {