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 2016/10/27 14:49:12 UTC
[1/2] mesos git commit: Added name format validation for mesos
managed docker containers.
Repository: mesos
Updated Branches:
refs/heads/master 388bc4d08 -> 3758aa1c9
Added name format validation for mesos managed docker containers.
Review: https://reviews.apache.org/r/53047/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/3758aa1c
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/3758aa1c
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/3758aa1c
Branch: refs/heads/master
Commit: 3758aa1c95f2ab984b8f42db325d851798f24978
Parents: 9dfb30b
Author: Manuwela Kanade <ma...@gmail.com>
Authored: Wed Oct 26 22:30:34 2016 -0700
Committer: Timothy Chen <tn...@gmail.com>
Committed: Thu Oct 27 07:48:35 2016 -0700
----------------------------------------------------------------------
src/slave/containerizer/docker.cpp | 24 ++++--
.../docker_containerizer_tests.cpp | 83 ++++++++++++++++++++
2 files changed, 100 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/3758aa1c/src/slave/containerizer/docker.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/docker.cpp b/src/slave/containerizer/docker.cpp
index 8ec4c0a..f720320 100644
--- a/src/slave/containerizer/docker.cpp
+++ b/src/slave/containerizer/docker.cpp
@@ -36,6 +36,7 @@
#include <stout/hashset.hpp>
#include <stout/jsonify.hpp>
#include <stout/os.hpp>
+#include <stout/uuid.hpp>
#include <stout/os/killtree.hpp>
@@ -96,6 +97,7 @@ const string DOCKER_SYMLINK_DIRECTORY = "docker/links";
Option<ContainerID> parse(const Docker::Container& container)
{
Option<string> name = None();
+ Option<ContainerID> containerId = None();
if (strings::startsWith(container.name, DOCKER_NAME_PREFIX)) {
name = strings::remove(
@@ -116,18 +118,26 @@ Option<ContainerID> parse(const Docker::Container& container)
if (!strings::contains(name.get(), DOCKER_NAME_SEPERATOR)) {
ContainerID id;
id.set_value(name.get());
- return id;
+ containerId = id;
+ } else {
+ vector<string> parts = strings::split(name.get(), DOCKER_NAME_SEPERATOR);
+ if (parts.size() == 2 || parts.size() == 3) {
+ ContainerID id;
+ id.set_value(parts[1]);
+ containerId = id;
+ }
}
- vector<string> parts = strings::split(name.get(), DOCKER_NAME_SEPERATOR);
- if (parts.size() == 2 || parts.size() == 3) {
- ContainerID id;
- id.set_value(parts[1]);
- return id;
+ // Check if id is a valid UUID.
+ if (containerId.isSome()) {
+ Try<UUID> uuid = UUID::fromString(containerId.get().value());
+ if (uuid.isError()) {
+ return None();
+ }
}
}
- return None();
+ return containerId;
}
http://git-wip-us.apache.org/repos/asf/mesos/blob/3758aa1c/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 73ae390..a91bcad 100644
--- a/src/tests/containerizer/docker_containerizer_tests.cpp
+++ b/src/tests/containerizer/docker_containerizer_tests.cpp
@@ -1449,6 +1449,89 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_SkipRecoverNonDocker)
}
+// This test checks the docker containerizer doesn't recover containers
+// with malformed uuid.
+TEST_F(DockerContainerizerTest, ROOT_DOCKER_SkipRecoverMalformedUUID)
+{
+ MockDocker* mockDocker =
+ new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
+ Shared<Docker> docker(mockDocker);
+
+ slave::Flags flags = CreateSlaveFlags();
+ flags.docker_kill_orphans = true;
+
+ Fetcher fetcher;
+
+ Try<ContainerLogger*> logger =
+ ContainerLogger::create(flags.container_logger);
+
+ ASSERT_SOME(logger);
+
+ MockDockerContainerizer dockerContainerizer(
+ flags,
+ &fetcher,
+ Owned<ContainerLogger>(logger.get()),
+ docker);
+
+ SlaveID slaveId;
+ slaveId.set_value("s1");
+ ContainerID containerId;
+ containerId.set_value("malformedUUID");
+
+ string container = containerName(slaveId, containerId);
+
+ // Clean up container if it still exists.
+ ASSERT_TRUE(docker->rm(container, true).await(Seconds(30)));
+
+ Resources resources = Resources::parse("cpus:1;mem:512").get();
+ ContainerInfo containerInfo;
+ containerInfo.set_type(ContainerInfo::DOCKER);
+
+ // TODO(tnachen): Use local image to test if possible.
+ ContainerInfo::DockerInfo dockerInfo;
+ dockerInfo.set_image("alpine");
+ containerInfo.mutable_docker()->CopyFrom(dockerInfo);
+
+ CommandInfo commandInfo;
+ commandInfo.set_value("sleep 1000");
+
+ Future<Option<int>> run =
+ docker->run(
+ containerInfo,
+ commandInfo,
+ container,
+ flags.work_dir,
+ flags.sandbox_directory,
+ resources);
+
+ ASSERT_TRUE(
+ exists(docker, slaveId, containerId, ContainerState::RUNNING));
+
+ SlaveState slaveState;
+ slaveState.id = slaveId;
+ FrameworkState frameworkState;
+
+ ExecutorID execId;
+ execId.set_value("e1");
+
+ ExecutorState execState;
+ ExecutorInfo execInfo;
+ execState.info = execInfo;
+
+ FrameworkID frameworkId;
+ frameworkState.executors.put(execId, execState);
+ slaveState.frameworks.put(frameworkId, frameworkState);
+
+ Future<Nothing> recover = dockerContainerizer.recover(slaveState);
+ AWAIT_READY(recover);
+
+ // The container should still exist and should not get killed
+ // by containerizer recovery.
+ ASSERT_TRUE(exists(docker, slaveId, containerId));
+}
+
+
#ifdef __linux__
// This test verifies that we can launch a docker container with
// persistent volume.
[2/2] mesos git commit: Adding fromString test in UUIDTest testcase.
Posted by tn...@apache.org.
Adding fromString test in UUIDTest testcase.
Review: https://reviews.apache.org/r/53128/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/9dfb30bb
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/9dfb30bb
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/9dfb30bb
Branch: refs/heads/master
Commit: 9dfb30bb4e22a00edf2db560a95c8f97024f6075
Parents: 388bc4d
Author: Manuwela Kanade <ma...@gmail.com>
Authored: Wed Oct 26 22:21:00 2016 -0700
Committer: Timothy Chen <tn...@gmail.com>
Committed: Thu Oct 27 07:48:35 2016 -0700
----------------------------------------------------------------------
3rdparty/stout/tests/uuid_tests.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/9dfb30bb/3rdparty/stout/tests/uuid_tests.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/stout/tests/uuid_tests.cpp b/3rdparty/stout/tests/uuid_tests.cpp
index fe9894a..1fbd623 100644
--- a/3rdparty/stout/tests/uuid_tests.cpp
+++ b/3rdparty/stout/tests/uuid_tests.cpp
@@ -60,6 +60,6 @@ TEST(UUIDTest, MalformedUUID)
EXPECT_SOME(UUID::fromBytes(UUID::random().toBytes()));
EXPECT_ERROR(UUID::fromBytes("malformed-uuid"));
EXPECT_ERROR(UUID::fromBytes("invalidstringmsg"));
-
+ EXPECT_SOME(UUID::fromString(UUID::random().toString()));
EXPECT_ERROR(UUID::fromString("malformed-uuid"));
}