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 2014/08/05 00:09:33 UTC

[12/43] git commit: Modify validate Docker to call 'info' instead.

Modify validate Docker to call 'info' instead.


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

Branch: refs/heads/master
Commit: 9bd535e81b1bf8526f916cdcdd3ac1d1e7164a8f
Parents: d60cc83
Author: Timothy Chen <tn...@gmail.com>
Authored: Wed Jun 25 06:56:57 2014 +0000
Committer: Benjamin Hindman <be...@gmail.com>
Committed: Mon Aug 4 15:08:15 2014 -0700

----------------------------------------------------------------------
 src/docker/docker.cpp     | 37 +++++++++++++++++++++++++++++++++----
 src/docker/docker.hpp     |  2 ++
 src/tests/environment.cpp |  8 ++++++++
 3 files changed, 43 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/9bd535e8/src/docker/docker.cpp
----------------------------------------------------------------------
diff --git a/src/docker/docker.cpp b/src/docker/docker.cpp
index 500517c..1e3ed71 100644
--- a/src/docker/docker.cpp
+++ b/src/docker/docker.cpp
@@ -23,12 +23,12 @@ using std::vector;
 
 Try<Nothing> Docker::validateDocker(const Docker &docker)
 {
-  Future<list<Docker::Container> > containers = docker.ps();
+  Future<std::string> info = docker.info();
 
-  if (!containers.await(Seconds(3))) {
+  if (!info.await(Seconds(3))) {
     return Error("Failed to use Docker: Timed out");
-  } else if (containers.isFailed()) {
-    return Error("Failed to use Docker: " + containers.failure());
+  } else if (info.isFailed()) {
+    return Error("Failed to use Docker: " + info.failure());
   }
 
   return Nothing();
@@ -300,3 +300,32 @@ Future<list<Docker::Container> > Docker::_ps(
 
   return collect(futures);
 }
+
+Future<std::string> Docker::info() const
+{
+  std::string cmd = path + " info";
+
+  VLOG(1) << "Running " << cmd;
+
+  Try<Subprocess> s = subprocess(
+      cmd,
+      Subprocess::PIPE(),
+      Subprocess::PIPE(),
+      Subprocess::PIPE());
+
+  if (s.isError()) {
+    return Failure(s.error());
+  }
+
+  Result<string> output = os::read(s.get().out().get());
+
+  if (output.isError()) {
+    // TODO(benh): Include stderr in error message.
+    return Failure("Failed to read output: " + output.error());
+  } else if (output.isNone()) {
+    // TODO(benh): Include stderr in error message.
+    return Failure("No output available");
+  }
+
+  return output.get();
+}

http://git-wip-us.apache.org/repos/asf/mesos/blob/9bd535e8/src/docker/docker.hpp
----------------------------------------------------------------------
diff --git a/src/docker/docker.hpp b/src/docker/docker.hpp
index b0d0a3a..080e341 100644
--- a/src/docker/docker.hpp
+++ b/src/docker/docker.hpp
@@ -81,6 +81,8 @@ public:
   process::Future<std::list<Container> > ps(
       const bool all = true) const;
 
+  process::Future<std::string> info() const;
+
 private:
   // Continuations.
   static process::Future<Container> _inspect(

http://git-wip-us.apache.org/repos/asf/mesos/blob/9bd535e8/src/tests/environment.cpp
----------------------------------------------------------------------
diff --git a/src/tests/environment.cpp b/src/tests/environment.cpp
index 5c14cca..11a08e3 100644
--- a/src/tests/environment.cpp
+++ b/src/tests/environment.cpp
@@ -133,6 +133,14 @@ static bool enable(const ::testing::TestInfo& test)
     if (strings::contains(name, "DOCKER_")) {
       Docker docker("docker");
       Try<Nothing> validate = Docker::validateDocker(docker);
+      if (validate.isError()) {
+	std::cerr
+          << "-------------------------------------------------------------\n"
+          << "Skipping Docker tests because validation failed\n"
+	  << "[Error] " + validate.error() + "\n"
+          << "-------------------------------------------------------------"
+          << std::endl;
+      }
       return !validate.isError();
     }