| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <stddef.h> | 5 #include <stddef.h> |
| 6 #include <stdint.h> | 6 #include <stdint.h> |
| 7 #include <stdio.h> | 7 #include <stdio.h> |
| 8 #include <string.h> | 8 #include <string.h> |
| 9 | 9 |
| 10 #include <string> | 10 #include <string> |
| (...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 436 MojoHandle handle; | 436 MojoHandle handle; |
| 437 ASSERT_EQ( | 437 ASSERT_EQ( |
| 438 CreatePlatformHandleWrapper( | 438 CreatePlatformHandleWrapper( |
| 439 ScopedPlatformHandle(test::PlatformHandleFromFILE(std::move(fp))), | 439 ScopedPlatformHandle(test::PlatformHandleFromFILE(std::move(fp))), |
| 440 &handle), | 440 &handle), |
| 441 MOJO_RESULT_OK); | 441 MOJO_RESULT_OK); |
| 442 handles.push_back(handle); | 442 handles.push_back(handle); |
| 443 } | 443 } |
| 444 | 444 |
| 445 char message[128]; | 445 char message[128]; |
| 446 sprintf(message, "hello %d", static_cast<int>(pipe_count)); | 446 snprintf(message, sizeof(message), "hello %d", |
| 447 static_cast<int>(pipe_count)); |
| 447 ASSERT_EQ(MOJO_RESULT_OK, | 448 ASSERT_EQ(MOJO_RESULT_OK, |
| 448 MojoWriteMessage(h, message, | 449 MojoWriteMessage(h, message, |
| 449 static_cast<uint32_t>(strlen(message)), | 450 static_cast<uint32_t>(strlen(message)), |
| 450 &handles[0], | 451 &handles[0], |
| 451 static_cast<uint32_t>(handles.size()), | 452 static_cast<uint32_t>(handles.size()), |
| 452 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 453 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 453 | 454 |
| 454 // Wait for it to become readable, which should fail. | 455 // Wait for it to become readable, which should fail. |
| 455 HandleSignalsState hss; | 456 HandleSignalsState hss; |
| 456 ASSERT_EQ(MOJO_RESULT_FAILED_PRECONDITION, | 457 ASSERT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
| 457 MojoWait(h, MOJO_HANDLE_SIGNAL_READABLE, | 458 MojoWait(h, MOJO_HANDLE_SIGNAL_READABLE, |
| 458 MOJO_DEADLINE_INDEFINITE, &hss)); | 459 MOJO_DEADLINE_INDEFINITE, &hss)); |
| 459 ASSERT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfied_signals); | 460 ASSERT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfied_signals); |
| 460 ASSERT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfiable_signals); | 461 ASSERT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfiable_signals); |
| 461 END_CHILD() | 462 END_CHILD() |
| 462 } | 463 } |
| 463 | 464 |
| 464 // Android multi-process tests are not executing the new process. This is flaky. | 465 // Android multi-process tests are not executing the new process. This is flaky. |
| 465 #if !defined(OS_ANDROID) | 466 #if !defined(OS_ANDROID) |
| 466 INSTANTIATE_TEST_CASE_P(PipeCount, | 467 INSTANTIATE_TEST_CASE_P(PipeCount, |
| 467 MultiprocessMessagePipeTestWithPipeCount, | 468 MultiprocessMessagePipeTestWithPipeCount, |
| 468 // TODO: Re-enable the 140-pipe case when ChannelPosix | 469 // TODO(rockot): Re-enable the 140-pipe case when |
| 469 // has support for sending lots of handles. | 470 // ChannelPosix has support for sending lots of handles. |
| 470 testing::Values(1u, 128u/*, 140u*/)); | 471 testing::Values(1u, 128u /*, 140u*/)); |
| 471 #endif | 472 #endif |
| 472 | 473 |
| 473 DEFINE_TEST_CLIENT_WITH_PIPE(CheckMessagePipe, MultiprocessMessagePipeTest, h) { | 474 DEFINE_TEST_CLIENT_WITH_PIPE(CheckMessagePipe, MultiprocessMessagePipeTest, h) { |
| 474 // Wait for the first message from our parent. | 475 // Wait for the first message from our parent. |
| 475 HandleSignalsState hss; | 476 HandleSignalsState hss; |
| 476 CHECK_EQ(MojoWait(h, MOJO_HANDLE_SIGNAL_READABLE, | 477 CHECK_EQ(MojoWait(h, MOJO_HANDLE_SIGNAL_READABLE, |
| 477 MOJO_DEADLINE_INDEFINITE, &hss), | 478 MOJO_DEADLINE_INDEFINITE, &hss), |
| 478 MOJO_RESULT_OK); | 479 MOJO_RESULT_OK); |
| 479 // In this test, the parent definitely doesn't close its end of the message | 480 // In this test, the parent definitely doesn't close its end of the message |
| 480 // pipe before we do. | 481 // pipe before we do. |
| (...skipping 509 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 990 ReadMessageWithHandles(carrier, &p, 1); | 991 ReadMessageWithHandles(carrier, &p, 1); |
| 991 CHECK_NE(p, MOJO_HANDLE_INVALID); | 992 CHECK_NE(p, MOJO_HANDLE_INVALID); |
| 992 named_pipes[parts[1]] = p; | 993 named_pipes[parts[1]] = p; |
| 993 WriteMessage(h, "ok"); | 994 WriteMessage(h, "ok"); |
| 994 } else if (command == "exit") { | 995 } else if (command == "exit") { |
| 995 CHECK_EQ(parts.size(), 1u); | 996 CHECK_EQ(parts.size(), 1u); |
| 996 break; | 997 break; |
| 997 } | 998 } |
| 998 } | 999 } |
| 999 | 1000 |
| 1000 for (auto& pipe: named_pipes) | 1001 for (auto& pipe : named_pipes) |
| 1001 CloseHandle(pipe.second); | 1002 CloseHandle(pipe.second); |
| 1002 | 1003 |
| 1003 return 0; | 1004 return 0; |
| 1004 } | 1005 } |
| 1005 | 1006 |
| 1006 TEST_F(MultiprocessMessagePipeTest, ChildToChildPipes) { | 1007 TEST_F(MultiprocessMessagePipeTest, ChildToChildPipes) { |
| 1007 RUN_CHILD_ON_PIPE(CommandDrivenClient, h0) | 1008 RUN_CHILD_ON_PIPE(CommandDrivenClient, h0) |
| 1008 RUN_CHILD_ON_PIPE(CommandDrivenClient, h1) | 1009 RUN_CHILD_ON_PIPE(CommandDrivenClient, h1) |
| 1009 CommandDrivenClientController a(h0); | 1010 CommandDrivenClientController a(h0); |
| 1010 CommandDrivenClientController b(h1); | 1011 CommandDrivenClientController b(h1); |
| (...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1420 INSTANTIATE_TEST_CASE_P( | 1421 INSTANTIATE_TEST_CASE_P( |
| 1421 , | 1422 , |
| 1422 MultiprocessMessagePipeTestWithPeerSupport, | 1423 MultiprocessMessagePipeTestWithPeerSupport, |
| 1423 testing::Values(test::MojoTestBase::LaunchType::CHILD, | 1424 testing::Values(test::MojoTestBase::LaunchType::CHILD, |
| 1424 test::MojoTestBase::LaunchType::PEER, | 1425 test::MojoTestBase::LaunchType::PEER, |
| 1425 test::MojoTestBase::LaunchType::NAMED_CHILD, | 1426 test::MojoTestBase::LaunchType::NAMED_CHILD, |
| 1426 test::MojoTestBase::LaunchType::NAMED_PEER)); | 1427 test::MojoTestBase::LaunchType::NAMED_PEER)); |
| 1427 } // namespace | 1428 } // namespace |
| 1428 } // namespace edk | 1429 } // namespace edk |
| 1429 } // namespace mojo | 1430 } // namespace mojo |
| OLD | NEW |