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:25:06 UTC

[4/4] mesos git commit: Windows: Enabled DOCKER and ROOT test filters.

Windows: Enabled DOCKER and ROOT test filters.

This flips two test filters on Windows, so that all Docker and Root
tests are now enabled by default on Windows (rather than disabled).

On Windows, everything must be run as Administrator (like root, but
also somewhat different), so all ROOT tests are enabled by default.
The DOCKER filter now has the same behavior on Windows and Linux.

However, since many of the tests affected by these filters are
still not working on Windows, some individual tests have been
disabled.

The main test enabled by this commit is:
`DockerTest.ROOT_DOCKER_Version`.

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


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

Branch: refs/heads/master
Commit: c4df8f7b0e48e190111ef427080bf3ca5019a25a
Parents: 1724980
Author: John Kordich <jo...@microsoft.com>
Authored: Thu May 25 17:24:10 2017 -0700
Committer: Joseph Wu <jo...@apache.org>
Committed: Thu May 25 17:36:40 2017 -0700

----------------------------------------------------------------------
 src/tests/CMakeLists.txt                 |  6 ++++-
 src/tests/containerizer/docker_tests.cpp | 33 +++++++++++++++------------
 src/tests/default_executor_tests.cpp     |  6 +++--
 src/tests/environment.cpp                | 10 ++++----
 src/tests/health_check_tests.cpp         | 16 ++++++++-----
 src/tests/hook_tests.cpp                 | 14 +++++++-----
 src/tests/slave_tests.cpp                |  5 ++--
 7 files changed, 54 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/c4df8f7b/src/tests/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
index 29a46bd..ee56d2d 100644
--- a/src/tests/CMakeLists.txt
+++ b/src/tests/CMakeLists.txt
@@ -144,6 +144,11 @@ set(MESOS_TESTS_SRC
   common/type_utils_tests.cpp
   )
 
+set(MESOS_TESTS_SRC
+  ${MESOS_TESTS_SRC}
+  containerizer/docker_tests.cpp
+  )
+
 if (NOT WIN32)
   set(MESOS_TESTS_SRC
     ${MESOS_TESTS_SRC}
@@ -192,7 +197,6 @@ if (NOT WIN32)
     containerizer/cpu_isolator_tests.cpp
     containerizer/docker_containerizer_tests.cpp
     containerizer/docker_spec_tests.cpp
-    containerizer/docker_tests.cpp
     containerizer/environment_secret_isolator_tests.cpp
     containerizer/io_switchboard_tests.cpp
     containerizer/isolator_tests.cpp

http://git-wip-us.apache.org/repos/asf/mesos/blob/c4df8f7b/src/tests/containerizer/docker_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/docker_tests.cpp b/src/tests/containerizer/docker_tests.cpp
index 3d3c9af..5cabf5a 100644
--- a/src/tests/containerizer/docker_tests.cpp
+++ b/src/tests/containerizer/docker_tests.cpp
@@ -98,7 +98,7 @@ protected:
 
 
 // This test tests the functionality of the docker's interfaces.
-TEST_F(DockerTest, ROOT_DOCKER_interface)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(DockerTest, ROOT_DOCKER_interface)
 {
   const string containerName = NAME_PREFIX + "-test";
   Resources resources = Resources::parse("cpus:1;mem:512").get();
@@ -265,7 +265,7 @@ TEST_F(DockerTest, ROOT_DOCKER_interface)
 
 
 // This tests our 'docker kill' wrapper.
-TEST_F(DockerTest, ROOT_DOCKER_kill)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(DockerTest, ROOT_DOCKER_kill)
 {
   const string containerName = NAME_PREFIX + "-test";
   Resources resources = Resources::parse("cpus:1;mem:512").get();
@@ -356,7 +356,7 @@ TEST_F(DockerTest, ROOT_DOCKER_Version)
 }
 
 
-TEST_F(DockerTest, ROOT_DOCKER_CheckCommandWithShell)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(DockerTest, ROOT_DOCKER_CheckCommandWithShell)
 {
   Owned<Docker> docker = Docker::create(
       tests::flags.docker,
@@ -384,7 +384,7 @@ TEST_F(DockerTest, ROOT_DOCKER_CheckCommandWithShell)
 }
 
 
-TEST_F(DockerTest, ROOT_DOCKER_CheckPortResource)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(DockerTest, ROOT_DOCKER_CheckPortResource)
 {
   const string containerName = NAME_PREFIX + "-port-resource-test";
 
@@ -450,7 +450,7 @@ TEST_F(DockerTest, ROOT_DOCKER_CheckPortResource)
 }
 
 
-TEST_F(DockerTest, ROOT_DOCKER_CancelPull)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(DockerTest, ROOT_DOCKER_CancelPull)
 {
   // Delete the test image if it exists.
 
@@ -486,7 +486,7 @@ TEST_F(DockerTest, ROOT_DOCKER_CancelPull)
 
 // This test verifies mounting in a relative host path when running a
 // docker container works.
-TEST_F(DockerTest, ROOT_DOCKER_MountRelativeHostPath)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(DockerTest, ROOT_DOCKER_MountRelativeHostPath)
 {
   Owned<Docker> docker = Docker::create(
       tests::flags.docker,
@@ -531,7 +531,7 @@ TEST_F(DockerTest, ROOT_DOCKER_MountRelativeHostPath)
 
 // This test verifies mounting in an absolute host path when running a
 // docker container works.
-TEST_F(DockerTest, ROOT_DOCKER_MountAbsoluteHostPath)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(DockerTest, ROOT_DOCKER_MountAbsoluteHostPath)
 {
   Owned<Docker> docker = Docker::create(
       tests::flags.docker,
@@ -578,7 +578,8 @@ TEST_F(DockerTest, ROOT_DOCKER_MountAbsoluteHostPath)
 // This test verifies mounting in an absolute host path to
 // a relative container path when running a docker container
 // works.
-TEST_F(DockerTest, ROOT_DOCKER_MountRelativeContainerPath)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(
+  DockerTest, ROOT_DOCKER_MountRelativeContainerPath)
 {
   Owned<Docker> docker = Docker::create(
       tests::flags.docker,
@@ -625,7 +626,8 @@ TEST_F(DockerTest, ROOT_DOCKER_MountRelativeContainerPath)
 
 // This test verifies a docker container mounting relative host
 // path to a relative container path fails.
-TEST_F(DockerTest, ROOT_DOCKER_MountRelativeHostPathRelativeContainerPath)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(
+  DockerTest, ROOT_DOCKER_MountRelativeHostPathRelativeContainerPath)
 {
   Owned<Docker> docker = Docker::create(
       tests::flags.docker,
@@ -671,7 +673,7 @@ class DockerImageTest : public MesosTest {};
 
 // This test verifies that docker image constructor is able to read
 // entrypoint and environment from a docker inspect JSON object.
-TEST_F(DockerImageTest, ParseInspectonImage)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(DockerImageTest, ParseInspectonImage)
 {
   JSON::Value inspect = JSON::parse(
     "{"
@@ -789,7 +791,7 @@ TEST_F(DockerImageTest, ParseInspectonImage)
 // /dev/nvidiactl device (present alongside Nvidia GPUs).
 //
 // TODO(bmahler): Avoid needing Nvidia GPUs to test this.
-TEST_F(DockerTest, ROOT_DOCKER_NVIDIA_GPU_DeviceAllow)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(DockerTest, ROOT_DOCKER_NVIDIA_GPU_DeviceAllow)
 {
   const string containerName = NAME_PREFIX + "-test";
   Resources resources = Resources::parse("cpus:1;mem:512;gpus:1").get();
@@ -847,7 +849,8 @@ TEST_F(DockerTest, ROOT_DOCKER_NVIDIA_GPU_DeviceAllow)
 //
 // TODO(bmahler): Avoid needing Nvidia GPUs to test this and
 // merge this into a more general inspect test.
-TEST_F(DockerTest, ROOT_DOCKER_NVIDIA_GPU_InspectDevices)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(
+  DockerTest, ROOT_DOCKER_NVIDIA_GPU_InspectDevices)
 {
   const string containerName = NAME_PREFIX + "-test";
   Resources resources = Resources::parse("cpus:1;mem:512;gpus:1").get();
@@ -918,7 +921,8 @@ TEST_F(DockerTest, ROOT_DOCKER_NVIDIA_GPU_InspectDevices)
 
 // This tests verifies that a task requiring more than one volume driver (in
 // multiple Volumes) is rejected.
-TEST_F(DockerTest, ROOT_DOCKER_ConflictingVolumeDriversInMultipleVolumes)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(
+  DockerTest, ROOT_DOCKER_ConflictingVolumeDriversInMultipleVolumes)
 {
   Owned<Docker> docker = Docker::create(
       tests::flags.docker,
@@ -955,7 +959,8 @@ TEST_F(DockerTest, ROOT_DOCKER_ConflictingVolumeDriversInMultipleVolumes)
 // This tests verifies that a task requiring more than one volume driver (via
 // Volume.Source.DockerInfo.driver and ContainerInfo.DockerInfo.volume_driver)
 // is rejected.
-TEST_F(DockerTest, ROOT_DOCKER_ConflictingVolumeDrivers)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(
+  DockerTest, ROOT_DOCKER_ConflictingVolumeDrivers)
 {
   Owned<Docker> docker = Docker::create(
       tests::flags.docker,

http://git-wip-us.apache.org/repos/asf/mesos/blob/c4df8f7b/src/tests/default_executor_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/default_executor_tests.cpp b/src/tests/default_executor_tests.cpp
index 22af7e9..d074c1a 100644
--- a/src/tests/default_executor_tests.cpp
+++ b/src/tests/default_executor_tests.cpp
@@ -1427,7 +1427,8 @@ INSTANTIATE_TEST_CASE_P(
 
 // This test verifies that the default executor can be launched using
 // reserved persistent resources which can be accessed by its tasks.
-TEST_P(PersistentVolumeDefaultExecutor, ROOT_PersistentResources)
+TEST_P_TEMP_DISABLED_ON_WINDOWS(
+    PersistentVolumeDefaultExecutor, ROOT_PersistentResources)
 {
   Try<Owned<cluster::Master>> master = StartMaster();
   ASSERT_SOME(master);
@@ -1569,7 +1570,8 @@ TEST_P(PersistentVolumeDefaultExecutor, ROOT_PersistentResources)
 
 // This test verifies that the default executor mounts the persistent volume
 // in the task container when it is set on a task in the task group.
-TEST_P(PersistentVolumeDefaultExecutor, ROOT_TaskSandboxPersistentVolume)
+TEST_P_TEMP_DISABLED_ON_WINDOWS(
+    PersistentVolumeDefaultExecutor, ROOT_TaskSandboxPersistentVolume)
 {
   Try<Owned<cluster::Master>> master = StartMaster();
   ASSERT_SOME(master);

http://git-wip-us.apache.org/repos/asf/mesos/blob/c4df8f7b/src/tests/environment.cpp
----------------------------------------------------------------------
diff --git a/src/tests/environment.cpp b/src/tests/environment.cpp
index 280b2ca..a7262cd 100644
--- a/src/tests/environment.cpp
+++ b/src/tests/environment.cpp
@@ -265,7 +265,7 @@ class DockerFilter : public TestFilter
 public:
   DockerFilter()
   {
-#ifdef __linux__
+#if defined(__linux__) || defined(__WINDOWS__)
     Try<Owned<Docker>> docker = Docker::create(
         flags.docker,
         flags.docker_socket);
@@ -274,8 +274,8 @@ public:
       dockerError = docker.error();
     }
 #else
-    dockerError = Error("Docker tests not supported on non-Linux systems");
-#endif // __linux__
+    dockerError = Error("Docker tests are not supported on this platform");
+#endif // __linux__ || __WINDOWS__
 
     if (dockerError.isSome()) {
       std::cerr
@@ -618,8 +618,8 @@ public:
   bool disable(const ::testing::TestInfo* test) const
   {
 #ifdef __WINDOWS__
-    // On Windows, `root` does not exist, so we cannot run `ROOT_` tests.
-    return matches(test, "ROOT_");
+    // On Windows, tests are expected to be run as Administrator.
+    return false;
 #else
     Result<string> user = os::user();
     CHECK_SOME(user);

http://git-wip-us.apache.org/repos/asf/mesos/blob/c4df8f7b/src/tests/health_check_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/health_check_tests.cpp b/src/tests/health_check_tests.cpp
index d45dd80..4e339bf 100644
--- a/src/tests/health_check_tests.cpp
+++ b/src/tests/health_check_tests.cpp
@@ -526,7 +526,7 @@ TEST_F(HealthCheckTest, ROOT_HealthyTaskWithContainerImage)
 
 // This test creates a healthy task using the Docker executor and
 // verifies that the healthy status is reported to the scheduler.
-TEST_F(HealthCheckTest, ROOT_DOCKER_DockerHealthyTask)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(HealthCheckTest, ROOT_DOCKER_DockerHealthyTask)
 {
   Shared<Docker> docker(new MockDocker(
       tests::flags.docker, tests::flags.docker_socket));
@@ -715,7 +715,7 @@ TEST_F(HealthCheckTest, HealthyTaskNonShell)
 
 // This test creates a task whose health flaps, and verifies that the
 // health status updates are sent to the framework scheduler.
-TEST_F(HealthCheckTest, HealthStatusChange)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(HealthCheckTest, HealthStatusChange)
 {
   Try<Owned<cluster::Master>> master = StartMaster();
   ASSERT_SOME(master);
@@ -798,7 +798,8 @@ TEST_F(HealthCheckTest, HealthStatusChange)
 // This test creates a task that uses the Docker executor and whose
 // health flaps. It then verifies that the health status updates are
 // sent to the framework scheduler.
-TEST_F(HealthCheckTest, ROOT_DOCKER_DockerHealthStatusChange)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(
+    HealthCheckTest, ROOT_DOCKER_DockerHealthStatusChange)
 {
   Shared<Docker> docker(new MockDocker(
       tests::flags.docker, tests::flags.docker_socket));
@@ -1829,7 +1830,8 @@ TEST_F(HealthCheckTest, ROOT_INTERNET_CURL_HealthyTaskViaTCPWithContainerImage)
 
 // Tests a healthy docker task via HTTP. To emulate a task responsive
 // to HTTP health checks, starts Netcat in the docker "alpine" image.
-TEST_F(HealthCheckTest, ROOT_DOCKER_DockerHealthyTaskViaHTTP)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(
+    HealthCheckTest, ROOT_DOCKER_DockerHealthyTaskViaHTTP)
 {
   Shared<Docker> docker(new MockDocker(
       tests::flags.docker, tests::flags.docker_socket));
@@ -1959,7 +1961,8 @@ TEST_F(HealthCheckTest, ROOT_DOCKER_DockerHealthyTaskViaHTTP)
 // Tests a healthy docker task via HTTPS. To emulate a task responsive
 // to HTTPS health checks, starts an HTTPS server in the docker
 // "haosdent/https-server" image.
-TEST_F(HealthCheckTest, ROOT_DOCKER_DockerHealthyTaskViaHTTPS)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(
+    HealthCheckTest, ROOT_DOCKER_DockerHealthyTaskViaHTTPS)
 {
   Shared<Docker> docker(new MockDocker(
       tests::flags.docker, tests::flags.docker_socket));
@@ -2094,7 +2097,8 @@ TEST_F(HealthCheckTest, ROOT_DOCKER_DockerHealthyTaskViaHTTPS)
 //
 // NOTE: This test is almost identical to ROOT_DOCKER_DockerHealthyTaskViaHTTP
 // with the difference being TCP health check.
-TEST_F(HealthCheckTest, ROOT_DOCKER_DockerHealthyTaskViaTCP)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(
+    HealthCheckTest, ROOT_DOCKER_DockerHealthyTaskViaTCP)
 {
   Shared<Docker> docker(new MockDocker(
       tests::flags.docker, tests::flags.docker_socket));

http://git-wip-us.apache.org/repos/asf/mesos/blob/c4df8f7b/src/tests/hook_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/hook_tests.cpp b/src/tests/hook_tests.cpp
index 02d8f80..f051fae 100644
--- a/src/tests/hook_tests.cpp
+++ b/src/tests/hook_tests.cpp
@@ -639,7 +639,8 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(HookTest, VerifySlaveTaskStatusDecorator)
 
 // This test verifies that the slave pre-launch docker environment
 // decorator can attach environment variables to a task exclusively.
-TEST_F(HookTest, ROOT_DOCKER_VerifySlavePreLaunchDockerTaskExecutorDecorator)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(
+  HookTest, ROOT_DOCKER_VerifySlavePreLaunchDockerTaskExecutorDecorator)
 {
   Try<Owned<cluster::Master>> master = StartMaster();
   ASSERT_SOME(master);
@@ -747,7 +748,8 @@ TEST_F(HookTest, ROOT_DOCKER_VerifySlavePreLaunchDockerTaskExecutorDecorator)
 // This test verifies that the slave pre-launch docker validator hook can check
 // labels on a task and subsequently prevent the task from being launched
 // if a specific label is present.
-TEST_F(HookTest, ROOT_DOCKER_VerifySlavePreLaunchDockerValidator)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(
+  HookTest, ROOT_DOCKER_VerifySlavePreLaunchDockerValidator)
 {
   Try<Owned<cluster::Master>> master = StartMaster();
   ASSERT_SOME(master);
@@ -841,7 +843,8 @@ TEST_F(HookTest, ROOT_DOCKER_VerifySlavePreLaunchDockerValidator)
 // directory. When the docker container launched, the sandbox directory
 // is mounted to the docker container. We validate the hook by verifying
 // the "foo" file exists in the docker container or not.
-TEST_F(HookTest, ROOT_DOCKER_VerifySlavePreLaunchDockerHook)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(
+  HookTest, ROOT_DOCKER_VerifySlavePreLaunchDockerHook)
 {
   Try<Owned<cluster::Master>> master = StartMaster();
   ASSERT_SOME(master);
@@ -965,7 +968,7 @@ TEST_F(HookTest, ROOT_DOCKER_VerifySlavePreLaunchDockerHook)
 // will try to delete that file in the sandbox directory. We validate
 // the hook by verifying that "post_fetch_hook" file does not exist in
 // the sandbox when container is running.
-TEST_F(HookTest, ROOT_DOCKER_VerifySlavePostFetchHook)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(HookTest, ROOT_DOCKER_VerifySlavePostFetchHook)
 {
   Try<Owned<cluster::Master>> master = StartMaster();
   ASSERT_SOME(master);
@@ -1074,8 +1077,7 @@ TEST_F(HookTest, ROOT_DOCKER_VerifySlavePostFetchHook)
 // Test that the changes made by the resources decorator hook are correctly
 // propagated to the resource offer.
 TEST_F_TEMP_DISABLED_ON_WINDOWS(
-    HookTest,
-    VerifySlaveResourcesAndAttributesDecorator)
+    HookTest, VerifySlaveResourcesAndAttributesDecorator)
 {
   Try<Owned<cluster::Master>> master = StartMaster();
   ASSERT_SOME(master);

http://git-wip-us.apache.org/repos/asf/mesos/blob/c4df8f7b/src/tests/slave_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/slave_tests.cpp b/src/tests/slave_tests.cpp
index d124d59..b56b014 100644
--- a/src/tests/slave_tests.cpp
+++ b/src/tests/slave_tests.cpp
@@ -900,7 +900,7 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(SlaveTest, GetExecutorInfoForTaskWithContainer)
 // MesosContainerizer would fail the launch.
 //
 // TODO(jieyu): Move this test to the mesos containerizer tests.
-TEST_F(SlaveTest, ROOT_LaunchTaskInfoWithContainerInfo)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(SlaveTest, ROOT_LaunchTaskInfoWithContainerInfo)
 {
   Try<Owned<cluster::Master>> master = StartMaster();
   ASSERT_SOME(master);
@@ -986,7 +986,8 @@ TEST_F(SlaveTest, ROOT_LaunchTaskInfoWithContainerInfo)
 // This test runs a command without the command user field set. The
 // command will verify the assumption that the command is run as the
 // slave user (in this case, root).
-TEST_F(SlaveTest, ROOT_RunTaskWithCommandInfoWithoutUser)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(
+  SlaveTest, ROOT_RunTaskWithCommandInfoWithoutUser)
 {
   Try<Owned<cluster::Master>> master = StartMaster();
   ASSERT_SOME(master);