You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by qi...@apache.org on 2019/04/15 10:35:04 UTC
[mesos] 05/17: Windows: Enabled `DockerFetcherPluginTest` suite.
This is an automated email from the ASF dual-hosted git repository.
qianzhang pushed a commit to branch 1.7.x
in repository https://gitbox.apache.org/repos/asf/mesos.git
commit b4b03371398a5f2ba33d2a141bc1aa3d1c15a4bc
Author: Liangyu Zhao <t-...@microsoft.com>
AuthorDate: Wed Aug 29 11:54:47 2018 -0700
Windows: Enabled `DockerFetcherPluginTest` suite.
Enabled `Internet` test environment on Windows. Disabled `Internet`
`HealthCheckTests` on Windows, since they require complete
development. Modified `DockerFetcherPluginTest` to fetch
`microsoft/nanoserver` for more extensive test for fetcher on Windows.
Review: https://reviews.apache.org/r/67930/
---
src/tests/environment.cpp | 5 ++-
src/tests/health_check_tests.cpp | 10 +++--
src/tests/uri_fetcher_tests.cpp | 81 ++++++++++++++++++++++++++--------------
3 files changed, 62 insertions(+), 34 deletions(-)
diff --git a/src/tests/environment.cpp b/src/tests/environment.cpp
index 8c6ec58..0677b31 100644
--- a/src/tests/environment.cpp
+++ b/src/tests/environment.cpp
@@ -523,8 +523,11 @@ class InternetFilter : public TestFilter
public:
InternetFilter()
{
+#ifdef __WINDOWS__
+ error = os::system("ping -n 1 -w 1000 google.com") != 0;
+#else
error = os::system("ping -c 1 -W 1 google.com") != 0;
- // TODO(andschwa): Make ping command cross-platform.
+#endif // __WINDOWS__
if (error) {
std::cerr
<< "-------------------------------------------------------------\n"
diff --git a/src/tests/health_check_tests.cpp b/src/tests/health_check_tests.cpp
index 15ac700..4362c45 100644
--- a/src/tests/health_check_tests.cpp
+++ b/src/tests/health_check_tests.cpp
@@ -1358,7 +1358,8 @@ TEST_F(HealthCheckTest, HealthyTaskViaTCP)
// Tests a healthy task via HTTP with a container image using mesos
// containerizer. To emulate a task responsive to HTTP health checks,
// starts Netcat in the docker "alpine" image.
-TEST_F(HealthCheckTest, ROOT_INTERNET_CURL_HealthyTaskViaHTTPWithContainerImage)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(
+ HealthCheckTest, ROOT_INTERNET_CURL_HealthyTaskViaHTTPWithContainerImage)
{
master::Flags masterFlags = CreateMasterFlags();
masterFlags.allocation_interval = Milliseconds(50);
@@ -1451,8 +1452,8 @@ TEST_F(HealthCheckTest, ROOT_INTERNET_CURL_HealthyTaskViaHTTPWithContainerImage)
// Tests a healthy task via HTTPS with a container image using mesos
// containerizer. To emulate a task responsive to HTTPS health checks,
// starts an HTTPS server in the docker "haosdent/https-server" image.
-TEST_F(HealthCheckTest,
- ROOT_INTERNET_CURL_HealthyTaskViaHTTPSWithContainerImage)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(
+ HealthCheckTest, ROOT_INTERNET_CURL_HealthyTaskViaHTTPSWithContainerImage)
{
master::Flags masterFlags = CreateMasterFlags();
Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
@@ -1551,7 +1552,8 @@ TEST_F(HealthCheckTest,
// NOTE: This test is almost identical to
// ROOT_INTERNET_CURL_HealthyTaskViaHTTPWithContainerImage
// with the difference being TCP health check.
-TEST_F(HealthCheckTest, ROOT_INTERNET_CURL_HealthyTaskViaTCPWithContainerImage)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(
+ HealthCheckTest, ROOT_INTERNET_CURL_HealthyTaskViaTCPWithContainerImage)
{
master::Flags masterFlags = CreateMasterFlags();
masterFlags.allocation_interval = Milliseconds(50);
diff --git a/src/tests/uri_fetcher_tests.cpp b/src/tests/uri_fetcher_tests.cpp
index 260ae9c..f8bacc0 100644
--- a/src/tests/uri_fetcher_tests.cpp
+++ b/src/tests/uri_fetcher_tests.cpp
@@ -49,6 +49,8 @@ namespace http = process::http;
using std::list;
using std::string;
+using mesos::uri::DockerFetcherPlugin;
+
using process::Future;
using process::Owned;
using process::Process;
@@ -274,6 +276,16 @@ TEST_F(HadoopFetcherPluginTest, InvokeFetchByName)
// tests can use this as well.
static constexpr char DOCKER_REGISTRY_HOST[] = "registry-1.docker.io";
+#ifdef __WINDOWS__
+static constexpr char TEST_REPOSITORY[] = "microsoft/nanoserver";
+static constexpr char TEST_DIGEST[] = "sha256:54389c2d19b423943102864aaf3fc"
+ "1296e5dd140a074b5bd6700de858a8e5479";
+#else
+static constexpr char TEST_REPOSITORY[] = "library/busybox";
+static constexpr char TEST_DIGEST[] = "sha256:a3ed95caeb02ffe68cdd9fd844066"
+ "80ae93d633cb16422d00e8a7c22955b46d4";
+#endif // __WINDOWS__
+
class DockerFetcherPluginTest : public TemporaryDirectoryTest {};
@@ -281,9 +293,7 @@ class DockerFetcherPluginTest : public TemporaryDirectoryTest {};
TEST_F(DockerFetcherPluginTest, INTERNET_CURL_FetchManifest)
{
URI uri = uri::docker::manifest(
- "library/busybox",
- "latest",
- DOCKER_REGISTRY_HOST);
+ TEST_REPOSITORY, "latest", DOCKER_REGISTRY_HOST);
Try<Owned<uri::Fetcher>> fetcher = uri::fetcher::create();
ASSERT_SOME(fetcher);
@@ -292,27 +302,36 @@ TEST_F(DockerFetcherPluginTest, INTERNET_CURL_FetchManifest)
AWAIT_READY_FOR(fetcher.get()->fetch(uri, dir), Seconds(60));
- Try<string> _manifest = os::read(path::join(dir, "manifest"));
- ASSERT_SOME(_manifest);
+ // Version 2 schema 1 image manifest test
+ Try<string> _s1Manifest = os::read(path::join(dir, "manifest"));
+ ASSERT_SOME(_s1Manifest);
- Try<docker::spec::v2::ImageManifest> manifest =
- docker::spec::v2::parse(_manifest.get());
+ Try<docker::spec::v2::ImageManifest> s1Manifest =
+ docker::spec::v2::parse(_s1Manifest.get());
- ASSERT_SOME(manifest);
- EXPECT_EQ("library/busybox", manifest->name());
- EXPECT_EQ("latest", manifest->tag());
+ ASSERT_SOME(s1Manifest);
+ EXPECT_EQ(1u, s1Manifest->schemaversion());
+ EXPECT_EQ(TEST_REPOSITORY, s1Manifest->name());
+ EXPECT_EQ("latest", s1Manifest->tag());
+
+#ifdef __WINDOWS__
+ // Version 2 schema 2 image manifest test
+ Try<string> _s2Manifest = os::read(path::join(dir, "manifest_v2s2"));
+ ASSERT_SOME(_s2Manifest);
+
+ Try<docker::spec::v2_2::ImageManifest> s2Manifest =
+ docker::spec::v2_2::parse(_s2Manifest.get());
+
+ ASSERT_SOME(s2Manifest);
+ EXPECT_EQ(2u, s2Manifest->schemaversion());
+#endif // __WINDOWS__
}
TEST_F(DockerFetcherPluginTest, INTERNET_CURL_FetchBlob)
{
- const string digest =
- "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4";
-
URI uri = uri::docker::blob(
- "library/busybox",
- digest,
- DOCKER_REGISTRY_HOST);
+ TEST_REPOSITORY, TEST_DIGEST, DOCKER_REGISTRY_HOST);
Try<Owned<uri::Fetcher>> fetcher = uri::fetcher::create();
ASSERT_SOME(fetcher);
@@ -321,7 +340,7 @@ TEST_F(DockerFetcherPluginTest, INTERNET_CURL_FetchBlob)
AWAIT_READY_FOR(fetcher.get()->fetch(uri, dir), Seconds(60));
- EXPECT_TRUE(os::exists(path::join(dir, digest)));
+ EXPECT_TRUE(os::exists(DockerFetcherPlugin::getBlobPath(dir, TEST_DIGEST)));
}
@@ -329,9 +348,7 @@ TEST_F(DockerFetcherPluginTest, INTERNET_CURL_FetchBlob)
TEST_F(DockerFetcherPluginTest, INTERNET_CURL_FetchImage)
{
URI uri = uri::docker::image(
- "library/busybox",
- "latest",
- DOCKER_REGISTRY_HOST);
+ TEST_REPOSITORY, "latest", DOCKER_REGISTRY_HOST);
Try<Owned<uri::Fetcher>> fetcher = uri::fetcher::create();
ASSERT_SOME(fetcher);
@@ -344,14 +361,18 @@ TEST_F(DockerFetcherPluginTest, INTERNET_CURL_FetchImage)
ASSERT_SOME(_manifest);
Try<docker::spec::v2::ImageManifest> manifest =
- docker::spec::v2::parse(_manifest.get());
+ docker::spec::v2::parse(_manifest.get());
ASSERT_SOME(manifest);
- EXPECT_EQ("library/busybox", manifest->name());
+ EXPECT_EQ(1u, manifest->schemaversion());
+ EXPECT_EQ(TEST_REPOSITORY, 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())));
+ EXPECT_TRUE(os::exists(
+ DockerFetcherPlugin::getBlobPath(
+ dir,
+ manifest->fslayers(i).blobsum())));
}
}
@@ -360,9 +381,7 @@ TEST_F(DockerFetcherPluginTest, INTERNET_CURL_FetchImage)
TEST_F(DockerFetcherPluginTest, INTERNET_CURL_InvokeFetchByName)
{
URI uri = uri::docker::image(
- "library/busybox",
- "latest",
- DOCKER_REGISTRY_HOST);
+ TEST_REPOSITORY, "latest", DOCKER_REGISTRY_HOST);
Try<Owned<uri::Fetcher>> fetcher = uri::fetcher::create();
ASSERT_SOME(fetcher);
@@ -377,14 +396,18 @@ TEST_F(DockerFetcherPluginTest, INTERNET_CURL_InvokeFetchByName)
ASSERT_SOME(_manifest);
Try<docker::spec::v2::ImageManifest> manifest =
- docker::spec::v2::parse(_manifest.get());
+ docker::spec::v2::parse(_manifest.get());
ASSERT_SOME(manifest);
- EXPECT_EQ("library/busybox", manifest->name());
+ EXPECT_EQ(1u, manifest->schemaversion());
+ EXPECT_EQ(TEST_REPOSITORY, 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())));
+ EXPECT_TRUE(os::exists(
+ DockerFetcherPlugin::getBlobPath(
+ dir,
+ manifest->fslayers(i).blobsum())));
}
}