You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by be...@apache.org on 2015/12/09 11:59:24 UTC

mesos git commit: Fixed flaky MemoryPressureMesosTests.

Repository: mesos
Updated Branches:
  refs/heads/master a92e7b872 -> 6093addd8


Fixed flaky MemoryPressureMesosTests.

Review: https://reviews.apache.org/r/40849


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/6093addd
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/6093addd
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/6093addd

Branch: refs/heads/master
Commit: 6093addd85267a2b8a95d694b7b1ed125d087b1e
Parents: a92e7b8
Author: Joseph Wu <jo...@mesosphere.io>
Authored: Wed Dec 9 11:57:40 2015 +0100
Committer: Bernd Mathiske <be...@mesosphere.io>
Committed: Wed Dec 9 11:57:40 2015 +0100

----------------------------------------------------------------------
 .../containerizer/memory_pressure_tests.cpp     | 51 +++++++++++++++++---
 1 file changed, 43 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/6093addd/src/tests/containerizer/memory_pressure_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/memory_pressure_tests.cpp b/src/tests/containerizer/memory_pressure_tests.cpp
index e18b971..ed440fc 100644
--- a/src/tests/containerizer/memory_pressure_tests.cpp
+++ b/src/tests/containerizer/memory_pressure_tests.cpp
@@ -19,6 +19,7 @@
 #include <mesos/resources.hpp>
 #include <mesos/scheduler.hpp>
 
+#include <process/clock.hpp>
 #include <process/gtest.hpp>
 
 #include <stout/gtest.hpp>
@@ -130,16 +131,16 @@ TEST_F(MemoryPressureMesosTest, CGROUPS_ROOT_Statistics)
 
   ContainerID containerId = *(containers.get().begin());
 
+  // Wait a while for some memory pressure events to occur.
   Duration waited = Duration::zero();
   do {
     Future<ResourceStatistics> usage = containerizer.get()->usage(containerId);
     AWAIT_READY(usage);
 
     if (usage.get().mem_low_pressure_counter() > 0) {
-      EXPECT_GE(usage.get().mem_low_pressure_counter(),
-                usage.get().mem_medium_pressure_counter());
-      EXPECT_GE(usage.get().mem_medium_pressure_counter(),
-                usage.get().mem_critical_pressure_counter());
+      // We will check the correctness of the memory pressure counters
+      // later, because the memory-hammering task is still active
+      // and potentially incrementing these counters.
       break;
     }
 
@@ -149,6 +150,23 @@ TEST_F(MemoryPressureMesosTest, CGROUPS_ROOT_Statistics)
 
   EXPECT_LE(waited, Seconds(5));
 
+  // Stop the memory-hammering task.
+  driver.killTask(task.task_id());
+
+  // Process any queued up events through before proceeding.
+  process::Clock::pause();
+  process::Clock::settle();
+  process::Clock::resume();
+
+  // Now check the correctness of the memory pressure counters.
+  Future<ResourceStatistics> usage = containerizer.get()->usage(containerId);
+  AWAIT_READY(usage);
+
+  EXPECT_GE(usage.get().mem_low_pressure_counter(),
+            usage.get().mem_medium_pressure_counter());
+  EXPECT_GE(usage.get().mem_medium_pressure_counter(),
+            usage.get().mem_critical_pressure_counter());
+
   driver.stop();
   driver.join();
 
@@ -259,16 +277,16 @@ TEST_F(MemoryPressureMesosTest, CGROUPS_ROOT_SlaveRecovery)
 
   ContainerID containerId = *(containers.get().begin());
 
+  // Wait a while for some memory pressure events to occur.
   Duration waited = Duration::zero();
   do {
     Future<ResourceStatistics> usage = containerizer2.get()->usage(containerId);
     AWAIT_READY(usage);
 
     if (usage.get().mem_low_pressure_counter() > 0) {
-      EXPECT_GE(usage.get().mem_low_pressure_counter(),
-                usage.get().mem_medium_pressure_counter());
-      EXPECT_GE(usage.get().mem_medium_pressure_counter(),
-                usage.get().mem_critical_pressure_counter());
+      // We will check the correctness of the memory pressure counters
+      // later, because the memory-hammering task is still active
+      // and potentially incrementing these counters.
       break;
     }
 
@@ -278,6 +296,23 @@ TEST_F(MemoryPressureMesosTest, CGROUPS_ROOT_SlaveRecovery)
 
   EXPECT_LE(waited, Seconds(5));
 
+  // Stop the memory-hammering task.
+  driver.killTask(task.task_id());
+
+  // Process any queued up events through before proceeding.
+  process::Clock::pause();
+  process::Clock::settle();
+  process::Clock::resume();
+
+  // Now check the correctness of the memory pressure counters.
+  Future<ResourceStatistics> usage = containerizer2.get()->usage(containerId);
+  AWAIT_READY(usage);
+
+  EXPECT_GE(usage.get().mem_low_pressure_counter(),
+            usage.get().mem_medium_pressure_counter());
+  EXPECT_GE(usage.get().mem_medium_pressure_counter(),
+            usage.get().mem_critical_pressure_counter());
+
   driver.stop();
   driver.join();