You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by tn...@apache.org on 2015/05/25 07:31:47 UTC

[12/20] mesos git commit: Fix docker tests and warnings running in verbose logging.

Fix docker tests and warnings running in verbose logging.


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

Branch: refs/heads/master
Commit: 72f62aa35d4ed060faaa863718cc0e1e416c7e52
Parents: 9f91e07
Author: Timothy Chen <tn...@gmail.com>
Authored: Fri Jan 16 23:09:43 2015 +0000
Committer: Timothy Chen <tn...@gmail.com>
Committed: Sun May 24 22:27:40 2015 -0700

----------------------------------------------------------------------
 src/docker/docker.hpp                    |  2 +-
 src/docker/executor.cpp                  |  7 ++-
 src/tests/docker_containerizer_tests.cpp | 64 ++++++++++++++++++---------
 3 files changed, 49 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/72f62aa3/src/docker/docker.hpp
----------------------------------------------------------------------
diff --git a/src/docker/docker.hpp b/src/docker/docker.hpp
index 0ba7e0e..2e2053e 100644
--- a/src/docker/docker.hpp
+++ b/src/docker/docker.hpp
@@ -98,7 +98,7 @@ public:
   // time for docker to wait after stopping a container before killing it.
   // A value of zero (the default value) is the same as issuing a
   // 'docker kill CONTAINER'.
-  process::Future<Nothing> stop(
+  virtual process::Future<Nothing> stop(
       const std::string& container,
       const Duration& timeout = Seconds(0),
       bool remove = false) const;

http://git-wip-us.apache.org/repos/asf/mesos/blob/72f62aa3/src/docker/executor.cpp
----------------------------------------------------------------------
diff --git a/src/docker/executor.cpp b/src/docker/executor.cpp
index 227b3d1..fda7b2a 100644
--- a/src/docker/executor.cpp
+++ b/src/docker/executor.cpp
@@ -36,6 +36,7 @@
 
 #include "docker/docker.hpp"
 
+#include "logging/flags.hpp"
 #include "logging/logging.hpp"
 
 using std::cerr;
@@ -305,7 +306,7 @@ void usage(const char* argv0, const flags::FlagsBase& flags)
 }
 
 
-class Flags : public flags::FlagsBase
+class Flags : public mesos::internal::logging::Flags
 {
 public:
   Flags()
@@ -337,6 +338,8 @@ public:
 
 int main(int argc, char** argv)
 {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
   Flags flags;
 
   bool help;
@@ -354,6 +357,8 @@ int main(int argc, char** argv)
     return -1;
   }
 
+  mesos::internal::logging::initialize(argv[0], flags, true); // Catch signals.
+
   if (help) {
     usage(argv[0], flags);
     return -1;

http://git-wip-us.apache.org/repos/asf/mesos/blob/72f62aa3/src/tests/docker_containerizer_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/docker_containerizer_tests.cpp b/src/tests/docker_containerizer_tests.cpp
index 378a526..7efaea4 100644
--- a/src/tests/docker_containerizer_tests.cpp
+++ b/src/tests/docker_containerizer_tests.cpp
@@ -203,7 +203,6 @@ public:
     return false;
   }
 
-
   static bool running(
       const process::Shared<Docker>& docker,
       const SlaveID& slaveId,
@@ -232,6 +231,16 @@ public:
     return false;
   }
 
+  static bool containsLine(string text, string expectedLine)
+  {
+    foreach (const string& line, strings::split(text, "\n")) {
+      if (line == expectedLine) {
+        return true;
+      }
+    }
+
+    return false;
+  }
 
   virtual void TearDown()
   {
@@ -836,6 +845,8 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Kill)
   AWAIT_READY_FOR(statusRunning, Seconds(60));
   EXPECT_EQ(TASK_RUNNING, statusRunning.get().state());
 
+  ASSERT_TRUE(running(docker, slaveId, containerId.get()));
+
   Future<TaskStatus> statusKilled;
   EXPECT_CALL(sched, statusUpdate(&driver, _))
     .WillOnce(FutureArg<1>(&statusKilled));
@@ -1156,6 +1167,11 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Recover)
   MockDocker* mockDocker = new MockDocker(tests::flags.docker);
   Shared<Docker> docker(mockDocker);
 
+  Future<string> stoppedContainer;
+  EXPECT_CALL(*mockDocker, stop(_, _, _))
+    .WillOnce(DoAll(FutureArg<0>(&stoppedContainer),
+                    Return(Nothing())));
+
   Fetcher fetcher;
 
   MockDockerContainerizer dockerContainerizer(flags, &fetcher, docker);
@@ -1207,6 +1223,12 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Recover)
   AWAIT_READY(d1);
   AWAIT_READY(d2);
 
+  ASSERT_TRUE(running(docker, slaveId, containerId));
+  ASSERT_TRUE(running(docker, slaveId, reapedContainerId));
+
+  Future<Docker::Container> inspect = docker->inspect(container2);
+  AWAIT_READY(inspect);
+
   SlaveState slaveState;
   slaveState.id = slaveId;
   FrameworkState frameworkState;
@@ -1224,11 +1246,6 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Recover)
 
   ASSERT_SOME(wait);
 
-  Try<process::Subprocess> reaped =
-    process::subprocess(tests::flags.docker + " wait " + container2);
-
-  ASSERT_SOME(reaped);
-
   FrameworkID frameworkId;
 
   RunState runState;
@@ -1250,7 +1267,7 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Recover)
 
   AWAIT_FAILED(dockerContainerizer.wait(reapedContainerId));
 
-  AWAIT_READY(reaped.get().status());
+  AWAIT_EQ(inspect.get().id, stoppedContainer);
 
   Shutdown();
 }
@@ -1406,14 +1423,14 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Logs)
   Try<string> read = os::read(path::join(directory.get(), "stderr"));
 
   ASSERT_SOME(read);
-  EXPECT_TRUE(strings::contains(read.get(), "err" + uuid));
-  EXPECT_FALSE(strings::contains(read.get(), "out" + uuid));
+  EXPECT_TRUE(containsLine(read.get(), "err" + uuid));
+  EXPECT_FALSE(containsLine(read.get(), "out" + uuid));
 
   read = os::read(path::join(directory.get(), "stdout"));
 
   ASSERT_SOME(read);
-  EXPECT_TRUE(strings::contains(read.get(), "out" + uuid));
-  EXPECT_FALSE(strings::contains(read.get(), "err" + uuid));
+  EXPECT_TRUE(containsLine(read.get(), "out" + uuid));
+  EXPECT_FALSE(containsLine(read.get(), "err" + uuid));
 
   driver.stop();
   driver.join();
@@ -1469,6 +1486,8 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Default_CMD)
 
   const Offer& offer = offers.get()[0];
 
+  SlaveID slaveId = offer.slave_id();
+
   TaskInfo task;
   task.set_name("");
   task.mutable_task_id()->set_value("1");
@@ -1526,11 +1545,12 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Default_CMD)
   // Since we're not passing any command value, we're expecting the
   // default entry point to be run which is 'echo' with the default
   // command from the image which is 'inky'.
-  EXPECT_TRUE(strings::contains(read.get(), "inky"));
+  EXPECT_TRUE(containsLine(read.get(), "inky"));
 
   read = os::read(path::join(directory.get(), "stderr"));
   ASSERT_SOME(read);
-  EXPECT_FALSE(strings::contains(read.get(), "inky"));
+
+  EXPECT_FALSE(containsLine(read.get(), "inky"));
 
   driver.stop();
   driver.join();
@@ -1646,13 +1666,13 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Default_CMD_Override)
   // We expect the passed in command value to override the image's
   // default command, thus we should see the value of 'uuid' in the
   // output instead of the default command which is 'inky'.
-  EXPECT_TRUE(strings::contains(read.get(), uuid));
-  EXPECT_FALSE(strings::contains(read.get(), "inky"));
+  EXPECT_TRUE(containsLine(read.get(), uuid));
+  EXPECT_FALSE(containsLine(read.get(), "inky"));
 
   read = os::read(path::join(directory.get(), "stderr"));
   ASSERT_SOME(read);
-  EXPECT_FALSE(strings::contains(read.get(), "inky"));
-  EXPECT_FALSE(strings::contains(read.get(), uuid));
+  EXPECT_FALSE(containsLine(read.get(), "inky"));
+  EXPECT_FALSE(containsLine(read.get(), uuid));
 
   driver.stop();
   driver.join();
@@ -1769,13 +1789,13 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Default_CMD_Args)
   // We expect the passed in command arguments to override the image's
   // default command, thus we should see the value of 'uuid' in the
   // output instead of the default command which is 'inky'.
-  EXPECT_TRUE(strings::contains(read.get(), uuid));
-  EXPECT_FALSE(strings::contains(read.get(), "inky"));
+  EXPECT_TRUE(containsLine(read.get(), uuid));
+  EXPECT_FALSE(containsLine(read.get(), "inky"));
 
   read = os::read(path::join(directory.get(), "stderr"));
   ASSERT_SOME(read);
-  EXPECT_FALSE(strings::contains(read.get(), "inky"));
-  EXPECT_FALSE(strings::contains(read.get(), uuid));
+  EXPECT_FALSE(containsLine(read.get(), "inky"));
+  EXPECT_FALSE(containsLine(read.get(), uuid));
 
   driver.stop();
   driver.join();
@@ -2235,7 +2255,7 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_PortMapping)
 
   // We expect the uuid that is sent to host port to be written
   // to stdout by the docker container running nc -l.
-  EXPECT_TRUE(strings::contains(read.get(), uuid));
+  EXPECT_TRUE(containsLine(read.get(), uuid));
 
   driver.stop();
   driver.join();