This is an automated email from the ASF dual-hosted git repository. qianzhang pushed a commit to branch 1.5.x in repository https://gitbox.apache.org/repos/asf/mesos.git
commit ae439072764e1be9229abec8c60d7a4fd45e7416 Author: Liangyu Zhao <[email protected]> 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 13a4c95..0c8bede 100644 --- a/src/tests/environment.cpp +++ b/src/tests/environment.cpp @@ -396,8 +396,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 887f2e9..ded03da 100644 --- a/src/tests/health_check_tests.cpp +++ b/src/tests/health_check_tests.cpp @@ -1633,7 +1633,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); @@ -1726,8 +1727,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); @@ -1826,7 +1827,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 8a40f46..14b1ccf 100644 --- a/src/tests/uri_fetcher_tests.cpp +++ b/src/tests/uri_fetcher_tests.cpp @@ -48,6 +48,8 @@ namespace http = process::http; using std::list; using std::string; +using mesos::uri::DockerFetcherPlugin; + using process::Future; using process::Owned; using process::Process; @@ -269,6 +271,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 {}; @@ -276,9 +288,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); @@ -287,27 +297,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); @@ -316,7 +335,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))); } @@ -324,9 +343,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); @@ -339,14 +356,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()))); } } @@ -355,9 +376,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); @@ -372,14 +391,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()))); } }
