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/07 16:38:53 UTC
[03/10] mesos git commit: Converted the SandboxEnvironmentVariable
test to an end to end test.
Converted the SandboxEnvironmentVariable test to an end to end test.
Review: https://reviews.apache.org/r/52540
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/7ffc48f2
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/7ffc48f2
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/7ffc48f2
Branch: refs/heads/master
Commit: 7ffc48f29227ca9a88a4d25b50f0d8acea3f36d0
Parents: a089d4a
Author: Jie Yu <yu...@gmail.com>
Authored: Tue Oct 4 13:56:03 2016 -0700
Committer: Jie Yu <yu...@gmail.com>
Committed: Fri Oct 7 09:31:17 2016 -0700
----------------------------------------------------------------------
.../containerizer/filesystem_isolator_tests.cpp | 144 ++++++++++---------
1 file changed, 74 insertions(+), 70 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/7ffc48f2/src/tests/containerizer/filesystem_isolator_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/filesystem_isolator_tests.cpp b/src/tests/containerizer/filesystem_isolator_tests.cpp
index 5e75a2c..756c175 100644
--- a/src/tests/containerizer/filesystem_isolator_tests.cpp
+++ b/src/tests/containerizer/filesystem_isolator_tests.cpp
@@ -878,76 +878,6 @@ TEST_F(LinuxFilesystemIsolatorTest, ROOT_MultipleContainers)
}
-// This test verifies that the environment variables for sandbox
-// (i.e., MESOS_DIRECTORY and MESOS_SANDBOX) are set properly.
-// TODO(jieyu): Make this an end to end integration tests.
-TEST_F(LinuxFilesystemIsolatorTest, ROOT_SandboxEnvironmentVariable)
-{
- string registry = path::join(sandbox.get(), "registry");
- AWAIT_READY(DockerArchive::create(registry, "test_image"));
-
- slave::Flags flags = CreateSlaveFlags();
- flags.isolation = "filesystem/linux,docker/runtime";
- flags.docker_registry = registry;
- flags.docker_store_dir = path::join(sandbox.get(), "store");
- flags.image_providers = "docker";
-
- Try<MesosContainerizer*> create =
- MesosContainerizer::create(flags, true, &fetcher);
-
- ASSERT_SOME(create);
-
- Owned<Containerizer> containerizer(create.get());
-
- ContainerID containerId;
- containerId.set_value(UUID::random().toString());
-
- string directory = path::join(sandbox.get(), "sandbox");
- ASSERT_SOME(os::mkdir(directory));
-
- Try<string> script = strings::format(
- "if [ \"$MESOS_DIRECTORY\" != \"%s\" ]; then exit 1; fi &&"
- "if [ \"$MESOS_SANDBOX\" != \"%s\" ]; then exit 1; fi",
- directory,
- flags.sandbox_directory);
-
- ASSERT_SOME(script);
-
- ExecutorInfo executor = createExecutorInfo(
- "test_executor",
- script.get());
-
- executor.mutable_container()->CopyFrom(createContainerInfo("test_image"));
-
- map<string, string> environment = executorEnvironment(
- flags,
- executor,
- directory,
- SlaveID(),
- PID<Slave>(),
- false);
-
- Future<bool> launch = containerizer->launch(
- containerId,
- None(),
- executor,
- directory,
- None(),
- SlaveID(),
- environment,
- false);
-
- AWAIT_READY(launch);
-
- Future<Option<ContainerTermination>> wait = containerizer->wait(containerId);
-
- AWAIT_READY(wait);
- ASSERT_SOME(wait.get());
- ASSERT_TRUE(wait->get().has_status());
- EXPECT_WEXITSTATUS_EQ(0, wait->get().status());
-}
-
-
// This test verifies the case where we don't need a bind mount for
// slave's working directory because the mount containing it is
// already a shared mount in its own peer group.
@@ -1465,6 +1395,80 @@ TEST_F(LinuxFilesystemIsolatorMesosTest,
}
+// This test verifies that the environment variables for sandbox
+// (i.e., MESOS_SANDBOX) is set properly.
+TEST_F(LinuxFilesystemIsolatorMesosTest, ROOT_SandboxEnvironmentVariable)
+{
+ Try<Owned<cluster::Master>> master = StartMaster();
+ ASSERT_SOME(master);
+
+ string registry = path::join(sandbox.get(), "registry");
+ AWAIT_READY(DockerArchive::create(registry, "test_image"));
+
+ slave::Flags flags = CreateSlaveFlags();
+ flags.isolation = "filesystem/linux,docker/runtime";
+ flags.docker_registry = registry;
+ flags.docker_store_dir = path::join(sandbox.get(), "store");
+ flags.image_providers = "docker";
+
+ Owned<MasterDetector> detector = master.get()->createDetector();
+
+ Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), flags);
+ ASSERT_SOME(slave);
+
+ MockScheduler sched;
+
+ MesosSchedulerDriver driver(
+ &sched,
+ DEFAULT_FRAMEWORK_INFO,
+ master.get()->pid,
+ DEFAULT_CREDENTIAL);
+
+ EXPECT_CALL(sched, registered(&driver, _, _))
+ .Times(1);
+
+ Future<vector<Offer>> offers;
+ EXPECT_CALL(sched, resourceOffers(&driver, _))
+ .WillOnce(FutureArg<1>(&offers))
+ .WillRepeatedly(Return()); // Ignore subsequent offers.
+
+ driver.start();
+
+ AWAIT_READY(offers);
+ ASSERT_NE(0u, offers->size());
+
+ const Offer& offer = offers.get()[0];
+
+ TaskInfo task = createTask(
+ offer.slave_id(),
+ offer.resources(),
+ strings::format(
+ "if [ \"$MESOS_SANDBOX\" != \"%s\" ]; then exit 1; fi &&"
+ "if [ ! -d \"$MESOS_SANDBOX\" ]; then exit 1; fi",
+ flags.sandbox_directory).get());
+
+ task.mutable_container()->CopyFrom(createContainerInfo("test_image"));
+
+ driver.launchTasks(offer.id(), {task});
+
+ Future<TaskStatus> statusRunning;
+ Future<TaskStatus> statusFinished;
+
+ EXPECT_CALL(sched, statusUpdate(&driver, _))
+ .WillOnce(FutureArg<1>(&statusRunning))
+ .WillOnce(FutureArg<1>(&statusFinished));
+
+ AWAIT_READY(statusRunning);
+ EXPECT_EQ(TASK_RUNNING, statusRunning->state());
+
+ AWAIT_READY(statusFinished);
+ EXPECT_EQ(TASK_FINISHED, statusFinished->state());
+
+ driver.stop();
+ driver.join();
+}
+
+
// This test verifies that the volume usage accounting for sandboxes
// with bind-mounted volumes (while linux filesystem isolator is used)
// works correctly by creating a file within the volume the size of