From 672c872589123c6b18aa8bc41d627568453a292f Mon Sep 17 00:00:00 2001 From: Mark Mentovai Date: Fri, 27 Oct 2017 16:06:32 -0400 Subject: [PATCH] Upstream crashpad_util_test-in-Chromium changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This upstreams part of https://chromium.googlesource.com/chromium/src/+/00a0654929787f70b0cd81f30aa14e81c5e11b2f. The gmock_main and gtest_main test launchers detect via a CRASHPAD_IN_CHROMIUM macro that they are building as part of Chromium, and use Chromium’s custom test launcher rather than gtest’s RUN_ALL_TESTS(). This enables parallelism, sharding, and integration with Swarming. WinMultiprocess-based tests are not compatible with this test launcher or with the Swarming test design, and must be disabled when CRASHPAD_IN_CHROMIUM is set. This is covered by https://crashpad.chromium.org/bug/205. CRASHPAD_IN_CHROMIUM is never defined during Crashpad’s own standalone build, it’s only defined when building in Chromium. Change-Id: I969c5d376f86ab4b3f4cc85c97d4452b53b35063 Reviewed-on: https://chromium-review.googlesource.com/740988 Reviewed-by: Nico Weber Reviewed-by: Robert Sesek --- test/gmock_main.cc | 21 +++++++++++++++++++++ test/gtest_main.cc | 21 +++++++++++++++++++++ util/win/exception_handler_server_test.cc | 8 +++++++- util/win/scoped_process_suspend_test.cc | 8 +++++++- 4 files changed, 56 insertions(+), 2 deletions(-) diff --git a/test/gmock_main.cc b/test/gmock_main.cc index 73322cac..be043996 100644 --- a/test/gmock_main.cc +++ b/test/gmock_main.cc @@ -17,10 +17,31 @@ #include "test/gtest_disabled.h" #include "test/main_arguments.h" +#if defined(CRASHPAD_IN_CHROMIUM) +#include "base/bind.h" +#include "base/test/launcher/unit_test_launcher.h" +#include "base/test/test_suite.h" +#endif // CRASHPAD_IN_CHROMIUM + int main(int argc, char* argv[]) { crashpad::test::InitializeMainArguments(argc, argv); testing::InitGoogleMock(&argc, argv); testing::AddGlobalTestEnvironment( crashpad::test::DisabledTestGtestEnvironment::Get()); + +#if defined(CRASHPAD_IN_CHROMIUM) + + // This supports --test-launcher-summary-output, which writes a JSON file + // containing test details needed by Swarming. + base::TestSuite test_suite(argc, argv); + return base::LaunchUnitTests( + argc, + argv, + base::Bind(&base::TestSuite::Run, base::Unretained(&test_suite))); + +#else // CRASHPAD_IN_CHROMIUM + return RUN_ALL_TESTS(); + +#endif // CRASHPAD_IN_CHROMIUM } diff --git a/test/gtest_main.cc b/test/gtest_main.cc index d2ed6672..8842b6a3 100644 --- a/test/gtest_main.cc +++ b/test/gtest_main.cc @@ -16,10 +16,31 @@ #include "test/gtest_disabled.h" #include "test/main_arguments.h" +#if defined(CRASHPAD_IN_CHROMIUM) +#include "base/bind.h" +#include "base/test/launcher/unit_test_launcher.h" +#include "base/test/test_suite.h" +#endif // CRASHPAD_IN_CHROMIUM + int main(int argc, char* argv[]) { crashpad::test::InitializeMainArguments(argc, argv); testing::InitGoogleTest(&argc, argv); testing::AddGlobalTestEnvironment( crashpad::test::DisabledTestGtestEnvironment::Get()); + +#if defined(CRASHPAD_IN_CHROMIUM) + + // This supports --test-launcher-summary-output, which writes a JSON file + // containing test details needed by Swarming. + base::TestSuite test_suite(argc, argv); + return base::LaunchUnitTests( + argc, + argv, + base::Bind(&base::TestSuite::Run, base::Unretained(&test_suite))); + +#else // CRASHPAD_IN_CHROMIUM + return RUN_ALL_TESTS(); + +#endif // CRASHPAD_IN_CHROMIUM } diff --git a/util/win/exception_handler_server_test.cc b/util/win/exception_handler_server_test.cc index 6f880516..7ca329e5 100644 --- a/util/win/exception_handler_server_test.cc +++ b/util/win/exception_handler_server_test.cc @@ -180,7 +180,13 @@ class TestClient final : public WinChildProcess { DISALLOW_COPY_AND_ASSIGN(TestClient); }; -TEST_F(ExceptionHandlerServerTest, MultipleConnections) { +// https://crashpad.chromium.org/bug/205 +#if defined(CRASHPAD_IN_CHROMIUM) +#define MAYBE_MultipleConnections DISABLED_MultipleConnections +#else // CRASHPAD_IN_CHROMIUM +#define MAYBE_MultipleConnections MultipleConnections +#endif // CRASHPAD_IN_CHROMIUM +TEST_F(ExceptionHandlerServerTest, MAYBE_MultipleConnections) { WinChildProcess::EntryPoint(); std::unique_ptr handles_1 = diff --git a/util/win/scoped_process_suspend_test.cc b/util/win/scoped_process_suspend_test.cc index 2d0f5a0b..fbb34b73 100644 --- a/util/win/scoped_process_suspend_test.cc +++ b/util/win/scoped_process_suspend_test.cc @@ -89,7 +89,13 @@ class ScopedProcessSuspendTest final : public WinChildProcess { DISALLOW_COPY_AND_ASSIGN(ScopedProcessSuspendTest); }; -TEST(ScopedProcessSuspend, ScopedProcessSuspend) { +// https://crashpad.chromium.org/bug/205 +#if defined(CRASHPAD_IN_CHROMIUM) +#define MAYBE_ScopedProcessSuspend DISABLED_ScopedProcessSuspend +#else // CRASHPAD_IN_CHROMIUM +#define MAYBE_ScopedProcessSuspend ScopedProcessSuspend +#endif // CRASHPAD_IN_CHROMIUM +TEST(ScopedProcessSuspend, MAYBE_ScopedProcessSuspend) { WinChildProcess::EntryPoint(); std::unique_ptr handles = WinChildProcess::Launch();