You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by jo...@apache.org on 2017/05/26 01:41:06 UTC

[15/16] mesos git commit: Updated fetcher tests to reflect changed interfaces.

Updated fetcher tests to reflect changed interfaces.

There are two primary changes to the tests:
  * The arguments passed to the fetcher's methods no longer contain
    the Flags or SlaveID.  So a couple of the mock expectations need
    to be tweaked.
  * Flags are now passed into the fetcher at construction.  Some of
    the tests modify the flags after construction, so the order of
    operations needed to be flipped.

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


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

Branch: refs/heads/master
Commit: 391ced51552f4917fd3fe33f1003391ce7d01f75
Parents: c66f7e2
Author: Joseph Wu <jo...@apache.org>
Authored: Wed May 10 17:16:49 2017 -0700
Committer: Joseph Wu <jo...@apache.org>
Committed: Thu May 25 18:37:08 2017 -0700

----------------------------------------------------------------------
 src/tests/fetcher_cache_tests.cpp |  91 ++++++++++------------
 src/tests/fetcher_tests.cpp       | 135 +++++++++++++--------------------
 2 files changed, 94 insertions(+), 132 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/391ced51/src/tests/fetcher_cache_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/fetcher_cache_tests.cpp b/src/tests/fetcher_cache_tests.cpp
index c6ba79a..1edd15c 100644
--- a/src/tests/fetcher_cache_tests.cpp
+++ b/src/tests/fetcher_cache_tests.cpp
@@ -153,7 +153,6 @@ protected:
   string assetsDirectory;
   string commandPath;
   string archivePath;
-  string cacheDirectory;
 
   Owned<cluster::Master> master;
   Owned<cluster::Slave> slave;
@@ -199,9 +198,6 @@ void FetcherCacheTest::SetUp()
   ASSERT_SOME(_master);
   master = _master.get();
 
-  fetcherProcess = new MockFetcherProcess();
-  fetcher.reset(new Fetcher(Owned<FetcherProcess>(fetcherProcess)));
-
   FrameworkInfo frameworkInfo;
   frameworkInfo.set_name("default");
   frameworkInfo.set_checkpoint(true);
@@ -282,6 +278,9 @@ void FetcherCacheTest::TearDown()
 // available for all testing as possible.
 void FetcherCacheTest::startSlave()
 {
+  fetcherProcess = new MockFetcherProcess(flags);
+  fetcher.reset(new Fetcher(Owned<FetcherProcess>(fetcherProcess)));
+
   Try<MesosContainerizer*> create = MesosContainerizer::create(
       flags, true, fetcher.get());
 
@@ -300,9 +299,6 @@ void FetcherCacheTest::startSlave()
 
   AWAIT_READY(slaveRegisteredMessage);
   slaveId = slaveRegisteredMessage->slave_id();
-
-  cacheDirectory =
-    slave::paths::getSlavePath(flags.fetcher_cache_dir, slaveId);
 }
 
 
@@ -517,7 +513,7 @@ Try<vector<FetcherCacheTest::Task>> FetcherCacheTest::launchTasks(
   // When _fetch() is called, notify us by satisfying a promise that
   // a task has passed the code stretch in which it competes for cache
   // entries.
-  EXPECT_CALL(*fetcherProcess, _fetch(_, _, _, _, _, _))
+  EXPECT_CALL(*fetcherProcess, _fetch(_, _, _, _, _))
     .WillRepeatedly(
         DoAll(SatisfyOne(&fetchContentionWaypoints),
               Invoke(fetcherProcess, &MockFetcherProcess::unmocked__fetch)));
@@ -620,8 +616,8 @@ TEST_F(FetcherCacheTest, LocalUncached)
   AWAIT_READY(awaitFinished(task.get()));
 
   EXPECT_EQ(0u, fetcherProcess->cacheSize());
-  ASSERT_SOME(fetcherProcess->cacheFiles(slaveId, flags));
-  EXPECT_EQ(0u, fetcherProcess->cacheFiles(slaveId, flags)->size());
+  ASSERT_SOME(fetcherProcess->cacheFiles());
+  EXPECT_EQ(0u, fetcherProcess->cacheFiles()->size());
 
   const string path = path::join(task->runDirectory.string(), COMMAND_NAME);
   EXPECT_TRUE(isExecutable(path));
@@ -657,8 +653,8 @@ TEST_F(FetcherCacheTest, LocalCached)
     EXPECT_TRUE(os::exists(path + taskName(i)));
 
     EXPECT_EQ(1u, fetcherProcess->cacheSize());
-    ASSERT_SOME(fetcherProcess->cacheFiles(slaveId, flags));
-    EXPECT_EQ(1u, fetcherProcess->cacheFiles(slaveId, flags)->size());
+    ASSERT_SOME(fetcherProcess->cacheFiles());
+    EXPECT_EQ(1u, fetcherProcess->cacheFiles()->size());
   }
 }
 
@@ -686,8 +682,8 @@ TEST_F(FetcherCacheTest, CachedCustomFilename)
   AWAIT_READY(awaitFinished(task.get()));
 
   EXPECT_EQ(1u, fetcherProcess->cacheSize());
-  ASSERT_SOME(fetcherProcess->cacheFiles(slaveId, flags));
-  EXPECT_EQ(1u, fetcherProcess->cacheFiles(slaveId, flags)->size());
+  ASSERT_SOME(fetcherProcess->cacheFiles());
+  EXPECT_EQ(1u, fetcherProcess->cacheFiles()->size());
 
   // Verify that the downloaded executable lives at our custom output path.
   const string executablePath = path::join(
@@ -728,8 +724,8 @@ TEST_F(FetcherCacheTest, CachedCustomOutputFileWithSubdirectory)
   AWAIT_READY(awaitFinished(task.get()));
 
   EXPECT_EQ(1u, fetcherProcess->cacheSize());
-  ASSERT_SOME(fetcherProcess->cacheFiles(slaveId, flags));
-  EXPECT_EQ(1u, fetcherProcess->cacheFiles(slaveId, flags)->size());
+  ASSERT_SOME(fetcherProcess->cacheFiles());
+  EXPECT_EQ(1u, fetcherProcess->cacheFiles()->size());
 
   // Verify that the downloaded executable lives at our custom output file
   // path.
@@ -769,7 +765,7 @@ TEST_F(FetcherCacheTest, CachedFallback)
 
   // Bring back the asset just before running mesos-fetcher to fetch it.
   Future<FetcherInfo> fetcherInfo;
-  EXPECT_CALL(*fetcherProcess, run(_, _, _, _, _))
+  EXPECT_CALL(*fetcherProcess, run(_, _, _, _))
     .WillOnce(DoAll(FutureArg<3>(&fetcherInfo),
                     InvokeWithoutArgs(this,
                                       &FetcherCacheTest::setupCommandFileAsset),
@@ -792,8 +788,8 @@ TEST_F(FetcherCacheTest, CachedFallback)
             fetcherInfo->items(0).action());
 
   EXPECT_EQ(0u, fetcherProcess->cacheSize());
-  ASSERT_SOME(fetcherProcess->cacheFiles(slaveId, flags));
-  EXPECT_EQ(0u, fetcherProcess->cacheFiles(slaveId, flags)->size());
+  ASSERT_SOME(fetcherProcess->cacheFiles());
+  EXPECT_EQ(0u, fetcherProcess->cacheFiles()->size());
 }
 
 
@@ -829,8 +825,8 @@ TEST_F(FetcherCacheTest, LocalUncachedExtract)
   EXPECT_TRUE(os::exists(path + taskName(index)));
 
   EXPECT_EQ(0u, fetcherProcess->cacheSize());
-  ASSERT_SOME(fetcherProcess->cacheFiles(slaveId, flags));
-  EXPECT_EQ(0u, fetcherProcess->cacheFiles(slaveId, flags)->size());
+  ASSERT_SOME(fetcherProcess->cacheFiles());
+  EXPECT_EQ(0u, fetcherProcess->cacheFiles()->size());
 }
 
 
@@ -864,8 +860,8 @@ TEST_F(FetcherCacheTest, LocalCachedExtract)
     EXPECT_TRUE(os::exists(path + taskName(i)));
 
     EXPECT_EQ(1u, fetcherProcess->cacheSize());
-    ASSERT_SOME(fetcherProcess->cacheFiles(slaveId, flags));
-    EXPECT_EQ(1u, fetcherProcess->cacheFiles(slaveId, flags)->size());
+    ASSERT_SOME(fetcherProcess->cacheFiles());
+    EXPECT_EQ(1u, fetcherProcess->cacheFiles()->size());
   }
 }
 
@@ -1013,8 +1009,8 @@ TEST_F(FetcherCacheHttpTest, HttpCachedSerialized)
     EXPECT_TRUE(os::exists(path + taskName(i)));
 
     EXPECT_EQ(1u, fetcherProcess->cacheSize());
-    ASSERT_SOME(fetcherProcess->cacheFiles(slaveId, flags));
-    EXPECT_EQ(1u, fetcherProcess->cacheFiles(slaveId, flags)->size());
+    ASSERT_SOME(fetcherProcess->cacheFiles());
+    EXPECT_EQ(1u, fetcherProcess->cacheFiles()->size());
 
     // 2 requests: 1 for content-length, 1 for download.
     EXPECT_EQ(2u, httpServer->countCommandRequests);
@@ -1078,8 +1074,8 @@ TEST_F(FetcherCacheHttpTest, HttpCachedConcurrent)
   AWAIT_READY(awaitFinished(tasks.get()));
 
   EXPECT_EQ(1u, fetcherProcess->cacheSize());
-  ASSERT_SOME(fetcherProcess->cacheFiles(slaveId, flags));
-  EXPECT_EQ(1u, fetcherProcess->cacheFiles(slaveId, flags)->size());
+  ASSERT_SOME(fetcherProcess->cacheFiles());
+  EXPECT_EQ(1u, fetcherProcess->cacheFiles()->size());
 
   // HTTP requests regarding the archive asset as follows. Archive
   // "content-length" requests: 1, archive file downloads: 2.
@@ -1187,8 +1183,8 @@ TEST_F(FetcherCacheHttpTest, HttpMixed)
   AWAIT_READY(awaitFinished(tasks.get()));
 
   EXPECT_EQ(1u, fetcherProcess->cacheSize());
-  ASSERT_SOME(fetcherProcess->cacheFiles(slaveId, flags));
-  EXPECT_EQ(1u, fetcherProcess->cacheFiles(slaveId, flags)->size());
+  ASSERT_SOME(fetcherProcess->cacheFiles());
+  EXPECT_EQ(1u, fetcherProcess->cacheFiles()->size());
 
   // HTTP requests regarding the command asset as follows. Command
   // "content-length" requests: 0, command file downloads: 3.
@@ -1274,8 +1270,8 @@ TEST_F(FetcherCacheHttpTest, DISABLED_HttpCachedRecovery)
     EXPECT_TRUE(os::exists(path + taskName(i)));
 
     EXPECT_EQ(1u, fetcherProcess->cacheSize());
-    ASSERT_SOME(fetcherProcess->cacheFiles(slaveId, flags));
-    EXPECT_EQ(1u, fetcherProcess->cacheFiles(slaveId, flags)->size());
+    ASSERT_SOME(fetcherProcess->cacheFiles());
+    EXPECT_EQ(1u, fetcherProcess->cacheFiles()->size());
 
     // content-length requests: 1
     // downloads: 1
@@ -1290,7 +1286,7 @@ TEST_F(FetcherCacheHttpTest, DISABLED_HttpCachedRecovery)
 
   // Don't reuse the old fetcher, which has stale state after
   // stopping the slave.
-  Fetcher fetcher2;
+  Fetcher fetcher2(flags);
 
   Try<MesosContainerizer*> _containerizer =
     MesosContainerizer::create(flags, true, &fetcher2);
@@ -1311,9 +1307,6 @@ TEST_F(FetcherCacheHttpTest, DISABLED_HttpCachedRecovery)
   // Wait until the containerizer is updated.
   AWAIT_READY(update);
 
-  // Recovery must have cleaned the cache by now.
-  EXPECT_FALSE(os::exists(cacheDirectory));
-
   // Repeat of the above to see if it works the same.
   for (size_t i = 0; i < 3; i++) {
     CommandInfo::URI uri;
@@ -1336,8 +1329,8 @@ TEST_F(FetcherCacheHttpTest, DISABLED_HttpCachedRecovery)
     EXPECT_TRUE(os::exists(path + taskName(i)));
 
     EXPECT_EQ(1u, fetcherProcess->cacheSize());
-    ASSERT_SOME(fetcherProcess->cacheFiles(slaveId, flags));
-    EXPECT_EQ(1u, fetcherProcess->cacheFiles(slaveId, flags)->size());
+    ASSERT_SOME(fetcherProcess->cacheFiles());
+    EXPECT_EQ(1u, fetcherProcess->cacheFiles()->size());
 
     // content-length requests: 1
     // downloads: 1
@@ -1388,13 +1381,13 @@ TEST_F(FetcherCacheTest, SimpleEviction)
 
     if (i < countCacheEntries) {
       EXPECT_EQ(i + 1, fetcherProcess->cacheSize());
-      ASSERT_SOME(fetcherProcess->cacheFiles(slaveId, flags));
-      EXPECT_EQ(i+1u, fetcherProcess->cacheFiles(slaveId, flags)->size());
+      ASSERT_SOME(fetcherProcess->cacheFiles());
+      EXPECT_EQ(i+1u, fetcherProcess->cacheFiles()->size());
     } else {
       EXPECT_EQ(countCacheEntries, fetcherProcess->cacheSize());
-      ASSERT_SOME(fetcherProcess->cacheFiles(slaveId, flags));
+      ASSERT_SOME(fetcherProcess->cacheFiles());
       EXPECT_EQ(countCacheEntries,
-                fetcherProcess->cacheFiles(slaveId, flags)->size());
+                fetcherProcess->cacheFiles()->size());
     }
   }
 }
@@ -1422,7 +1415,7 @@ TEST_F(FetcherCacheTest, FallbackFromEviction)
   Future<FetcherInfo> fetcherInfo0;
   Future<FetcherInfo> fetcherInfo1;
   Future<FetcherInfo> fetcherInfo2;
-  EXPECT_CALL(*fetcherProcess, run(_, _, _, _, _))
+  EXPECT_CALL(*fetcherProcess, run(_, _, _, _))
     .WillOnce(DoAll(FutureArg<3>(&fetcherInfo0),
                     Invoke(fetcherProcess,
                            &MockFetcherProcess::unmocked_run)))
@@ -1476,8 +1469,8 @@ TEST_F(FetcherCacheTest, FallbackFromEviction)
   ASSERT_EQ(Bytes(growth), fetcherProcess->availableCacheSpace());
 
   EXPECT_EQ(1u, fetcherProcess->cacheSize());
-  ASSERT_SOME(fetcherProcess->cacheFiles(slaveId, flags));
-  EXPECT_EQ(1u, fetcherProcess->cacheFiles(slaveId, flags)->size());
+  ASSERT_SOME(fetcherProcess->cacheFiles());
+  EXPECT_EQ(1u, fetcherProcess->cacheFiles()->size());
 
 
   // Task 1:
@@ -1523,8 +1516,8 @@ TEST_F(FetcherCacheTest, FallbackFromEviction)
   ASSERT_EQ(Bytes(0u), fetcherProcess->availableCacheSpace());
 
   EXPECT_EQ(1u, fetcherProcess->cacheSize());
-  ASSERT_SOME(fetcherProcess->cacheFiles(slaveId, flags));
-  EXPECT_EQ(1u, fetcherProcess->cacheFiles(slaveId, flags)->size());
+  ASSERT_SOME(fetcherProcess->cacheFiles());
+  EXPECT_EQ(1u, fetcherProcess->cacheFiles()->size());
 
 
   // Task 2:
@@ -1568,8 +1561,8 @@ TEST_F(FetcherCacheTest, FallbackFromEviction)
             fetcherInfo2->items(0).action());
 
   EXPECT_EQ(1u, fetcherProcess->cacheSize());
-  ASSERT_SOME(fetcherProcess->cacheFiles(slaveId, flags));
-  EXPECT_EQ(1u, fetcherProcess->cacheFiles(slaveId, flags)->size());
+  ASSERT_SOME(fetcherProcess->cacheFiles());
+  EXPECT_EQ(1u, fetcherProcess->cacheFiles()->size());
 }
 
 // Tests LRU cache eviction strategy.
@@ -1628,7 +1621,7 @@ TEST_F(FetcherCacheTest, RemoveLRUCacheEntries)
   // FetcherProcess::cacheFiles returns all cache files that are in the cache
   // directory. We expect cmd1 and cmd2 to be there, cmd0 should have been
   // evicted.
-  Try<list<Path>> cacheFiles = fetcherProcess->cacheFiles(slaveId, flags);
+  Try<list<Path>> cacheFiles = fetcherProcess->cacheFiles();
   ASSERT_SOME(cacheFiles);
 
   bool cmd1Found = false;

http://git-wip-us.apache.org/repos/asf/mesos/blob/391ced51/src/tests/fetcher_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/fetcher_tests.cpp b/src/tests/fetcher_tests.cpp
index 27ea724..b412415 100644
--- a/src/tests/fetcher_tests.cpp
+++ b/src/tests/fetcher_tests.cpp
@@ -93,11 +93,10 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, FileURI)
   CommandInfo::URI* uri = commandInfo.add_uris();
   uri->set_value("file://" + testFile);
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   Future<Nothing> fetch = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+      containerId, commandInfo, os::getcwd(), None());
   AWAIT_READY(fetch);
 
   EXPECT_TRUE(os::exists(localFile));
@@ -131,16 +130,13 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, ROOT_RootProtectedFileURI)
   CommandInfo::URI* uri = commandInfo.add_uris();
   uri->set_value("file://" + testFile);
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   AWAIT_FAILED(fetcher.fetch(
       containerId,
       commandInfo,
       os::getcwd(),
-      None(),
-      slaveId,
-      flags));
+      None()));
 }
 #endif // __WINDOWS__
 
@@ -165,11 +161,10 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, CustomOutputFileSubdirectory)
   uri->set_value("file://" + testFile);
   uri->set_output_file(customOutputFile);
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   Future<Nothing> fetch = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+      containerId, commandInfo, os::getcwd(), None());
   AWAIT_READY(fetch);
 
   EXPECT_TRUE(os::exists(localFile));
@@ -201,11 +196,10 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, AbsoluteCustomSubdirectoryFails)
   uri->set_value("file://" + testFile);
   uri->set_output_file(customOutputFile);
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   Future<Nothing> fetch = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+      containerId, commandInfo, os::getcwd(), None());
   AWAIT_FAILED(fetch);
 
   EXPECT_FALSE(os::exists(localFile));
@@ -238,11 +232,10 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, InvalidUser)
   CommandInfo::URI* uri = commandInfo.add_uris();
   uri->set_value("file://" + testFile);
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   Future<Nothing> fetch = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+      containerId, commandInfo, os::getcwd(), None());
   AWAIT_FAILED(fetch);
 
   // See FetcherProcess::fetch(), the message must mention "chown" in
@@ -272,11 +265,10 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, NonExistingFile)
   CommandInfo::URI* uri = commandInfo.add_uris();
   uri->set_value("file://" + testFile);
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   Future<Nothing> fetch = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+      containerId, commandInfo, os::getcwd(), None());
   AWAIT_FAILED(fetch);
 
   // See FetcherProcess::run().
@@ -298,11 +290,10 @@ TEST_F(FetcherTest, MalformedURI)
   CommandInfo::URI* uri = commandInfo.add_uris();
   uri->set_value("lala://nopath");
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   Future<Nothing> fetch = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+      containerId, commandInfo, os::getcwd(), None());
   AWAIT_FAILED(fetch);
 
   // See Fetcher::basename().
@@ -330,11 +321,10 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, AbsoluteFilePath)
   CommandInfo::URI* uri = commandInfo.add_uris();
   uri->set_value(testPath);
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   Future<Nothing> fetch = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+      containerId, commandInfo, os::getcwd(), None());
   AWAIT_READY(fetch);
 
   EXPECT_TRUE(os::exists(localFile));
@@ -361,22 +351,22 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, RelativeFilePath)
   CommandInfo::URI* uri = commandInfo.add_uris();
   uri->set_value("test");
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher badFetcher(flags);
 
   // The first run must fail, because we have not set frameworks_home yet.
 
-  Future<Nothing> fetch1 = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+  Future<Nothing> fetch1 = badFetcher.fetch(
+      containerId, commandInfo, os::getcwd(), None());
   AWAIT_FAILED(fetch1);
 
   EXPECT_FALSE(os::exists(localFile));
 
   // The next run must succeed due to this flag.
   flags.frameworks_home = fromDir;
+  Fetcher goodFetcher(flags);
 
-  Future<Nothing> fetch2 = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+  Future<Nothing> fetch2 = goodFetcher.fetch(
+      containerId, commandInfo, os::getcwd(), None());
   AWAIT_READY(fetch2);
 
   EXPECT_TRUE(os::exists(localFile));
@@ -442,14 +432,13 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, OSNetUriTest)
   CommandInfo::URI* uri = commandInfo.add_uris();
   uri->set_value(stringify(url));
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   EXPECT_CALL(*http.process, test(_))
     .WillOnce(Return(http::OK()));
 
   Future<Nothing> fetch = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+      containerId, commandInfo, os::getcwd(), None());
 
   AWAIT_READY(fetch);
 
@@ -489,15 +478,14 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, OSNetUriSpaceTest)
   // Add whitespace characters to the beginning of the URL.
   uri->set_value("\r\n\t " + stringify(url));
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   // Verify that the intended endpoint is hit.
   EXPECT_CALL(*http.process, test(_))
     .WillOnce(Return(http::OK()));
 
   Future<Nothing> fetch = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+      containerId, commandInfo, os::getcwd(), None());
 
   AWAIT_READY(fetch);
 
@@ -525,11 +513,10 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, FileLocalhostURI)
   CommandInfo::URI* uri = commandInfo.add_uris();
   uri->set_value(path::join("file://localhost", testFile));
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   Future<Nothing> fetch = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+      containerId, commandInfo, os::getcwd(), None());
   AWAIT_READY(fetch);
 
   EXPECT_TRUE(os::exists(localFile));
@@ -557,11 +544,10 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, NoExtractNotExecutable)
   slave::Flags flags;
   flags.launcher_dir = getLauncherDir();
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   Future<Nothing> fetch = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+      containerId, commandInfo, os::getcwd(), None());
   AWAIT_READY(fetch);
 
   string basename = Path(path.get()).basename();
@@ -596,11 +582,10 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, NoExtractExecutable)
   slave::Flags flags;
   flags.launcher_dir = getLauncherDir();
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   Future<Nothing> fetch = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+      containerId, commandInfo, os::getcwd(), None());
 
   AWAIT_READY(fetch);
 
@@ -647,11 +632,10 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, ExtractNotExecutable)
   slave::Flags flags;
   flags.launcher_dir = getLauncherDir();
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   Future<Nothing> fetch = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+      containerId, commandInfo, os::getcwd(), None());
 
   AWAIT_READY(fetch);
 
@@ -699,11 +683,10 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, ExtractTar)
   slave::Flags flags;
   flags.launcher_dir = getLauncherDir();
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   Future<Nothing> fetch = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+      containerId, commandInfo, os::getcwd(), None());
 
   AWAIT_READY(fetch);
 
@@ -737,11 +720,10 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, ExtractGzipFile)
   slave::Flags flags;
   flags.launcher_dir = getLauncherDir();
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   Future<Nothing> fetch = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+      containerId, commandInfo, os::getcwd(), None());
 
   AWAIT_READY(fetch);
 
@@ -785,16 +767,13 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, UNZIP_ExtractFile)
   slave::Flags flags;
   flags.launcher_dir = getLauncherDir();
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   Future<Nothing> fetch = fetcher.fetch(
       containerId,
       commandInfo,
       os::getcwd(),
-      None(),
-      slaveId,
-      flags);
+      None());
 
   AWAIT_READY(fetch);
 
@@ -839,16 +818,13 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, UNZIP_ExtractInvalidFile)
   slave::Flags flags;
   flags.launcher_dir = getLauncherDir();
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   Future<Nothing> fetch = fetcher.fetch(
       containerId,
       commandInfo,
       os::getcwd(),
-      None(),
-      slaveId,
-      flags);
+      None());
 
   AWAIT_FAILED(fetch);
 
@@ -897,16 +873,13 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(
   slave::Flags flags;
   flags.launcher_dir = getLauncherDir();
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   Future<Nothing> fetch = fetcher.fetch(
       containerId,
       commandInfo,
       os::getcwd(),
-      None(),
-      slaveId,
-      flags);
+      None());
 
   AWAIT_READY(fetch);
 
@@ -941,11 +914,10 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, UseCustomOutputFile)
   slave::Flags flags;
   flags.launcher_dir = getLauncherDir();
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   Future<Nothing> fetch = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+      containerId, commandInfo, os::getcwd(), None());
 
   AWAIT_READY(fetch);
 
@@ -981,11 +953,10 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, CustomGzipOutputFile)
   slave::Flags flags;
   flags.launcher_dir = getLauncherDir();
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   Future<Nothing> fetch = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+      containerId, commandInfo, os::getcwd(), None());
 
   AWAIT_READY(fetch);
 
@@ -1072,11 +1043,10 @@ TEST_F(FetcherTest, HdfsURI)
   CommandInfo::URI* uri = commandInfo.add_uris();
   uri->set_value(path::join("hdfs://localhost", testFile));
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   Future<Nothing> fetch = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+      containerId, commandInfo, os::getcwd(), None());
 
   AWAIT_READY(fetch);
 
@@ -1126,11 +1096,10 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(FetcherTest, SSLEnvironmentSpillover)
   slave::Flags flags;
   flags.launcher_dir = getLauncherDir();
 
-  Fetcher fetcher;
-  SlaveID slaveId;
+  Fetcher fetcher(flags);
 
   Future<Nothing> fetch = fetcher.fetch(
-      containerId, commandInfo, os::getcwd(), None(), slaveId, flags);
+      containerId, commandInfo, os::getcwd(), None());
 
   // The mesos-fetcher runnable will fail initializing libprocess if
   // the SSL environment spilled over. Such failure would cause it to