| 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 |