EDK: Remove (direct) dependencies of //mojo/edk/system on //base/test. We still use //base/test for the moment, but only via things in //mojo/edk/system/test. R=vardhan@google.com Review URL: https://codereview.chromium.org/1430593005 .
diff --git a/mojo/edk/system/BUILD.gn b/mojo/edk/system/BUILD.gn index 8d7e0b6..f7227f3 100644 --- a/mojo/edk/system/BUILD.gn +++ b/mojo/edk/system/BUILD.gn
@@ -180,7 +180,6 @@ "ref_counted_unittest.cc", "remote_data_pipe_impl_unittest.cc", "remote_message_pipe_unittest.cc", - "run_all_unittests.cc", "shared_buffer_dispatcher_unittest.cc", "simple_dispatcher_unittest.cc", "test_channel_endpoint_client.cc", @@ -198,13 +197,11 @@ "../test:test_support", "../util", "test", + "test:run_all_unittests", "test:unittests", "//base", - "//base/test:test_support", "//testing/gtest", ] - - allow_circular_includes_from = [ "../embedder:embedder_unittests" ] } test("mojo_system_perftests") { @@ -219,9 +216,9 @@ ":system", "../test:test_support", "test", + "test:perf", + "test:run_all_perftests", "//base", - "//base/test:test_support", - "//base/test:test_support_perf", "//testing/gtest", ] }
diff --git a/mojo/edk/system/channel_endpoint_unittest.cc b/mojo/edk/system/channel_endpoint_unittest.cc index 19cc237..b83afc4 100644 --- a/mojo/edk/system/channel_endpoint_unittest.cc +++ b/mojo/edk/system/channel_endpoint_unittest.cc
@@ -8,11 +8,12 @@ #include <utility> #include "base/synchronization/waitable_event.h" -#include "base/test/test_timeouts.h" +#include "base/time/time.h" #include "mojo/edk/system/channel_test_base.h" #include "mojo/edk/system/message_in_transit_queue.h" #include "mojo/edk/system/message_in_transit_test_utils.h" #include "mojo/edk/system/ref_ptr.h" +#include "mojo/edk/system/test/timeouts.h" #include "mojo/edk/system/test_channel_endpoint_client.h" #include "mojo/public/cpp/system/macros.h" @@ -76,7 +77,8 @@ EXPECT_TRUE(endpoint1->EnqueueMessage(std::move(send_message))); // Wait to receive it. - EXPECT_TRUE(read_event.TimedWait(TestTimeouts::tiny_timeout())); + EXPECT_TRUE(read_event.TimedWait(base::TimeDelta::FromMicroseconds( + static_cast<int64_t>(test::TinyTimeout())))); client0->SetReadEvent(nullptr); // Check the received message. @@ -116,7 +118,8 @@ base::WaitableEvent read_event(true, false); client0->SetReadEvent(&read_event); for (size_t i = 0; client0->NumMessages() < 6 && i < 6; i++) { - EXPECT_TRUE(read_event.TimedWait(TestTimeouts::tiny_timeout())); + EXPECT_TRUE(read_event.TimedWait(base::TimeDelta::FromMicroseconds( + static_cast<int64_t>(test::TinyTimeout())))); read_event.Reset(); } client0->SetReadEvent(nullptr);
diff --git a/mojo/edk/system/endpoint_relayer_unittest.cc b/mojo/edk/system/endpoint_relayer_unittest.cc index 1b8b440..ca35d7d 100644 --- a/mojo/edk/system/endpoint_relayer_unittest.cc +++ b/mojo/edk/system/endpoint_relayer_unittest.cc
@@ -6,12 +6,13 @@ #include "base/logging.h" #include "base/synchronization/waitable_event.h" -#include "base/test/test_timeouts.h" +#include "base/time/time.h" #include "mojo/edk/system/channel_endpoint_id.h" #include "mojo/edk/system/channel_test_base.h" #include "mojo/edk/system/message_in_transit_queue.h" #include "mojo/edk/system/message_in_transit_test_utils.h" #include "mojo/edk/system/ref_ptr.h" +#include "mojo/edk/system/test/timeouts.h" #include "mojo/edk/system/test_channel_endpoint_client.h" #include "mojo/edk/util/make_unique.h" #include "mojo/public/cpp/system/macros.h" @@ -96,7 +97,8 @@ EXPECT_TRUE(endpoint1a()->EnqueueMessage(test::MakeTestMessage(12345))); - EXPECT_TRUE(read_event.TimedWait(TestTimeouts::tiny_timeout())); + EXPECT_TRUE(read_event.TimedWait(base::TimeDelta::FromMicroseconds( + static_cast<int64_t>(test::TinyTimeout())))); client1b()->SetReadEvent(nullptr); ASSERT_EQ(1u, client1b()->NumMessages()); @@ -111,7 +113,8 @@ EXPECT_TRUE(endpoint1b()->EnqueueMessage(test::MakeTestMessage(67890))); - EXPECT_TRUE(read_event.TimedWait(TestTimeouts::tiny_timeout())); + EXPECT_TRUE(read_event.TimedWait(base::TimeDelta::FromMicroseconds( + static_cast<int64_t>(test::TinyTimeout())))); client1a()->SetReadEvent(nullptr); ASSERT_EQ(1u, client1a()->NumMessages()); @@ -130,7 +133,8 @@ base::WaitableEvent read_event(true, false); client1b()->SetReadEvent(&read_event); for (size_t i = 0; client1b()->NumMessages() < 5 && i < 5; i++) { - EXPECT_TRUE(read_event.TimedWait(TestTimeouts::tiny_timeout())); + EXPECT_TRUE(read_event.TimedWait(base::TimeDelta::FromMicroseconds( + static_cast<int64_t>(test::TinyTimeout())))); read_event.Reset(); } client1b()->SetReadEvent(nullptr); @@ -201,7 +205,8 @@ base::WaitableEvent read_event(true, false); client1b()->SetReadEvent(&read_event); for (size_t i = 0; client1b()->NumMessages() < 5 && i < 5; i++) { - EXPECT_TRUE(read_event.TimedWait(TestTimeouts::tiny_timeout())); + EXPECT_TRUE(read_event.TimedWait(base::TimeDelta::FromMicroseconds( + static_cast<int64_t>(test::TinyTimeout())))); read_event.Reset(); } client1b()->SetReadEvent(nullptr);
diff --git a/mojo/edk/system/ipc_support_unittest.cc b/mojo/edk/system/ipc_support_unittest.cc index 2ca97a6..9ced02e 100644 --- a/mojo/edk/system/ipc_support_unittest.cc +++ b/mojo/edk/system/ipc_support_unittest.cc
@@ -12,7 +12,7 @@ #include "base/command_line.h" #include "base/logging.h" #include "base/synchronization/waitable_event.h" -#include "base/test/test_timeouts.h" +#include "base/time/time.h" #include "mojo/edk/embedder/master_process_delegate.h" #include "mojo/edk/embedder/platform_channel_pair.h" #include "mojo/edk/embedder/simple_platform_support.h" @@ -125,7 +125,9 @@ // Warning: There's only one slave disconnect event (which resets // automatically). bool TryWaitForOnSlaveDisconnect() { - return on_slave_disconnect_event_.TimedWait(TestTimeouts::action_timeout()); + return on_slave_disconnect_event_.TimedWait( + base::TimeDelta::FromMicroseconds( + static_cast<int64_t>(test::ActionTimeout()))); } private: @@ -184,7 +186,8 @@ } void WaitForChannelToSlave() { - EXPECT_TRUE(event_.TimedWait(TestTimeouts::action_timeout())); + EXPECT_TRUE(event_.TimedWait(base::TimeDelta::FromMicroseconds( + static_cast<int64_t>(test::ActionTimeout())))); } void ShutdownChannelToSlave() { @@ -249,7 +252,8 @@ } void WaitForChannelToMaster() { - EXPECT_TRUE(event_.TimedWait(TestTimeouts::action_timeout())); + EXPECT_TRUE(event_.TimedWait(base::TimeDelta::FromMicroseconds( + static_cast<int64_t>(test::ActionTimeout())))); } void ShutdownChannelToMaster() {
diff --git a/mojo/edk/system/message_pipe_perftest.cc b/mojo/edk/system/message_pipe_perftest.cc index ffa7981..ad892dd 100644 --- a/mojo/edk/system/message_pipe_perftest.cc +++ b/mojo/edk/system/message_pipe_perftest.cc
@@ -10,13 +10,14 @@ #include "base/bind.h" #include "base/logging.h" #include "base/strings/stringprintf.h" -#include "base/test/perf_time_logger.h" #include "mojo/edk/embedder/scoped_platform_handle.h" #include "mojo/edk/system/local_message_pipe_endpoint.h" #include "mojo/edk/system/message_pipe.h" #include "mojo/edk/system/message_pipe_test_utils.h" #include "mojo/edk/system/proxy_message_pipe_endpoint.h" #include "mojo/edk/system/ref_ptr.h" +#include "mojo/edk/system/test/perf_log.h" +#include "mojo/edk/system/test/stopwatch.h" #include "mojo/edk/test/test_utils.h" #include "mojo/public/cpp/system/macros.h" #include "testing/gtest/include/gtest/gtest.h" @@ -67,12 +68,12 @@ std::string test_name = base::StringPrintf("IPC_Perf_%dx_%u", message_count_, static_cast<unsigned>(message_size_)); - base::PerfTimeLogger logger(test_name.c_str()); + test::Stopwatch stopwatch; + stopwatch.Start(); for (int i = 0; i < message_count_; ++i) WriteWaitThenRead(mp); - - logger.Done(); + test::LogPerfResult(test_name.c_str(), stopwatch.Elapsed() / 1000.0, "ms"); } private:
diff --git a/mojo/edk/system/ref_counted_perftest.cc b/mojo/edk/system/ref_counted_perftest.cc index b88e5cd..c7100fe 100644 --- a/mojo/edk/system/ref_counted_perftest.cc +++ b/mojo/edk/system/ref_counted_perftest.cc
@@ -4,8 +4,8 @@ #include <stdint.h> -#include "base/test/perf_log.h" #include "mojo/edk/system/ref_counted.h" +#include "mojo/edk/system/test/perf_log.h" #include "mojo/edk/system/test/stopwatch.h" #include "mojo/edk/system/test/timeouts.h" #include "testing/gtest/include/gtest/gtest.h" @@ -40,7 +40,7 @@ } while (stopwatch.Elapsed() < test::DeadlineFromMilliseconds(1000)); double elapsed = stopwatch.Elapsed() / 1000000.0; - base::LogPerfResult("OneThreadCreateAdoptDestroy", iterations / elapsed, + test::LogPerfResult("OneThreadCreateAdoptDestroy", iterations / elapsed, "iterations/s"); } @@ -57,7 +57,7 @@ } while (stopwatch.Elapsed() < test::DeadlineFromMilliseconds(1000)); double elapsed = stopwatch.Elapsed() / 1000000.0; - base::LogPerfResult("OneThreadAssignRefPtr", iterations / elapsed, + test::LogPerfResult("OneThreadAssignRefPtr", iterations / elapsed, "iterations/s"); }
diff --git a/mojo/edk/system/test/BUILD.gn b/mojo/edk/system/test/BUILD.gn index e91db65..d1d5f1a 100644 --- a/mojo/edk/system/test/BUILD.gn +++ b/mojo/edk/system/test/BUILD.gn
@@ -4,8 +4,10 @@ import("../../mojo_edk.gni") +# Utilties for use by EDK internal (unit and perf) tests. mojo_edk_source_set("test") { testonly = true + mojo_edk_visibility = [ "mojo/edk/*" ] sources = [ "random.cc", @@ -32,6 +34,7 @@ deps = [ "//base", "//base/test:test_support", + "//testing/gtest", ] mojo_edk_deps = [ @@ -40,6 +43,50 @@ ] } +# Utilities for use by EDK internal perf tests (for use with +# :run_all_perftests). +mojo_edk_source_set("perf") { + testonly = true + mojo_edk_visibility = [ "mojo/edk/*" ] + + sources = [ + "perf_log.cc", + "perf_log.h", + ] + + deps = [ + "//base/test:test_support", + ] +} + +mojo_edk_source_set("run_all_unittests") { + testonly = true + mojo_edk_visibility = [ "mojo/edk/*" ] + + sources = [ + "run_all_unittests.cc", + ] + + deps = [ + "//base", + "//base/test:test_support", + "//testing/gtest", + ] +} + +mojo_edk_source_set("run_all_perftests") { + testonly = true + mojo_edk_visibility = [ "mojo/edk/*" ] + + sources = [ + "run_all_perftests.cc", + ] + + deps = [ + "//base/test:test_support", + ] +} + mojo_edk_source_set("unittests") { testonly = true mojo_edk_visibility = [ "mojo/edk/system:mojo_system_unittests" ]
diff --git a/mojo/edk/system/test/perf_log.cc b/mojo/edk/system/test/perf_log.cc new file mode 100644 index 0000000..5b9d738 --- /dev/null +++ b/mojo/edk/system/test/perf_log.cc
@@ -0,0 +1,19 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "mojo/edk/system/test/perf_log.h" + +#include "base/test/perf_log.h" + +namespace mojo { +namespace system { +namespace test { + +void LogPerfResult(const char* test_name, double value, const char* units) { + base::LogPerfResult(test_name, value, units); +} + +} // namespace test +} // namespace system +} // namespace mojo
diff --git a/mojo/edk/system/test/perf_log.h b/mojo/edk/system/test/perf_log.h new file mode 100644 index 0000000..93affff --- /dev/null +++ b/mojo/edk/system/test/perf_log.h
@@ -0,0 +1,29 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Functions for logging perf test results. + +#ifndef MOJO_EDK_SYSTEM_TEST_PERF_LOG_H_ +#define MOJO_EDK_SYSTEM_TEST_PERF_LOG_H_ + +//#include "mojo/public/c/system/types.h" +//#include "mojo/public/cpp/system/macros.h" + +namespace mojo { +namespace system { +namespace test { + +// TODO(vtl): Possibly should have our own "InitPerfLog()" and +// "FinalizePerfLog()" functions, but we can't do that until we stop using +// |base::PerfTestSuite()|. Currently, + +// Logs the result of a perf test. You may only call this while running inside a +// perf test suite (using the :run_all_perftests from this directory). +void LogPerfResult(const char* test_name, double value, const char* units); + +} // namespace test +} // namespace system +} // namespace mojo + +#endif // MOJO_EDK_SYSTEM_TEST_PERF_LOG_H_
diff --git a/mojo/edk/system/test/run_all_perftests.cc b/mojo/edk/system/test/run_all_perftests.cc new file mode 100644 index 0000000..6e38109 --- /dev/null +++ b/mojo/edk/system/test/run_all_perftests.cc
@@ -0,0 +1,9 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/test/perf_test_suite.h" + +int main(int argc, char** argv) { + return base::PerfTestSuite(argc, argv).Run(); +}
diff --git a/mojo/edk/system/run_all_unittests.cc b/mojo/edk/system/test/run_all_unittests.cc similarity index 91% rename from mojo/edk/system/run_all_unittests.cc rename to mojo/edk/system/test/run_all_unittests.cc index cd61337..8dbf13d 100644 --- a/mojo/edk/system/run_all_unittests.cc +++ b/mojo/edk/system/test/run_all_unittests.cc
@@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// This defines the main() for EDK internal implementation unit test binaries. + #include "base/bind.h" #include "base/test/launcher/unit_test_launcher.h" #include "base/test/test_suite.h"