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

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

Issue 1659213002: Move PlatformChannelPair to //mojo/edk/platform and rename it PlatformPipe. (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 | « mojo/edk/embedder/BUILD.gn ('k') | 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
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "mojo/edk/embedder/platform_channel_pair.h"
13 #include "mojo/edk/embedder/test_embedder.h" 12 #include "mojo/edk/embedder/test_embedder.h"
13 #include "mojo/edk/platform/platform_pipe.h"
14 #include "mojo/edk/system/test/test_command_line.h" 14 #include "mojo/edk/system/test/test_command_line.h"
15 #include "mojo/edk/system/test/test_io_thread.h" 15 #include "mojo/edk/system/test/test_io_thread.h"
16 #include "mojo/edk/system/test/timeouts.h" 16 #include "mojo/edk/system/test/timeouts.h"
17 #include "mojo/edk/test/multiprocess_test_helper.h" 17 #include "mojo/edk/test/multiprocess_test_helper.h"
18 #include "mojo/edk/test/scoped_ipc_support.h" 18 #include "mojo/edk/test/scoped_ipc_support.h"
19 #include "mojo/edk/util/command_line.h" 19 #include "mojo/edk/util/command_line.h"
20 #include "mojo/edk/util/ref_ptr.h" 20 #include "mojo/edk/util/ref_ptr.h"
21 #include "mojo/edk/util/waitable_event.h" 21 #include "mojo/edk/util/waitable_event.h"
22 #include "mojo/public/c/system/functions.h" 22 #include "mojo/public/c/system/functions.h"
23 #include "mojo/public/c/system/types.h" 23 #include "mojo/public/c/system/types.h"
24 #include "mojo/public/cpp/system/handle.h" 24 #include "mojo/public/cpp/system/handle.h"
25 #include "mojo/public/cpp/system/macros.h" 25 #include "mojo/public/cpp/system/macros.h"
26 #include "mojo/public/cpp/system/message_pipe.h" 26 #include "mojo/public/cpp/system/message_pipe.h"
27 #include "testing/gtest/include/gtest/gtest.h" 27 #include "testing/gtest/include/gtest/gtest.h"
28 28
29 using mojo::platform::PlatformHandleWatcher; 29 using mojo::platform::PlatformHandleWatcher;
30 using mojo::platform::PlatformPipe;
30 using mojo::platform::ScopedPlatformHandle; 31 using mojo::platform::ScopedPlatformHandle;
31 using mojo::platform::TaskRunner; 32 using mojo::platform::TaskRunner;
32 using mojo::system::test::TestIOThread; 33 using mojo::system::test::TestIOThread;
33 using mojo::util::ManualResetWaitableEvent; 34 using mojo::util::ManualResetWaitableEvent;
34 using mojo::util::RefPtr; 35 using mojo::util::RefPtr;
35 36
36 namespace mojo { 37 namespace mojo {
37 namespace embedder { 38 namespace embedder {
38 namespace { 39 namespace {
39 40
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 141
141 TestIOThread test_io_thread_; 142 TestIOThread test_io_thread_;
142 143
143 MOJO_DISALLOW_COPY_AND_ASSIGN(MultiprocessEmbedderTest); 144 MOJO_DISALLOW_COPY_AND_ASSIGN(MultiprocessEmbedderTest);
144 }; 145 };
145 146
146 TEST_F(MultiprocessEmbedderTest, ChannelsBasic) { 147 TEST_F(MultiprocessEmbedderTest, ChannelsBasic) {
147 mojo::test::ScopedIPCSupport ipc_support(test_io_task_runner().Clone(), 148 mojo::test::ScopedIPCSupport ipc_support(test_io_task_runner().Clone(),
148 test_io_watcher()); 149 test_io_watcher());
149 150
150 PlatformChannelPair channel_pair; 151 PlatformPipe channel_pair;
151 ScopedTestChannel server_channel(channel_pair.handle0.Pass()); 152 ScopedTestChannel server_channel(channel_pair.handle0.Pass());
152 MojoHandle server_mp = server_channel.bootstrap_message_pipe(); 153 MojoHandle server_mp = server_channel.bootstrap_message_pipe();
153 EXPECT_NE(server_mp, MOJO_HANDLE_INVALID); 154 EXPECT_NE(server_mp, MOJO_HANDLE_INVALID);
154 ScopedTestChannel client_channel(channel_pair.handle1.Pass()); 155 ScopedTestChannel client_channel(channel_pair.handle1.Pass());
155 MojoHandle client_mp = client_channel.bootstrap_message_pipe(); 156 MojoHandle client_mp = client_channel.bootstrap_message_pipe();
156 EXPECT_NE(client_mp, MOJO_HANDLE_INVALID); 157 EXPECT_NE(client_mp, MOJO_HANDLE_INVALID);
157 158
158 // We can write to a message pipe handle immediately. 159 // We can write to a message pipe handle immediately.
159 const char kHello[] = "hello"; 160 const char kHello[] = "hello";
160 EXPECT_EQ( 161 EXPECT_EQ(
(...skipping 25 matching lines...) Expand all
186 server_channel.WaitForChannelCreationCompletion(); 187 server_channel.WaitForChannelCreationCompletion();
187 client_channel.WaitForChannelCreationCompletion(); 188 client_channel.WaitForChannelCreationCompletion();
188 EXPECT_TRUE(server_channel.channel_info()); 189 EXPECT_TRUE(server_channel.channel_info());
189 EXPECT_TRUE(client_channel.channel_info()); 190 EXPECT_TRUE(client_channel.channel_info());
190 } 191 }
191 192
192 TEST_F(MultiprocessEmbedderTest, ChannelsHandlePassing) { 193 TEST_F(MultiprocessEmbedderTest, ChannelsHandlePassing) {
193 mojo::test::ScopedIPCSupport ipc_support(test_io_task_runner().Clone(), 194 mojo::test::ScopedIPCSupport ipc_support(test_io_task_runner().Clone(),
194 test_io_watcher()); 195 test_io_watcher());
195 196
196 PlatformChannelPair channel_pair; 197 PlatformPipe channel_pair;
197 ScopedTestChannel server_channel(channel_pair.handle0.Pass()); 198 ScopedTestChannel server_channel(channel_pair.handle0.Pass());
198 MojoHandle server_mp = server_channel.bootstrap_message_pipe(); 199 MojoHandle server_mp = server_channel.bootstrap_message_pipe();
199 EXPECT_NE(server_mp, MOJO_HANDLE_INVALID); 200 EXPECT_NE(server_mp, MOJO_HANDLE_INVALID);
200 ScopedTestChannel client_channel(channel_pair.handle1.Pass()); 201 ScopedTestChannel client_channel(channel_pair.handle1.Pass());
201 MojoHandle client_mp = client_channel.bootstrap_message_pipe(); 202 MojoHandle client_mp = client_channel.bootstrap_message_pipe();
202 EXPECT_NE(client_mp, MOJO_HANDLE_INVALID); 203 EXPECT_NE(client_mp, MOJO_HANDLE_INVALID);
203 204
204 MojoHandle h0, h1; 205 MojoHandle h0, h1;
205 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateMessagePipe(nullptr, &h0, &h1)); 206 EXPECT_EQ(MOJO_RESULT_OK, MojoCreateMessagePipe(nullptr, &h0, &h1));
206 207
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 test_io_thread().PostTaskAndWait( 362 test_io_thread().PostTaskAndWait(
362 [channel_info]() { DestroyChannelOnIOThread(channel_info); }); 363 [channel_info]() { DestroyChannelOnIOThread(channel_info); });
363 } 364 }
364 365
365 TEST_F(MultiprocessEmbedderTest, ChannelShutdownRace_MessagePipeClose) { 366 TEST_F(MultiprocessEmbedderTest, ChannelShutdownRace_MessagePipeClose) {
366 const size_t kIterations = 1000; 367 const size_t kIterations = 1000;
367 mojo::test::ScopedIPCSupport ipc_support(test_io_task_runner().Clone(), 368 mojo::test::ScopedIPCSupport ipc_support(test_io_task_runner().Clone(),
368 test_io_watcher()); 369 test_io_watcher());
369 370
370 for (size_t i = 0; i < kIterations; i++) { 371 for (size_t i = 0; i < kIterations; i++) {
371 PlatformChannelPair channel_pair; 372 PlatformPipe channel_pair;
372 std::unique_ptr<ScopedTestChannel> server_channel( 373 std::unique_ptr<ScopedTestChannel> server_channel(
373 new ScopedTestChannel(channel_pair.handle0.Pass())); 374 new ScopedTestChannel(channel_pair.handle0.Pass()));
374 server_channel->WaitForChannelCreationCompletion(); 375 server_channel->WaitForChannelCreationCompletion();
375 server_channel->NoWaitOnShutdown(); 376 server_channel->NoWaitOnShutdown();
376 377
377 MojoHandle server_mp = server_channel->bootstrap_message_pipe(); 378 MojoHandle server_mp = server_channel->bootstrap_message_pipe();
378 EXPECT_NE(server_mp, MOJO_HANDLE_INVALID); 379 EXPECT_NE(server_mp, MOJO_HANDLE_INVALID);
379 380
380 // Race between channel shutdown and closing a message pipe. The message 381 // 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 382 // pipe doesn't have to be the bootstrap pipe. It just has to be bound to
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 699
699 EXPECT_TRUE(test::Shutdown()); 700 EXPECT_TRUE(test::Shutdown());
700 } 701 }
701 702
702 // TODO(vtl): Test immediate write & close. 703 // TODO(vtl): Test immediate write & close.
703 // TODO(vtl): Test broken-connection cases. 704 // TODO(vtl): Test broken-connection cases.
704 705
705 } // namespace 706 } // namespace
706 } // namespace embedder 707 } // namespace embedder
707 } // namespace mojo 708 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/edk/embedder/BUILD.gn ('k') | mojo/edk/embedder/platform_channel_pair.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698