This is an automated email from the ASF dual-hosted git repository. qianzhang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mesos.git
commit 27b238dc44527cf30815d53579c928052f35add8 Author: Qian Zhang <[email protected]> AuthorDate: Wed Apr 10 11:00:48 2019 +0800 Added an optional parameter `outputFileName` to the fetcher interface. Review: https://reviews.apache.org/r/70443 --- include/mesos/uri/fetcher.hpp | 8 ++++++-- src/tests/uri_fetcher_tests.cpp | 8 ++++---- src/uri/fetcher.cpp | 6 ++++-- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/include/mesos/uri/fetcher.hpp b/include/mesos/uri/fetcher.hpp index 760d6b3..645995a 100644 --- a/include/mesos/uri/fetcher.hpp +++ b/include/mesos/uri/fetcher.hpp @@ -95,12 +95,14 @@ public: * @param uri the URI to fetch * @param directory the directory the URI will be downloaded to * @param data the optional user defined data + * @param outputFileName the optional output file name */ // TODO(jieyu): Consider using 'Path' for 'directory' here. process::Future<Nothing> fetch( const URI& uri, const std::string& directory, - const Option<std::string>& data = None()) const; + const Option<std::string>& data = None(), + const Option<std::string>& outputFileName = None()) const; /** * Fetches a URI to the given directory. This method will dispatch @@ -110,12 +112,14 @@ public: * @param directory the directory the URI will be downloaded to * @param name of the plugin that is used to download * @param data the optional user defined data + * @param outputFileName the optional output file name */ process::Future<Nothing> fetch( const URI& uri, const std::string& directory, const std::string& name, - const Option<std::string>& data = None()) const; + const Option<std::string>& data = None(), + const Option<std::string>& outputFileName = None()) const; private: Fetcher(const Fetcher&) = delete; // Not copyable. diff --git a/src/tests/uri_fetcher_tests.cpp b/src/tests/uri_fetcher_tests.cpp index bb224d8..8a38e17 100644 --- a/src/tests/uri_fetcher_tests.cpp +++ b/src/tests/uri_fetcher_tests.cpp @@ -146,7 +146,7 @@ TEST_F(CurlFetcherPluginTest, CURL_InvokeFetchByName) Try<Owned<uri::Fetcher>> fetcher = uri::fetcher::create(); ASSERT_SOME(fetcher); - AWAIT_READY(fetcher.get()->fetch(uri, os::getcwd(), "curl", None())); + AWAIT_READY(fetcher.get()->fetch(uri, os::getcwd(), "curl", None(), None())); EXPECT_TRUE(os::exists(path::join(os::getcwd(), "test"))); } @@ -266,7 +266,7 @@ TEST_F(HadoopFetcherPluginTest, InvokeFetchByName) string dir = path::join(os::getcwd(), "dir"); - AWAIT_READY(fetcher.get()->fetch(uri, dir, "hadoop", None())); + AWAIT_READY(fetcher.get()->fetch(uri, dir, "hadoop", None(), None())); EXPECT_SOME_EQ("abc", os::read(path::join(dir, "file"))); } @@ -379,7 +379,7 @@ TEST_F(DockerFetcherPluginTest, INTERNET_CURL_InvokeFetchByName) string dir = path::join(os::getcwd(), "dir"); AWAIT_READY_FOR( - fetcher.get()->fetch(uri, dir, "docker", None()), + fetcher.get()->fetch(uri, dir, "docker", None(), None()), Seconds(60)); Try<string> _manifest = os::read(path::join(dir, "manifest")); @@ -462,7 +462,7 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(CopyFetcherPluginTest, InvokeFetchByName) const string dir = path::join(os::getcwd(), "dir"); - AWAIT_READY(fetcher.get()->fetch(uri, dir, "copy", None())); + AWAIT_READY(fetcher.get()->fetch(uri, dir, "copy", None(), None())); // Validate the fetched file's content. EXPECT_SOME_EQ("abc", os::read(path::join(dir, "file"))); diff --git a/src/uri/fetcher.cpp b/src/uri/fetcher.cpp index 3147e41..62a33c4 100644 --- a/src/uri/fetcher.cpp +++ b/src/uri/fetcher.cpp @@ -103,7 +103,8 @@ Fetcher::Fetcher(const vector<Owned<Plugin>>& plugins) Future<Nothing> Fetcher::fetch( const URI& uri, const string& directory, - const Option<string>& data) const + const Option<string>& data, + const Option<string>& outputFileName) const { if (!pluginsByScheme.contains(uri.scheme())) { return Failure("Scheme '" + uri.scheme() + "' is not supported"); @@ -117,7 +118,8 @@ Future<Nothing> Fetcher::fetch( const URI& uri, const string& directory, const string& name, - const Option<string>& data) const + const Option<string>& data, + const Option<string>& outputFileName) const { if (!pluginsByName.contains(name)) { return Failure("Plugin '" + name + "' is not registered.");
