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 2016/10/05 23:57:13 UTC
[1/2] mesos git commit: Added unit test for provisioner
'RecoverNestedContainerNoParentImage'.
Repository: mesos
Updated Branches:
refs/heads/master 76cc83198 -> 945e8929a
Added unit test for provisioner 'RecoverNestedContainerNoParentImage'.
Review: https://reviews.apache.org/r/52537/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/945e8929
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/945e8929
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/945e8929
Branch: refs/heads/master
Commit: 945e8929a759f8041c890aebcb857411b31bdc1f
Parents: 8a53c85
Author: Gilbert Song <so...@gmail.com>
Authored: Wed Oct 5 16:56:38 2016 -0700
Committer: Jie Yu <yu...@gmail.com>
Committed: Wed Oct 5 16:56:48 2016 -0700
----------------------------------------------------------------------
.../containerizer/provisioner_appc_tests.cpp | 68 ++++++++++++++++++++
1 file changed, 68 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/945e8929/src/tests/containerizer/provisioner_appc_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/provisioner_appc_tests.cpp b/src/tests/containerizer/provisioner_appc_tests.cpp
index 324ee9a..a999fc7 100644
--- a/src/tests/containerizer/provisioner_appc_tests.cpp
+++ b/src/tests/containerizer/provisioner_appc_tests.cpp
@@ -550,6 +550,74 @@ TEST_F(ProvisionerAppcTest, RecoverNestedContainer)
}
+// This test verifies that the provisioner can recover the rootfses
+// for the child containers if there is no image specified for its
+// parent container.
+TEST_F(ProvisionerAppcTest, RecoverNestedContainerNoParentImage)
+{
+ slave::Flags flags;
+ flags.image_providers = "APPC";
+ flags.appc_store_dir = path::join(os::getcwd(), "store");
+ flags.image_provisioner_backend = "copy";
+ flags.work_dir = path::join(sandbox.get(), "work_dir");
+
+ Try<Owned<Provisioner>> provisioner = Provisioner::create(flags);
+ ASSERT_SOME(provisioner);
+
+ Try<string> createImage = createTestImage(
+ flags.appc_store_dir,
+ getManifest());
+
+ ASSERT_SOME(createImage);
+
+ // Recover. This is when the image in the store is loaded.
+ AWAIT_READY(provisioner.get()->recover({}));
+
+ Image image;
+ image.mutable_appc()->CopyFrom(getTestImage());
+
+ ContainerID parent;
+ ContainerID child;
+
+ parent.set_value(UUID::random().toString());
+ child.set_value(UUID::random().toString());
+ child.mutable_parent()->CopyFrom(parent);
+
+ AWAIT_READY(provisioner.get()->provision(child, image));
+
+ provisioner->reset();
+
+ // Create a new provisioner to recover the state from the container.
+ provisioner = Provisioner::create(flags);
+ ASSERT_SOME(provisioner);
+
+ AWAIT_READY(provisioner.get()->recover({parent, child}));
+ AWAIT_READY(provisioner.get()->provision(child, image));
+
+ const string provisionerDir = slave::paths::getProvisionerDir(flags.work_dir);
+
+ string containerDir =
+ slave::provisioner::paths::getContainerDir(
+ provisionerDir,
+ child);
+
+ Future<bool> destroy = provisioner.get()->destroy(child);
+ AWAIT_READY(destroy);
+ EXPECT_TRUE(destroy.get());
+ EXPECT_FALSE(os::exists(containerDir));
+
+ containerDir =
+ slave::provisioner::paths::getContainerDir(
+ provisionerDir,
+ parent);
+
+ destroy = provisioner.get()->destroy(parent);
+ AWAIT_READY(destroy);
+ EXPECT_TRUE(destroy.get());
+ EXPECT_FALSE(os::exists(containerDir));
+}
+
+
// Mock HTTP image server.
class TestAppcImageServer : public Process<TestAppcImageServer>
{
[2/2] mesos git commit: Refactored the provisioner recover test.
Posted by ji...@apache.org.
Refactored the provisioner recover test.
Review: https://reviews.apache.org/r/52536/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/8a53c850
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/8a53c850
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/8a53c850
Branch: refs/heads/master
Commit: 8a53c850e1a85b3a69b09e5f15c7f9aa0f69f116
Parents: 76cc831
Author: Gilbert Song <so...@gmail.com>
Authored: Wed Oct 5 16:56:34 2016 -0700
Committer: Jie Yu <yu...@gmail.com>
Committed: Wed Oct 5 16:56:48 2016 -0700
----------------------------------------------------------------------
.../containerizer/provisioner_appc_tests.cpp | 44 +++++++++++---------
1 file changed, 24 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/8a53c850/src/tests/containerizer/provisioner_appc_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/provisioner_appc_tests.cpp b/src/tests/containerizer/provisioner_appc_tests.cpp
index 6ef1c92..324ee9a 100644
--- a/src/tests/containerizer/provisioner_appc_tests.cpp
+++ b/src/tests/containerizer/provisioner_appc_tests.cpp
@@ -421,8 +421,8 @@ TEST_F(ProvisionerAppcTest, Recover)
flags.image_provisioner_backend = "copy";
flags.work_dir = path::join(sandbox.get(), "work_dir");
- Try<Owned<Provisioner>> provisioner1 = Provisioner::create(flags);
- ASSERT_SOME(provisioner1);
+ Try<Owned<Provisioner>> provisioner = Provisioner::create(flags);
+ ASSERT_SOME(provisioner);
Try<string> createImage = createTestImage(
flags.appc_store_dir,
@@ -431,7 +431,7 @@ TEST_F(ProvisionerAppcTest, Recover)
ASSERT_SOME(createImage);
// Recover. This is when the image in the store is loaded.
- AWAIT_READY(provisioner1.get()->recover({}));
+ AWAIT_READY(provisioner.get()->recover({}));
Image image;
image.mutable_appc()->CopyFrom(getTestImage());
@@ -440,18 +440,20 @@ TEST_F(ProvisionerAppcTest, Recover)
containerId.set_value(UUID::random().toString());
Future<slave::ProvisionInfo> provisionInfo =
- provisioner1.get()->provision(containerId, image);
+ provisioner.get()->provision(containerId, image);
AWAIT_READY(provisionInfo);
+ provisioner->reset();
+
// Create a new provisioner to recover the state from the container.
- Try<Owned<Provisioner>> provisioner2 = Provisioner::create(flags);
- ASSERT_SOME(provisioner2);
+ provisioner = Provisioner::create(flags);
+ ASSERT_SOME(provisioner);
- AWAIT_READY(provisioner2.get()->recover({containerId}));
+ AWAIT_READY(provisioner.get()->recover({containerId}));
// It's possible for the user to provision two different rootfses
// from the same image.
- AWAIT_READY(provisioner2.get()->provision(containerId, image));
+ AWAIT_READY(provisioner.get()->provision(containerId, image));
string provisionerDir = slave::paths::getProvisionerDir(flags.work_dir);
@@ -471,7 +473,7 @@ TEST_F(ProvisionerAppcTest, Recover)
ASSERT_TRUE(rootfses->contains(flags.image_provisioner_backend));
EXPECT_EQ(2u, rootfses->get(flags.image_provisioner_backend)->size());
- Future<bool> destroy = provisioner2.get()->destroy(containerId);
+ Future<bool> destroy = provisioner.get()->destroy(containerId);
AWAIT_READY(destroy);
EXPECT_TRUE(destroy.get());
@@ -490,8 +492,8 @@ TEST_F(ProvisionerAppcTest, RecoverNestedContainer)
flags.image_provisioner_backend = "copy";
flags.work_dir = path::join(sandbox.get(), "work_dir");
- Try<Owned<Provisioner>> provisioner1 = Provisioner::create(flags);
- ASSERT_SOME(provisioner1);
+ Try<Owned<Provisioner>> provisioner = Provisioner::create(flags);
+ ASSERT_SOME(provisioner);
Try<string> createImage = createTestImage(
flags.appc_store_dir,
@@ -500,7 +502,7 @@ TEST_F(ProvisionerAppcTest, RecoverNestedContainer)
ASSERT_SOME(createImage);
// Recover. This is when the image in the store is loaded.
- AWAIT_READY(provisioner1.get()->recover({}));
+ AWAIT_READY(provisioner.get()->recover({}));
Image image;
image.mutable_appc()->CopyFrom(getTestImage());
@@ -512,15 +514,17 @@ TEST_F(ProvisionerAppcTest, RecoverNestedContainer)
child.set_value(UUID::random().toString());
child.mutable_parent()->CopyFrom(parent);
- AWAIT_READY(provisioner1.get()->provision(parent, image));
- AWAIT_READY(provisioner1.get()->provision(child, image));
+ AWAIT_READY(provisioner.get()->provision(parent, image));
+ AWAIT_READY(provisioner.get()->provision(child, image));
+
+ provisioner->reset();
// Create a new provisioner to recover the state from the container.
- Try<Owned<Provisioner>> provisioner2 = Provisioner::create(flags);
- ASSERT_SOME(provisioner2);
+ provisioner = Provisioner::create(flags);
+ ASSERT_SOME(provisioner);
- AWAIT_READY(provisioner2.get()->recover({parent, child}));
- AWAIT_READY(provisioner2.get()->provision(child, image));
+ AWAIT_READY(provisioner.get()->recover({parent, child}));
+ AWAIT_READY(provisioner.get()->provision(child, image));
const string provisionerDir = slave::paths::getProvisionerDir(flags.work_dir);
@@ -529,7 +533,7 @@ TEST_F(ProvisionerAppcTest, RecoverNestedContainer)
provisionerDir,
child);
- Future<bool> destroy = provisioner2.get()->destroy(child);
+ Future<bool> destroy = provisioner.get()->destroy(child);
AWAIT_READY(destroy);
EXPECT_TRUE(destroy.get());
EXPECT_FALSE(os::exists(containerDir));
@@ -539,7 +543,7 @@ TEST_F(ProvisionerAppcTest, RecoverNestedContainer)
provisionerDir,
parent);
- destroy = provisioner2.get()->destroy(parent);
+ destroy = provisioner.get()->destroy(parent);
AWAIT_READY(destroy);
EXPECT_TRUE(destroy.get());
EXPECT_FALSE(os::exists(containerDir));