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 2016/09/27 05:41:54 UTC

[4/8] mesos git commit: Updated Mesos tests to use WEXITSTATUS and WTERMSIG gtest helpers.

Updated Mesos tests to use WEXITSTATUS and WTERMSIG gtest helpers.

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


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

Branch: refs/heads/master
Commit: 6b5e99d7e6055f7f2f28a9a21ecd621351542a18
Parents: 0920b92
Author: Benjamin Hindman <be...@gmail.com>
Authored: Wed Sep 7 13:42:35 2016 -0700
Committer: Benjamin Hindman <be...@gmail.com>
Committed: Mon Sep 26 22:41:21 2016 -0700

----------------------------------------------------------------------
 src/tests/containerizer/capabilities_tests.cpp  | 21 ++-------
 src/tests/containerizer/cgroups_tests.cpp       | 21 +++------
 .../docker_containerizer_tests.cpp              | 10 +----
 src/tests/containerizer/docker_tests.cpp        | 45 ++++----------------
 src/tests/containerizer/launch_tests.cpp        |  7 +--
 src/tests/containerizer/ns_tests.cpp            | 23 ++++------
 src/tests/containerizer/routing_tests.cpp       |  6 +--
 src/tests/containerizer/sched_tests.cpp         |  7 +--
 8 files changed, 31 insertions(+), 109 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/6b5e99d7/src/tests/containerizer/capabilities_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/capabilities_tests.cpp b/src/tests/containerizer/capabilities_tests.cpp
index 6fe5d54..15a85ca 100644
--- a/src/tests/containerizer/capabilities_tests.cpp
+++ b/src/tests/containerizer/capabilities_tests.cpp
@@ -95,12 +95,7 @@ TEST_F(CapabilitiesTest, ROOT_PingWithNoNetRawCaps)
   Try<Subprocess> s = ping(capabilities->get(capabilities::PERMITTED));
   ASSERT_SOME(s);
 
-  Future<Option<int>> status = s->status();
-  AWAIT_READY(status);
-
-  ASSERT_SOME(status.get());
-  EXPECT_TRUE(WIFEXITED(status->get()));
-  EXPECT_NE(0, WEXITSTATUS(status->get()));
+  AWAIT_EXPECT_WEXITSTATUS_NE(0, s->status());
 }
 
 
@@ -124,12 +119,7 @@ TEST_F(CapabilitiesTest, ROOT_PingWithNoNetRawCapsChangeUser)
 
   ASSERT_SOME(s);
 
-  Future<Option<int>> status = s->status();
-  AWAIT_READY(status);
-
-  ASSERT_SOME(status.get());
-  EXPECT_TRUE(WIFEXITED(status->get()));
-  EXPECT_NE(0, WEXITSTATUS(status->get()));
+  AWAIT_EXPECT_WEXITSTATUS_NE(0, s->status());
 }
 
 
@@ -158,12 +148,7 @@ TEST_F(CapabilitiesTest, ROOT_PingWithJustNetRawSysAdminCap)
   Try<Subprocess> s = ping(capabilities, CAPS_TEST_UNPRIVILEGED_USER);
   ASSERT_SOME(s);
 
-  Future<Option<int>> status = s->status();
-  AWAIT_READY(status);
-
-  ASSERT_SOME(status.get());
-  EXPECT_TRUE(WIFEXITED(status->get()));
-  EXPECT_EQ(0, WEXITSTATUS(status->get()));
+  AWAIT_EXPECT_WEXITSTATUS_EQ(0, s->status());
 }
 
 } // namespace tests {

http://git-wip-us.apache.org/repos/asf/mesos/blob/6b5e99d7/src/tests/containerizer/cgroups_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/cgroups_tests.cpp b/src/tests/containerizer/cgroups_tests.cpp
index 92e0bc9..0afaec6 100644
--- a/src/tests/containerizer/cgroups_tests.cpp
+++ b/src/tests/containerizer/cgroups_tests.cpp
@@ -37,6 +37,7 @@
 #include <process/gtest.hpp>
 #include <process/latch.hpp>
 #include <process/owned.hpp>
+#include <process/reap.hpp>
 
 #include <stout/gtest.hpp>
 #include <stout/hashmap.hpp>
@@ -502,10 +503,7 @@ TEST_F(CgroupsAnyHierarchyTest, ROOT_CGROUPS_Write)
   ASSERT_NE(-1, ::kill(pid, SIGKILL));
 
   // Wait for the child process.
-  int status;
-  EXPECT_NE(-1, ::waitpid(pid, &status, 0));
-  ASSERT_TRUE(WIFSIGNALED(status));
-  EXPECT_EQ(SIGKILL, WTERMSIG(status));
+  AWAIT_EXPECT_WTERMSIG_EQ(SIGKILL, reap(pid));
 }
 
 
@@ -671,10 +669,7 @@ TEST_F(CgroupsAnyHierarchyWithFreezerTest, ROOT_CGROUPS_Freeze)
   ASSERT_NE(-1, ::kill(pid, SIGKILL));
 
   // Wait for the child process.
-  int status;
-  EXPECT_NE(-1, ::waitpid((pid_t) -1, &status, 0));
-  ASSERT_TRUE(WIFSIGNALED(status));
-  EXPECT_EQ(SIGKILL, WTERMSIG(status));
+  AWAIT_EXPECT_WTERMSIG_EQ(SIGKILL, reap(pid));
 }
 
 
@@ -717,10 +712,7 @@ TEST_F(CgroupsAnyHierarchyWithFreezerTest, ROOT_CGROUPS_Kill)
     Try<Nothing> kill = cgroups::kill(hierarchy, TEST_CGROUPS_ROOT, SIGKILL);
     EXPECT_SOME(kill);
 
-    int status;
-    EXPECT_NE(-1, ::waitpid((pid_t) -1, &status, 0));
-    ASSERT_TRUE(WIFSIGNALED(status));
-    EXPECT_EQ(SIGKILL, WTERMSIG(status));
+    AWAIT_EXPECT_WTERMSIG_EQ(SIGKILL, reap(pid));
   } else {
     // In child process.
 
@@ -1042,10 +1034,7 @@ TEST_F(CgroupsAnyHierarchyWithPerfEventTest, ROOT_CGROUPS_PERF_PerfTest)
   ASSERT_NE(-1, ::kill(pid, SIGKILL));
 
   // Wait for the child process.
-  int status;
-  EXPECT_NE(-1, ::waitpid((pid_t) -1, &status, 0));
-  ASSERT_TRUE(WIFSIGNALED(status));
-  EXPECT_EQ(SIGKILL, WTERMSIG(status));
+  AWAIT_EXPECT_WTERMSIG_EQ(SIGKILL, reap(pid));
 
   // Destroy the cgroup.
   Future<Nothing> destroy = cgroups::destroy(hierarchy, TEST_CGROUPS_ROOT);

http://git-wip-us.apache.org/repos/asf/mesos/blob/6b5e99d7/src/tests/containerizer/docker_containerizer_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/docker_containerizer_tests.cpp b/src/tests/containerizer/docker_containerizer_tests.cpp
index d026142..6d26797 100644
--- a/src/tests/containerizer/docker_containerizer_tests.cpp
+++ b/src/tests/containerizer/docker_containerizer_tests.cpp
@@ -1251,10 +1251,7 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Recover)
   EXPECT_NONE(termination2.get());
 
   // Expect the orphan to be stopped!
-  AWAIT_READY(orphanRun);
-  ASSERT_SOME(orphanRun.get());
-  EXPECT_TRUE(WIFEXITED(orphanRun->get())) << orphanRun->get();
-  EXPECT_EQ(128 + SIGKILL, WEXITSTATUS(orphanRun->get())) << orphanRun->get();
+  AWAIT_EXPECT_WEXITSTATUS_EQ(128 + SIGKILL, orphanRun);
 }
 
 
@@ -1387,10 +1384,7 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_KillOrphanContainers)
   EXPECT_NONE(termination2.get());
   ASSERT_FALSE(exists(docker, oldSlaveId, orphanContainerId));
 
-  AWAIT_READY(orphanRun);
-  ASSERT_SOME(orphanRun.get());
-  EXPECT_TRUE(WIFEXITED(orphanRun->get())) << orphanRun->get();
-  EXPECT_EQ(128 + SIGKILL, WEXITSTATUS(orphanRun->get())) << orphanRun->get();
+  AWAIT_EXPECT_WEXITSTATUS_EQ(128 + SIGKILL, orphanRun);
 }
 
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/6b5e99d7/src/tests/containerizer/docker_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/docker_tests.cpp b/src/tests/containerizer/docker_tests.cpp
index e9a214a..2f4e84a 100644
--- a/src/tests/containerizer/docker_tests.cpp
+++ b/src/tests/containerizer/docker_tests.cpp
@@ -156,10 +156,7 @@ TEST_F(DockerTest, ROOT_DOCKER_interface)
   Future<Nothing> stop = docker->stop(containerName);
   AWAIT_READY(stop);
 
-  AWAIT_READY(status);
-  ASSERT_SOME(status.get());
-  EXPECT_TRUE(WIFEXITED(status->get())) << status->get();
-  EXPECT_EQ(128 + SIGKILL, WEXITSTATUS(status->get())) << status->get();
+  AWAIT_EXPECT_WEXITSTATUS_EQ(128 + SIGKILL, status);
 
   // Now, the container should not appear in the result of ps().
   // But it should appear in the result of ps(true).
@@ -235,10 +232,7 @@ TEST_F(DockerTest, ROOT_DOCKER_interface)
   rm = docker->rm(containerName, true);
   AWAIT_READY(rm);
 
-  AWAIT_READY(status);
-  ASSERT_SOME(status.get());
-  EXPECT_TRUE(WIFEXITED(status->get())) << status->get();
-  EXPECT_EQ(128 + SIGKILL, WEXITSTATUS(status->get())) << status->get();
+  AWAIT_EXPECT_WEXITSTATUS_EQ(128 + SIGKILL, status);
 
   // Verify that the container is totally removed, that is we can't
   // find it by ps() or ps(true).
@@ -302,10 +296,7 @@ TEST_F(DockerTest, ROOT_DOCKER_kill)
 
   AWAIT_READY(kill);
 
-  AWAIT_READY(run);
-  ASSERT_SOME(run.get());
-  EXPECT_TRUE(WIFEXITED(run->get())) << run->get();
-  EXPECT_EQ(128 + SIGKILL, WEXITSTATUS(run->get())) << run->get();
+  AWAIT_EXPECT_WEXITSTATUS_EQ(128 + SIGKILL, run);
 }
 
 
@@ -425,10 +416,7 @@ TEST_F(DockerTest, ROOT_DOCKER_CheckPortResource)
       "/mnt/mesos/sandbox",
       resources);
 
-  AWAIT_READY(run);
-  ASSERT_SOME(run.get());
-  EXPECT_TRUE(WIFEXITED(run->get())) << run->get();
-  EXPECT_EQ(0, WEXITSTATUS(run->get())) << run->get();
+  AWAIT_EXPECT_WEXITSTATUS_EQ(0, run);
 }
 
 
@@ -505,10 +493,7 @@ TEST_F(DockerTest, ROOT_DOCKER_MountRelativeHostPath)
       directory.get(),
       "/mnt/mesos/sandbox");
 
-  AWAIT_READY(run);
-  ASSERT_SOME(run.get());
-  EXPECT_TRUE(WIFEXITED(run->get())) << run->get();
-  EXPECT_EQ(0, WEXITSTATUS(run->get())) << run->get();
+  AWAIT_EXPECT_WEXITSTATUS_EQ(0, run);
 }
 
 
@@ -551,10 +536,7 @@ TEST_F(DockerTest, ROOT_DOCKER_MountAbsoluteHostPath)
       directory.get(),
       "/mnt/mesos/sandbox");
 
-  AWAIT_READY(run);
-  ASSERT_SOME(run.get());
-  EXPECT_TRUE(WIFEXITED(run->get())) << run->get();
-  EXPECT_EQ(0, WEXITSTATUS(run->get())) << run->get();
+  AWAIT_EXPECT_WEXITSTATUS_EQ(0, run);
 }
 
 
@@ -598,10 +580,7 @@ TEST_F(DockerTest, ROOT_DOCKER_MountRelativeContainerPath)
       directory.get(),
       "/mnt/mesos/sandbox");
 
-  AWAIT_READY(run);
-  ASSERT_SOME(run.get());
-  EXPECT_TRUE(WIFEXITED(run->get())) << run->get();
-  EXPECT_EQ(0, WEXITSTATUS(run->get())) << run->get();
+  AWAIT_EXPECT_WEXITSTATUS_EQ(0, run);
 }
 
 
@@ -816,10 +795,7 @@ TEST_F(DockerTest, ROOT_DOCKER_NVIDIA_GPU_DeviceAllow)
       None(),
       devices);
 
-  AWAIT_READY(status);
-  ASSERT_SOME(status.get());
-  EXPECT_TRUE(WIFEXITED(status->get())) << status->get();
-  EXPECT_EQ(0, WEXITSTATUS(status->get())) << status->get();
+  AWAIT_EXPECT_WEXITSTATUS_EQ(0, status);
 }
 
 
@@ -887,10 +863,7 @@ TEST_F(DockerTest, ROOT_DOCKER_NVIDIA_GPU_InspectDevices)
 
   AWAIT_READY(docker->kill(containerName, SIGKILL));
 
-  AWAIT_READY(status);
-  ASSERT_SOME(status.get());
-  EXPECT_TRUE(WIFEXITED(status->get())) << status->get();
-  EXPECT_EQ(128 + SIGKILL, WEXITSTATUS(status->get())) << status->get();
+  AWAIT_EXPECT_WEXITSTATUS_EQ(128 + SIGKILL, status);
 }
 
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/6b5e99d7/src/tests/containerizer/launch_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/launch_tests.cpp b/src/tests/containerizer/launch_tests.cpp
index 81790a1..6eedc7e 100644
--- a/src/tests/containerizer/launch_tests.cpp
+++ b/src/tests/containerizer/launch_tests.cpp
@@ -114,12 +114,7 @@ TEST_F(MesosContainerizerLaunchTest, ROOT_ChangeRootfs)
     Clock::settle();
   }
 
-  AWAIT_ASSERT_READY(s.get().status());
-  ASSERT_SOME(s.get().status().get());
-
-  int status = s.get().status().get().get();
-  ASSERT_TRUE(WIFEXITED(status));
-  ASSERT_EQ(0, WEXITSTATUS(status));
+  AWAIT_ASSERT_WEXITSTATUS_EQ(0, s.get().status());
 
   // Check the rootfs has a different root by comparing the inodes.
   Try<ino_t> self = os::stat::inode("/");

http://git-wip-us.apache.org/repos/asf/mesos/blob/6b5e99d7/src/tests/containerizer/ns_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/ns_tests.cpp b/src/tests/containerizer/ns_tests.cpp
index 6aa5ade..97fb70c 100644
--- a/src/tests/containerizer/ns_tests.cpp
+++ b/src/tests/containerizer/ns_tests.cpp
@@ -31,6 +31,7 @@
 
 #include <process/gtest.hpp>
 #include <process/latch.hpp>
+#include <process/reap.hpp>
 #include <process/subprocess.hpp>
 
 #include "linux/ns.hpp"
@@ -95,12 +96,7 @@ TEST(NsTest, ROOT_setns)
   ASSERT_SOME(s);
 
   // The child should exit 0.
-  Future<Option<int>> status = s.get().status();
-  AWAIT_READY(status);
-
-  ASSERT_SOME(status.get());
-  EXPECT_TRUE(WIFEXITED(status.get().get()));
-  EXPECT_EQ(0, status.get().get());
+  AWAIT_EXPECT_WEXITSTATUS_EQ(0, s.get().status());
 }
 
 
@@ -176,10 +172,7 @@ TEST(NsTest, ROOT_getns)
   ASSERT_NE(-1, ::kill(pid, SIGKILL));
 
   // Wait for the child process.
-  int status;
-  EXPECT_NE(-1, ::waitpid((pid_t) -1, &status, 0));
-  ASSERT_TRUE(WIFSIGNALED(status));
-  EXPECT_EQ(SIGKILL, WTERMSIG(status));
+  AWAIT_EXPECT_WTERMSIG_EQ(SIGKILL, reap(pid));
 }
 
 
@@ -214,7 +207,10 @@ TEST(NsTest, ROOT_destroy)
 
   ASSERT_NE(-1, pid);
 
-  Future<Option<int>> status = process::reap(pid);
+  // NOTE: need to call `reap` here because the `ns::pid::destroy`
+  // also calls `reap` and so we won't get the right status if we call
+  // `reap` after calling `ns::pid::destroy`.
+  Future<Option<int>> status = reap(pid);
 
   // Ensure the child is in a different pid namespace.
   Try<ino_t> childNs = ns::getns(pid, "pid");
@@ -228,10 +224,7 @@ TEST(NsTest, ROOT_destroy)
   // Kill the child.
   AWAIT_READY(ns::pid::destroy(childNs.get()));
 
-  AWAIT_READY(status);
-  ASSERT_SOME(status.get());
-  ASSERT_TRUE(WIFSIGNALED(status.get().get()));
-  EXPECT_EQ(SIGKILL, WTERMSIG(status.get().get()));
+  AWAIT_EXPECT_WTERMSIG_EQ(SIGKILL, status);
 
   // Finally, verify that no processes are in the child's pid
   // namespace, i.e., destroy() also killed all descendants.

http://git-wip-us.apache.org/repos/asf/mesos/blob/6b5e99d7/src/tests/containerizer/routing_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/routing_tests.cpp b/src/tests/containerizer/routing_tests.cpp
index ee21d6c..e6b7ead 100644
--- a/src/tests/containerizer/routing_tests.cpp
+++ b/src/tests/containerizer/routing_tests.cpp
@@ -26,6 +26,7 @@
 
 #include <process/clock.hpp>
 #include <process/gtest.hpp>
+#include <process/reap.hpp>
 
 #include <stout/foreach.hpp>
 #include <stout/gtest.hpp>
@@ -325,10 +326,7 @@ TEST_F(RoutingVethTest, ROOT_LinkCreatePid)
   ASSERT_NE(-1, kill(pid, SIGKILL));
 
   // Wait for the child process.
-  int status;
-  EXPECT_NE(-1, waitpid((pid_t) -1, &status, 0));
-  ASSERT_TRUE(WIFSIGNALED(status));
-  EXPECT_EQ(SIGKILL, WTERMSIG(status));
+  AWAIT_EXPECT_WTERMSIG_EQ(SIGKILL, reap(pid));
 }
 
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/6b5e99d7/src/tests/containerizer/sched_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/sched_tests.cpp b/src/tests/containerizer/sched_tests.cpp
index f38ef97..9ca487d 100644
--- a/src/tests/containerizer/sched_tests.cpp
+++ b/src/tests/containerizer/sched_tests.cpp
@@ -77,16 +77,11 @@ TEST(SchedTest, ROOT_PolicyChild)
   EXPECT_SOME(sched::policy::set(different, pid));
   EXPECT_SOME_EQ(different, sched::policy::get(pid));
 
-  process::Future<Option<int>> status = process::reap(pid);
-
   // Kill the child process.
   ASSERT_NE(-1, ::kill(pid, SIGKILL));
 
   // Wait for the child process.
-  AWAIT_READY(status);
-  ASSERT_SOME(status.get());
-  EXPECT_TRUE(WIFSIGNALED(status.get().get()));
-  EXPECT_EQ(SIGKILL, WTERMSIG(status.get().get()));
+  AWAIT_EXPECT_WTERMSIG_EQ(SIGKILL, process::reap(pid));
 }
 
 } // namespace tests {