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 <[email protected]> Authored: Fri Jan 16 23:09:43 2015 +0000 Committer: Timothy Chen <[email protected]> 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();
