OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "build/build_config.h" | 5 #include "build/build_config.h" |
6 | 6 |
7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
8 #include <windows.h> | 8 #include <windows.h> |
9 #elif defined(OS_POSIX) | 9 #elif defined(OS_POSIX) |
10 #include <sys/types.h> | 10 #include <sys/types.h> |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 private: | 212 private: |
213 IPC::Message::Sender* sender_; | 213 IPC::Message::Sender* sender_; |
214 int messages_left_; | 214 int messages_left_; |
215 }; | 215 }; |
216 | 216 |
217 TEST_F(IPCChannelTest, ChannelTest) { | 217 TEST_F(IPCChannelTest, ChannelTest) { |
218 MyChannelListener channel_listener; | 218 MyChannelListener channel_listener; |
219 // Setup IPC channel. | 219 // Setup IPC channel. |
220 IPC::Channel chan(kTestClientChannel, IPC::Channel::MODE_SERVER, | 220 IPC::Channel chan(kTestClientChannel, IPC::Channel::MODE_SERVER, |
221 &channel_listener); | 221 &channel_listener); |
222 chan.Connect(); | 222 ASSERT_TRUE(chan.Connect()); |
223 | 223 |
224 channel_listener.Init(&chan); | 224 channel_listener.Init(&chan); |
225 | 225 |
226 base::ProcessHandle process_handle = SpawnChild(TEST_CLIENT, &chan); | 226 base::ProcessHandle process_handle = SpawnChild(TEST_CLIENT, &chan); |
227 ASSERT_TRUE(process_handle); | 227 ASSERT_TRUE(process_handle); |
228 | 228 |
229 Send(&chan, "hello from parent"); | 229 Send(&chan, "hello from parent"); |
230 | 230 |
231 // Run message loop. | 231 // Run message loop. |
232 MessageLoop::current()->Run(); | 232 MessageLoop::current()->Run(); |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
327 | 327 |
328 TEST_F(IPCChannelTest, SendMessageInChannelConnected) { | 328 TEST_F(IPCChannelTest, SendMessageInChannelConnected) { |
329 // This tests the case of a listener sending back an event in it's | 329 // This tests the case of a listener sending back an event in it's |
330 // OnChannelConnected handler. | 330 // OnChannelConnected handler. |
331 | 331 |
332 ChannelListenerWithOnConnectedSend channel_listener; | 332 ChannelListenerWithOnConnectedSend channel_listener; |
333 // Setup IPC channel. | 333 // Setup IPC channel. |
334 IPC::Channel channel(kTestClientChannel, IPC::Channel::MODE_SERVER, | 334 IPC::Channel channel(kTestClientChannel, IPC::Channel::MODE_SERVER, |
335 &channel_listener); | 335 &channel_listener); |
336 channel_listener.Init(&channel); | 336 channel_listener.Init(&channel); |
337 channel.Connect(); | 337 ASSERT_TRUE(channel.Connect()); |
338 | 338 |
339 base::ProcessHandle process_handle = SpawnChild(TEST_CLIENT, &channel); | 339 base::ProcessHandle process_handle = SpawnChild(TEST_CLIENT, &channel); |
340 ASSERT_TRUE(process_handle); | 340 ASSERT_TRUE(process_handle); |
341 | 341 |
342 Send(&channel, "hello from parent"); | 342 Send(&channel, "hello from parent"); |
343 | 343 |
344 // Run message loop. | 344 // Run message loop. |
345 MessageLoop::current()->Run(); | 345 MessageLoop::current()->Run(); |
346 | 346 |
347 // Close Channel so client gets its OnChannelError() callback fired. | 347 // Close Channel so client gets its OnChannelError() callback fired. |
348 channel.Close(); | 348 channel.Close(); |
349 | 349 |
350 // Cleanup child process. | 350 // Cleanup child process. |
351 EXPECT_TRUE(base::WaitForSingleProcess(process_handle, 5000)); | 351 EXPECT_TRUE(base::WaitForSingleProcess(process_handle, 5000)); |
352 base::CloseProcessHandle(process_handle); | 352 base::CloseProcessHandle(process_handle); |
353 } | 353 } |
354 | 354 |
355 MULTIPROCESS_TEST_MAIN(RunTestClient) { | 355 MULTIPROCESS_TEST_MAIN(RunTestClient) { |
356 MessageLoopForIO main_message_loop; | 356 MessageLoopForIO main_message_loop; |
357 MyChannelListener channel_listener; | 357 MyChannelListener channel_listener; |
358 | 358 |
359 // setup IPC channel | 359 // setup IPC channel |
360 IPC::Channel chan(kTestClientChannel, IPC::Channel::MODE_CLIENT, | 360 IPC::Channel chan(kTestClientChannel, IPC::Channel::MODE_CLIENT, |
361 &channel_listener); | 361 &channel_listener); |
362 chan.Connect(); | 362 ASSERT_TRUE(chan.Connect()); |
363 channel_listener.Init(&chan); | 363 channel_listener.Init(&chan); |
364 Send(&chan, "hello from child"); | 364 Send(&chan, "hello from child"); |
365 // run message loop | 365 // run message loop |
366 MessageLoop::current()->Run(); | 366 MessageLoop::current()->Run(); |
367 // return true; | 367 // return true; |
368 return NULL; | 368 return NULL; |
369 } | 369 } |
370 | 370 |
371 #endif // !PERFORMANCE_TEST | 371 #endif // !PERFORMANCE_TEST |
372 | 372 |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
485 IPC::Channel *channel_; | 485 IPC::Channel *channel_; |
486 int count_messages_; | 486 int count_messages_; |
487 int latency_messages_; | 487 int latency_messages_; |
488 }; | 488 }; |
489 | 489 |
490 TEST_F(IPCChannelTest, Performance) { | 490 TEST_F(IPCChannelTest, Performance) { |
491 // setup IPC channel | 491 // setup IPC channel |
492 IPC::Channel chan(kReflectorChannel, IPC::Channel::MODE_SERVER, NULL); | 492 IPC::Channel chan(kReflectorChannel, IPC::Channel::MODE_SERVER, NULL); |
493 ChannelPerfListener perf_listener(&chan, 10000, 100000); | 493 ChannelPerfListener perf_listener(&chan, 10000, 100000); |
494 chan.set_listener(&perf_listener); | 494 chan.set_listener(&perf_listener); |
495 chan.Connect(); | 495 ASSERT_TRUE(chan.Connect()); |
496 | 496 |
497 HANDLE process = SpawnChild(TEST_REFLECTOR, &chan); | 497 HANDLE process = SpawnChild(TEST_REFLECTOR, &chan); |
498 ASSERT_TRUE(process); | 498 ASSERT_TRUE(process); |
499 | 499 |
500 PlatformThread::Sleep(1000); | 500 PlatformThread::Sleep(1000); |
501 | 501 |
502 PerfTimeLogger logger("IPC_Perf"); | 502 PerfTimeLogger logger("IPC_Perf"); |
503 | 503 |
504 // this initial message will kick-start the ping-pong of messages | 504 // this initial message will kick-start the ping-pong of messages |
505 IPC::Message* message = new IPC::Message(0, | 505 IPC::Message* message = new IPC::Message(0, |
(...skipping 11 matching lines...) Expand all Loading... |
517 WaitForSingleObject(process, 5000); | 517 WaitForSingleObject(process, 5000); |
518 CloseHandle(process); | 518 CloseHandle(process); |
519 } | 519 } |
520 | 520 |
521 // This message loop bounces all messages back to the sender | 521 // This message loop bounces all messages back to the sender |
522 MULTIPROCESS_TEST_MAIN(RunReflector) { | 522 MULTIPROCESS_TEST_MAIN(RunReflector) { |
523 MessageLoopForIO main_message_loop; | 523 MessageLoopForIO main_message_loop; |
524 IPC::Channel chan(kReflectorChannel, IPC::Channel::MODE_CLIENT, NULL); | 524 IPC::Channel chan(kReflectorChannel, IPC::Channel::MODE_CLIENT, NULL); |
525 ChannelReflectorListener channel_reflector_listener(&chan); | 525 ChannelReflectorListener channel_reflector_listener(&chan); |
526 chan.set_listener(&channel_reflector_listener); | 526 chan.set_listener(&channel_reflector_listener); |
527 chan.Connect(); | 527 ASSERT_TRUE(chan.Connect()); |
528 | 528 |
529 MessageLoop::current()->Run(); | 529 MessageLoop::current()->Run(); |
530 return true; | 530 return true; |
531 } | 531 } |
532 | 532 |
533 #endif // PERFORMANCE_TEST | 533 #endif // PERFORMANCE_TEST |
534 | 534 |
535 int main(int argc, char** argv) { | 535 int main(int argc, char** argv) { |
536 #ifdef PERFORMANCE_TEST | 536 #ifdef PERFORMANCE_TEST |
537 int retval = base::PerfTestSuite(argc, argv).Run(); | 537 int retval = base::PerfTestSuite(argc, argv).Run(); |
538 #else | 538 #else |
539 int retval = base::TestSuite(argc, argv).Run(); | 539 int retval = base::TestSuite(argc, argv).Run(); |
540 #endif | 540 #endif |
541 return retval; | 541 return retval; |
542 } | 542 } |
OLD | NEW |