You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by al...@apache.org on 2017/11/09 10:27:55 UTC

mesos git commit: Increased check tests task resources for Windows.

Repository: mesos
Updated Branches:
  refs/heads/master bd3302bdf -> 8ffc35414


Increased check tests task resources for Windows.

Unfortunately, due to PowerShell's resource usage as a .NET program, on
Windows 32 MB is not enough memory to run these tests. One instance of
PowerShell takes > 128 MB, and two instances take > 256 MB.
Realistically, the safe minimum is 512 MB of memory.

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


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

Branch: refs/heads/master
Commit: 8ffc3541482be3d615de7054ddb50b3905fd8952
Parents: bd3302b
Author: Andrew Schwartzmeyer <an...@schwartzmeyer.com>
Authored: Thu Nov 9 11:26:54 2017 +0100
Committer: Alexander Rukletsov <al...@apache.org>
Committed: Thu Nov 9 11:26:54 2017 +0100

----------------------------------------------------------------------
 src/tests/check_tests.cpp | 62 ++++++++++++++++++++++++++----------------
 1 file changed, 38 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/8ffc3541/src/tests/check_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/check_tests.cpp b/src/tests/check_tests.cpp
index d3ffc0b..f14b81a 100644
--- a/src/tests/check_tests.cpp
+++ b/src/tests/check_tests.cpp
@@ -77,7 +77,7 @@ namespace tests {
   string("rm ") + path + " || (touch " + path + "; exit 1)"
 #else
 #define FLAPPING_CHECK_COMMAND(path)                                    \
-  string("powershell -command ") +                                      \
+  string("powershell -NoProfile -Command ") +                           \
   "$ri_err = Remove-Item -ErrorAction SilentlyContinue"                 \
     " \"" + path + "\";"                                                \
   "if (-not $?) {"                                                      \
@@ -100,15 +100,15 @@ namespace tests {
 //   - Exit with a zero status.
 #ifndef __WINDOWS__
 #define STALLING_CHECK_COMMAND(path)                                    \
-  string("(ls ") + path + " && " + SLEEP_COMMAND(1000) +                \
+  string("(ls ") + path + " && " + "sleep 1000" +                       \
   ") || (touch " + path + "; exit 1)"
 #else
 #define STALLING_CHECK_COMMAND(path)                                    \
-  string("powershell -command ") +                                      \
+  string("powershell -NoProfile -Command ") +                           \
   "if (Test-Path \"" + path + "\") {" +                                 \
-     SLEEP_COMMAND(1000) +                                              \
+  "  Start-Sleep 1000 " +                                               \
   "} else {"                                                            \
-  "  Set-Content -Path (\"" + path + "\") -Value ($null);"              \
+  "  Set-Content -Path (\"" + path + "\") -Value $null;"                \
   "  exit 1"                                                            \
   "}"
 #endif // !__WINDOWS__
@@ -228,6 +228,22 @@ public:
 
     mesos->send(call);
   }
+
+  // NOTE: On Windows, most tasks are run under PowerShell, which uses ~150 MB
+  // of memory per-instance due to loading .NET. Realistically, PowerShell can
+  // be called more than once in a task, so 512 MB is the safe minimum.
+  // Furthermore, because the Windows `cpuset` isolator is a hard-cap, 0.1 CPUs
+  // will cause the task (or even a check command) to timeout, so 1 CPU is the
+  // safe minimum.
+  //
+  // On platforms where the shell is, e.g. Bash, the minimum is much lower.
+  const std::string defaultTaskResourcesString{
+#ifdef __WINDOWS__
+      "cpus:1;mem:512;disk:32"
+#else
+      "cpus:0.1;mem:32;disk:32"
+#endif // __WINDOWS__
+      };
 };
 
 
@@ -303,7 +319,7 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(
     .WillRepeatedly(Return()); // Ignore subsequent updates.
 
   v1::Resources resources =
-      v1::Resources::parse("cpus:0.1;mem:32;disk:32").get();
+      v1::Resources::parse(defaultTaskResourcesString).get();
 
   v1::TaskInfo taskInfo =
     v1::createTask(agentId, resources, SLEEP_COMMAND(10000));
@@ -457,7 +473,7 @@ TEST_F(CommandExecutorCheckTest, CommandCheckStatusChange)
     .WillRepeatedly(Return()); // Ignore subsequent updates.
 
   v1::Resources resources =
-      v1::Resources::parse("cpus:0.1;mem:32;disk:32").get();
+      v1::Resources::parse(defaultTaskResourcesString).get();
 
   v1::TaskInfo taskInfo =
       v1::createTask(agentId, resources, SLEEP_COMMAND(10000));
@@ -578,7 +594,7 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(
     .WillRepeatedly(Return()); // Ignore subsequent updates.
 
   v1::Resources resources =
-      v1::Resources::parse("cpus:0.1;mem:32;disk:32").get();
+      v1::Resources::parse(defaultTaskResourcesString).get();
 
   const string envKey = "MESOS_CHECK_TASK_ENV";
   const int32_t envValue = 42;
@@ -691,7 +707,7 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(
     .WillRepeatedly(Return()); // Ignore subsequent updates.
 
   v1::Resources resources =
-      v1::Resources::parse("cpus:0.1;mem:32;disk:32").get();
+      v1::Resources::parse(defaultTaskResourcesString).get();
 
   const string filename = "nested_inherits_work_dir";
 
@@ -824,7 +840,7 @@ TEST_F(CommandExecutorCheckTest, CommandCheckTimeout)
     .WillRepeatedly(Return()); // Ignore subsequent updates.
 
   v1::Resources resources =
-      v1::Resources::parse("cpus:0.1;mem:32;disk:32").get();
+      v1::Resources::parse(defaultTaskResourcesString).get();
 
   v1::TaskInfo taskInfo =
       v1::createTask(agentId, resources, SLEEP_COMMAND(10000));
@@ -939,7 +955,7 @@ TEST_F(CommandExecutorCheckTest, CommandCheckAndHealthCheckNoShadowing)
     .WillRepeatedly(Return()); // Ignore subsequent updates.
 
   v1::Resources resources =
-      v1::Resources::parse("cpus:0.1;mem:32;disk:32").get();
+      v1::Resources::parse(defaultTaskResourcesString).get();
 
   v1::TaskInfo taskInfo =
       v1::createTask(agentId, resources, SLEEP_COMMAND(10000));
@@ -1101,7 +1117,7 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(CommandExecutorCheckTest, HTTPCheckDelivered)
       testPort).get();
 
   v1::Resources resources =
-      v1::Resources::parse("cpus:0.1;mem:32;disk:32").get();
+      v1::Resources::parse(defaultTaskResourcesString).get();
 
   v1::TaskInfo taskInfo = v1::createTask(agentId, resources, command);
 
@@ -1239,7 +1255,7 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(CommandExecutorCheckTest, TCPCheckDelivered)
       testPort).get();
 
   v1::Resources resources =
-      v1::Resources::parse("cpus:0.1;mem:32;disk:32").get();
+      v1::Resources::parse(defaultTaskResourcesString).get();
 
   v1::TaskInfo taskInfo = v1::createTask(agentId, resources, command);
 
@@ -1390,7 +1406,7 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(
   v1::FrameworkInfo frameworkInfo = v1::DEFAULT_FRAMEWORK_INFO;
 
   const v1::Resources resources =
-    v1::Resources::parse("cpus:0.1;mem:32;disk:32").get();
+    v1::Resources::parse(defaultTaskResourcesString).get();
 
   v1::ExecutorInfo executorInfo;
   executorInfo.set_type(v1::ExecutorInfo::DEFAULT);
@@ -1594,7 +1610,7 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(
   v1::FrameworkInfo frameworkInfo = v1::DEFAULT_FRAMEWORK_INFO;
 
   const v1::Resources resources =
-    v1::Resources::parse("cpus:0.1;mem:32;disk:32").get();
+    v1::Resources::parse(defaultTaskResourcesString).get();
 
   v1::ExecutorInfo executorInfo;
   executorInfo.set_type(v1::ExecutorInfo::DEFAULT);
@@ -1763,7 +1779,7 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(
   v1::FrameworkInfo frameworkInfo = v1::DEFAULT_FRAMEWORK_INFO;
 
   const v1::Resources resources =
-    v1::Resources::parse("cpus:0.1;mem:32;disk:32").get();
+    v1::Resources::parse(defaultTaskResourcesString).get();
 
   v1::ExecutorInfo executorInfo;
   executorInfo.set_type(v1::ExecutorInfo::DEFAULT);
@@ -1918,7 +1934,7 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(
   v1::FrameworkInfo frameworkInfo = v1::DEFAULT_FRAMEWORK_INFO;
 
   const v1::Resources resources =
-    v1::Resources::parse("cpus:0.1;mem:32;disk:32").get();
+    v1::Resources::parse(defaultTaskResourcesString).get();
 
   v1::ExecutorInfo executorInfo;
   executorInfo.set_type(v1::ExecutorInfo::DEFAULT);
@@ -2096,7 +2112,7 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(DefaultExecutorCheckTest, CommandCheckTimeout)
   v1::FrameworkInfo frameworkInfo = v1::DEFAULT_FRAMEWORK_INFO;
 
   const v1::Resources resources =
-    v1::Resources::parse("cpus:0.1;mem:32;disk:32").get();
+    v1::Resources::parse(defaultTaskResourcesString).get();
 
   v1::ExecutorInfo executorInfo;
   executorInfo.set_type(v1::ExecutorInfo::DEFAULT);
@@ -2223,8 +2239,6 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(DefaultExecutorCheckTest, CommandCheckTimeout)
 // Verifies that when both command check and health check are specified,
 // health and check updates include both statuses. Also verifies that
 // both statuses are included upon reconciliation.
-//
-// TODO(gkleiman): Check if this test works on Windows.
 TEST_F(DefaultExecutorCheckTest, CommandCheckAndHealthCheckNoShadowing)
 {
   Try<Owned<cluster::Master>> master = StartMaster();
@@ -2252,7 +2266,7 @@ TEST_F(DefaultExecutorCheckTest, CommandCheckAndHealthCheckNoShadowing)
   v1::FrameworkInfo frameworkInfo = v1::DEFAULT_FRAMEWORK_INFO;
 
   const v1::Resources resources =
-    v1::Resources::parse("cpus:0.1;mem:32;disk:32").get();
+    v1::Resources::parse(defaultTaskResourcesString).get();
 
   v1::ExecutorInfo executorInfo;
   executorInfo.set_type(v1::ExecutorInfo::DEFAULT);
@@ -2433,7 +2447,7 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(
   v1::FrameworkInfo frameworkInfo = v1::DEFAULT_FRAMEWORK_INFO;
 
   const v1::Resources resources =
-    v1::Resources::parse("cpus:0.1;mem:32;disk:32").get();
+    v1::Resources::parse(defaultTaskResourcesString).get();
 
   v1::ExecutorInfo executorInfo;
   executorInfo.set_type(v1::ExecutorInfo::DEFAULT);
@@ -2586,7 +2600,7 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(DefaultExecutorCheckTest, HTTPCheckDelivered)
   v1::FrameworkInfo frameworkInfo = v1::DEFAULT_FRAMEWORK_INFO;
 
   const v1::Resources resources =
-    v1::Resources::parse("cpus:0.1;mem:32;disk:32").get();
+    v1::Resources::parse(defaultTaskResourcesString).get();
 
   v1::ExecutorInfo executorInfo;
   executorInfo.set_type(v1::ExecutorInfo::DEFAULT);
@@ -2745,7 +2759,7 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(DefaultExecutorCheckTest, TCPCheckDelivered)
   v1::FrameworkInfo frameworkInfo = v1::DEFAULT_FRAMEWORK_INFO;
 
   const v1::Resources resources =
-    v1::Resources::parse("cpus:0.1;mem:32;disk:32").get();
+    v1::Resources::parse(defaultTaskResourcesString).get();
 
   v1::ExecutorInfo executorInfo;
   executorInfo.set_type(v1::ExecutorInfo::DEFAULT);