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 2015/09/04 12:03:09 UTC
mesos git commit: Made docker version parsing resilient to trailing
version components.
Repository: mesos
Updated Branches:
refs/heads/master ff9c9769a -> 1830a28bf
Made docker version parsing resilient to trailing version components.
Review: https://reviews.apache.org/r/37669
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/1830a28b
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/1830a28b
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/1830a28b
Branch: refs/heads/master
Commit: 1830a28bfbe2c53136896b467b749c34910ef5b4
Parents: ff9c976
Author: haosdent huang <ha...@gmail.com>
Authored: Fri Sep 4 11:24:45 2015 +0200
Committer: Bernd Mathiske <be...@mesosphere.io>
Committed: Fri Sep 4 11:57:15 2015 +0200
----------------------------------------------------------------------
src/docker/docker.cpp | 13 ++++++++++++-
src/tests/containerizer/docker_tests.cpp | 26 ++++++++++++++++++++++++++
2 files changed, 38 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/1830a28b/src/docker/docker.cpp
----------------------------------------------------------------------
diff --git a/src/docker/docker.cpp b/src/docker/docker.cpp
index 2e17ced..ec2de54 100755
--- a/src/docker/docker.cpp
+++ b/src/docker/docker.cpp
@@ -198,7 +198,18 @@ Future<Version> Docker::__version(const Future<string>& output)
vector<string> subParts = strings::split(parts.front(), " ");
if (!subParts.empty()) {
- Try<Version> version = Version::parse(subParts.back());
+ // Docker version output in Fedora 22 is "x.x.x.fc22" which does not match
+ // the Semantic Versioning specification(<major>[.<minor>[.<patch>]]). We
+ // remove the overflow components here before parsing the docker version
+ // output to a Version struct.
+ string versionString = subParts.back();
+ vector<string> components = strings::split(versionString, ".");
+ if (components.size() > 3) {
+ components.erase(components.begin() + 3, components.end());
+ }
+ versionString = strings::join(".", components);
+
+ Try<Version> version = Version::parse(versionString);
if (version.isError()) {
return Failure("Failed to parse docker version: " +
http://git-wip-us.apache.org/repos/asf/mesos/blob/1830a28b/src/tests/containerizer/docker_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/docker_tests.cpp b/src/tests/containerizer/docker_tests.cpp
index cfad368..babc7d8 100644
--- a/src/tests/containerizer/docker_tests.cpp
+++ b/src/tests/containerizer/docker_tests.cpp
@@ -225,6 +225,32 @@ TEST_F(DockerTest, ROOT_DOCKER_interface)
}
+// This test tests parsing docker version output.
+TEST_F(DockerTest, ROOT_DOCKER_parsing_version)
+{
+ Owned<Docker> docker1(Docker::create("echo Docker version 1.7.1, build",
+ tests::flags.docker_socket,
+ false).get());
+ Future<Version> version1 = docker1->version();
+ AWAIT_READY(version1);
+ EXPECT_EQ(version1.get(), Version::parse("1.7.1").get());
+
+ Owned<Docker> docker2(Docker::create("echo Docker version 1.7.1.fc22, build",
+ tests::flags.docker_socket,
+ false).get());
+ Future<Version> version2 = docker2->version();
+ AWAIT_READY(version2);
+ EXPECT_EQ(version2.get(), Version::parse("1.7.1").get());
+
+ Owned<Docker> docker3(Docker::create("echo Docker version 1.7.1-fc22, build",
+ tests::flags.docker_socket,
+ false).get());
+ Future<Version> version3 = docker3->version();
+ AWAIT_READY(version3);
+ EXPECT_EQ(version3.get(), Version::parse("1.7.1").get());
+}
+
+
TEST_F(DockerTest, ROOT_DOCKER_CheckCommandWithShell)
{
Owned<Docker> docker(Docker::create(tests::flags.docker,