| Index: mojo/edk/system/multiprocess_message_pipe_unittest.cc
|
| diff --git a/mojo/edk/system/multiprocess_message_pipe_unittest.cc b/mojo/edk/system/multiprocess_message_pipe_unittest.cc
|
| index 6e2c6f1866ff8fa26cc21f2711dd73dca5a5f40c..124daec9a8b0c6703bf712c037bd304d4a472f7d 100644
|
| --- a/mojo/edk/system/multiprocess_message_pipe_unittest.cc
|
| +++ b/mojo/edk/system/multiprocess_message_pipe_unittest.cc
|
| @@ -68,6 +68,16 @@ class MultiprocessMessagePipeTest : public test::MojoTestBase {
|
| };
|
| };
|
|
|
| +class MultiprocessMessagePipeTestWithPeerSupport
|
| + : public MultiprocessMessagePipeTest,
|
| + public testing::WithParamInterface<test::MojoTestBase::LaunchType> {
|
| + protected:
|
| + void SetUp() override {
|
| + test::MojoTestBase::SetUp();
|
| + set_launch_type(GetParam());
|
| + }
|
| +};
|
| +
|
| // For each message received, sends a reply message with the same contents
|
| // repeated twice, until the other end is closed or it receives "quitquitquit"
|
| // (which it doesn't reply to). It'll return the number of messages received,
|
| @@ -116,7 +126,7 @@ DEFINE_TEST_CLIENT_WITH_PIPE(EchoEcho, MultiprocessMessagePipeTest, h) {
|
| return rv;
|
| }
|
|
|
| -TEST_F(MultiprocessMessagePipeTest, Basic) {
|
| +TEST_P(MultiprocessMessagePipeTestWithPeerSupport, Basic) {
|
| RUN_CHILD_ON_PIPE(EchoEcho, h)
|
| std::string hello("hello");
|
| ASSERT_EQ(MOJO_RESULT_OK,
|
| @@ -152,7 +162,7 @@ TEST_F(MultiprocessMessagePipeTest, Basic) {
|
| END_CHILD_AND_EXPECT_EXIT_CODE(1 % 100);
|
| }
|
|
|
| -TEST_F(MultiprocessMessagePipeTest, QueueMessages) {
|
| +TEST_P(MultiprocessMessagePipeTestWithPeerSupport, QueueMessages) {
|
| static const size_t kNumMessages = 1001;
|
| RUN_CHILD_ON_PIPE(EchoEcho, h)
|
| for (size_t i = 0; i < kNumMessages; i++) {
|
| @@ -509,7 +519,7 @@ DEFINE_TEST_CLIENT_WITH_PIPE(CheckMessagePipe, MultiprocessMessagePipeTest, h) {
|
| return 0;
|
| }
|
|
|
| -TEST_F(MultiprocessMessagePipeTest, MessagePipePassing) {
|
| +TEST_P(MultiprocessMessagePipeTestWithPeerSupport, MessagePipePassing) {
|
| RUN_CHILD_ON_PIPE(CheckMessagePipe, h)
|
| MojoCreateSharedBufferOptions options;
|
| options.struct_size = sizeof(options);
|
| @@ -551,7 +561,7 @@ TEST_F(MultiprocessMessagePipeTest, MessagePipePassing) {
|
| END_CHILD()
|
| }
|
|
|
| -TEST_F(MultiprocessMessagePipeTest, MessagePipeTwoPassing) {
|
| +TEST_P(MultiprocessMessagePipeTestWithPeerSupport, MessagePipeTwoPassing) {
|
| RUN_CHILD_ON_PIPE(CheckMessagePipe, h)
|
| MojoHandle mp1, mp2;
|
| ASSERT_EQ(MOJO_RESULT_OK,
|
| @@ -681,7 +691,7 @@ TEST_F(MultiprocessMessagePipeTest, DataPipeConsumer) {
|
| END_CHILD();
|
| }
|
|
|
| -TEST_F(MultiprocessMessagePipeTest, CreateMessagePipe) {
|
| +TEST_P(MultiprocessMessagePipeTestWithPeerSupport, CreateMessagePipe) {
|
| MojoHandle p0, p1;
|
| CreateMessagePipe(&p0, &p1);
|
| VerifyTransmission(p0, p1, "hey man");
|
| @@ -693,7 +703,7 @@ TEST_F(MultiprocessMessagePipeTest, CreateMessagePipe) {
|
| CloseHandle(p1);
|
| }
|
|
|
| -TEST_F(MultiprocessMessagePipeTest, PassMessagePipeLocal) {
|
| +TEST_P(MultiprocessMessagePipeTestWithPeerSupport, PassMessagePipeLocal) {
|
| MojoHandle p0, p1;
|
| CreateMessagePipe(&p0, &p1);
|
| VerifyTransmission(p0, p1, "testing testing");
|
| @@ -733,7 +743,7 @@ DEFINE_TEST_CLIENT_WITH_PIPE(ChannelEchoClient, MultiprocessMessagePipeTest,
|
| return 0;
|
| }
|
|
|
| -TEST_F(MultiprocessMessagePipeTest, MultiprocessChannelPipe) {
|
| +TEST_P(MultiprocessMessagePipeTestWithPeerSupport, MultiprocessChannelPipe) {
|
| RUN_CHILD_ON_PIPE(ChannelEchoClient, h)
|
| VerifyEcho(h, "in an interstellar burst");
|
| VerifyEcho(h, "i am back to save the universe");
|
| @@ -758,7 +768,8 @@ DEFINE_TEST_CLIENT_WITH_PIPE(EchoServiceClient, MultiprocessMessagePipeTest,
|
| return 0;
|
| }
|
|
|
| -TEST_F(MultiprocessMessagePipeTest, PassMessagePipeCrossProcess) {
|
| +TEST_P(MultiprocessMessagePipeTestWithPeerSupport,
|
| + PassMessagePipeCrossProcess) {
|
| MojoHandle p0, p1;
|
| CreateMessagePipe(&p0, &p1);
|
| RUN_CHILD_ON_PIPE(EchoServiceClient, h)
|
| @@ -815,7 +826,8 @@ DEFINE_TEST_CLIENT_WITH_PIPE(EchoServiceFactoryClient,
|
| return 0;
|
| }
|
|
|
| -TEST_F(MultiprocessMessagePipeTest, PassMoarMessagePipesCrossProcess) {
|
| +TEST_P(MultiprocessMessagePipeTestWithPeerSupport,
|
| + PassMoarMessagePipesCrossProcess) {
|
| MojoHandle echo_factory_proxy, echo_factory_request;
|
| CreateMessagePipe(&echo_factory_proxy, &echo_factory_request);
|
|
|
| @@ -860,7 +872,8 @@ TEST_F(MultiprocessMessagePipeTest, PassMoarMessagePipesCrossProcess) {
|
| CloseHandle(echo_proxy_c);
|
| }
|
|
|
| -TEST_F(MultiprocessMessagePipeTest, ChannelPipesWithMultipleChildren) {
|
| +TEST_P(MultiprocessMessagePipeTestWithPeerSupport,
|
| + ChannelPipesWithMultipleChildren) {
|
| RUN_CHILD_ON_PIPE(ChannelEchoClient, a)
|
| RUN_CHILD_ON_PIPE(ChannelEchoClient, b)
|
| VerifyEcho(a, "hello child 0");
|
| @@ -890,7 +903,7 @@ DEFINE_TEST_CLIENT_TEST_WITH_PIPE(PingPongPipeClient,
|
| EXPECT_EQ("quit", ReadMessage(h));
|
| }
|
|
|
| -TEST_F(MultiprocessMessagePipeTest, PingPongPipe) {
|
| +TEST_P(MultiprocessMessagePipeTestWithPeerSupport, PingPongPipe) {
|
| MojoHandle p0, p1;
|
| CreateMessagePipe(&p0, &p1);
|
|
|
| @@ -1096,11 +1109,12 @@ DEFINE_TEST_CLIENT_TEST_WITH_PIPE(ReceivePipeWithClosedPeer,
|
| MojoHandle p;
|
| EXPECT_EQ("foo", ReadMessageWithHandles(h, &p, 1));
|
|
|
| - EXPECT_EQ(MOJO_RESULT_OK, MojoWait(p, MOJO_HANDLE_SIGNAL_PEER_CLOSED,
|
| - MOJO_DEADLINE_INDEFINITE, nullptr));
|
| + auto result = MojoWait(p, MOJO_HANDLE_SIGNAL_PEER_CLOSED,
|
| + MOJO_DEADLINE_INDEFINITE, nullptr);
|
| + EXPECT_EQ(MOJO_RESULT_OK, result);
|
| }
|
|
|
| -TEST_F(MultiprocessMessagePipeTest, SendPipeThenClosePeer) {
|
| +TEST_P(MultiprocessMessagePipeTestWithPeerSupport, SendPipeThenClosePeer) {
|
| RUN_CHILD_ON_PIPE(ReceivePipeWithClosedPeer, h)
|
| MojoHandle a, b;
|
| CreateMessagePipe(&a, &b);
|
| @@ -1176,8 +1190,7 @@ TEST_F(MultiprocessMessagePipeTest,
|
| END_CHILD()
|
| }
|
|
|
| -
|
| -TEST_F(MultiprocessMessagePipeTest, SendClosePeerSend) {
|
| +TEST_P(MultiprocessMessagePipeTestWithPeerSupport, SendClosePeerSend) {
|
| MojoHandle a, b;
|
| CreateMessagePipe(&a, &b);
|
|
|
| @@ -1220,7 +1233,7 @@ DEFINE_TEST_CLIENT_TEST_WITH_PIPE(WriteCloseSendPeerClient,
|
| EXPECT_EQ("quit", ReadMessage(h));
|
| }
|
|
|
| -TEST_F(MultiprocessMessagePipeTest, WriteCloseSendPeer) {
|
| +TEST_P(MultiprocessMessagePipeTestWithPeerSupport, WriteCloseSendPeer) {
|
| MojoHandle pipe[2];
|
| CreateMessagePipe(&pipe[0], &pipe[1]);
|
|
|
| @@ -1345,7 +1358,10 @@ TEST_F(MultiprocessMessagePipeTest, NotifyBadMessage) {
|
| EXPECT_NE(std::string::npos, first_process_error.find(kFirstErrorMessage));
|
| EXPECT_NE(std::string::npos, second_process_error.find(kSecondErrorMessage));
|
| }
|
| -
|
| +INSTANTIATE_TEST_CASE_P(,
|
| + MultiprocessMessagePipeTestWithPeerSupport,
|
| + testing::Values(test::MojoTestBase::LaunchType::CHILD,
|
| + test::MojoTestBase::LaunchType::PEER));
|
| } // namespace
|
| } // namespace edk
|
| } // namespace mojo
|
|
|