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/01/21 18:38:27 UTC
mesos git commit: Added tests for the Docker URI fetcher plugin.
Repository: mesos
Updated Branches:
refs/heads/master 51a93ae09 -> aa3cc2d27
Added tests for the Docker URI fetcher plugin.
Review: https://reviews.apache.org/r/42239
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/aa3cc2d2
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/aa3cc2d2
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/aa3cc2d2
Branch: refs/heads/master
Commit: aa3cc2d27e4a8ee07d620950b39410d2b43111cd
Parents: 51a93ae
Author: Jie Yu <yu...@gmail.com>
Authored: Wed Jan 13 14:42:49 2016 -0800
Committer: Jie Yu <yu...@gmail.com>
Committed: Thu Jan 21 09:36:06 2016 -0800
----------------------------------------------------------------------
src/tests/uri_fetcher_tests.cpp | 95 ++++++++++++++++++++++++++++++++++++
1 file changed, 95 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/aa3cc2d2/src/tests/uri_fetcher_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/uri_fetcher_tests.cpp b/src/tests/uri_fetcher_tests.cpp
index c3bc4ea..6ffe3f4 100644
--- a/src/tests/uri_fetcher_tests.cpp
+++ b/src/tests/uri_fetcher_tests.cpp
@@ -28,17 +28,22 @@
#include <stout/os/exists.hpp>
#include <stout/os/getcwd.hpp>
+#include <stout/os/ls.hpp>
#include <stout/os/write.hpp>
#include <stout/tests/utils.hpp>
+#include <mesos/docker/spec.hpp>
+
#include "uri/fetcher.hpp"
+#include "uri/schemes/docker.hpp"
#include "uri/schemes/hdfs.hpp"
#include "uri/schemes/http.hpp"
namespace http = process::http;
+using std::list;
using std::string;
using process::Future;
@@ -199,6 +204,96 @@ TEST_F(HadoopFetcherPluginTest, FetchNonExistingFile)
AWAIT_FAILED(fetcher.get()->fetch(uri, dir));
}
+
+// TODO(jieyu): Expose this constant so that other docker related
+// tests can use this as well.
+static constexpr char DOCKER_REGISTRY_HOST[] = "registry-1.docker.io";
+
+
+class DockerFetcherPluginTest : public TemporaryDirectoryTest {};
+
+
+TEST_F(DockerFetcherPluginTest, INTERNET_CURL_FetchManifest)
+{
+ URI uri = uri::docker::manifest(
+ "library/busybox",
+ "latest",
+ DOCKER_REGISTRY_HOST);
+
+ Try<Owned<uri::Fetcher>> fetcher = uri::fetcher::create();
+ ASSERT_SOME(fetcher);
+
+ string dir = path::join(os::getcwd(), "dir");
+
+ AWAIT_READY(fetcher.get()->fetch(uri, dir));
+
+ Try<string> _manifest = os::read(path::join(dir, "manifest"));
+ ASSERT_SOME(_manifest);
+
+ Try<docker::spec::v2::ImageManifest> manifest =
+ docker::spec::v2::parse(_manifest.get());
+
+ ASSERT_SOME(manifest);
+ EXPECT_EQ("library/busybox", manifest->name());
+ EXPECT_EQ("latest", manifest->tag());
+}
+
+
+TEST_F(DockerFetcherPluginTest, INTERNET_CURL_FetchBlob)
+{
+ const string digest =
+ "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4";
+
+ URI uri = uri::docker::blob(
+ "library/busybox",
+ digest,
+ DOCKER_REGISTRY_HOST);
+
+ Try<Owned<uri::Fetcher>> fetcher = uri::fetcher::create();
+ ASSERT_SOME(fetcher);
+
+ string dir = path::join(os::getcwd(), "dir");
+
+ AWAIT_READY(fetcher.get()->fetch(uri, dir));
+
+ EXPECT_TRUE(os::exists(path::join(dir, digest)));
+}
+
+
+// Fetches the image manifest and all blobs in that image.
+TEST_F(DockerFetcherPluginTest, INTERNET_CURL_FetchImage)
+{
+ URI uri = uri::docker::image(
+ "library/busybox",
+ "latest",
+ DOCKER_REGISTRY_HOST);
+
+ Try<Owned<uri::Fetcher>> fetcher = uri::fetcher::create();
+ ASSERT_SOME(fetcher);
+
+ string dir = path::join(os::getcwd(), "dir");
+
+ AWAIT_READY(fetcher.get()->fetch(uri, dir));
+
+ Try<string> _manifest = os::read(path::join(dir, "manifest"));
+ ASSERT_SOME(_manifest);
+
+ Try<docker::spec::v2::ImageManifest> manifest =
+ docker::spec::v2::parse(_manifest.get());
+
+ ASSERT_SOME(manifest);
+ EXPECT_EQ("library/busybox", manifest->name());
+ EXPECT_EQ("latest", manifest->tag());
+
+ for (int i = 0; i < manifest->fslayers_size(); i++) {
+ EXPECT_TRUE(os::exists(path::join(dir, manifest->fslayers(i).blobsum())));
+ }
+}
+
+
+// TODO(jieyu): Add Docker fetcher plugin tests to test with a local
+// registry server (w/ or w/o authentication).
+
} // namespace tests {
} // namespace internal {
} // namespace mesos {