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

Side by Side Diff: mojo/edk/test/multiprocess_test_helper.cc

Issue 2766763002: Fix DCHECK in ipc_perftests (Closed)
Patch Set: . Created 3 years, 9 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/test/multiprocess_test_helper.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "mojo/edk/test/multiprocess_test_helper.h" 5 #include "mojo/edk/test/multiprocess_test_helper.h"
6 6
7 #include <functional> 7 #include <functional>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 28 matching lines...) Expand all
39 namespace mojo { 39 namespace mojo {
40 namespace edk { 40 namespace edk {
41 namespace test { 41 namespace test {
42 42
43 namespace { 43 namespace {
44 44
45 const char kMojoPrimordialPipeToken[] = "mojo-primordial-pipe-token"; 45 const char kMojoPrimordialPipeToken[] = "mojo-primordial-pipe-token";
46 const char kMojoNamedPipeName[] = "mojo-named-pipe-name"; 46 const char kMojoNamedPipeName[] = "mojo-named-pipe-name";
47 47
48 template <typename Func> 48 template <typename Func>
49 int RunClientFunction(Func handler) { 49 int RunClientFunction(Func handler, bool pass_pipe_ownership_to_main) {
50 CHECK(MultiprocessTestHelper::primordial_pipe.is_valid()); 50 CHECK(MultiprocessTestHelper::primordial_pipe.is_valid());
51 ScopedMessagePipeHandle pipe = 51 ScopedMessagePipeHandle pipe =
52 std::move(MultiprocessTestHelper::primordial_pipe); 52 std::move(MultiprocessTestHelper::primordial_pipe);
53 return handler(pipe.get().value()); 53 MessagePipeHandle pipe_handle =
54 pass_pipe_ownership_to_main ? pipe.release() : pipe.get();
55 return handler(pipe_handle.value());
54 } 56 }
55 57
56 } // namespace 58 } // namespace
57 59
58 MultiprocessTestHelper::MultiprocessTestHelper() {} 60 MultiprocessTestHelper::MultiprocessTestHelper() {}
59 61
60 MultiprocessTestHelper::~MultiprocessTestHelper() { 62 MultiprocessTestHelper::~MultiprocessTestHelper() {
61 CHECK(!test_child_.process.IsValid()); 63 CHECK(!test_child_.process.IsValid());
62 } 64 }
63 65
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 } else { 227 } else {
226 primordial_pipe = ConnectToPeerProcess( 228 primordial_pipe = ConnectToPeerProcess(
227 PlatformChannelPair::PassClientHandleFromParentProcess( 229 PlatformChannelPair::PassClientHandleFromParentProcess(
228 *base::CommandLine::ForCurrentProcess())); 230 *base::CommandLine::ForCurrentProcess()));
229 } 231 }
230 } 232 }
231 } 233 }
232 234
233 // static 235 // static
234 int MultiprocessTestHelper::RunClientMain( 236 int MultiprocessTestHelper::RunClientMain(
235 const base::Callback<int(MojoHandle)>& main) { 237 const base::Callback<int(MojoHandle)>& main,
236 return RunClientFunction([main](MojoHandle handle){ 238 bool pass_pipe_ownership_to_main) {
237 return main.Run(handle); 239 return RunClientFunction(
238 }); 240 [main](MojoHandle handle) { return main.Run(handle); },
241 pass_pipe_ownership_to_main);
239 } 242 }
240 243
241 // static 244 // static
242 int MultiprocessTestHelper::RunClientTestMain( 245 int MultiprocessTestHelper::RunClientTestMain(
243 const base::Callback<void(MojoHandle)>& main) { 246 const base::Callback<void(MojoHandle)>& main) {
244 return RunClientFunction([main](MojoHandle handle) { 247 return RunClientFunction(
245 main.Run(handle); 248 [main](MojoHandle handle) {
246 return (::testing::Test::HasFatalFailure() || 249 main.Run(handle);
247 ::testing::Test::HasNonfatalFailure()) ? 1 : 0; 250 return (::testing::Test::HasFatalFailure() ||
248 }); 251 ::testing::Test::HasNonfatalFailure())
252 ? 1
253 : 0;
254 },
255 true /* close_pipe_on_exit */);
249 } 256 }
250 257
251 // static 258 // static
252 mojo::ScopedMessagePipeHandle MultiprocessTestHelper::primordial_pipe; 259 mojo::ScopedMessagePipeHandle MultiprocessTestHelper::primordial_pipe;
253 260
254 } // namespace test 261 } // namespace test
255 } // namespace edk 262 } // namespace edk
256 } // namespace mojo 263 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/edk/test/multiprocess_test_helper.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698