You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ji...@apache.org on 2017/02/23 02:49:06 UTC

mesos git commit: Added test for nested container agent reboot case.

Repository: mesos
Updated Branches:
  refs/heads/master 209f8e7fd -> b5ba2b8dd


Added test for nested container agent reboot case.

Review: https://reviews.apache.org/r/56809/


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

Branch: refs/heads/master
Commit: b5ba2b8dd65518a45e847b79b24f48cf5a779353
Parents: 209f8e7
Author: Gilbert Song <so...@gmail.com>
Authored: Wed Feb 22 18:48:59 2017 -0800
Committer: Jie Yu <yu...@gmail.com>
Committed: Wed Feb 22 18:48:59 2017 -0800

----------------------------------------------------------------------
 .../containerizer/provisioner_docker_tests.cpp  | 46 ++++++++++++++++++++
 1 file changed, 46 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/b5ba2b8d/src/tests/containerizer/provisioner_docker_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/provisioner_docker_tests.cpp b/src/tests/containerizer/provisioner_docker_tests.cpp
index ce57c06..01c0682 100644
--- a/src/tests/containerizer/provisioner_docker_tests.cpp
+++ b/src/tests/containerizer/provisioner_docker_tests.cpp
@@ -33,6 +33,7 @@
 #endif
 
 #include "slave/containerizer/mesos/provisioner/constants.hpp"
+#include "slave/containerizer/mesos/provisioner/paths.hpp"
 
 #include "slave/containerizer/mesos/provisioner/docker/metadata_manager.hpp"
 #include "slave/containerizer/mesos/provisioner/docker/paths.hpp"
@@ -66,6 +67,7 @@ using master::Master;
 using mesos::internal::slave::AUFS_BACKEND;
 using mesos::internal::slave::COPY_BACKEND;
 using mesos::internal::slave::OVERLAY_BACKEND;
+using mesos::internal::slave::Provisioner;
 
 using mesos::master::detector::MasterDetector;
 
@@ -865,6 +867,50 @@ TEST_F(ProvisionerDockerPullerTest, ROOT_INTERNET_CURL_ImageDigest)
   driver.join();
 }
 
+
+// This test simulate the case that after the agent reboots the
+// container runtime directory is gone while the provisioner
+// directory still survives. The recursive `provisioner::destroy()`
+// can make sure that a child container is always cleaned up
+// before its parent container.
+TEST_F(ProvisionerDockerPullerTest, ROOT_RecoverNestedOnReboot)
+{
+  const string directory = path::join(os::getcwd(), "archives");
+
+  Future<Nothing> testImage = DockerArchive::create(directory, "alpine");
+  AWAIT_READY(testImage);
+
+  slave::Flags flags = CreateSlaveFlags();
+  flags.isolation = "docker/runtime,filesystem/linux";
+  flags.image_providers = "docker";
+
+  Try<Owned<Provisioner>> provisioner = Provisioner::create(flags);
+  ASSERT_SOME(provisioner);
+
+  ContainerID containerId;
+  containerId.set_value(UUID::random().toString());
+
+  ContainerID nestedContainerId;
+  nestedContainerId.mutable_parent()->CopyFrom(containerId);
+  nestedContainerId.set_value(UUID::random().toString());
+
+  Image image;
+  image.set_type(Image::DOCKER);
+  image.mutable_docker()->set_name("alpine");
+
+  AWAIT_READY(provisioner.get()->provision(nestedContainerId, image));
+
+  // Passing an empty hashset to `provisioner::recover()` to
+  // simulate the agent reboot scenario.
+  AWAIT_READY(provisioner.get()->recover({}));
+
+  const string containerDir = slave::provisioner::paths::getContainerDir(
+      slave::paths::getProvisionerDir(flags.work_dir),
+      containerId);
+
+  EXPECT_FALSE(os::exists(containerDir));
+}
+
 #endif
 
 } // namespace tests {