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/08/14 18:37:04 UTC

mesos git commit: Consolidated two containerizer::launch methods into one.

Repository: mesos
Updated Branches:
  refs/heads/master 7a1640ad5 -> 7657b5de2


Consolidated two containerizer::launch methods into one.

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


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

Branch: refs/heads/master
Commit: 7657b5de2b2ceee0c0ac3798a429281bb24941c7
Parents: 7a1640a
Author: Gilbert Song <so...@gmail.com>
Authored: Sun Aug 14 11:36:57 2016 -0700
Committer: Jie Yu <yu...@gmail.com>
Committed: Sun Aug 14 11:36:57 2016 -0700

----------------------------------------------------------------------
 src/slave/containerizer/composing.cpp           | 136 ++++---------------
 src/slave/containerizer/composing.hpp           |  11 +-
 src/slave/containerizer/containerizer.hpp       |  22 +--
 src/slave/containerizer/docker.cpp              |  25 +---
 src/slave/containerizer/docker.hpp              |  11 +-
 src/slave/containerizer/mesos/containerizer.cpp |  24 +---
 src/slave/containerizer/mesos/containerizer.hpp |  11 +-
 src/slave/slave.cpp                             |   1 +
 src/tests/containerizer.cpp                     |  24 +---
 src/tests/containerizer.hpp                     |  14 +-
 .../composing_containerizer_tests.cpp           |  13 +-
 .../docker_containerizer_tests.cpp              |  18 +--
 .../containerizer/filesystem_isolator_tests.cpp |  14 ++
 src/tests/containerizer/isolator_tests.cpp      |   1 +
 .../containerizer/mesos_containerizer_tests.cpp |   5 +
 src/tests/hook_tests.cpp                        |   1 +
 src/tests/mesos.hpp                             |  37 +----
 src/tests/slave_recovery_tests.cpp              |   2 +-
 src/tests/slave_tests.cpp                       |   2 +-
 19 files changed, 75 insertions(+), 297 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/7657b5de/src/slave/containerizer/composing.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/composing.cpp b/src/slave/containerizer/composing.cpp
index 36d8917..532b62c 100644
--- a/src/slave/containerizer/composing.cpp
+++ b/src/slave/containerizer/composing.cpp
@@ -59,16 +59,7 @@ public:
 
   Future<bool> launch(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
-      const string& directory,
-      const Option<string>& user,
-      const SlaveID& slaveId,
-      const PID<Slave>& slavePid,
-      bool checkpoint);
-
-  Future<bool> launch(
-      const ContainerID& containerId,
-      const TaskInfo& taskInfo,
+      const Option<TaskInfo>& taskInfo,
       const ExecutorInfo& executorInfo,
       const string& directory,
       const Option<string>& user,
@@ -166,28 +157,7 @@ Future<Nothing> ComposingContainerizer::recover(
 
 Future<bool> ComposingContainerizer::launch(
     const ContainerID& containerId,
-    const ExecutorInfo& executorInfo,
-    const string& directory,
-    const Option<string>& user,
-    const SlaveID& slaveId,
-    const PID<Slave>& slavePid,
-    bool checkpoint)
-{
-  return dispatch(process,
-                  &ComposingContainerizerProcess::launch,
-                  containerId,
-                  executorInfo,
-                  directory,
-                  user,
-                  slaveId,
-                  slavePid,
-                  checkpoint);
-}
-
-
-Future<bool> ComposingContainerizer::launch(
-    const ContainerID& containerId,
-    const TaskInfo& taskInfo,
+    const Option<TaskInfo>& taskInfo,
     const ExecutorInfo& executorInfo,
     const string& directory,
     const Option<string>& user,
@@ -316,52 +286,6 @@ Future<Nothing> ComposingContainerizerProcess::___recover()
 }
 
 
-Future<bool> ComposingContainerizerProcess::launch(
-    const ContainerID& containerId,
-    const ExecutorInfo& executorInfo,
-    const string& directory,
-    const Option<string>& user,
-    const SlaveID& slaveId,
-    const PID<Slave>& slavePid,
-    bool checkpoint)
-{
-  if (containers_.contains(containerId)) {
-    return Failure("Container '" + containerId.value() +
-                   "' is already launching");
-  }
-
-  // Try each containerizer. If none of them handle the
-  // TaskInfo/ExecutorInfo then return a Failure.
-  vector<Containerizer*>::iterator containerizer = containerizers_.begin();
-
-  Container* container = new Container();
-  container->state = LAUNCHING;
-  container->containerizer = *containerizer;
-  containers_[containerId] = container;
-
-  return (*containerizer)->launch(
-      containerId,
-      executorInfo,
-      directory,
-      user,
-      slaveId,
-      slavePid,
-      checkpoint)
-    .then(defer(self(),
-                &Self::_launch,
-                containerId,
-                None(),
-                executorInfo,
-                directory,
-                user,
-                slaveId,
-                slavePid,
-                checkpoint,
-                containerizer,
-                lambda::_1));
-}
-
-
 Future<bool> ComposingContainerizerProcess::_launch(
     const ContainerID& containerId,
     const Option<TaskInfo>& taskInfo,
@@ -401,44 +325,34 @@ Future<bool> ComposingContainerizerProcess::_launch(
 
   container->containerizer = *containerizer;
 
-  Future<bool> f = taskInfo.isSome() ?
-      (*containerizer)->launch(
-          containerId,
-          taskInfo.get(),
-          executorInfo,
-          directory,
-          user,
-          slaveId,
-          slavePid,
-          checkpoint) :
-      (*containerizer)->launch(
-          containerId,
-          executorInfo,
-          directory,
-          user,
-          slaveId,
-          slavePid,
-          checkpoint);
-
-  return f.then(
-      defer(self(),
-            &Self::_launch,
-            containerId,
-            taskInfo,
-            executorInfo,
-            directory,
-            user,
-            slaveId,
-            slavePid,
-            checkpoint,
-            containerizer,
-            lambda::_1));
+  return (*containerizer)->launch(
+      containerId,
+      taskInfo,
+      executorInfo,
+      directory,
+      user,
+      slaveId,
+      slavePid,
+      checkpoint)
+    .then(defer(
+        self(),
+        &Self::_launch,
+        containerId,
+        taskInfo,
+        executorInfo,
+        directory,
+        user,
+        slaveId,
+        slavePid,
+        checkpoint,
+        containerizer,
+        lambda::_1));
 }
 
 
 Future<bool> ComposingContainerizerProcess::launch(
     const ContainerID& containerId,
-    const TaskInfo& taskInfo,
+    const Option<TaskInfo>& taskInfo,
     const ExecutorInfo& executorInfo,
     const string& directory,
     const Option<string>& user,

http://git-wip-us.apache.org/repos/asf/mesos/blob/7657b5de/src/slave/containerizer/composing.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/composing.hpp b/src/slave/containerizer/composing.hpp
index f3eebd1..492f1c1 100644
--- a/src/slave/containerizer/composing.hpp
+++ b/src/slave/containerizer/composing.hpp
@@ -56,16 +56,7 @@ public:
 
   virtual process::Future<bool> launch(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
-      const std::string& directory,
-      const Option<std::string>& user,
-      const SlaveID& slaveId,
-      const process::PID<Slave>& slavePid,
-      bool checkpoint);
-
-  virtual process::Future<bool> launch(
-      const ContainerID& containerId,
-      const TaskInfo& taskInfo,
+      const Option<TaskInfo>& taskInfo,
       const ExecutorInfo& executorInfo,
       const std::string& directory,
       const Option<std::string>& user,

http://git-wip-us.apache.org/repos/asf/mesos/blob/7657b5de/src/slave/containerizer/containerizer.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/containerizer.hpp b/src/slave/containerizer/containerizer.hpp
index b108d68..d005375 100644
--- a/src/slave/containerizer/containerizer.hpp
+++ b/src/slave/containerizer/containerizer.hpp
@@ -77,26 +77,12 @@ public:
   virtual process::Future<Nothing> recover(
       const Option<state::SlaveState>& state) = 0;
 
-  // Launch a containerized executor. Returns true if launching this
-  // ExecutorInfo is supported and it has been launched, otherwise
-  // false or a failure is something went wrong.
+  // Launch a containerized task/executor. Returns true if launching
+  // this TaskInfo/ExecutorInfo is supported and it has been launched,
+  // otherwise false or a failure if something went wrong.
   virtual process::Future<bool> launch(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
-      const std::string& directory,
-      const Option<std::string>& user,
-      const SlaveID& slaveId,
-      const process::PID<Slave>& slavePid,
-      bool checkpoint) = 0;
-
-  // Launch a containerized task. Returns true if launching this
-  // TaskInfo/ExecutorInfo is supported and it has been launched,
-  // otherwise false or a failure is something went wrong.
-  // TODO(nnielsen): Obsolete the executorInfo argument when the slave
-  // doesn't require executors to run standalone tasks.
-  virtual process::Future<bool> launch(
-      const ContainerID& containerId,
-      const TaskInfo& taskInfo,
+      const Option<TaskInfo>& taskInfo,
       const ExecutorInfo& executorInfo,
       const std::string& directory,
       const Option<std::string>& user,

http://git-wip-us.apache.org/repos/asf/mesos/blob/7657b5de/src/slave/containerizer/docker.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/docker.cpp b/src/slave/containerizer/docker.cpp
index 12bad2d..5c1ee8e 100644
--- a/src/slave/containerizer/docker.cpp
+++ b/src/slave/containerizer/docker.cpp
@@ -676,30 +676,7 @@ Future<Nothing> DockerContainerizer::recover(
 
 Future<bool> DockerContainerizer::launch(
     const ContainerID& containerId,
-    const ExecutorInfo& executorInfo,
-    const string& directory,
-    const Option<string>& user,
-    const SlaveID& slaveId,
-    const PID<Slave>& slavePid,
-    bool checkpoint)
-{
-  return dispatch(
-      process.get(),
-      &DockerContainerizerProcess::launch,
-      containerId,
-      None(),
-      executorInfo,
-      directory,
-      user,
-      slaveId,
-      slavePid,
-      checkpoint);
-}
-
-
-Future<bool> DockerContainerizer::launch(
-    const ContainerID& containerId,
-    const TaskInfo& taskInfo,
+    const Option<TaskInfo>& taskInfo,
     const ExecutorInfo& executorInfo,
     const string& directory,
     const Option<string>& user,

http://git-wip-us.apache.org/repos/asf/mesos/blob/7657b5de/src/slave/containerizer/docker.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/docker.hpp b/src/slave/containerizer/docker.hpp
index 43ca431..f2a0606 100644
--- a/src/slave/containerizer/docker.hpp
+++ b/src/slave/containerizer/docker.hpp
@@ -81,16 +81,7 @@ public:
 
   virtual process::Future<bool> launch(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
-      const std::string& directory,
-      const Option<std::string>& user,
-      const SlaveID& slaveId,
-      const process::PID<Slave>& slavePid,
-      bool checkpoint);
-
-  virtual process::Future<bool> launch(
-      const ContainerID& containerId,
-      const TaskInfo& taskInfo,
+      const Option<TaskInfo>& taskInfo,
       const ExecutorInfo& executorInfo,
       const std::string& directory,
       const Option<std::string>& user,

http://git-wip-us.apache.org/repos/asf/mesos/blob/7657b5de/src/slave/containerizer/mesos/containerizer.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/containerizer.cpp b/src/slave/containerizer/mesos/containerizer.cpp
index 86a8d8a..5ed894d 100644
--- a/src/slave/containerizer/mesos/containerizer.cpp
+++ b/src/slave/containerizer/mesos/containerizer.cpp
@@ -425,29 +425,7 @@ Future<Nothing> MesosContainerizer::recover(
 
 Future<bool> MesosContainerizer::launch(
     const ContainerID& containerId,
-    const ExecutorInfo& executorInfo,
-    const string& directory,
-    const Option<string>& user,
-    const SlaveID& slaveId,
-    const PID<Slave>& slavePid,
-    bool checkpoint)
-{
-  return dispatch(process.get(),
-                  &MesosContainerizerProcess::launch,
-                  containerId,
-                  None(),
-                  executorInfo,
-                  directory,
-                  user,
-                  slaveId,
-                  slavePid,
-                  checkpoint);
-}
-
-
-Future<bool> MesosContainerizer::launch(
-    const ContainerID& containerId,
-    const TaskInfo& taskInfo,
+    const Option<TaskInfo>& taskInfo,
     const ExecutorInfo& executorInfo,
     const string& directory,
     const Option<string>& user,

http://git-wip-us.apache.org/repos/asf/mesos/blob/7657b5de/src/slave/containerizer/mesos/containerizer.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/containerizer.hpp b/src/slave/containerizer/mesos/containerizer.hpp
index 6585356..5a43dac 100644
--- a/src/slave/containerizer/mesos/containerizer.hpp
+++ b/src/slave/containerizer/mesos/containerizer.hpp
@@ -76,16 +76,7 @@ public:
 
   virtual process::Future<bool> launch(
       const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
-      const std::string& directory,
-      const Option<std::string>& user,
-      const SlaveID& slaveId,
-      const process::PID<Slave>& slavePid,
-      bool checkpoint);
-
-  virtual process::Future<bool> launch(
-      const ContainerID& containerId,
-      const TaskInfo& taskInfo,
+      const Option<TaskInfo>& taskInfo,
       const ExecutorInfo& executorInfo,
       const std::string& directory,
       const Option<std::string>& user,

http://git-wip-us.apache.org/repos/asf/mesos/blob/7657b5de/src/slave/slave.cpp
----------------------------------------------------------------------
diff --git a/src/slave/slave.cpp b/src/slave/slave.cpp
index 29ca07a..25493cb 100644
--- a/src/slave/slave.cpp
+++ b/src/slave/slave.cpp
@@ -5803,6 +5803,7 @@ Executor* Framework::launchExecutor(
     // when it has registered to the slave.
     launch = slave->containerizer->launch(
         containerId,
+        None(),
         executorInfo_, // Modified to include the task's resources, see above.
         executor->directory,
         user,

http://git-wip-us.apache.org/repos/asf/mesos/blob/7657b5de/src/tests/containerizer.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer.cpp b/src/tests/containerizer.cpp
index 6f3950d..28087cd 100644
--- a/src/tests/containerizer.cpp
+++ b/src/tests/containerizer.cpp
@@ -90,6 +90,7 @@ TestContainerizer::~TestContainerizer()
 
 Future<bool> TestContainerizer::_launch(
     const ContainerID& containerId,
+    const Option<TaskInfo>& taskInfo,
     const ExecutorInfo& executorInfo,
     const string& directory,
     const Option<string>& user,
@@ -200,27 +201,6 @@ Future<bool> TestContainerizer::_launch(
 }
 
 
-Future<bool> TestContainerizer::launch(
-    const ContainerID& containerId,
-    const TaskInfo& taskInfo,
-    const ExecutorInfo& executorInfo,
-    const string& directory,
-    const Option<string>& user,
-    const SlaveID& slaveId,
-    const PID<slave::Slave>& slavePid,
-    bool checkpoint)
-{
-  return launch(
-      containerId,
-      executorInfo,
-      directory,
-      user,
-      slaveId,
-      slavePid,
-      checkpoint);
-}
-
-
 Future<containerizer::Termination> TestContainerizer::_wait(
     const ContainerID& containerId)
 {
@@ -303,7 +283,7 @@ void TestContainerizer::setup()
   EXPECT_CALL(*this, update(_, _))
     .WillRepeatedly(Return(Nothing()));
 
-  EXPECT_CALL(*this, launch(_, _, _, _, _, _, _))
+  EXPECT_CALL(*this, launch(_, _, _, _, _, _, _, _))
     .WillRepeatedly(Invoke(this, &TestContainerizer::_launch));
 
   EXPECT_CALL(*this, wait(_))

http://git-wip-us.apache.org/repos/asf/mesos/blob/7657b5de/src/tests/containerizer.hpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer.hpp b/src/tests/containerizer.hpp
index 76feedf..6436b52 100644
--- a/src/tests/containerizer.hpp
+++ b/src/tests/containerizer.hpp
@@ -77,10 +77,11 @@ public:
       recover,
       process::Future<Nothing>(const Option<slave::state::SlaveState>&));
 
-  MOCK_METHOD7(
+  MOCK_METHOD8(
       launch,
       process::Future<bool>(
           const ContainerID&,
+          const Option<TaskInfo>&,
           const ExecutorInfo&,
           const std::string&,
           const Option<std::string>&,
@@ -88,16 +89,6 @@ public:
           const process::PID<slave::Slave>&,
           bool checkpoint));
 
-  virtual process::Future<bool> launch(
-      const ContainerID& containerId,
-      const TaskInfo& taskInfo,
-      const ExecutorInfo& executorInfo,
-      const std::string& directory,
-      const Option<std::string>& user,
-      const SlaveID& slaveId,
-      const process::PID<slave::Slave>& slavePid,
-      bool checkpoint);
-
   MOCK_METHOD2(
       update,
       process::Future<Nothing>(const ContainerID&, const Resources&));
@@ -128,6 +119,7 @@ private:
   // Default implementations of mock methods.
   process::Future<bool> _launch(
       const ContainerID& containerId,
+      const Option<TaskInfo>& taskInfo,
       const ExecutorInfo& executorInfo,
       const std::string& directory,
       const Option<std::string>& user,

http://git-wip-us.apache.org/repos/asf/mesos/blob/7657b5de/src/tests/containerizer/composing_containerizer_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/composing_containerizer_tests.cpp b/src/tests/containerizer/composing_containerizer_tests.cpp
index e7619c1..24d458d 100644
--- a/src/tests/containerizer/composing_containerizer_tests.cpp
+++ b/src/tests/containerizer/composing_containerizer_tests.cpp
@@ -56,22 +56,11 @@ public:
       process::Future<Nothing>(
           const Option<slave::state::SlaveState>&));
 
-  MOCK_METHOD7(
-      launch,
-      process::Future<bool>(
-          const ContainerID&,
-          const ExecutorInfo&,
-          const std::string&,
-          const Option<std::string>&,
-          const SlaveID&,
-          const process::PID<Slave>&,
-          bool));
-
   MOCK_METHOD8(
       launch,
       process::Future<bool>(
           const ContainerID&,
-          const TaskInfo&,
+          const Option<TaskInfo>&,
           const ExecutorInfo&,
           const std::string&,
           const Option<std::string>&,

http://git-wip-us.apache.org/repos/asf/mesos/blob/7657b5de/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 66adeec..42d4364 100644
--- a/src/tests/containerizer/docker_containerizer_tests.cpp
+++ b/src/tests/containerizer/docker_containerizer_tests.cpp
@@ -251,10 +251,10 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Launch_Executor)
   task.mutable_executor()->CopyFrom(executorInfo);
 
   Future<ContainerID> containerId;
-  EXPECT_CALL(dockerContainerizer, launch(_, _, _, _, _, _, _))
+  EXPECT_CALL(dockerContainerizer, launch(_, _, _, _, _, _, _, _))
     .WillOnce(DoAll(FutureArg<0>(&containerId),
                     Invoke(&dockerContainerizer,
-                           &MockDockerContainerizer::_launchExecutor)));
+                           &MockDockerContainerizer::_launch)));
 
   Future<TaskStatus> statusRunning;
   Future<TaskStatus> statusFinished;
@@ -379,10 +379,10 @@ TEST_F(DockerContainerizerTest, DISABLED_ROOT_DOCKER_Launch_Executor_Bridged)
   task.mutable_executor()->CopyFrom(executorInfo);
 
   Future<ContainerID> containerId;
-  EXPECT_CALL(dockerContainerizer, launch(_, _, _, _, _, _, _))
+  EXPECT_CALL(dockerContainerizer, launch(_, _, _, _, _, _, _, _))
     .WillOnce(DoAll(FutureArg<0>(&containerId),
                     Invoke(&dockerContainerizer,
-                           &MockDockerContainerizer::_launchExecutor)));
+                           &MockDockerContainerizer::_launch)));
 
   Future<TaskStatus> statusRunning;
   Future<TaskStatus> statusFinished;
@@ -2721,11 +2721,11 @@ TEST_F(DockerContainerizerTest,
 
   Future<ContainerID> containerId;
   Future<SlaveID> slaveId;
-  EXPECT_CALL(*dockerContainerizer, launch(_, _, _, _, _, _, _))
+  EXPECT_CALL(*dockerContainerizer, launch(_, _, _, _, _, _, _, _))
     .WillOnce(DoAll(FutureArg<0>(&containerId),
-                    FutureArg<4>(&slaveId),
+                    FutureArg<5>(&slaveId),
                     Invoke(dockerContainerizer.get(),
-                           &MockDockerContainerizer::_launchExecutor)));
+                           &MockDockerContainerizer::_launch)));
 
   // We need to wait until the container's pid has been been
   // checkpointed so that when the next slave recovers it won't treat
@@ -3736,10 +3736,10 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_DockerInspectDiscard)
     .WillOnce(FutureArg<1>(&statusFailed));
 
   Future<ContainerID> containerId;
-  EXPECT_CALL(dockerContainerizer, launch(_, _, _, _, _, _, _))
+  EXPECT_CALL(dockerContainerizer, launch(_, _, _, _, _, _, _, _))
     .WillOnce(DoAll(FutureArg<0>(&containerId),
                     Invoke(&dockerContainerizer,
-                           &MockDockerContainerizer::_launchExecutor)));
+                           &MockDockerContainerizer::_launch)));
 
   driver.launchTasks(offers.get()[0].id(), {task});
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/7657b5de/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 4d852ad..3e812ec 100644
--- a/src/tests/containerizer/filesystem_isolator_tests.cpp
+++ b/src/tests/containerizer/filesystem_isolator_tests.cpp
@@ -257,6 +257,7 @@ TEST_F(LinuxFilesystemIsolatorTest, ROOT_ChangeRootFilesystem)
 
   Future<bool> launch = containerizer.get()->launch(
       containerId,
+      None(),
       executor,
       directory,
       None(),
@@ -768,6 +769,7 @@ TEST_F(LinuxFilesystemIsolatorTest, ROOT_Metrics)
 
   Future<bool> launch = containerizer.get()->launch(
       containerId,
+      None(),
       executor,
       directory,
       None(),
@@ -829,6 +831,7 @@ TEST_F(LinuxFilesystemIsolatorTest, ROOT_VolumeFromSandbox)
 
   Future<bool> launch = containerizer.get()->launch(
       containerId,
+      None(),
       executor,
       directory,
       None(),
@@ -883,6 +886,7 @@ TEST_F(LinuxFilesystemIsolatorTest, ROOT_VolumeFromHost)
 
   Future<bool> launch = containerizer.get()->launch(
       containerId,
+      None(),
       executor,
       directory,
       None(),
@@ -938,6 +942,7 @@ TEST_F(LinuxFilesystemIsolatorTest, ROOT_FileVolumeFromHost)
 
   Future<bool> launch = containerizer.get()->launch(
       containerId,
+      None(),
       executor,
       directory,
       None(),
@@ -987,6 +992,7 @@ TEST_F(LinuxFilesystemIsolatorTest, ROOT_VolumeFromHostSandboxMountPoint)
 
   Future<bool> launch = containerizer.get()->launch(
       containerId,
+      None(),
       executor,
       directory,
       None(),
@@ -1042,6 +1048,7 @@ TEST_F(LinuxFilesystemIsolatorTest, ROOT_FileVolumeFromHostSandboxMountPoint)
 
   Future<bool> launch = containerizer.get()->launch(
       containerId,
+      None(),
       executor,
       directory,
       None(),
@@ -1106,6 +1113,7 @@ TEST_F(LinuxFilesystemIsolatorTest, ROOT_PersistentVolumeWithRootFilesystem)
 
   Future<bool> launch = containerizer.get()->launch(
       containerId,
+      None(),
       executor,
       directory,
       None(),
@@ -1179,6 +1187,7 @@ TEST_F(LinuxFilesystemIsolatorTest, ROOT_PersistentVolumeWithoutRootFilesystem)
 
   Future<bool> launch = containerizer.get()->launch(
       containerId,
+      None(),
       executor,
       directory,
       None(),
@@ -1233,6 +1242,7 @@ TEST_F(LinuxFilesystemIsolatorTest, ROOT_ImageInVolumeWithoutRootFilesystem)
 
   Future<bool> launch = containerizer.get()->launch(
       containerId,
+      None(),
       executor,
       directory,
       None(),
@@ -1287,6 +1297,7 @@ TEST_F(LinuxFilesystemIsolatorTest, ROOT_ImageInVolumeWithRootFilesystem)
 
   Future<bool> launch = containerizer.get()->launch(
       containerId,
+      None(),
       executor,
       directory,
       None(),
@@ -1371,6 +1382,7 @@ TEST_F(LinuxFilesystemIsolatorTest, ROOT_MultipleContainers)
 
   Future<bool> launch1 = containerizer.get()->launch(
       containerId1,
+      None(),
       executor1,
       directory1,
       None(),
@@ -1399,6 +1411,7 @@ TEST_F(LinuxFilesystemIsolatorTest, ROOT_MultipleContainers)
 
   Future<bool> launch2 = containerizer.get()->launch(
       containerId2,
+      None(),
       executor2,
       directory2,
       None(),
@@ -1464,6 +1477,7 @@ TEST_F(LinuxFilesystemIsolatorTest, ROOT_SandboxEnvironmentVariable)
 
   Future<bool> launch = containerizer.get()->launch(
       containerId,
+      None(),
       executor,
       directory,
       None(),

http://git-wip-us.apache.org/repos/asf/mesos/blob/7657b5de/src/tests/containerizer/isolator_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/isolator_tests.cpp b/src/tests/containerizer/isolator_tests.cpp
index 4f047ae..f917db7 100644
--- a/src/tests/containerizer/isolator_tests.cpp
+++ b/src/tests/containerizer/isolator_tests.cpp
@@ -1523,6 +1523,7 @@ TEST_F(NamespacesPidIsolatorTest, ROOT_PidNamespace)
 
   process::Future<bool> launch = containerizer->launch(
       containerId,
+      None(),
       CREATE_EXECUTOR_INFO("executor", command),
       directory,
       None(),

http://git-wip-us.apache.org/repos/asf/mesos/blob/7657b5de/src/tests/containerizer/mesos_containerizer_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/mesos_containerizer_tests.cpp b/src/tests/containerizer/mesos_containerizer_tests.cpp
index e3c8daa..a01492d 100644
--- a/src/tests/containerizer/mesos_containerizer_tests.cpp
+++ b/src/tests/containerizer/mesos_containerizer_tests.cpp
@@ -179,6 +179,7 @@ TEST_F(MesosContainerizerIsolatorPreparationTest, ScriptSucceeds)
 
   Future<bool> launch = containerizer.get()->launch(
       containerId,
+      None(),
       CREATE_EXECUTOR_INFO("executor", "exit 0"),
       directory,
       None(),
@@ -230,6 +231,7 @@ TEST_F(MesosContainerizerIsolatorPreparationTest, ScriptFails)
 
   Future<bool> launch = containerizer.get()->launch(
       containerId,
+      None(),
       CREATE_EXECUTOR_INFO("executor", "exit 0"),
       directory,
       None(),
@@ -292,6 +294,7 @@ TEST_F(MesosContainerizerIsolatorPreparationTest, MultipleScripts)
 
   Future<bool> launch = containerizer.get()->launch(
       containerId,
+      None(),
       CREATE_EXECUTOR_INFO("executor", "exit 0"),
       directory,
       None(),
@@ -360,6 +363,7 @@ TEST_F(MesosContainerizerIsolatorPreparationTest, ExecutorEnvironmentVariable)
 
   Future<bool> launch = containerizer.get()->launch(
       containerId,
+      None(),
       CREATE_EXECUTOR_INFO("executor", executorCmd),
       directory,
       None(),
@@ -429,6 +433,7 @@ TEST_F(MesosContainerizerExecuteTest, IoRedirection)
 
   Future<bool> launch = containerizer->launch(
       containerId,
+      None(),
       CREATE_EXECUTOR_INFO("executor", command),
       directory,
       None(),

http://git-wip-us.apache.org/repos/asf/mesos/blob/7657b5de/src/tests/hook_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/hook_tests.cpp b/src/tests/hook_tests.cpp
index a1c8685..5e0c487 100644
--- a/src/tests/hook_tests.cpp
+++ b/src/tests/hook_tests.cpp
@@ -297,6 +297,7 @@ TEST_F(HookTest, VerifySlaveExecutorEnvironmentDecorator)
   // command validates the hook.
   process::Future<bool> launch = containerizer->launch(
       containerId,
+      None(),
       CREATE_EXECUTOR_INFO("executor", "test $FOO = 'bar'"),
       directory,
       None(),

http://git-wip-us.apache.org/repos/asf/mesos/blob/7657b5de/src/tests/mesos.hpp
----------------------------------------------------------------------
diff --git a/src/tests/mesos.hpp b/src/tests/mesos.hpp
index 59688dc..ad31276 100644
--- a/src/tests/mesos.hpp
+++ b/src/tests/mesos.hpp
@@ -1606,9 +1606,6 @@ public:
     // NOTE: See TestContainerizer::setup for why we use
     // 'EXPECT_CALL' and 'WillRepeatedly' here instead of
     // 'ON_CALL' and 'WillByDefault'.
-    EXPECT_CALL(*this, launch(_, _, _, _, _, _, _))
-      .WillRepeatedly(Invoke(this, &MockDockerContainerizer::_launchExecutor));
-
     EXPECT_CALL(*this, launch(_, _, _, _, _, _, _, _))
       .WillRepeatedly(Invoke(this, &MockDockerContainerizer::_launch));
 
@@ -1616,22 +1613,11 @@ public:
       .WillRepeatedly(Invoke(this, &MockDockerContainerizer::_update));
   }
 
-  MOCK_METHOD7(
-      launch,
-      process::Future<bool>(
-          const ContainerID&,
-          const ExecutorInfo&,
-          const std::string&,
-          const Option<std::string>&,
-          const SlaveID&,
-          const process::PID<slave::Slave>&,
-          bool checkpoint));
-
   MOCK_METHOD8(
       launch,
       process::Future<bool>(
           const ContainerID&,
-          const TaskInfo&,
+          const Option<TaskInfo>&,
           const ExecutorInfo&,
           const std::string&,
           const Option<std::string>&,
@@ -1649,7 +1635,7 @@ public:
   // use &slave::DockerContainerizer::launch with 'Invoke').
   process::Future<bool> _launch(
       const ContainerID& containerId,
-      const TaskInfo& taskInfo,
+      const Option<TaskInfo>& taskInfo,
       const ExecutorInfo& executorInfo,
       const std::string& directory,
       const Option<std::string>& user,
@@ -1668,25 +1654,6 @@ public:
         checkpoint);
   }
 
-  process::Future<bool> _launchExecutor(
-      const ContainerID& containerId,
-      const ExecutorInfo& executorInfo,
-      const std::string& directory,
-      const Option<std::string>& user,
-      const SlaveID& slaveId,
-      const slave::PID<slave::Slave>& slavePid,
-      bool checkpoint)
-  {
-    return slave::DockerContainerizer::launch(
-        containerId,
-        executorInfo,
-        directory,
-        user,
-        slaveId,
-        slavePid,
-        checkpoint);
-  }
-
   process::Future<Nothing> _update(
       const ContainerID& containerId,
       const Resources& resources)

http://git-wip-us.apache.org/repos/asf/mesos/blob/7657b5de/src/tests/slave_recovery_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/slave_recovery_tests.cpp b/src/tests/slave_recovery_tests.cpp
index 59859f5..b6d4ae5 100644
--- a/src/tests/slave_recovery_tests.cpp
+++ b/src/tests/slave_recovery_tests.cpp
@@ -3865,7 +3865,7 @@ TYPED_TEST(SlaveRecoveryTest, RestartBeforeContainerizerLaunch)
 
   // Expect the launch but don't do anything.
   Future<Nothing> launch;
-  EXPECT_CALL(containerizer1, launch(_, _, _, _, _, _, _))
+  EXPECT_CALL(containerizer1, launch(_, _, _, _, _, _, _, _))
     .WillOnce(DoAll(FutureSatisfy(&launch),
                     Return(Future<bool>())));
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/7657b5de/src/tests/slave_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/slave_tests.cpp b/src/tests/slave_tests.cpp
index 787ec5b..04fab1e 100644
--- a/src/tests/slave_tests.cpp
+++ b/src/tests/slave_tests.cpp
@@ -1136,7 +1136,7 @@ TEST_F(SlaveTest, MetricsSlaveLaunchErrors)
   JSON::Object snapshot = Metrics();
   EXPECT_EQ(0, snapshot.values["slave/container_launch_errors"]);
 
-  EXPECT_CALL(containerizer, launch(_, _, _, _, _, _, _))
+  EXPECT_CALL(containerizer, launch(_, _, _, _, _, _, _, _))
     .WillOnce(Return(Failure("Injected failure")));
 
   Future<TaskStatus> failureUpdate;