| Index: ipc/mojo/ipc_mojo_perftest.cc
|
| diff --git a/ipc/mojo/ipc_mojo_perftest.cc b/ipc/mojo/ipc_mojo_perftest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d4337037a9dcacda733d77637d7141275cfb0f07
|
| --- /dev/null
|
| +++ b/ipc/mojo/ipc_mojo_perftest.cc
|
| @@ -0,0 +1,87 @@
|
| +// Copyright 2014 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/lazy_instance.h"
|
| +#include "ipc/ipc_perftest_support.h"
|
| +#include "ipc/mojo/ipc_channel_mojo.h"
|
| +#include "mojo/embedder/test_embedder.h"
|
| +
|
| +namespace {
|
| +
|
| +// This is needed because we rely on //base/test:test_support_perf and
|
| +// it provides main() which doesn't have Mojo initialization. We need
|
| +// some way to call InitWithSimplePlatformSupport() only once before
|
| +// using Mojo.
|
| +struct MojoInitialier {
|
| + MojoInitialier() {
|
| + mojo::embedder::test::InitWithSimplePlatformSupport();
|
| + }
|
| +};
|
| +
|
| +base::LazyInstance<MojoInitialier> g_mojo_initializer
|
| + = LAZY_INSTANCE_INITIALIZER;
|
| +
|
| +class MojoChannelPerfTest : public IPC::test::IPCChannelPerfTestBase {
|
| +public:
|
| + typedef IPC::test::IPCChannelPerfTestBase Super;
|
| +
|
| + MojoChannelPerfTest();
|
| +
|
| + virtual scoped_ptr<IPC::ChannelFactory> CreateChannelFactory(
|
| + const IPC::ChannelHandle& handle,
|
| + base::TaskRunner* runner) OVERRIDE {
|
| + return IPC::ChannelMojo::CreateFactory(
|
| + handle, IPC::Channel::MODE_SERVER, runner);
|
| + }
|
| +
|
| + void set_io_thread_task_runner(base::TaskRunner* runner) {
|
| + io_thread_task_runner_ = runner;
|
| + }
|
| +
|
| + private:
|
| + base::TaskRunner* io_thread_task_runner_;
|
| +};
|
| +
|
| +MojoChannelPerfTest::MojoChannelPerfTest()
|
| + : io_thread_task_runner_() {
|
| + g_mojo_initializer.Get();
|
| +}
|
| +
|
| +
|
| +TEST_F(MojoChannelPerfTest, ChannelPingPong) {
|
| + RunTestChannelPingPong(GetDefaultTestParams());
|
| +}
|
| +
|
| +TEST_F(MojoChannelPerfTest, ChannelProxyPingPong) {
|
| + RunTestChannelProxyPingPong(GetDefaultTestParams());
|
| +}
|
| +
|
| +class MojoTestClient : public IPC::test::PingPongTestClient {
|
| + public:
|
| + typedef IPC::test::PingPongTestClient SuperType;
|
| +
|
| + MojoTestClient();
|
| +
|
| + virtual scoped_ptr<IPC::Channel> CreateChannel(
|
| + IPC::Listener* listener) OVERRIDE;
|
| +};
|
| +
|
| +MojoTestClient::MojoTestClient() {
|
| + g_mojo_initializer.Get();
|
| +}
|
| +
|
| +scoped_ptr<IPC::Channel> MojoTestClient::CreateChannel(
|
| + IPC::Listener* listener) {
|
| + return scoped_ptr<IPC::Channel>(IPC::ChannelMojo::Create(
|
| + IPCTestBase::GetChannelName("PerformanceClient"),
|
| + IPC::Channel::MODE_CLIENT, listener,
|
| + task_runner()));
|
| +}
|
| +
|
| +MULTIPROCESS_IPC_TEST_CLIENT_MAIN(PerformanceClient) {
|
| + MojoTestClient client;
|
| + return client.RunMain();
|
| +}
|
| +
|
| +} // namespace
|
|
|