Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Side by Side Diff: ipc/ipc_perftest_support.cc

Issue 2473993003: Delete IPC::ChannelPosix, IPC::ChannelWin and IPC::AttachmentBroker. (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ipc/ipc_perftest_support.h ('k') | ipc/ipc_perftests.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ipc/ipc_perftest_support.h" 5 #include "ipc/ipc_perftest_support.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 10 matching lines...) Expand all
21 #include "base/test/test_io_thread.h" 21 #include "base/test/test_io_thread.h"
22 #include "base/threading/thread.h" 22 #include "base/threading/thread.h"
23 #include "base/threading/thread_task_runner_handle.h" 23 #include "base/threading/thread_task_runner_handle.h"
24 #include "base/time/time.h" 24 #include "base/time/time.h"
25 #include "build/build_config.h" 25 #include "build/build_config.h"
26 #include "ipc/ipc_channel.h" 26 #include "ipc/ipc_channel.h"
27 #include "ipc/ipc_channel_proxy.h" 27 #include "ipc/ipc_channel_proxy.h"
28 #include "ipc/ipc_descriptors.h" 28 #include "ipc/ipc_descriptors.h"
29 #include "ipc/ipc_message_utils.h" 29 #include "ipc/ipc_message_utils.h"
30 #include "ipc/ipc_sender.h" 30 #include "ipc/ipc_sender.h"
31 #include "mojo/edk/test/scoped_ipc_support.h"
31 32
32 namespace IPC { 33 namespace IPC {
33 namespace test { 34 namespace test {
34 35
35 // Avoid core 0 due to conflicts with Intel's Power Gadget. 36 // Avoid core 0 due to conflicts with Intel's Power Gadget.
36 // Setting thread affinity will fail harmlessly on single/dual core machines. 37 // Setting thread affinity will fail harmlessly on single/dual core machines.
37 const int kSharedCore = 2; 38 const int kSharedCore = 2;
38 39
39 // This class simply collects stats about abstract "events" (each of which has a 40 // This class simply collects stats about abstract "events" (each of which has a
40 // start time and an end time). 41 // start time and an end time).
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 list.push_back(PingPongTestParams(12, 50000)); 242 list.push_back(PingPongTestParams(12, 50000));
242 list.push_back(PingPongTestParams(144, 50000)); 243 list.push_back(PingPongTestParams(144, 50000));
243 list.push_back(PingPongTestParams(1728, 50000)); 244 list.push_back(PingPongTestParams(1728, 50000));
244 list.push_back(PingPongTestParams(20736, 12000)); 245 list.push_back(PingPongTestParams(20736, 12000));
245 list.push_back(PingPongTestParams(248832, 1000)); 246 list.push_back(PingPongTestParams(248832, 1000));
246 return list; 247 return list;
247 } 248 }
248 249
249 void IPCChannelPerfTestBase::RunTestChannelPingPong( 250 void IPCChannelPerfTestBase::RunTestChannelPingPong(
250 const std::vector<PingPongTestParams>& params) { 251 const std::vector<PingPongTestParams>& params) {
251 Init("PerformanceClient"); 252 auto message_loop = base::MakeUnique<base::MessageLoopForIO>();
253 mojo::edk::test::ScopedIPCSupport ipc_support(message_loop->task_runner());
254 InitWithCustomMessageLoop("MojoPerfTestClient", std::move(message_loop));
252 255
253 // Set up IPC channel and start client. 256 // Set up IPC channel and start client.
254 PerformanceChannelListener listener("Channel"); 257 PerformanceChannelListener listener("Channel");
255 CreateChannel(&listener); 258 CreateChannel(&listener);
256 listener.Init(channel()); 259 listener.Init(channel());
257 ASSERT_TRUE(ConnectChannel()); 260 ASSERT_TRUE(ConnectChannel());
258 ASSERT_TRUE(StartClient());
259 261
260 LockThreadAffinity thread_locker(kSharedCore); 262 LockThreadAffinity thread_locker(kSharedCore);
261 for (size_t i = 0; i < params.size(); i++) { 263 for (size_t i = 0; i < params.size(); i++) {
262 listener.SetTestParams(params[i].message_count(), 264 listener.SetTestParams(params[i].message_count(),
263 params[i].message_size()); 265 params[i].message_size());
264 266
265 // This initial message will kick-start the ping-pong of messages. 267 // This initial message will kick-start the ping-pong of messages.
266 Message* message = 268 Message* message =
267 new Message(0, 2, Message::PRIORITY_NORMAL); 269 new Message(0, 2, Message::PRIORITY_NORMAL);
268 message->WriteInt64(base::TimeTicks::Now().ToInternalValue()); 270 message->WriteInt64(base::TimeTicks::Now().ToInternalValue());
(...skipping 12 matching lines...) Expand all
281 message->WriteString("quit"); 283 message->WriteString("quit");
282 sender()->Send(message); 284 sender()->Send(message);
283 285
284 EXPECT_TRUE(WaitForClientShutdown()); 286 EXPECT_TRUE(WaitForClientShutdown());
285 DestroyChannel(); 287 DestroyChannel();
286 } 288 }
287 289
288 void IPCChannelPerfTestBase::RunTestChannelProxyPingPong( 290 void IPCChannelPerfTestBase::RunTestChannelProxyPingPong(
289 const std::vector<PingPongTestParams>& params) { 291 const std::vector<PingPongTestParams>& params) {
290 io_thread_.reset(new base::TestIOThread(base::TestIOThread::kAutoStart)); 292 io_thread_.reset(new base::TestIOThread(base::TestIOThread::kAutoStart));
291 InitWithCustomMessageLoop("PerformanceClient", 293 {
292 base::MakeUnique<base::MessageLoop>()); 294 auto message_loop = base::MakeUnique<base::MessageLoopForIO>();
295 mojo::edk::test::ScopedIPCSupport ipc_support(io_thread_->task_runner());
296 InitWithCustomMessageLoop("MojoPerfTestClient", std::move(message_loop));
293 297
294 // Set up IPC channel and start client. 298 // Set up IPC channel and start client.
295 PerformanceChannelListener listener("ChannelProxy"); 299 PerformanceChannelListener listener("ChannelProxy");
296 CreateChannelProxy(&listener, io_thread_->task_runner()); 300 auto channel_proxy = IPC::ChannelProxy::Create(
297 listener.Init(channel_proxy()); 301 TakeHandle().release(), IPC::Channel::MODE_SERVER, &listener,
298 ASSERT_TRUE(StartClient()); 302 io_thread_->task_runner());
303 listener.Init(channel_proxy.get());
299 304
300 LockThreadAffinity thread_locker(kSharedCore); 305 LockThreadAffinity thread_locker(kSharedCore);
301 for (size_t i = 0; i < params.size(); i++) { 306 for (size_t i = 0; i < params.size(); i++) {
302 listener.SetTestParams(params[i].message_count(), 307 listener.SetTestParams(params[i].message_count(),
303 params[i].message_size()); 308 params[i].message_size());
304 309
305 // This initial message will kick-start the ping-pong of messages. 310 // This initial message will kick-start the ping-pong of messages.
306 Message* message = 311 Message* message = new Message(0, 2, Message::PRIORITY_NORMAL);
307 new Message(0, 2, Message::PRIORITY_NORMAL); 312 message->WriteInt64(base::TimeTicks::Now().ToInternalValue());
313 message->WriteInt(-1);
314 message->WriteString("hello");
315 channel_proxy->Send(message);
316
317 // Run message loop.
318 base::RunLoop().Run();
319 }
320
321 // Send quit message.
322 Message* message = new Message(0, 2, Message::PRIORITY_NORMAL);
308 message->WriteInt64(base::TimeTicks::Now().ToInternalValue()); 323 message->WriteInt64(base::TimeTicks::Now().ToInternalValue());
309 message->WriteInt(-1); 324 message->WriteInt(-1);
310 message->WriteString("hello"); 325 message->WriteString("quit");
311 sender()->Send(message); 326 channel_proxy->Send(message);
312 327
313 // Run message loop. 328 EXPECT_TRUE(WaitForClientShutdown());
314 base::RunLoop().Run(); 329 channel_proxy.reset();
315 } 330 }
316 331
317 // Send quit message.
318 Message* message = new Message(0, 2, Message::PRIORITY_NORMAL);
319 message->WriteInt64(base::TimeTicks::Now().ToInternalValue());
320 message->WriteInt(-1);
321 message->WriteString("quit");
322 sender()->Send(message);
323
324 EXPECT_TRUE(WaitForClientShutdown());
325 DestroyChannelProxy();
326
327 io_thread_.reset(); 332 io_thread_.reset();
328 } 333 }
329 334
330 335
331 PingPongTestClient::PingPongTestClient() 336 PingPongTestClient::PingPongTestClient()
332 : listener_(new ChannelReflectorListener()) { 337 : listener_(new ChannelReflectorListener()) {
333 } 338 }
334 339
335 PingPongTestClient::~PingPongTestClient() { 340 PingPongTestClient::~PingPongTestClient() {
336 } 341 }
337 342
338 std::unique_ptr<Channel> PingPongTestClient::CreateChannel(Listener* listener) {
339 return Channel::CreateClient(
340 IPCTestBase::GetChannelName("PerformanceClient"), listener,
341 base::ThreadTaskRunnerHandle::Get());
342 }
343
344 int PingPongTestClient::RunMain() { 343 int PingPongTestClient::RunMain() {
345 LockThreadAffinity thread_locker(kSharedCore); 344 LockThreadAffinity thread_locker(kSharedCore);
346 std::unique_ptr<Channel> channel = CreateChannel(listener_.get()); 345 std::unique_ptr<Channel> channel = CreateChannel(listener_.get());
347 listener_->Init(channel.get()); 346 listener_->Init(channel.get());
348 CHECK(channel->Connect()); 347 CHECK(channel->Connect());
349 348
350 base::RunLoop().Run(); 349 base::RunLoop().Run();
351 return 0; 350 return 0;
352 } 351 }
353 352
(...skipping 28 matching lines...) Expand all
382 auto set_result = SetThreadAffinityMask(GetCurrentThread(), old_affinity_); 381 auto set_result = SetThreadAffinityMask(GetCurrentThread(), old_affinity_);
383 DCHECK_NE(0u, set_result); 382 DCHECK_NE(0u, set_result);
384 #elif defined(OS_LINUX) 383 #elif defined(OS_LINUX)
385 auto set_result = sched_setaffinity(0, sizeof(old_cpuset_), &old_cpuset_); 384 auto set_result = sched_setaffinity(0, sizeof(old_cpuset_), &old_cpuset_);
386 DCHECK_EQ(0, set_result); 385 DCHECK_EQ(0, set_result);
387 #endif 386 #endif
388 } 387 }
389 388
390 } // namespace test 389 } // namespace test
391 } // namespace IPC 390 } // namespace IPC
OLDNEW
« no previous file with comments | « ipc/ipc_perftest_support.h ('k') | ipc/ipc_perftests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698