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

Side by Side Diff: mojo/edk/embedder/multiprocess_embedder_unittest.cc

Issue 1651183003: Make PlatformChannelPair "dumb". (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 10 months 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 | « no previous file | mojo/edk/embedder/platform_channel_pair.h » ('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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "mojo/edk/embedder/multiprocess_embedder.h" 5 #include "mojo/edk/embedder/multiprocess_embedder.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include <memory> 9 #include <memory>
10 10
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 TestIOThread test_io_thread_; 141 TestIOThread test_io_thread_;
142 142
143 MOJO_DISALLOW_COPY_AND_ASSIGN(MultiprocessEmbedderTest); 143 MOJO_DISALLOW_COPY_AND_ASSIGN(MultiprocessEmbedderTest);
144 }; 144 };
145 145
146 TEST_F(MultiprocessEmbedderTest, ChannelsBasic) { 146 TEST_F(MultiprocessEmbedderTest, ChannelsBasic) {
147 mojo::test::ScopedIPCSupport ipc_support(test_io_task_runner().Clone(), 147 mojo::test::ScopedIPCSupport ipc_support(test_io_task_runner().Clone(),
148 test_io_watcher()); 148 test_io_watcher());
149 149
150 PlatformChannelPair channel_pair; 150 PlatformChannelPair channel_pair;
151 ScopedTestChannel server_channel(channel_pair.PassServerHandle()); 151 ScopedTestChannel server_channel(channel_pair.handle0.Pass());
152 MojoHandle server_mp = server_channel.bootstrap_message_pipe(); 152 MojoHandle server_mp = server_channel.bootstrap_message_pipe();
153 EXPECT_NE(server_mp, MOJO_HANDLE_INVALID); 153 EXPECT_NE(server_mp, MOJO_HANDLE_INVALID);
154 ScopedTestChannel client_channel(channel_pair.PassClientHandle()); 154 ScopedTestChannel client_channel(channel_pair.handle1.Pass());
155 MojoHandle client_mp = client_channel.bootstrap_message_pipe(); 155 MojoHandle client_mp = client_channel.bootstrap_message_pipe();
156 EXPECT_NE(client_mp, MOJO_HANDLE_INVALID); 156 EXPECT_NE(client_mp, MOJO_HANDLE_INVALID);
157 157
158 // We can write to a message pipe handle immediately. 158 // We can write to a message pipe handle immediately.
159 const char kHello[] = "hello"; 159 const char kHello[] = "hello";
160 EXPECT_EQ( 160 EXPECT_EQ(
161 MOJO_RESULT_OK, 161 MOJO_RESULT_OK,
162 MojoWriteMessage(server_mp, kHello, static_cast<uint32_t>(sizeof(kHello)), 162 MojoWriteMessage(server_mp, kHello, static_cast<uint32_t>(sizeof(kHello)),
163 nullptr, 0, MOJO_WRITE_MESSAGE_FLAG_NONE)); 163 nullptr, 0, MOJO_WRITE_MESSAGE_FLAG_NONE));
164 164
(...skipping 22 matching lines...) Expand all
187 client_channel.WaitForChannelCreationCompletion(); 187 client_channel.WaitForChannelCreationCompletion();
188 EXPECT_TRUE(server_channel.channel_info()); 188 EXPECT_TRUE(server_channel.channel_info());
189 EXPECT_TRUE(client_channel.channel_info()); 189 EXPECT_TRUE(client_channel.channel_info());
190 } 190 }
191 191
192 TEST_F(MultiprocessEmbedderTest, ChannelsHandlePassing) { 192 TEST_F(MultiprocessEmbedderTest, ChannelsHandlePassing) {
193 mojo::test::ScopedIPCSupport ipc_support(test_io_task_runner().Clone(), 193 mojo::test::ScopedIPCSupport ipc_support(test_io_task_runner().Clone(),
194 test_io_watcher()); 194 test_io_watcher());
195 195
196 PlatformChannelPair channel_pair; 196 PlatformChannelPair channel_pair;
197 ScopedTestChannel server_channel(channel_pair.PassServerHandle()); 197 ScopedTestChannel server_channel(channel_pair.handle0.Pass());
198 MojoHandle server_mp = server_channel.bootstrap_message_pipe(); 198 MojoHandle server_mp = server_channel.bootstrap_message_pipe();
199 EXPECT_NE(server_mp, MOJO_HANDLE_INVALID); 199 EXPECT_NE(server_mp, MOJO_HANDLE_INVALID);
200 ScopedTestChannel client_channel(channel_pair.PassClientHandle()); 200 ScopedTestChannel client_channel(channel_pair.handle1.Pass());
201 MojoHandle client_mp = client_channel.bootstrap_message_pipe(); 201 MojoHandle client_mp = client_channel.bootstrap_message_pipe();
202 EXPECT_NE(client_mp, MOJO_HANDLE_INVALID); 202 EXPECT_NE(client_mp, MOJO_HANDLE_INVALID);
203 203
204 MojoHandle h0, h1; 204 MojoHandle h0, h1;
205 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateMessagePipe(nullptr, &h0, &h1)); 205 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateMessagePipe(nullptr, &h0, &h1));
206 206
207 // Write a message to |h0| (attaching nothing). 207 // Write a message to |h0| (attaching nothing).
208 const char kHello[] = "hello"; 208 const char kHello[] = "hello";
209 EXPECT_EQ(MOJO_RESULT_OK, 209 EXPECT_EQ(MOJO_RESULT_OK,
210 MojoWriteMessage(h0, kHello, static_cast<uint32_t>(sizeof(kHello)), 210 MojoWriteMessage(h0, kHello, static_cast<uint32_t>(sizeof(kHello)),
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 } 363 }
364 364
365 TEST_F(MultiprocessEmbedderTest, ChannelShutdownRace_MessagePipeClose) { 365 TEST_F(MultiprocessEmbedderTest, ChannelShutdownRace_MessagePipeClose) {
366 const size_t kIterations = 1000; 366 const size_t kIterations = 1000;
367 mojo::test::ScopedIPCSupport ipc_support(test_io_task_runner().Clone(), 367 mojo::test::ScopedIPCSupport ipc_support(test_io_task_runner().Clone(),
368 test_io_watcher()); 368 test_io_watcher());
369 369
370 for (size_t i = 0; i < kIterations; i++) { 370 for (size_t i = 0; i < kIterations; i++) {
371 PlatformChannelPair channel_pair; 371 PlatformChannelPair channel_pair;
372 std::unique_ptr<ScopedTestChannel> server_channel( 372 std::unique_ptr<ScopedTestChannel> server_channel(
373 new ScopedTestChannel(channel_pair.PassServerHandle())); 373 new ScopedTestChannel(channel_pair.handle0.Pass()));
374 server_channel->WaitForChannelCreationCompletion(); 374 server_channel->WaitForChannelCreationCompletion();
375 server_channel->NoWaitOnShutdown(); 375 server_channel->NoWaitOnShutdown();
376 376
377 MojoHandle server_mp = server_channel->bootstrap_message_pipe(); 377 MojoHandle server_mp = server_channel->bootstrap_message_pipe();
378 EXPECT_NE(server_mp, MOJO_HANDLE_INVALID); 378 EXPECT_NE(server_mp, MOJO_HANDLE_INVALID);
379 379
380 // Race between channel shutdown and closing a message pipe. The message 380 // Race between channel shutdown and closing a message pipe. The message
381 // pipe doesn't have to be the bootstrap pipe. It just has to be bound to 381 // pipe doesn't have to be the bootstrap pipe. It just has to be bound to
382 // the channel. 382 // the channel.
383 server_channel.reset(); 383 server_channel.reset();
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 698
699 EXPECT_TRUE(test::Shutdown()); 699 EXPECT_TRUE(test::Shutdown());
700 } 700 }
701 701
702 // TODO(vtl): Test immediate write & close. 702 // TODO(vtl): Test immediate write & close.
703 // TODO(vtl): Test broken-connection cases. 703 // TODO(vtl): Test broken-connection cases.
704 704
705 } // namespace 705 } // namespace
706 } // namespace embedder 706 } // namespace embedder
707 } // namespace mojo 707 } // namespace mojo
OLDNEW
« no previous file with comments | « no previous file | mojo/edk/embedder/platform_channel_pair.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698