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

Side by Side Diff: third_party/mojo/src/mojo/edk/system/connection_manager_unittest.cc

Issue 904103003: Update mojo sdk to rev 8d45c89c30b230843c5bd6dd0693a555750946c0 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
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 // This is really a unit test for |MasterConnectionManager| and 5 // This is really a unit test for |MasterConnectionManager| and
6 // |SlaveConnectionManager| (since they need to be tested together). 6 // |SlaveConnectionManager| (since they need to be tested together).
7 7
8 #include "mojo/edk/system/connection_manager.h" 8 #include "mojo/edk/system/connection_manager.h"
9 9
10 #include <stdint.h> 10 #include <stdint.h>
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 num_bytes = 0; 51 num_bytes = 0;
52 if (!mojo::test::BlockingRead(h2, &r, sizeof(r), &num_bytes) || 52 if (!mojo::test::BlockingRead(h2, &r, sizeof(r), &num_bytes) ||
53 num_bytes != sizeof(r)) 53 num_bytes != sizeof(r))
54 return false; 54 return false;
55 if (r != w2) 55 if (r != w2)
56 return false; 56 return false;
57 57
58 return true; 58 return true;
59 } 59 }
60 60
61 bool IsValidSlaveProcessIdentifier(ProcessIdentifier process_identifier) {
62 return process_identifier != kInvalidProcessIdentifier &&
63 process_identifier != kMasterProcessIdentifier;
64 }
65
61 class TestSlaveInfo : public embedder::SlaveInfo { 66 class TestSlaveInfo : public embedder::SlaveInfo {
62 public: 67 public:
63 explicit TestSlaveInfo(const std::string& name) : name_(name) {} 68 explicit TestSlaveInfo(const std::string& name) : name_(name) {}
64 ~TestSlaveInfo() override { CHECK(thread_checker_.CalledOnValidThread()); } 69 ~TestSlaveInfo() override { CHECK(thread_checker_.CalledOnValidThread()); }
65 70
66 const std::string& name() const { return name_; } 71 const std::string& name() const { return name_; }
67 72
68 private: 73 private:
69 base::ThreadChecker thread_checker_; 74 base::ThreadChecker thread_checker_;
70 std::string name_; 75 std::string name_;
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 ConnectSlave(&master, &slave1_process_delegate, &slave1, "slave1"); 198 ConnectSlave(&master, &slave1_process_delegate, &slave1, "slave1");
194 199
195 MockSlaveProcessDelegate slave2_process_delegate; 200 MockSlaveProcessDelegate slave2_process_delegate;
196 SlaveConnectionManager slave2; 201 SlaveConnectionManager slave2;
197 ConnectSlave(&master, &slave2_process_delegate, &slave2, "slave2"); 202 ConnectSlave(&master, &slave2_process_delegate, &slave2, "slave2");
198 203
199 ConnectionIdentifier connection_id = ConnectionIdentifier::Generate(); 204 ConnectionIdentifier connection_id = ConnectionIdentifier::Generate();
200 EXPECT_TRUE(slave1.AllowConnect(connection_id)); 205 EXPECT_TRUE(slave1.AllowConnect(connection_id));
201 EXPECT_TRUE(slave2.AllowConnect(connection_id)); 206 EXPECT_TRUE(slave2.AllowConnect(connection_id));
202 207
203 ProcessIdentifier peer1; 208 ProcessIdentifier peer1 = kInvalidProcessIdentifier;
204 embedder::ScopedPlatformHandle h1; 209 embedder::ScopedPlatformHandle h1;
205 EXPECT_TRUE(slave1.Connect(connection_id, &peer1, &h1)); 210 EXPECT_TRUE(slave1.Connect(connection_id, &peer1, &h1));
211 EXPECT_TRUE(IsValidSlaveProcessIdentifier(peer1));
206 EXPECT_TRUE(h1.is_valid()); 212 EXPECT_TRUE(h1.is_valid());
207 ProcessIdentifier peer2; 213 ProcessIdentifier peer2 = kInvalidProcessIdentifier;
208 embedder::ScopedPlatformHandle h2; 214 embedder::ScopedPlatformHandle h2;
209 EXPECT_TRUE(slave2.Connect(connection_id, &peer2, &h2)); 215 EXPECT_TRUE(slave2.Connect(connection_id, &peer2, &h2));
216 EXPECT_TRUE(IsValidSlaveProcessIdentifier(peer2));
210 EXPECT_TRUE(h2.is_valid()); 217 EXPECT_TRUE(h2.is_valid());
211 218
212 // TODO(vtl): If/when I add the ability to get one's own process identifier, 219 // TODO(vtl): If/when I add the ability to get one's own process identifier,
213 // there'll be more we can check. 220 // there'll be more we can check.
214 EXPECT_NE(peer1, peer2); 221 EXPECT_NE(peer1, peer2);
215 EXPECT_TRUE(ArePlatformHandlesConnected(h1.get(), h2.get())); 222 EXPECT_TRUE(ArePlatformHandlesConnected(h1.get(), h2.get()));
216 223
217 // The process manager shouldn't have gotten any notifications yet. (Spin the 224 // The process manager shouldn't have gotten any notifications yet. (Spin the
218 // message loop to make sure none were enqueued.) 225 // message loop to make sure none were enqueued.)
219 base::RunLoop().RunUntilIdle(); 226 base::RunLoop().RunUntilIdle();
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 285
279 MockSlaveProcessDelegate slave2_process_delegate; 286 MockSlaveProcessDelegate slave2_process_delegate;
280 SlaveConnectionManager slave2; 287 SlaveConnectionManager slave2;
281 ConnectSlave(&master, &slave2_process_delegate, &slave2, "slave2"); 288 ConnectSlave(&master, &slave2_process_delegate, &slave2, "slave2");
282 289
283 ConnectionIdentifier connection_id = ConnectionIdentifier::Generate(); 290 ConnectionIdentifier connection_id = ConnectionIdentifier::Generate();
284 EXPECT_TRUE(slave1.AllowConnect(connection_id)); 291 EXPECT_TRUE(slave1.AllowConnect(connection_id));
285 EXPECT_TRUE(slave2.AllowConnect(connection_id)); 292 EXPECT_TRUE(slave2.AllowConnect(connection_id));
286 293
287 EXPECT_TRUE(slave1.CancelConnect(connection_id)); 294 EXPECT_TRUE(slave1.CancelConnect(connection_id));
288 ProcessIdentifier peer2; 295 ProcessIdentifier peer2 = kInvalidProcessIdentifier;
289 embedder::ScopedPlatformHandle h2; 296 embedder::ScopedPlatformHandle h2;
290 EXPECT_FALSE(slave2.Connect(connection_id, &peer2, &h2)); 297 EXPECT_FALSE(slave2.Connect(connection_id, &peer2, &h2));
298 EXPECT_EQ(kInvalidProcessIdentifier, peer2);
291 EXPECT_FALSE(h2.is_valid()); 299 EXPECT_FALSE(h2.is_valid());
292 300
293 slave1.Shutdown(); 301 slave1.Shutdown();
294 slave2.Shutdown(); 302 slave2.Shutdown();
295 master.Shutdown(); 303 master.Shutdown();
296 } 304 }
297 305
298 // Tests that pending connections are removed on error. 306 // Tests that pending connections are removed on error.
299 TEST_F(ConnectionManagerTest, ErrorRemovePending) { 307 TEST_F(ConnectionManagerTest, ErrorRemovePending) {
300 MasterConnectionManager master; 308 MasterConnectionManager master;
(...skipping 12 matching lines...) Expand all
313 EXPECT_TRUE(slave2.AllowConnect(connection_id)); 321 EXPECT_TRUE(slave2.AllowConnect(connection_id));
314 322
315 slave1.Shutdown(); 323 slave1.Shutdown();
316 324
317 // |OnSlaveDisconnect()| should be called. After it's called, this means that 325 // |OnSlaveDisconnect()| should be called. After it's called, this means that
318 // the disconnect has been detected and handled, including the removal of the 326 // the disconnect has been detected and handled, including the removal of the
319 // pending connection. 327 // pending connection.
320 master_process_delegate().RunUntilNotified(); 328 master_process_delegate().RunUntilNotified();
321 EXPECT_EQ(1u, master_process_delegate().on_slave_disconnect_calls()); 329 EXPECT_EQ(1u, master_process_delegate().on_slave_disconnect_calls());
322 330
323 ProcessIdentifier peer2; 331 ProcessIdentifier peer2 = kInvalidProcessIdentifier;
324 embedder::ScopedPlatformHandle h2; 332 embedder::ScopedPlatformHandle h2;
325 EXPECT_FALSE(slave2.Connect(connection_id, &peer2, &h2)); 333 EXPECT_FALSE(slave2.Connect(connection_id, &peer2, &h2));
334 EXPECT_EQ(kInvalidProcessIdentifier, peer2);
326 EXPECT_FALSE(h2.is_valid()); 335 EXPECT_FALSE(h2.is_valid());
327 336
328 slave2.Shutdown(); 337 slave2.Shutdown();
329 master.Shutdown(); 338 master.Shutdown();
330 } 339 }
331 340
332 TEST_F(ConnectionManagerTest, ConnectSlaveToSelf) { 341 TEST_F(ConnectionManagerTest, ConnectSlaveToSelf) {
333 MasterConnectionManager master; 342 MasterConnectionManager master;
334 master.Init(&master_process_delegate()); 343 master.Init(&master_process_delegate());
335 344
336 MockSlaveProcessDelegate slave_process_delegate; 345 MockSlaveProcessDelegate slave_process_delegate;
337 SlaveConnectionManager slave; 346 SlaveConnectionManager slave;
338 ConnectSlave(&master, &slave_process_delegate, &slave, "slave"); 347 ConnectSlave(&master, &slave_process_delegate, &slave, "slave");
339 348
340 ConnectionIdentifier connection_id = ConnectionIdentifier::Generate(); 349 ConnectionIdentifier connection_id = ConnectionIdentifier::Generate();
341 EXPECT_TRUE(slave.AllowConnect(connection_id)); 350 EXPECT_TRUE(slave.AllowConnect(connection_id));
342 EXPECT_TRUE(slave.AllowConnect(connection_id)); 351 EXPECT_TRUE(slave.AllowConnect(connection_id));
343 352
344 // Currently, the connect-to-self case is signalled by the master not sending 353 // Currently, the connect-to-self case is signalled by the master not sending
345 // back a handle. 354 // back a handle.
346 ProcessIdentifier peer1; 355 ProcessIdentifier peer1 = kInvalidProcessIdentifier;
347 embedder::ScopedPlatformHandle h1; 356 embedder::ScopedPlatformHandle h1;
348 EXPECT_TRUE(slave.Connect(connection_id, &peer1, &h1)); 357 EXPECT_TRUE(slave.Connect(connection_id, &peer1, &h1));
358 EXPECT_TRUE(IsValidSlaveProcessIdentifier(peer1));
349 EXPECT_FALSE(h1.is_valid()); 359 EXPECT_FALSE(h1.is_valid());
350 ProcessIdentifier peer2; 360 ProcessIdentifier peer2 = kInvalidProcessIdentifier;
351 embedder::ScopedPlatformHandle h2; 361 embedder::ScopedPlatformHandle h2;
352 EXPECT_TRUE(slave.Connect(connection_id, &peer2, &h2)); 362 EXPECT_TRUE(slave.Connect(connection_id, &peer2, &h2));
363 EXPECT_TRUE(IsValidSlaveProcessIdentifier(peer2));
353 EXPECT_FALSE(h2.is_valid()); 364 EXPECT_FALSE(h2.is_valid());
354 365
355 EXPECT_EQ(peer1, peer2); 366 EXPECT_EQ(peer1, peer2);
356 367
357 slave.Shutdown(); 368 slave.Shutdown();
358 master.Shutdown(); 369 master.Shutdown();
359 } 370 }
360 371
361 TEST_F(ConnectionManagerTest, ConnectSlavesTwice) { 372 TEST_F(ConnectionManagerTest, ConnectSlavesTwice) {
362 MasterConnectionManager master; 373 MasterConnectionManager master;
363 master.Init(&master_process_delegate()); 374 master.Init(&master_process_delegate());
364 375
365 MockSlaveProcessDelegate slave1_process_delegate; 376 MockSlaveProcessDelegate slave1_process_delegate;
366 SlaveConnectionManager slave1; 377 SlaveConnectionManager slave1;
367 ConnectSlave(&master, &slave1_process_delegate, &slave1, "slave1"); 378 ConnectSlave(&master, &slave1_process_delegate, &slave1, "slave1");
368 379
369 MockSlaveProcessDelegate slave2_process_delegate; 380 MockSlaveProcessDelegate slave2_process_delegate;
370 SlaveConnectionManager slave2; 381 SlaveConnectionManager slave2;
371 ConnectSlave(&master, &slave2_process_delegate, &slave2, "slave2"); 382 ConnectSlave(&master, &slave2_process_delegate, &slave2, "slave2");
372 383
373 ConnectionIdentifier connection_id = ConnectionIdentifier::Generate(); 384 ConnectionIdentifier connection_id = ConnectionIdentifier::Generate();
374 EXPECT_TRUE(slave1.AllowConnect(connection_id)); 385 EXPECT_TRUE(slave1.AllowConnect(connection_id));
375 EXPECT_TRUE(slave2.AllowConnect(connection_id)); 386 EXPECT_TRUE(slave2.AllowConnect(connection_id));
376 387
377 ProcessIdentifier peer1; 388 ProcessIdentifier peer1 = kInvalidProcessIdentifier;
378 embedder::ScopedPlatformHandle h1; 389 embedder::ScopedPlatformHandle h1;
379 EXPECT_TRUE(slave1.Connect(connection_id, &peer1, &h1)); 390 EXPECT_TRUE(slave1.Connect(connection_id, &peer1, &h1));
380 ProcessIdentifier peer2; 391 ProcessIdentifier peer2 = kInvalidProcessIdentifier;
381 embedder::ScopedPlatformHandle h2; 392 embedder::ScopedPlatformHandle h2;
382 EXPECT_TRUE(slave2.Connect(connection_id, &peer2, &h2)); 393 EXPECT_TRUE(slave2.Connect(connection_id, &peer2, &h2));
383 394
384 EXPECT_NE(peer1, peer2); 395 EXPECT_NE(peer1, peer2);
385 EXPECT_TRUE(ArePlatformHandlesConnected(h1.get(), h2.get())); 396 EXPECT_TRUE(ArePlatformHandlesConnected(h1.get(), h2.get()));
386 397
387 // Currently, the master doesn't detect the case of connecting a pair of 398 // Currently, the master doesn't detect the case of connecting a pair of
388 // slaves that are already connected. (Doing so would require more careful 399 // slaves that are already connected. (Doing so would require more careful
389 // tracking and is prone to races -- especially if we want slaves to be able 400 // tracking and is prone to races -- especially if we want slaves to be able
390 // to tear down no-longer-needed connections.) But the slaves should be able 401 // to tear down no-longer-needed connections.) But the slaves should be able
391 // to do the tracking themselves (using the peer process identifiers). 402 // to do the tracking themselves (using the peer process identifiers).
392 connection_id = ConnectionIdentifier::Generate(); 403 connection_id = ConnectionIdentifier::Generate();
393 EXPECT_TRUE(slave1.AllowConnect(connection_id)); 404 EXPECT_TRUE(slave1.AllowConnect(connection_id));
394 EXPECT_TRUE(slave2.AllowConnect(connection_id)); 405 EXPECT_TRUE(slave2.AllowConnect(connection_id));
395 406
396 h1.reset(); 407 h1.reset();
397 h2.reset(); 408 h2.reset();
398 ProcessIdentifier second_peer2; 409 ProcessIdentifier second_peer2 = kInvalidProcessIdentifier;
399 EXPECT_TRUE(slave2.Connect(connection_id, &second_peer2, &h2)); 410 EXPECT_TRUE(slave2.Connect(connection_id, &second_peer2, &h2));
400 ProcessIdentifier second_peer1; 411 ProcessIdentifier second_peer1 = kInvalidProcessIdentifier;
401 EXPECT_TRUE(slave1.Connect(connection_id, &second_peer1, &h1)); 412 EXPECT_TRUE(slave1.Connect(connection_id, &second_peer1, &h1));
402 413
403 EXPECT_EQ(peer1, second_peer1); 414 EXPECT_EQ(peer1, second_peer1);
404 EXPECT_EQ(peer2, second_peer2); 415 EXPECT_EQ(peer2, second_peer2);
405 EXPECT_TRUE(ArePlatformHandlesConnected(h1.get(), h2.get())); 416 EXPECT_TRUE(ArePlatformHandlesConnected(h1.get(), h2.get()));
406 417
407 slave2.Shutdown(); 418 slave2.Shutdown();
408 slave1.Shutdown(); 419 slave1.Shutdown();
409 master.Shutdown(); 420 master.Shutdown();
410 } 421 }
411 422
412 TEST_F(ConnectionManagerTest, ConnectMasterToSlave) { 423 TEST_F(ConnectionManagerTest, ConnectMasterToSlave) {
413 MasterConnectionManager master; 424 MasterConnectionManager master;
414 master.Init(&master_process_delegate()); 425 master.Init(&master_process_delegate());
415 426
416 MockSlaveProcessDelegate slave_process_delegate; 427 MockSlaveProcessDelegate slave_process_delegate;
417 SlaveConnectionManager slave; 428 SlaveConnectionManager slave;
418 ConnectSlave(&master, &slave_process_delegate, &slave, "slave"); 429 ConnectSlave(&master, &slave_process_delegate, &slave, "slave");
419 430
420 ConnectionIdentifier connection_id = ConnectionIdentifier::Generate(); 431 ConnectionIdentifier connection_id = ConnectionIdentifier::Generate();
421 EXPECT_TRUE(master.AllowConnect(connection_id)); 432 EXPECT_TRUE(master.AllowConnect(connection_id));
422 EXPECT_TRUE(slave.AllowConnect(connection_id)); 433 EXPECT_TRUE(slave.AllowConnect(connection_id));
423 434
424 ProcessIdentifier master_peer; 435 ProcessIdentifier master_peer = kInvalidProcessIdentifier;
425 embedder::ScopedPlatformHandle master_h; 436 embedder::ScopedPlatformHandle master_h;
426 EXPECT_TRUE(master.Connect(connection_id, &master_peer, &master_h)); 437 EXPECT_TRUE(master.Connect(connection_id, &master_peer, &master_h));
438 EXPECT_TRUE(IsValidSlaveProcessIdentifier(master_peer));
427 EXPECT_TRUE(master_h.is_valid()); 439 EXPECT_TRUE(master_h.is_valid());
428 ProcessIdentifier slave_peer; 440 ProcessIdentifier slave_peer = kInvalidProcessIdentifier;
429 embedder::ScopedPlatformHandle slave_h; 441 embedder::ScopedPlatformHandle slave_h;
430 EXPECT_TRUE(slave.Connect(connection_id, &slave_peer, &slave_h)); 442 EXPECT_TRUE(slave.Connect(connection_id, &slave_peer, &slave_h));
443 EXPECT_EQ(kMasterProcessIdentifier, slave_peer);
431 EXPECT_TRUE(slave_h.is_valid()); 444 EXPECT_TRUE(slave_h.is_valid());
432 445
433 EXPECT_NE(master_peer, slave_peer); 446 EXPECT_NE(master_peer, slave_peer);
434 EXPECT_TRUE(ArePlatformHandlesConnected(master_h.get(), slave_h.get())); 447 EXPECT_TRUE(ArePlatformHandlesConnected(master_h.get(), slave_h.get()));
435 448
436 slave.Shutdown(); 449 slave.Shutdown();
437 master.Shutdown(); 450 master.Shutdown();
438 } 451 }
439 452
440 TEST_F(ConnectionManagerTest, ConnectMasterToSelf) { 453 TEST_F(ConnectionManagerTest, ConnectMasterToSelf) {
441 MasterConnectionManager master; 454 MasterConnectionManager master;
442 master.Init(&master_process_delegate()); 455 master.Init(&master_process_delegate());
443 456
444 ConnectionIdentifier connection_id = ConnectionIdentifier::Generate(); 457 ConnectionIdentifier connection_id = ConnectionIdentifier::Generate();
445 EXPECT_TRUE(master.AllowConnect(connection_id)); 458 EXPECT_TRUE(master.AllowConnect(connection_id));
446 EXPECT_TRUE(master.AllowConnect(connection_id)); 459 EXPECT_TRUE(master.AllowConnect(connection_id));
447 460
448 // Currently, the connect-to-self case is signalled by the master not sending 461 // Currently, the connect-to-self case is signalled by the master not sending
449 // back a handle. 462 // back a handle.
450 ProcessIdentifier peer1; 463 ProcessIdentifier peer1 = kInvalidProcessIdentifier;
451 embedder::ScopedPlatformHandle h1; 464 embedder::ScopedPlatformHandle h1;
452 EXPECT_TRUE(master.Connect(connection_id, &peer1, &h1)); 465 EXPECT_TRUE(master.Connect(connection_id, &peer1, &h1));
466 EXPECT_EQ(kMasterProcessIdentifier, peer1);
453 EXPECT_FALSE(h1.is_valid()); 467 EXPECT_FALSE(h1.is_valid());
454 ProcessIdentifier peer2; 468 ProcessIdentifier peer2 = kInvalidProcessIdentifier;
455 embedder::ScopedPlatformHandle h2; 469 embedder::ScopedPlatformHandle h2;
456 EXPECT_TRUE(master.Connect(connection_id, &peer2, &h2)); 470 EXPECT_TRUE(master.Connect(connection_id, &peer2, &h2));
471 EXPECT_EQ(kMasterProcessIdentifier, peer2);
457 EXPECT_FALSE(h2.is_valid()); 472 EXPECT_FALSE(h2.is_valid());
458 473
459 EXPECT_EQ(peer1, peer2); 474 EXPECT_EQ(peer1, peer2);
460 475
461 master.Shutdown(); 476 master.Shutdown();
462 } 477 }
463 478
464 TEST_F(ConnectionManagerTest, MasterCancelConnect) { 479 TEST_F(ConnectionManagerTest, MasterCancelConnect) {
465 MasterConnectionManager master; 480 MasterConnectionManager master;
466 master.Init(&master_process_delegate()); 481 master.Init(&master_process_delegate());
467 482
468 MockSlaveProcessDelegate slave_process_delegate; 483 MockSlaveProcessDelegate slave_process_delegate;
469 SlaveConnectionManager slave; 484 SlaveConnectionManager slave;
470 ConnectSlave(&master, &slave_process_delegate, &slave, "slave"); 485 ConnectSlave(&master, &slave_process_delegate, &slave, "slave");
471 486
472 ConnectionIdentifier connection_id = ConnectionIdentifier::Generate(); 487 ConnectionIdentifier connection_id = ConnectionIdentifier::Generate();
473 EXPECT_TRUE(master.AllowConnect(connection_id)); 488 EXPECT_TRUE(master.AllowConnect(connection_id));
474 EXPECT_TRUE(slave.AllowConnect(connection_id)); 489 EXPECT_TRUE(slave.AllowConnect(connection_id));
475 490
476 EXPECT_TRUE(master.CancelConnect(connection_id)); 491 EXPECT_TRUE(master.CancelConnect(connection_id));
477 ProcessIdentifier peer; 492 ProcessIdentifier peer = kInvalidProcessIdentifier;
478 embedder::ScopedPlatformHandle h; 493 embedder::ScopedPlatformHandle h;
479 EXPECT_FALSE(slave.Connect(connection_id, &peer, &h)); 494 EXPECT_FALSE(slave.Connect(connection_id, &peer, &h));
495 EXPECT_EQ(kInvalidProcessIdentifier, peer);
480 EXPECT_FALSE(h.is_valid()); 496 EXPECT_FALSE(h.is_valid());
481 497
482 slave.Shutdown(); 498 slave.Shutdown();
483 master.Shutdown(); 499 master.Shutdown();
484 } 500 }
485 501
486 TEST_F(ConnectionManagerTest, AddSlaveThenImmediateShutdown) { 502 TEST_F(ConnectionManagerTest, AddSlaveThenImmediateShutdown) {
487 MasterConnectionManager master; 503 MasterConnectionManager master;
488 master.Init(&master_process_delegate()); 504 master.Init(&master_process_delegate());
489 505
490 MockSlaveProcessDelegate slave_process_delegate; 506 MockSlaveProcessDelegate slave_process_delegate;
491 SlaveConnectionManager slave; 507 SlaveConnectionManager slave;
492 embedder::PlatformChannelPair platform_channel_pair; 508 embedder::PlatformChannelPair platform_channel_pair;
493 master.AddSlave(make_scoped_ptr(new TestSlaveInfo("slave")), 509 master.AddSlave(make_scoped_ptr(new TestSlaveInfo("slave")),
494 platform_channel_pair.PassServerHandle()); 510 platform_channel_pair.PassServerHandle());
495 master.Shutdown(); 511 master.Shutdown();
496 // Since we never initialized |slave|, we don't have to shut it down. 512 // Since we never initialized |slave|, we don't have to shut it down.
497 } 513 }
498 514
499 } // namespace 515 } // namespace
500 } // namespace system 516 } // namespace system
501 } // namespace mojo 517 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698