Pass executor directory to Isolator::prepare(). Review: https://reviews.apache.org/r/24177
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/8e6e36a9 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/8e6e36a9 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/8e6e36a9 Branch: refs/heads/master Commit: 8e6e36a9ab3376cb2adb9b1e4f9d00e10fec1f8c Parents: b493875 Author: Ian Downes <[email protected]> Authored: Fri Jun 27 12:06:12 2014 -0700 Committer: Ian Downes <[email protected]> Committed: Mon Oct 27 10:36:36 2014 -0700 ---------------------------------------------------------------------- src/slave/containerizer/isolator.cpp | 6 +- src/slave/containerizer/isolator.hpp | 6 +- .../isolators/cgroups/cpushare.cpp | 3 +- .../isolators/cgroups/cpushare.hpp | 3 +- .../containerizer/isolators/cgroups/mem.cpp | 3 +- .../containerizer/isolators/cgroups/mem.hpp | 3 +- .../isolators/cgroups/perf_event.cpp | 3 +- .../isolators/cgroups/perf_event.hpp | 3 +- .../isolators/network/port_mapping.cpp | 3 +- .../isolators/network/port_mapping.hpp | 3 +- src/slave/containerizer/isolators/posix.hpp | 3 +- src/tests/isolator.hpp | 3 +- src/tests/isolator_tests.cpp | 50 +++++++--- src/tests/port_mapping_tests.cpp | 99 +++++++++++++++++--- 14 files changed, 149 insertions(+), 42 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/8e6e36a9/src/slave/containerizer/isolator.cpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/isolator.cpp b/src/slave/containerizer/isolator.cpp index 5e61bf2..69849d2 100644 --- a/src/slave/containerizer/isolator.cpp +++ b/src/slave/containerizer/isolator.cpp @@ -52,12 +52,14 @@ Future<Nothing> Isolator::recover(const list<state::RunState>& state) Future<Option<CommandInfo> > Isolator::prepare( const ContainerID& containerId, - const ExecutorInfo& executorInfo) + const ExecutorInfo& executorInfo, + const string& directory) { return dispatch(process.get(), &IsolatorProcess::prepare, containerId, - executorInfo); + executorInfo, + directory); } http://git-wip-us.apache.org/repos/asf/mesos/blob/8e6e36a9/src/slave/containerizer/isolator.hpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/isolator.hpp b/src/slave/containerizer/isolator.hpp index e52e8b1..4c9d1d8 100644 --- a/src/slave/containerizer/isolator.hpp +++ b/src/slave/containerizer/isolator.hpp @@ -77,7 +77,8 @@ public: // only the command value is used. process::Future<Option<CommandInfo> > prepare( const ContainerID& containerId, - const ExecutorInfo& executorInfo); + const ExecutorInfo& executorInfo, + const std::string& directory); // Isolate the executor. process::Future<Nothing> isolate( @@ -119,7 +120,8 @@ public: virtual process::Future<Option<CommandInfo> > prepare( const ContainerID& containerId, - const ExecutorInfo& executorInfo) = 0; + const ExecutorInfo& executorInfo, + const std::string& directory) = 0; virtual process::Future<Nothing> isolate( const ContainerID& containerId, http://git-wip-us.apache.org/repos/asf/mesos/blob/8e6e36a9/src/slave/containerizer/isolators/cgroups/cpushare.cpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/isolators/cgroups/cpushare.cpp b/src/slave/containerizer/isolators/cgroups/cpushare.cpp index 7164ecc..f9531e4 100644 --- a/src/slave/containerizer/isolators/cgroups/cpushare.cpp +++ b/src/slave/containerizer/isolators/cgroups/cpushare.cpp @@ -249,7 +249,8 @@ Future<Nothing> CgroupsCpushareIsolatorProcess::recover( Future<Option<CommandInfo> > CgroupsCpushareIsolatorProcess::prepare( const ContainerID& containerId, - const ExecutorInfo& executorInfo) + const ExecutorInfo& executorInfo, + const string& directory) { if (infos.contains(containerId)) { return Failure("Container has already been prepared"); http://git-wip-us.apache.org/repos/asf/mesos/blob/8e6e36a9/src/slave/containerizer/isolators/cgroups/cpushare.hpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/isolators/cgroups/cpushare.hpp b/src/slave/containerizer/isolators/cgroups/cpushare.hpp index 2187c29..5d43169 100644 --- a/src/slave/containerizer/isolators/cgroups/cpushare.hpp +++ b/src/slave/containerizer/isolators/cgroups/cpushare.hpp @@ -47,7 +47,8 @@ public: virtual process::Future<Option<CommandInfo> > prepare( const ContainerID& containerId, - const ExecutorInfo& executorInfo); + const ExecutorInfo& executorInfo, + const std::string& directory); virtual process::Future<Nothing> isolate( const ContainerID& containerId, http://git-wip-us.apache.org/repos/asf/mesos/blob/8e6e36a9/src/slave/containerizer/isolators/cgroups/mem.cpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/isolators/cgroups/mem.cpp b/src/slave/containerizer/isolators/cgroups/mem.cpp index b3d4a5d..96bc506 100644 --- a/src/slave/containerizer/isolators/cgroups/mem.cpp +++ b/src/slave/containerizer/isolators/cgroups/mem.cpp @@ -204,7 +204,8 @@ Future<Nothing> CgroupsMemIsolatorProcess::recover( Future<Option<CommandInfo> > CgroupsMemIsolatorProcess::prepare( const ContainerID& containerId, - const ExecutorInfo& executorInfo) + const ExecutorInfo& executorInfo, + const string& directory) { if (infos.contains(containerId)) { return Failure("Container has already been prepared"); http://git-wip-us.apache.org/repos/asf/mesos/blob/8e6e36a9/src/slave/containerizer/isolators/cgroups/mem.hpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/isolators/cgroups/mem.hpp b/src/slave/containerizer/isolators/cgroups/mem.hpp index b1b4f5a..25e4afc 100644 --- a/src/slave/containerizer/isolators/cgroups/mem.hpp +++ b/src/slave/containerizer/isolators/cgroups/mem.hpp @@ -41,7 +41,8 @@ public: virtual process::Future<Option<CommandInfo> > prepare( const ContainerID& containerId, - const ExecutorInfo& executorInfo); + const ExecutorInfo& executorInfo, + const std::string& directory); virtual process::Future<Nothing> isolate( const ContainerID& containerId, http://git-wip-us.apache.org/repos/asf/mesos/blob/8e6e36a9/src/slave/containerizer/isolators/cgroups/perf_event.cpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/isolators/cgroups/perf_event.cpp b/src/slave/containerizer/isolators/cgroups/perf_event.cpp index 4ced508..7ed418a 100644 --- a/src/slave/containerizer/isolators/cgroups/perf_event.cpp +++ b/src/slave/containerizer/isolators/cgroups/perf_event.cpp @@ -213,7 +213,8 @@ Future<Nothing> CgroupsPerfEventIsolatorProcess::recover( Future<Option<CommandInfo> > CgroupsPerfEventIsolatorProcess::prepare( const ContainerID& containerId, - const ExecutorInfo& executorInfo) + const ExecutorInfo& executorInfo, + const string& directory) { if (infos.contains(containerId)) { return Failure("Container has already been prepared"); http://git-wip-us.apache.org/repos/asf/mesos/blob/8e6e36a9/src/slave/containerizer/isolators/cgroups/perf_event.hpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/isolators/cgroups/perf_event.hpp b/src/slave/containerizer/isolators/cgroups/perf_event.hpp index f7283d8..7cb2ba2 100644 --- a/src/slave/containerizer/isolators/cgroups/perf_event.hpp +++ b/src/slave/containerizer/isolators/cgroups/perf_event.hpp @@ -45,7 +45,8 @@ public: virtual process::Future<Option<CommandInfo> > prepare( const ContainerID& containerId, - const ExecutorInfo& executorInfo); + const ExecutorInfo& executorInfo, + const std::string& directory); virtual process::Future<Nothing> isolate( const ContainerID& containerId, http://git-wip-us.apache.org/repos/asf/mesos/blob/8e6e36a9/src/slave/containerizer/isolators/network/port_mapping.cpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/isolators/network/port_mapping.cpp b/src/slave/containerizer/isolators/network/port_mapping.cpp index 9cb7487..1d0609a 100644 --- a/src/slave/containerizer/isolators/network/port_mapping.cpp +++ b/src/slave/containerizer/isolators/network/port_mapping.cpp @@ -1437,7 +1437,8 @@ PortMappingIsolatorProcess::_recover(pid_t pid) Future<Option<CommandInfo> > PortMappingIsolatorProcess::prepare( const ContainerID& containerId, - const ExecutorInfo& executorInfo) + const ExecutorInfo& executorInfo, + const string& directory) { if (unmanaged.contains(containerId)) { return Failure("Asked to prepare an unmanaged container"); http://git-wip-us.apache.org/repos/asf/mesos/blob/8e6e36a9/src/slave/containerizer/isolators/network/port_mapping.hpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/isolators/network/port_mapping.hpp b/src/slave/containerizer/isolators/network/port_mapping.hpp index b3fd331..f9215b2 100644 --- a/src/slave/containerizer/isolators/network/port_mapping.hpp +++ b/src/slave/containerizer/isolators/network/port_mapping.hpp @@ -134,7 +134,8 @@ public: virtual process::Future<Option<CommandInfo> > prepare( const ContainerID& containerId, - const ExecutorInfo& executorInfo); + const ExecutorInfo& executorInfo, + const std::string& directory); virtual process::Future<Nothing> isolate( const ContainerID& containerId, http://git-wip-us.apache.org/repos/asf/mesos/blob/8e6e36a9/src/slave/containerizer/isolators/posix.hpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/isolators/posix.hpp b/src/slave/containerizer/isolators/posix.hpp index 6038e92..7e02f92 100644 --- a/src/slave/containerizer/isolators/posix.hpp +++ b/src/slave/containerizer/isolators/posix.hpp @@ -69,7 +69,8 @@ public: virtual process::Future<Option<CommandInfo> > prepare( const ContainerID& containerId, - const ExecutorInfo& executorInfo) + const ExecutorInfo& executorInfo, + const std::string& directory) { if (promises.contains(containerId)) { return process::Failure("Container " + stringify(containerId) + http://git-wip-us.apache.org/repos/asf/mesos/blob/8e6e36a9/src/tests/isolator.hpp ---------------------------------------------------------------------- diff --git a/src/tests/isolator.hpp b/src/tests/isolator.hpp index 89df4c4..d8f3f09 100644 --- a/src/tests/isolator.hpp +++ b/src/tests/isolator.hpp @@ -45,7 +45,8 @@ public: virtual process::Future<Option<CommandInfo> > prepare( const ContainerID& containerId, - const ExecutorInfo& executorInfo) + const ExecutorInfo& executorInfo, + const std::string& directory) { return commandInfo; } http://git-wip-us.apache.org/repos/asf/mesos/blob/8e6e36a9/src/tests/isolator_tests.cpp ---------------------------------------------------------------------- diff --git a/src/tests/isolator_tests.cpp b/src/tests/isolator_tests.cpp index 52b38a3..db7a58a 100644 --- a/src/tests/isolator_tests.cpp +++ b/src/tests/isolator_tests.cpp @@ -148,10 +148,13 @@ TYPED_TEST(CpuIsolatorTest, UserCpuUsage) ContainerID containerId; containerId.set_value("user_cpu_usage"); - AWAIT_READY(isolator.get()->prepare(containerId, executorInfo)); - - Try<string> dir = os::mkdtemp(); + // Use a relative temporary directory so it gets cleaned up + // automatically with the test. + Try<string> dir = os::mkdtemp(path::join(os::getcwd(), "XXXXXX")); ASSERT_SOME(dir); + + AWAIT_READY(isolator.get()->prepare(containerId, executorInfo, dir.get())); + const string& file = path::join(dir.get(), "mesos_isolator_test_ready"); // Max out a single core in userspace. This will run for at most one second. @@ -230,8 +233,6 @@ TYPED_TEST(CpuIsolatorTest, UserCpuUsage) delete isolator.get(); delete launcher.get(); - - CHECK_SOME(os::rmdir(dir.get())); } @@ -252,10 +253,13 @@ TYPED_TEST(CpuIsolatorTest, SystemCpuUsage) ContainerID containerId; containerId.set_value("system_cpu_usage"); - AWAIT_READY(isolator.get()->prepare(containerId, executorInfo)); - - Try<string> dir = os::mkdtemp(); + // Use a relative temporary directory so it gets cleaned up + // automatically with the test. + Try<string> dir = os::mkdtemp(path::join(os::getcwd(), "XXXXXX")); ASSERT_SOME(dir); + + AWAIT_READY(isolator.get()->prepare(containerId, executorInfo, dir.get())); + const string& file = path::join(dir.get(), "mesos_isolator_test_ready"); // Generating random numbers is done by the kernel and will max out a single @@ -335,8 +339,6 @@ TYPED_TEST(CpuIsolatorTest, SystemCpuUsage) delete isolator.get(); delete launcher.get(); - - CHECK_SOME(os::rmdir(dir.get())); } @@ -364,7 +366,12 @@ TEST_F(LimitedCpuIsolatorTest, ROOT_CGROUPS_Cfs) ContainerID containerId; containerId.set_value("mesos_test_cfs_cpu_limit"); - AWAIT_READY(isolator.get()->prepare(containerId, executorInfo)); + // Use a relative temporary directory so it gets cleaned up + // automatically with the test. + Try<string> dir = os::mkdtemp(path::join(os::getcwd(), "XXXXXX")); + ASSERT_SOME(dir); + + AWAIT_READY(isolator.get()->prepare(containerId, executorInfo, dir.get())); // Generate random numbers to max out a single core. We'll run this for 0.5 // seconds of wall time so it should consume approximately 250 ms of total @@ -465,7 +472,12 @@ TEST_F(LimitedCpuIsolatorTest, ROOT_CGROUPS_Cfs_Big_Quota) ContainerID containerId; containerId.set_value("mesos_test_cfs_big_cpu_limit"); - AWAIT_READY(isolator.get()->prepare(containerId, executorInfo)); + // Use a relative temporary directory so it gets cleaned up + // automatically with the test. + Try<string> dir = os::mkdtemp(path::join(os::getcwd(), "XXXXXX")); + ASSERT_SOME(dir); + + AWAIT_READY(isolator.get()->prepare(containerId, executorInfo, dir.get())); int pipes[2]; ASSERT_NE(-1, ::pipe(pipes)); @@ -594,7 +606,12 @@ TYPED_TEST(MemIsolatorTest, MemUsage) ContainerID containerId; containerId.set_value("memory_usage"); - AWAIT_READY(isolator.get()->prepare(containerId, executorInfo)); + // Use a relative temporary directory so it gets cleaned up + // automatically with the test. + Try<string> dir = os::mkdtemp(path::join(os::getcwd(), "XXXXXX")); + ASSERT_SOME(dir); + + AWAIT_READY(isolator.get()->prepare(containerId, executorInfo, dir.get())); int pipes[2]; ASSERT_NE(-1, ::pipe(pipes)); @@ -681,7 +698,12 @@ TEST_F(PerfEventIsolatorTest, ROOT_CGROUPS_Sample) ContainerID containerId; containerId.set_value("test"); - AWAIT_READY(isolator.get()->prepare(containerId, executorInfo)); + // Use a relative temporary directory so it gets cleaned up + // automatically with the test. + Try<string> dir = os::mkdtemp(path::join(os::getcwd(), "XXXXXX")); + ASSERT_SOME(dir); + + AWAIT_READY(isolator.get()->prepare(containerId, executorInfo, dir.get())); // This first sample is likely to be empty because perf hasn't // completed yet but we should still have the required fields. http://git-wip-us.apache.org/repos/asf/mesos/blob/8e6e36a9/src/tests/port_mapping_tests.cpp ---------------------------------------------------------------------- diff --git a/src/tests/port_mapping_tests.cpp b/src/tests/port_mapping_tests.cpp index 973bdef..1a5e52c 100644 --- a/src/tests/port_mapping_tests.cpp +++ b/src/tests/port_mapping_tests.cpp @@ -357,8 +357,13 @@ TEST_F(PortMappingIsolatorTest, ROOT_ContainerToContainerTCPTest) ContainerID containerId1; containerId1.set_value("container1"); + // Use a relative temporary directory so it gets cleaned up + // automatically with the test. + Try<string> dir1 = os::mkdtemp(path::join(os::getcwd(), "XXXXXX")); + ASSERT_SOME(dir1); + Future<Option<CommandInfo> > preparation1 = - isolator.get()->prepare(containerId1, executorInfo); + isolator.get()->prepare(containerId1, executorInfo, dir1.get()); AWAIT_READY(preparation1); ASSERT_SOME(preparation1.get()); @@ -411,8 +416,14 @@ TEST_F(PortMappingIsolatorTest, ROOT_ContainerToContainerTCPTest) executorInfo.mutable_resources()->CopyFrom( Resources::parse(container2Ports).get()); + // Use a relative temporary directory so it gets cleaned up + // automatically with the test. + Try<string> dir2 = os::mkdtemp(path::join(os::getcwd(), "XXXXXX")); + ASSERT_SOME(dir2); + Future<Option<CommandInfo> > preparation2 = - isolator.get()->prepare(containerId2, executorInfo); + isolator.get()->prepare(containerId2, executorInfo, dir2.get()); + AWAIT_READY(preparation2); ASSERT_SOME(preparation2.get()); @@ -493,8 +504,13 @@ TEST_F(PortMappingIsolatorTest, ROOT_ContainerToContainerUDPTest) ContainerID containerId1; containerId1.set_value("container1"); + // Use a relative temporary directory so it gets cleaned up + // automatically with the test. + Try<string> dir1 = os::mkdtemp(path::join(os::getcwd(), "XXXXXX")); + ASSERT_SOME(dir1); + Future<Option<CommandInfo> > preparation1 = - isolator.get()->prepare(containerId1, executorInfo); + isolator.get()->prepare(containerId1, executorInfo, dir1.get()); AWAIT_READY(preparation1); ASSERT_SOME(preparation1.get()); @@ -548,8 +564,13 @@ TEST_F(PortMappingIsolatorTest, ROOT_ContainerToContainerUDPTest) executorInfo.mutable_resources()->CopyFrom( Resources::parse(container2Ports).get()); + // Use a relative temporary directory so it gets cleaned up + // automatically with the test. + Try<string> dir2 = os::mkdtemp(path::join(os::getcwd(), "XXXXXX")); + ASSERT_SOME(dir2); + Future<Option<CommandInfo> > preparation2 = - isolator.get()->prepare(containerId2, executorInfo); + isolator.get()->prepare(containerId2, executorInfo, dir2.get()); AWAIT_READY(preparation2); ASSERT_SOME(preparation2.get()); @@ -631,8 +652,13 @@ TEST_F(PortMappingIsolatorTest, ROOT_HostToContainerUDPTest) ContainerID containerId; containerId.set_value("container1"); + // Use a relative temporary directory so it gets cleaned up + // automatically with the test. + Try<string> dir = os::mkdtemp(path::join(os::getcwd(), "XXXXXX")); + ASSERT_SOME(dir); + Future<Option<CommandInfo> > preparation1 = - isolator.get()->prepare(containerId, executorInfo); + isolator.get()->prepare(containerId, executorInfo, dir.get()); AWAIT_READY(preparation1); ASSERT_SOME(preparation1.get()); @@ -740,8 +766,13 @@ TEST_F(PortMappingIsolatorTest, ROOT_HostToContainerTCPTest) ContainerID containerId; containerId.set_value("container1"); + // Use a relative temporary directory so it gets cleaned up + // automatically with the test. + Try<string> dir = os::mkdtemp(path::join(os::getcwd(), "XXXXXX")); + ASSERT_SOME(dir); + Future<Option<CommandInfo> > preparation1 = - isolator.get()->prepare(containerId, executorInfo); + isolator.get()->prepare(containerId, executorInfo, dir.get()); AWAIT_READY(preparation1); ASSERT_SOME(preparation1.get()); @@ -856,8 +887,13 @@ TEST_F(PortMappingIsolatorTest, ROOT_ContainerICMPExternalTest) ContainerID containerId; containerId.set_value("container1"); + // Use a relative temporary directory so it gets cleaned up + // automatically with the test. + Try<string> dir = os::mkdtemp(path::join(os::getcwd(), "XXXXXX")); + ASSERT_SOME(dir); + Future<Option<CommandInfo> > preparation1 = - isolator.get()->prepare(containerId, executorInfo); + isolator.get()->prepare(containerId, executorInfo, dir.get()); AWAIT_READY(preparation1); ASSERT_SOME(preparation1.get()); @@ -929,8 +965,13 @@ TEST_F(PortMappingIsolatorTest, ROOT_ContainerICMPInternalTest) ContainerID containerId; containerId.set_value("container1"); + // Use a relative temporary directory so it gets cleaned up + // automatically with the test. + Try<string> dir = os::mkdtemp(path::join(os::getcwd(), "XXXXXX")); + ASSERT_SOME(dir); + Future<Option<CommandInfo> > preparation1 = - isolator.get()->prepare(containerId, executorInfo); + isolator.get()->prepare(containerId, executorInfo, dir.get()); AWAIT_READY(preparation1); ASSERT_SOME(preparation1.get()); @@ -1006,8 +1047,13 @@ TEST_F(PortMappingIsolatorTest, ROOT_ContainerARPExternalTest) ContainerID containerId; containerId.set_value("container1"); + // Use a relative temporary directory so it gets cleaned up + // automatically with the test. + Try<string> dir = os::mkdtemp(path::join(os::getcwd(), "XXXXXX")); + ASSERT_SOME(dir); + Future<Option<CommandInfo> > preparation1 = - isolator.get()->prepare(containerId, executorInfo); + isolator.get()->prepare(containerId, executorInfo, dir.get()); AWAIT_READY(preparation1); ASSERT_SOME(preparation1.get()); @@ -1088,8 +1134,13 @@ TEST_F(PortMappingIsolatorTest, ROOT_DNSTest) ContainerID containerId; containerId.set_value("container1"); + // Use a relative temporary directory so it gets cleaned up + // automatically with the test. + Try<string> dir = os::mkdtemp(path::join(os::getcwd(), "XXXXXX")); + ASSERT_SOME(dir); + Future<Option<CommandInfo> > preparation1 = - isolator.get()->prepare(containerId, executorInfo); + isolator.get()->prepare(containerId, executorInfo, dir.get()); AWAIT_READY(preparation1); ASSERT_SOME(preparation1.get()); @@ -1166,8 +1217,13 @@ TEST_F(PortMappingIsolatorTest, ROOT_TooManyContainersTest) ContainerID containerId1; containerId1.set_value("container1"); + // Use a relative temporary directory so it gets cleaned up + // automatically with the test. + Try<string> dir1 = os::mkdtemp(path::join(os::getcwd(), "XXXXXX")); + ASSERT_SOME(dir1); + Future<Option<CommandInfo> > preparation1 = - isolator.get()->prepare(containerId1, executorInfo); + isolator.get()->prepare(containerId1, executorInfo, dir1.get()); AWAIT_READY(preparation1); ASSERT_SOME(preparation1.get()); @@ -1205,8 +1261,13 @@ TEST_F(PortMappingIsolatorTest, ROOT_TooManyContainersTest) executorInfo.mutable_resources()->CopyFrom( Resources::parse(container2Ports).get()); + // Use a relative temporary directory so it gets cleaned up + // automatically with the test. + Try<string> dir2 = os::mkdtemp(path::join(os::getcwd(), "XXXXXX")); + ASSERT_SOME(dir2); + Future<Option<CommandInfo> > preparation2 = - isolator.get()->prepare(containerId2, executorInfo); + isolator.get()->prepare(containerId2, executorInfo, dir2.get()); AWAIT_FAILED(preparation2); // Ensure all processes are killed. @@ -1258,8 +1319,13 @@ TEST_F(PortMappingIsolatorTest, ROOT_SmallEgressLimitTest) ContainerID containerId; containerId.set_value("container1"); + // Use a relative temporary directory so it gets cleaned up + // automatically with the test. + Try<string> dir = os::mkdtemp(path::join(os::getcwd(), "XXXXXX")); + ASSERT_SOME(dir); + Future<Option<CommandInfo> > preparation1 = - isolator.get()->prepare(containerId, executorInfo); + isolator.get()->prepare(containerId, executorInfo, dir.get()); AWAIT_READY(preparation1); ASSERT_SOME(preparation1.get()); @@ -1374,8 +1440,13 @@ TEST_F(PortMappingIsolatorTest, ROOT_ExportRTTTest) ContainerID containerId; containerId.set_value("container1"); + // Use a relative temporary directory so it gets cleaned up + // automatically with the test. + Try<string> dir1 = os::mkdtemp(path::join(os::getcwd(), "XXXXXX")); + ASSERT_SOME(dir1); + Future<Option<CommandInfo> > preparation1 = - isolator.get()->prepare(containerId, executorInfo); + isolator.get()->prepare(containerId, executorInfo, dir1.get()); AWAIT_READY(preparation1); ASSERT_SOME(preparation1.get());
