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 2016/10/14 23:47:18 UTC

[4/5] mesos git commit: Libprocess: Enabled tests that pass on Windows.

Libprocess: Enabled tests that pass on Windows.

A large number of libprocess test files are currently not being built on
Windows. Many of these files contain tests for parts of libprocess that
have already been ported, or require only trivial fixes to work (such as
removing `#include`s on Windows). A small minority of the tests contain
bugs that we should fix.

This commit will add these files to the build, fix some of the
trivially-fixable tests, and disable tests that are known to fail
because of bugs, including comments explaining why and links to JIRA
issues where appropriate.

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


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

Branch: refs/heads/master
Commit: b0d2c0529fe2564cfadfc6529490a98658b2d985
Parents: 2e137e8
Author: Alex Clemmer <cl...@gmail.com>
Authored: Fri Oct 14 15:37:58 2016 -0700
Committer: Joseph Wu <jo...@apache.org>
Committed: Fri Oct 14 16:46:54 2016 -0700

----------------------------------------------------------------------
 3rdparty/libprocess/src/tests/CMakeLists.txt    |   8 +-
 3rdparty/libprocess/src/tests/future_tests.cpp  |   3 +-
 3rdparty/libprocess/src/tests/http_tests.cpp    |  25 +++-
 3rdparty/libprocess/src/tests/limiter_tests.cpp |  10 +-
 3rdparty/libprocess/src/tests/metrics_tests.cpp |  12 +-
 3rdparty/libprocess/src/tests/process_tests.cpp | 113 ++++++++++++++-----
 3rdparty/libprocess/src/tests/reap_tests.cpp    |   2 +-
 .../libprocess/src/tests/subprocess_tests.cpp   |   4 +-
 3rdparty/libprocess/src/tests/time_tests.cpp    |   3 +-
 9 files changed, 130 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/b0d2c052/3rdparty/libprocess/src/tests/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/tests/CMakeLists.txt b/3rdparty/libprocess/src/tests/CMakeLists.txt
index c267117..66597fd 100644
--- a/3rdparty/libprocess/src/tests/CMakeLists.txt
+++ b/3rdparty/libprocess/src/tests/CMakeLists.txt
@@ -23,10 +23,14 @@ set(PROCESS_TESTS_SRC
   decoder_tests.cpp
   encoder_tests.cpp
   future_tests.cpp
+  http_tests.cpp
   limiter_tests.cpp
+  metrics_tests.cpp
   mutex_tests.cpp
   owned_tests.cpp
+  process_tests.cpp
   queue_tests.cpp
+  sequence_tests.cpp
   shared_tests.cpp
   statistics_tests.cpp
   subprocess_tests.cpp
@@ -38,12 +42,8 @@ set(PROCESS_TESTS_SRC
 if (NOT WIN32)
   set(PROCESS_TESTS_SRC
     ${PROCESS_TESTS_SRC}
-    http_tests.cpp
     io_tests.cpp
-    metrics_tests.cpp
-    process_tests.cpp
     reap_tests.cpp
-    sequence_tests.cpp
     )
 endif (NOT WIN32)
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/b0d2c052/3rdparty/libprocess/src/tests/future_tests.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/tests/future_tests.cpp b/3rdparty/libprocess/src/tests/future_tests.cpp
index 383d260..7c411c7 100644
--- a/3rdparty/libprocess/src/tests/future_tests.cpp
+++ b/3rdparty/libprocess/src/tests/future_tests.cpp
@@ -458,7 +458,8 @@ TEST(FutureTest, Discard3)
 }
 
 
-TEST(FutureTest, Select)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(FutureTest, Select)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/b0d2c052/3rdparty/libprocess/src/tests/http_tests.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/tests/http_tests.cpp b/3rdparty/libprocess/src/tests/http_tests.cpp
index 8d6c8c4..533104c 100644
--- a/3rdparty/libprocess/src/tests/http_tests.cpp
+++ b/3rdparty/libprocess/src/tests/http_tests.cpp
@@ -10,12 +10,16 @@
 // See the License for the specific language governing permissions and
 // limitations under the License
 
+#ifndef __WINDOWS__
 #include <arpa/inet.h>
+#endif // __WINDOWS__
 
 #include <gmock/gmock.h>
 
+#ifndef __WINDOWS__
 #include <netinet/in.h>
 #include <netinet/tcp.h>
+#endif // __WINDOWS__
 
 #include <string>
 #include <vector>
@@ -191,7 +195,10 @@ TEST(HTTPTest, Endpoints)
 }
 
 
-TEST(HTTPTest, EndpointsHelp)
+// TODO(hausdorff): Routing logic is broken on Windows. Fix and enable test. In
+// this case, the '/help/(14)/body' route is missing, but the /help/(14) route
+// exists. See MESOS-5904.
+TEST_TEMP_DISABLED_ON_WINDOWS(HTTPTest, EndpointsHelp)
 {
   Http http;
   PID<HttpProcess> pid = http.process->self();
@@ -260,7 +267,10 @@ TEST(HTTPTest, EndpointsHelp)
 }
 
 
-TEST(HTTPTest, EndpointsHelpRemoval)
+// TODO(hausdorff): Routing logic is broken on Windows. Fix and enable test. In
+// this case, the '/help/(14)/body' route is missing, but the /help/(14) route
+// exists. See MESOS-5904.
+TEST_TEMP_DISABLED_ON_WINDOWS(HTTPTest, EndpointsHelpRemoval)
 {
   // Start up a new HttpProcess;
   Owned<Http> http(new Http());
@@ -541,7 +551,10 @@ TEST(HTTPTest, Get)
 }
 
 
-TEST(HTTPTest, NestedGet)
+// TODO(hausdorff): Routing logic is broken on Windows. Fix and enable test. In
+// this case, the route '/a/b/c' exists and returns 200 ok, but '/a/b' does
+// not. See MESOS-5904.
+TEST_TEMP_DISABLED_ON_WINDOWS(HTTPTest, NestedGet)
 {
   Http http;
 
@@ -1122,7 +1135,11 @@ TEST(HTTPConnectionTest, Equality)
 }
 
 
-TEST(HTTPTest, QueryEncodeDecode)
+// TODO(hausdorff): This test seems to create inconsistent (though not
+// incorrect) results across platforms. Fix and enable the test on Windows. In
+// particular, the encoding in the 3rd example puts the first variable into the
+// query string before the second, but we expect the reverse. See MESOS-5814.
+TEST_TEMP_DISABLED_ON_WINDOWS(HTTPTest, QueryEncodeDecode)
 {
   // If we use Type<a, b> directly inside a macro without surrounding
   // parenthesis the comma will be eaten by the macro rather than the

http://git-wip-us.apache.org/repos/asf/mesos/blob/b0d2c052/3rdparty/libprocess/src/tests/limiter_tests.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/tests/limiter_tests.cpp b/3rdparty/libprocess/src/tests/limiter_tests.cpp
index 71a3d25..b80b1da 100644
--- a/3rdparty/libprocess/src/tests/limiter_tests.cpp
+++ b/3rdparty/libprocess/src/tests/limiter_tests.cpp
@@ -26,7 +26,9 @@ using process::Clock;
 using process::Future;
 using process::RateLimiter;
 
-TEST(LimiterTest, Acquire)
+
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(LimiterTest, Acquire)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -56,7 +58,8 @@ TEST(LimiterTest, Acquire)
 // In this test 4 permits are given, but the 2nd permit's acquire
 // is immediately discarded. So, 1st, 3rd and 4th permits should
 // be acquired according to the rate limit.
-TEST(LimiterTest, DiscardMiddle)
+// NOTE: GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(LimiterTest, DiscardMiddle)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -94,7 +97,8 @@ TEST(LimiterTest, DiscardMiddle)
 // In this test 2 permits are initially given, but the 2nd permit's
 // future is immediately discarded. Then the 3rd permit is given. So,
 // 1st and 3rd permits should be acquired according to the rate limit.
-TEST(LimiterTest, DiscardLast)
+// NOTE: GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(LimiterTest, DiscardLast)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/b0d2c052/3rdparty/libprocess/src/tests/metrics_tests.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/tests/metrics_tests.cpp b/3rdparty/libprocess/src/tests/metrics_tests.cpp
index 88526e6..d7fdb06 100644
--- a/3rdparty/libprocess/src/tests/metrics_tests.cpp
+++ b/3rdparty/libprocess/src/tests/metrics_tests.cpp
@@ -136,7 +136,8 @@ TEST_F(MetricsTest, Counter)
 }
 
 
-TEST_F(MetricsTest, Gauge)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_F_TEMP_DISABLED_ON_WINDOWS(MetricsTest, Gauge)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -201,7 +202,8 @@ TEST_F(MetricsTest, Statistics)
 }
 
 
-TEST_F(MetricsTest, Snapshot)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_F_TEMP_DISABLED_ON_WINDOWS(MetricsTest, Snapshot)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -273,7 +275,8 @@ TEST_F(MetricsTest, Snapshot)
 }
 
 
-TEST_F(MetricsTest, SnapshotTimeout)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_F_TEMP_DISABLED_ON_WINDOWS(MetricsTest, SnapshotTimeout)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -507,7 +510,8 @@ TEST_F(MetricsTest, AsyncTimer)
 
 // Tests that the `/metrics/snapshot` endpoint rejects unauthenticated requests
 // when HTTP authentication is enabled.
-TEST_F(MetricsTest, SnapshotAuthenticationEnabled)
+// NOTE: GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_F_TEMP_DISABLED_ON_WINDOWS(MetricsTest, SnapshotAuthenticationEnabled)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/b0d2c052/3rdparty/libprocess/src/tests/process_tests.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/tests/process_tests.cpp b/3rdparty/libprocess/src/tests/process_tests.cpp
index 3936f47..a4af54a 100644
--- a/3rdparty/libprocess/src/tests/process_tests.cpp
+++ b/3rdparty/libprocess/src/tests/process_tests.cpp
@@ -13,12 +13,16 @@
 #include <errno.h>
 #include <time.h>
 
+#ifndef __WINDOWS__
 #include <arpa/inet.h>
+#endif // __WINDOWS__
 
 #include <gmock/gmock.h>
 
+#ifndef __WINDOWS__
 #include <netinet/in.h>
 #include <netinet/tcp.h>
+#endif // __WINDOWS__
 
 #include <atomic>
 #include <sstream>
@@ -58,6 +62,7 @@
 #include <stout/try.hpp>
 
 #include <stout/os/killtree.hpp>
+#include <stout/os/write.hpp>
 
 #include "encoder.hpp"
 
@@ -120,7 +125,8 @@ public:
 };
 
 
-TEST(ProcessTest, Spawn)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Spawn)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -154,7 +160,8 @@ public:
 };
 
 
-TEST(ProcessTest, Dispatch)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Dispatch)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -190,7 +197,8 @@ TEST(ProcessTest, Dispatch)
 }
 
 
-TEST(ProcessTest, Defer1)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Defer1)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -288,7 +296,8 @@ private:
 };
 
 
-TEST(ProcessTest, Defer2)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Defer2)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -322,7 +331,8 @@ void set(T* t1, const T& t2)
 }
 
 
-TEST(ProcessTest, Defer3)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Defer3)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -356,7 +366,8 @@ public:
 };
 
 
-TEST(ProcessTest, Handlers)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Handlers)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -381,7 +392,8 @@ TEST(ProcessTest, Handlers)
 
 // Tests DROP_MESSAGE and DROP_DISPATCH and in particular that an
 // event can get dropped before being processed.
-TEST(ProcessTest, Expect)
+// NOTE: GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Expect)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -412,7 +424,8 @@ TEST(ProcessTest, Expect)
 
 
 // Tests the FutureArg<N> action.
-TEST(ProcessTest, Action)
+// NOTE: GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Action)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -459,7 +472,8 @@ public:
 };
 
 
-TEST(ProcessTest, Inheritance)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Inheritance)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -490,7 +504,8 @@ TEST(ProcessTest, Inheritance)
 }
 
 
-TEST(ProcessTest, Thunk)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Thunk)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -535,7 +550,8 @@ public:
 };
 
 
-TEST(ProcessTest, Delegate)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Delegate)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -568,7 +584,8 @@ public:
 };
 
 
-TEST(ProcessTest, Delay)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Delay)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -607,7 +624,8 @@ public:
 };
 
 
-TEST(ProcessTest, Order)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Order)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -662,7 +680,8 @@ public:
 };
 
 
-TEST(ProcessTest, Donate)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Donate)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -813,7 +832,9 @@ public:
 
 // Verifies that linking to a remote process will correctly detect
 // the associated `ExitedEvent`.
-TEST_F(ProcessRemoteLinkTest, RemoteLink)
+// TODO(hausdorff): Test fails on Windows. Fix and enable. Linkee never sends a
+// message because "no such program exists". See MESOS-5941.
+TEST_F_TEMP_DISABLED_ON_WINDOWS(ProcessRemoteLinkTest, RemoteLink)
 {
   // Link to the remote subprocess.
   ExitedProcess process(pid);
@@ -866,7 +887,9 @@ private:
 // Verifies that calling `link` with "relink" semantics will have the
 // same behavior as `link` with "normal" semantics, when there is no
 // existing persistent connection.
-TEST_F(ProcessRemoteLinkTest, RemoteRelink)
+// TODO(hausdorff): Test fails on Windows. Fix and enable. Linkee never sends a
+// message because "no such program exists". See MESOS-5941.
+TEST_F_TEMP_DISABLED_ON_WINDOWS(ProcessRemoteLinkTest, RemoteRelink)
 {
   RemoteLinkTestProcess process(pid);
 
@@ -891,7 +914,9 @@ TEST_F(ProcessRemoteLinkTest, RemoteRelink)
 
 // Verifies that linking and relinking a process will retain monitoring
 // on the linkee.
-TEST_F(ProcessRemoteLinkTest, RemoteLinkRelink)
+// TODO(hausdorff): Test fails on Windows. Fix and enable. Linkee never sends a
+// message because "no such program exists". See MESOS-5941.
+TEST_F_TEMP_DISABLED_ON_WINDOWS(ProcessRemoteLinkTest, RemoteLinkRelink)
 {
   RemoteLinkTestProcess process(pid);
 
@@ -917,7 +942,9 @@ TEST_F(ProcessRemoteLinkTest, RemoteLinkRelink)
 
 // Verifies that relinking a remote process will not affect the
 // monitoring of the process by other linkers.
-TEST_F(ProcessRemoteLinkTest, RemoteDoubleLinkRelink)
+// TODO(hausdorff): Test fails on Windows. Fix and enable. Linkee never sends a
+// message because "no such program exists". See MESOS-5941.
+TEST_F_TEMP_DISABLED_ON_WINDOWS(ProcessRemoteLinkTest, RemoteDoubleLinkRelink)
 {
   ExitedProcess linker(pid);
   RemoteLinkTestProcess relinker(pid);
@@ -954,7 +981,7 @@ TEST_F(ProcessRemoteLinkTest, RemoteDoubleLinkRelink)
 // Verifies that remote links will trigger an `ExitedEvent` if the link
 // fails during socket creation. The test instigates a socket creation
 // failure by hogging all available file descriptors.
-TEST_F(ProcessRemoteLinkTest, RemoteLinkLeak)
+TEST_F_TEMP_DISABLED_ON_WINDOWS(ProcessRemoteLinkTest, RemoteLinkLeak)
 {
   RemoteLinkTestProcess relinker(pid);
   Future<UPID> relinkerExitedPid;
@@ -994,6 +1021,9 @@ Option<int> get_persistent_socket(const UPID& to);
 } // namespace process {
 
 
+// TODO(hausdorff): Test disabled temporarily because `SHUT_WR` does not exist
+// on Windows. See MESOS-5817.
+#ifndef __WINDOWS__
 // Verifies that sending a message over a socket will fail if the
 // link to the target is broken (i.e. closed) outside of the
 // `SocketManager`s knowledge.
@@ -1047,8 +1077,12 @@ TEST_F(ProcessRemoteLinkTest, RemoteUseStaleLink)
   terminate(process);
   wait(process);
 }
+#endif // __WINDOWS__
 
 
+// TODO(hausdorff): Test disabled temporarily because `SHUT_WR` does not exist
+// on Windows. See MESOS-5817.
+#ifndef __WINDOWS__
 // Verifies that, in a situation where an existing remote link has become
 // "stale", "relinking" prior to sending a message will lead to successful
 // message passing. The existing remote link is broken in the same way as
@@ -1109,6 +1143,7 @@ TEST_F(ProcessRemoteLinkTest, RemoteStaleLinkRelink)
   terminate(process);
   wait(process);
 }
+#endif // __WINDOWS__
 
 
 class SettleProcess : public Process<SettleProcess>
@@ -1142,7 +1177,8 @@ public:
 };
 
 
-TEST(ProcessTest, Settle)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Settle)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -1157,7 +1193,8 @@ TEST(ProcessTest, Settle)
 }
 
 
-TEST(ProcessTest, Pid)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Pid)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -1192,7 +1229,8 @@ public:
 };
 
 
-TEST(ProcessTest, Listener)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Listener)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -1222,7 +1260,8 @@ public:
 };
 
 
-TEST(ProcessTest, Executor)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Executor)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -1270,7 +1309,8 @@ public:
 };
 
 
-TEST(ProcessTest, Remote)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Remote)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -1305,7 +1345,8 @@ TEST(ProcessTest, Remote)
 
 
 // Like the 'remote' test but uses http::connect.
-TEST(ProcessTest, Http1)
+// NOTE: GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Http1)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -1357,7 +1398,8 @@ TEST(ProcessTest, Http1)
 
 // Like 'http1' but uses the 'Libprocess-From' header. We can
 // also use http::post here since we expect a 202 response.
-TEST(ProcessTest, Http2)
+// NOTE: GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Http2)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -1475,7 +1517,8 @@ static string itoa2(int* const& i)
 }
 
 
-TEST(ProcessTest, Async)
+// GTEST_IS_THREADSAFE is not defined on Windows. See MESOS-5903.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Async)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
@@ -1510,7 +1553,10 @@ public:
 };
 
 
-TEST(ProcessTest, Provide)
+// TODO(hausdorff): Enable test when `os::rmdir` is semantically equivalent to
+// the POSIX version. In this case, it behaves poorly when we try to use it to
+// delete a file instead of a directory. See MESOS-5942.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, Provide)
 {
   const Try<string> mkdtemp = os::mkdtemp();
   ASSERT_SOME(mkdtemp);
@@ -1549,6 +1595,8 @@ static int baz(string s) { return 42; }
 static Future<int> bam(string s) { return 42; }
 
 
+// MSVC can't compile the call to std::invoke.
+#ifndef __WINDOWS__
 TEST(ProcessTest, Defers)
 {
   {
@@ -1686,6 +1734,7 @@ TEST(ProcessTest, Defers)
   Future<int> future13 = Future<string>().then(
       defer(functor));
 }
+#endif // __WINDOWS__
 
 
 class PercentEncodedIDProcess : public Process<PercentEncodedIDProcess>
@@ -1790,7 +1839,9 @@ public:
 
 // Sets firewall rules which disable endpoints on a process and then
 // attempts to connect to those endpoints.
-TEST(ProcessTest, FirewallDisablePaths)
+// TODO(hausdorff): Routing logic is broken on Windows. Fix and enable test. In
+// this case, we fail to set up the firewall routes. See MESOS-5904.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, FirewallDisablePaths)
 {
   const string id = "testprocess";
 
@@ -1875,7 +1926,9 @@ TEST(ProcessTest, FirewallDisablePaths)
 
 // Test that firewall rules can be changed by changing the vector.
 // An empty vector should allow all paths.
-TEST(ProcessTest, FirewallUninstall)
+// TODO(hausdorff): Routing logic is broken on Windows. Fix and enable test. In
+// this case, we fail to set up the firewall routes. See MESOS-5904.
+TEST_TEMP_DISABLED_ON_WINDOWS(ProcessTest, FirewallUninstall)
 {
   const string id = "testprocess";
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/b0d2c052/3rdparty/libprocess/src/tests/reap_tests.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/tests/reap_tests.cpp b/3rdparty/libprocess/src/tests/reap_tests.cpp
index 586d528..30518de 100644
--- a/3rdparty/libprocess/src/tests/reap_tests.cpp
+++ b/3rdparty/libprocess/src/tests/reap_tests.cpp
@@ -55,7 +55,7 @@ TEST(ReapTest, NonChildProcess)
   //  -+- child (exit 0)
   //  -+- grandchild sleep 10
   Try<ProcessTree> tree = Fork(None(),
-                               Fork(Exec("sleep 10")),
+                               Fork(Exec(SLEEP_COMMAND(10))),
                                Exec("exit 0"))();
   ASSERT_SOME(tree);
   ASSERT_EQ(1u, tree.get().children.size());

http://git-wip-us.apache.org/repos/asf/mesos/blob/b0d2c052/3rdparty/libprocess/src/tests/subprocess_tests.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/tests/subprocess_tests.cpp b/3rdparty/libprocess/src/tests/subprocess_tests.cpp
index c8350cf..483ac1c 100644
--- a/3rdparty/libprocess/src/tests/subprocess_tests.cpp
+++ b/3rdparty/libprocess/src/tests/subprocess_tests.cpp
@@ -264,7 +264,7 @@ TEST_F(SubprocessTest, Status)
   AWAIT_EXPECT_WEXITSTATUS_EQ(1, s.get().status());
 
   // SIGTERM.
-  s = subprocess("sleep 60");
+  s = subprocess(SLEEP_COMMAND(60));
 
   ASSERT_SOME(s);
 
@@ -281,7 +281,7 @@ TEST_F(SubprocessTest, Status)
   AWAIT_EXPECT_WTERMSIG_EQ(SIGTERM, s.get().status());
 
   // SIGKILL.
-  s = subprocess("sleep 60");
+  s = subprocess(SLEEP_COMMAND(60));
 
   ASSERT_SOME(s);
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/b0d2c052/3rdparty/libprocess/src/tests/time_tests.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/tests/time_tests.cpp b/3rdparty/libprocess/src/tests/time_tests.cpp
index 9d40eae..08ddb56 100644
--- a/3rdparty/libprocess/src/tests/time_tests.cpp
+++ b/3rdparty/libprocess/src/tests/time_tests.cpp
@@ -43,7 +43,8 @@ TEST(TimeTest, Arithmetic)
 }
 
 
-TEST(TimeTest, Now)
+// Windows OS timers aren't high enough resolution to support this.
+TEST_TEMP_DISABLED_ON_WINDOWS(TimeTest, Now)
 {
   Time t1 = Clock::now();
   os::sleep(Microseconds(10));