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

Side by Side Diff: mojo/system/remote_message_pipe_unittest.cc

Issue 417303002: Convert ReadMessage...() to use the new user pointer handling (see r285350). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: hmm Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « mojo/system/multiprocess_message_pipe_unittest.cc ('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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <stdint.h> 5 #include <stdint.h>
6 #include <stdio.h> 6 #include <stdio.h>
7 #include <string.h> 7 #include <string.h>
8 8
9 #include <vector> 9 #include <vector>
10 10
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 NULL, 207 NULL,
208 MOJO_WRITE_MESSAGE_FLAG_NONE)); 208 MOJO_WRITE_MESSAGE_FLAG_NONE));
209 209
210 // Wait. 210 // Wait.
211 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 211 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context));
212 EXPECT_EQ(123u, context); 212 EXPECT_EQ(123u, context);
213 mp1->RemoveWaiter(1, &waiter); 213 mp1->RemoveWaiter(1, &waiter);
214 214
215 // Read from MP 1, port 1. 215 // Read from MP 1, port 1.
216 EXPECT_EQ(MOJO_RESULT_OK, 216 EXPECT_EQ(MOJO_RESULT_OK,
217 mp1->ReadMessage(1, 217 mp1->ReadMessage(1, UserPointer<void>(buffer),
218 buffer, &buffer_size, 218 MakeUserPointer(&buffer_size), NULL, NULL,
219 NULL, NULL,
220 MOJO_READ_MESSAGE_FLAG_NONE)); 219 MOJO_READ_MESSAGE_FLAG_NONE));
221 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(buffer_size)); 220 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(buffer_size));
222 EXPECT_STREQ(kHello, buffer); 221 EXPECT_STREQ(kHello, buffer);
223 222
224 // Write in the other direction: MP 1, port 1 -> ... -> MP 0, port 0. 223 // Write in the other direction: MP 1, port 1 -> ... -> MP 0, port 0.
225 224
226 waiter.Init(); 225 waiter.Init();
227 ASSERT_EQ(MOJO_RESULT_OK, 226 ASSERT_EQ(MOJO_RESULT_OK,
228 mp0->AddWaiter(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 456)); 227 mp0->AddWaiter(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 456));
229 228
230 EXPECT_EQ(MOJO_RESULT_OK, 229 EXPECT_EQ(MOJO_RESULT_OK,
231 mp1->WriteMessage(1, 230 mp1->WriteMessage(1,
232 kWorld, sizeof(kWorld), 231 kWorld, sizeof(kWorld),
233 NULL, 232 NULL,
234 MOJO_WRITE_MESSAGE_FLAG_NONE)); 233 MOJO_WRITE_MESSAGE_FLAG_NONE));
235 234
236 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 235 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context));
237 EXPECT_EQ(456u, context); 236 EXPECT_EQ(456u, context);
238 mp0->RemoveWaiter(0, &waiter); 237 mp0->RemoveWaiter(0, &waiter);
239 238
240 buffer_size = static_cast<uint32_t>(sizeof(buffer)); 239 buffer_size = static_cast<uint32_t>(sizeof(buffer));
241 EXPECT_EQ(MOJO_RESULT_OK, 240 EXPECT_EQ(MOJO_RESULT_OK,
242 mp0->ReadMessage(0, 241 mp0->ReadMessage(0, UserPointer<void>(buffer),
243 buffer, &buffer_size, 242 MakeUserPointer(&buffer_size), NULL, NULL,
244 NULL, NULL,
245 MOJO_READ_MESSAGE_FLAG_NONE)); 243 MOJO_READ_MESSAGE_FLAG_NONE));
246 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(buffer_size)); 244 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(buffer_size));
247 EXPECT_STREQ(kWorld, buffer); 245 EXPECT_STREQ(kWorld, buffer);
248 246
249 // Close MP 0, port 0. 247 // Close MP 0, port 0.
250 mp0->Close(0); 248 mp0->Close(0);
251 249
252 // Try to wait for MP 1, port 1 to become readable. This will eventually fail 250 // Try to wait for MP 1, port 1 to become readable. This will eventually fail
253 // when it realizes that MP 0, port 0 has been closed. (It may also fail 251 // when it realizes that MP 0, port 0 has been closed. (It may also fail
254 // immediately.) 252 // immediately.)
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 NULL, 306 NULL,
309 MOJO_WRITE_MESSAGE_FLAG_NONE)); 307 MOJO_WRITE_MESSAGE_FLAG_NONE));
310 308
311 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 309 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context));
312 EXPECT_EQ(789u, context); 310 EXPECT_EQ(789u, context);
313 mp3->RemoveWaiter(1, &waiter); 311 mp3->RemoveWaiter(1, &waiter);
314 312
315 // Make sure there's nothing on MP 0, port 0 or MP 1, port 1 or MP 2, port 0. 313 // Make sure there's nothing on MP 0, port 0 or MP 1, port 1 or MP 2, port 0.
316 buffer_size = static_cast<uint32_t>(sizeof(buffer)); 314 buffer_size = static_cast<uint32_t>(sizeof(buffer));
317 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, 315 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT,
318 mp0->ReadMessage(0, 316 mp0->ReadMessage(0, UserPointer<void>(buffer),
319 buffer, &buffer_size, 317 MakeUserPointer(&buffer_size), NULL, NULL,
320 NULL, NULL,
321 MOJO_READ_MESSAGE_FLAG_NONE)); 318 MOJO_READ_MESSAGE_FLAG_NONE));
322 buffer_size = static_cast<uint32_t>(sizeof(buffer)); 319 buffer_size = static_cast<uint32_t>(sizeof(buffer));
323 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, 320 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT,
324 mp1->ReadMessage(1, 321 mp1->ReadMessage(1, UserPointer<void>(buffer),
325 buffer, &buffer_size, 322 MakeUserPointer(&buffer_size), NULL, NULL,
326 NULL, NULL,
327 MOJO_READ_MESSAGE_FLAG_NONE)); 323 MOJO_READ_MESSAGE_FLAG_NONE));
328 buffer_size = static_cast<uint32_t>(sizeof(buffer)); 324 buffer_size = static_cast<uint32_t>(sizeof(buffer));
329 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, 325 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT,
330 mp2->ReadMessage(0, 326 mp2->ReadMessage(0, UserPointer<void>(buffer),
331 buffer, &buffer_size, 327 MakeUserPointer(&buffer_size), NULL, NULL,
332 NULL, NULL,
333 MOJO_READ_MESSAGE_FLAG_NONE)); 328 MOJO_READ_MESSAGE_FLAG_NONE));
334 329
335 // Read from MP 3, port 1. 330 // Read from MP 3, port 1.
336 buffer_size = static_cast<uint32_t>(sizeof(buffer)); 331 buffer_size = static_cast<uint32_t>(sizeof(buffer));
337 EXPECT_EQ(MOJO_RESULT_OK, 332 EXPECT_EQ(MOJO_RESULT_OK,
338 mp3->ReadMessage(1, 333 mp3->ReadMessage(1, UserPointer<void>(buffer),
339 buffer, &buffer_size, 334 MakeUserPointer(&buffer_size), NULL, NULL,
340 NULL, NULL,
341 MOJO_READ_MESSAGE_FLAG_NONE)); 335 MOJO_READ_MESSAGE_FLAG_NONE));
342 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(buffer_size)); 336 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(buffer_size));
343 EXPECT_STREQ(kHello, buffer); 337 EXPECT_STREQ(kHello, buffer);
344 338
345 // Write: MP 0, port 0 -> MP 1, port 1 again. 339 // Write: MP 0, port 0 -> MP 1, port 1 again.
346 340
347 waiter.Init(); 341 waiter.Init();
348 ASSERT_EQ(MOJO_RESULT_OK, 342 ASSERT_EQ(MOJO_RESULT_OK,
349 mp1->AddWaiter(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 123)); 343 mp1->AddWaiter(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 123));
350 344
351 EXPECT_EQ(MOJO_RESULT_OK, 345 EXPECT_EQ(MOJO_RESULT_OK,
352 mp0->WriteMessage(0, 346 mp0->WriteMessage(0,
353 kWorld, sizeof(kWorld), 347 kWorld, sizeof(kWorld),
354 NULL, 348 NULL,
355 MOJO_WRITE_MESSAGE_FLAG_NONE)); 349 MOJO_WRITE_MESSAGE_FLAG_NONE));
356 350
357 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 351 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context));
358 EXPECT_EQ(123u, context); 352 EXPECT_EQ(123u, context);
359 mp1->RemoveWaiter(1, &waiter); 353 mp1->RemoveWaiter(1, &waiter);
360 354
361 // Make sure there's nothing on the other ports. 355 // Make sure there's nothing on the other ports.
362 buffer_size = static_cast<uint32_t>(sizeof(buffer)); 356 buffer_size = static_cast<uint32_t>(sizeof(buffer));
363 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, 357 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT,
364 mp0->ReadMessage(0, 358 mp0->ReadMessage(0, UserPointer<void>(buffer),
365 buffer, &buffer_size, 359 MakeUserPointer(&buffer_size), NULL, NULL,
366 NULL, NULL,
367 MOJO_READ_MESSAGE_FLAG_NONE)); 360 MOJO_READ_MESSAGE_FLAG_NONE));
368 buffer_size = static_cast<uint32_t>(sizeof(buffer)); 361 buffer_size = static_cast<uint32_t>(sizeof(buffer));
369 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, 362 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT,
370 mp2->ReadMessage(0, 363 mp2->ReadMessage(0, UserPointer<void>(buffer),
371 buffer, &buffer_size, 364 MakeUserPointer(&buffer_size), NULL, NULL,
372 NULL, NULL,
373 MOJO_READ_MESSAGE_FLAG_NONE)); 365 MOJO_READ_MESSAGE_FLAG_NONE));
374 buffer_size = static_cast<uint32_t>(sizeof(buffer)); 366 buffer_size = static_cast<uint32_t>(sizeof(buffer));
375 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, 367 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT,
376 mp3->ReadMessage(1, 368 mp3->ReadMessage(1, UserPointer<void>(buffer),
377 buffer, &buffer_size, 369 MakeUserPointer(&buffer_size), NULL, NULL,
378 NULL, NULL,
379 MOJO_READ_MESSAGE_FLAG_NONE)); 370 MOJO_READ_MESSAGE_FLAG_NONE));
380 371
381 buffer_size = static_cast<uint32_t>(sizeof(buffer)); 372 buffer_size = static_cast<uint32_t>(sizeof(buffer));
382 EXPECT_EQ(MOJO_RESULT_OK, 373 EXPECT_EQ(MOJO_RESULT_OK,
383 mp1->ReadMessage(1, 374 mp1->ReadMessage(1, UserPointer<void>(buffer),
384 buffer, &buffer_size, 375 MakeUserPointer(&buffer_size), NULL, NULL,
385 NULL, NULL,
386 MOJO_READ_MESSAGE_FLAG_NONE)); 376 MOJO_READ_MESSAGE_FLAG_NONE));
387 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(buffer_size)); 377 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(buffer_size));
388 EXPECT_STREQ(kWorld, buffer); 378 EXPECT_STREQ(kWorld, buffer);
389 379
390 mp0->Close(0); 380 mp0->Close(0);
391 mp1->Close(1); 381 mp1->Close(1);
392 mp2->Close(0); 382 mp2->Close(0);
393 mp3->Close(1); 383 mp3->Close(1);
394 } 384 }
395 385
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 423
434 BootstrapMessagePipeNoWait(1, mp1); 424 BootstrapMessagePipeNoWait(1, mp1);
435 425
436 // Wait. 426 // Wait.
437 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 427 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context));
438 EXPECT_EQ(123u, context); 428 EXPECT_EQ(123u, context);
439 mp1->RemoveWaiter(1, &waiter); 429 mp1->RemoveWaiter(1, &waiter);
440 430
441 // Read from MP 1, port 1. 431 // Read from MP 1, port 1.
442 EXPECT_EQ(MOJO_RESULT_OK, 432 EXPECT_EQ(MOJO_RESULT_OK,
443 mp1->ReadMessage(1, 433 mp1->ReadMessage(1, UserPointer<void>(buffer),
444 buffer, &buffer_size, 434 MakeUserPointer(&buffer_size), NULL, NULL,
445 NULL, NULL,
446 MOJO_READ_MESSAGE_FLAG_NONE)); 435 MOJO_READ_MESSAGE_FLAG_NONE));
447 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(buffer_size)); 436 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(buffer_size));
448 EXPECT_STREQ(kHello, buffer); 437 EXPECT_STREQ(kHello, buffer);
449 438
450 // And MP 1, port 1. 439 // And MP 1, port 1.
451 mp1->Close(1); 440 mp1->Close(1);
452 } 441 }
453 442
454 TEST_F(RemoteMessagePipeTest, HandlePassing) { 443 TEST_F(RemoteMessagePipeTest, HandlePassing) {
455 static const char kHello[] = "hello"; 444 static const char kHello[] = "hello";
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 488 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context));
500 EXPECT_EQ(123u, context); 489 EXPECT_EQ(123u, context);
501 mp1->RemoveWaiter(1, &waiter); 490 mp1->RemoveWaiter(1, &waiter);
502 491
503 // Read from MP 1, port 1. 492 // Read from MP 1, port 1.
504 char read_buffer[100] = { 0 }; 493 char read_buffer[100] = { 0 };
505 uint32_t read_buffer_size = static_cast<uint32_t>(sizeof(read_buffer)); 494 uint32_t read_buffer_size = static_cast<uint32_t>(sizeof(read_buffer));
506 DispatcherVector read_dispatchers; 495 DispatcherVector read_dispatchers;
507 uint32_t read_num_dispatchers = 10; // Maximum to get. 496 uint32_t read_num_dispatchers = 10; // Maximum to get.
508 EXPECT_EQ(MOJO_RESULT_OK, 497 EXPECT_EQ(MOJO_RESULT_OK,
509 mp1->ReadMessage(1, read_buffer, &read_buffer_size, 498 mp1->ReadMessage(1, UserPointer<void>(read_buffer),
499 MakeUserPointer(&read_buffer_size),
510 &read_dispatchers, &read_num_dispatchers, 500 &read_dispatchers, &read_num_dispatchers,
511 MOJO_READ_MESSAGE_FLAG_NONE)); 501 MOJO_READ_MESSAGE_FLAG_NONE));
512 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); 502 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size));
513 EXPECT_STREQ(kHello, read_buffer); 503 EXPECT_STREQ(kHello, read_buffer);
514 EXPECT_EQ(1u, read_dispatchers.size()); 504 EXPECT_EQ(1u, read_dispatchers.size());
515 EXPECT_EQ(1u, read_num_dispatchers); 505 EXPECT_EQ(1u, read_num_dispatchers);
516 ASSERT_TRUE(read_dispatchers[0]); 506 ASSERT_TRUE(read_dispatchers[0]);
517 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); 507 EXPECT_TRUE(read_dispatchers[0]->HasOneRef());
518 508
519 EXPECT_EQ(Dispatcher::kTypeMessagePipe, read_dispatchers[0]->GetType()); 509 EXPECT_EQ(Dispatcher::kTypeMessagePipe, read_dispatchers[0]->GetType());
(...skipping 14 matching lines...) Expand all
534 524
535 // Wait for the dispatcher to become readable. 525 // Wait for the dispatcher to become readable.
536 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 526 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context));
537 EXPECT_EQ(456u, context); 527 EXPECT_EQ(456u, context);
538 dispatcher->RemoveWaiter(&waiter); 528 dispatcher->RemoveWaiter(&waiter);
539 529
540 // Read from the dispatcher. 530 // Read from the dispatcher.
541 memset(read_buffer, 0, sizeof(read_buffer)); 531 memset(read_buffer, 0, sizeof(read_buffer));
542 read_buffer_size = static_cast<uint32_t>(sizeof(read_buffer)); 532 read_buffer_size = static_cast<uint32_t>(sizeof(read_buffer));
543 EXPECT_EQ(MOJO_RESULT_OK, 533 EXPECT_EQ(MOJO_RESULT_OK,
544 dispatcher->ReadMessage(read_buffer, &read_buffer_size, 0, NULL, 534 dispatcher->ReadMessage(UserPointer<void>(read_buffer),
535 MakeUserPointer(&read_buffer_size), 0, NULL,
545 MOJO_READ_MESSAGE_FLAG_NONE)); 536 MOJO_READ_MESSAGE_FLAG_NONE));
546 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); 537 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size));
547 EXPECT_STREQ(kHello, read_buffer); 538 EXPECT_STREQ(kHello, read_buffer);
548 539
549 // Prepare to wait on "local_mp", port 1. 540 // Prepare to wait on "local_mp", port 1.
550 waiter.Init(); 541 waiter.Init();
551 ASSERT_EQ(MOJO_RESULT_OK, 542 ASSERT_EQ(MOJO_RESULT_OK,
552 local_mp->AddWaiter(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 789)); 543 local_mp->AddWaiter(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 789));
553 544
554 // Write to the dispatcher. 545 // Write to the dispatcher.
555 EXPECT_EQ(MOJO_RESULT_OK, 546 EXPECT_EQ(MOJO_RESULT_OK,
556 dispatcher->WriteMessage(kHello, sizeof(kHello), NULL, 547 dispatcher->WriteMessage(kHello, sizeof(kHello), NULL,
557 MOJO_WRITE_MESSAGE_FLAG_NONE)); 548 MOJO_WRITE_MESSAGE_FLAG_NONE));
558 549
559 // Wait. 550 // Wait.
560 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 551 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context));
561 EXPECT_EQ(789u, context); 552 EXPECT_EQ(789u, context);
562 local_mp->RemoveWaiter(1, &waiter); 553 local_mp->RemoveWaiter(1, &waiter);
563 554
564 // Read from "local_mp", port 1. 555 // Read from "local_mp", port 1.
565 memset(read_buffer, 0, sizeof(read_buffer)); 556 memset(read_buffer, 0, sizeof(read_buffer));
566 read_buffer_size = static_cast<uint32_t>(sizeof(read_buffer)); 557 read_buffer_size = static_cast<uint32_t>(sizeof(read_buffer));
567 EXPECT_EQ(MOJO_RESULT_OK, 558 EXPECT_EQ(MOJO_RESULT_OK,
568 local_mp->ReadMessage(1, read_buffer, &read_buffer_size, NULL, NULL, 559 local_mp->ReadMessage(1, UserPointer<void>(read_buffer),
569 MOJO_READ_MESSAGE_FLAG_NONE)); 560 MakeUserPointer(&read_buffer_size), NULL,
561 NULL, MOJO_READ_MESSAGE_FLAG_NONE));
570 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); 562 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size));
571 EXPECT_STREQ(kHello, read_buffer); 563 EXPECT_STREQ(kHello, read_buffer);
572 564
573 // TODO(vtl): Also test that messages queued up before the handle was sent are 565 // TODO(vtl): Also test that messages queued up before the handle was sent are
574 // delivered properly. 566 // delivered properly.
575 567
576 // Close everything that belongs to us. 568 // Close everything that belongs to us.
577 mp0->Close(0); 569 mp0->Close(0);
578 mp1->Close(1); 570 mp1->Close(1);
579 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); 571 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close());
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
649 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 641 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context));
650 EXPECT_EQ(123u, context); 642 EXPECT_EQ(123u, context);
651 mp1->RemoveWaiter(1, &waiter); 643 mp1->RemoveWaiter(1, &waiter);
652 644
653 // Read from MP 1, port 1. 645 // Read from MP 1, port 1.
654 char read_buffer[100] = { 0 }; 646 char read_buffer[100] = { 0 };
655 uint32_t read_buffer_size = static_cast<uint32_t>(sizeof(read_buffer)); 647 uint32_t read_buffer_size = static_cast<uint32_t>(sizeof(read_buffer));
656 DispatcherVector read_dispatchers; 648 DispatcherVector read_dispatchers;
657 uint32_t read_num_dispatchers = 10; // Maximum to get. 649 uint32_t read_num_dispatchers = 10; // Maximum to get.
658 EXPECT_EQ(MOJO_RESULT_OK, 650 EXPECT_EQ(MOJO_RESULT_OK,
659 mp1->ReadMessage(1, read_buffer, &read_buffer_size, 651 mp1->ReadMessage(1, UserPointer<void>(read_buffer),
652 MakeUserPointer(&read_buffer_size),
660 &read_dispatchers, &read_num_dispatchers, 653 &read_dispatchers, &read_num_dispatchers,
661 MOJO_READ_MESSAGE_FLAG_NONE)); 654 MOJO_READ_MESSAGE_FLAG_NONE));
662 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); 655 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size));
663 EXPECT_STREQ(kHello, read_buffer); 656 EXPECT_STREQ(kHello, read_buffer);
664 EXPECT_EQ(1u, read_dispatchers.size()); 657 EXPECT_EQ(1u, read_dispatchers.size());
665 EXPECT_EQ(1u, read_num_dispatchers); 658 EXPECT_EQ(1u, read_num_dispatchers);
666 ASSERT_TRUE(read_dispatchers[0]); 659 ASSERT_TRUE(read_dispatchers[0]);
667 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); 660 EXPECT_TRUE(read_dispatchers[0]->HasOneRef());
668 661
669 EXPECT_EQ(Dispatcher::kTypeSharedBuffer, read_dispatchers[0]->GetType()); 662 EXPECT_EQ(Dispatcher::kTypeSharedBuffer, read_dispatchers[0]->GetType());
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
764 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 757 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context));
765 EXPECT_EQ(123u, context); 758 EXPECT_EQ(123u, context);
766 mp1->RemoveWaiter(1, &waiter); 759 mp1->RemoveWaiter(1, &waiter);
767 760
768 // Read from MP 1, port 1. 761 // Read from MP 1, port 1.
769 char read_buffer[100] = { 0 }; 762 char read_buffer[100] = { 0 };
770 uint32_t read_buffer_size = static_cast<uint32_t>(sizeof(read_buffer)); 763 uint32_t read_buffer_size = static_cast<uint32_t>(sizeof(read_buffer));
771 DispatcherVector read_dispatchers; 764 DispatcherVector read_dispatchers;
772 uint32_t read_num_dispatchers = 10; // Maximum to get. 765 uint32_t read_num_dispatchers = 10; // Maximum to get.
773 EXPECT_EQ(MOJO_RESULT_OK, 766 EXPECT_EQ(MOJO_RESULT_OK,
774 mp1->ReadMessage(1, read_buffer, &read_buffer_size, 767 mp1->ReadMessage(1, UserPointer<void>(read_buffer),
768 MakeUserPointer(&read_buffer_size),
775 &read_dispatchers, &read_num_dispatchers, 769 &read_dispatchers, &read_num_dispatchers,
776 MOJO_READ_MESSAGE_FLAG_NONE)); 770 MOJO_READ_MESSAGE_FLAG_NONE));
777 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(read_buffer_size)); 771 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(read_buffer_size));
778 EXPECT_STREQ(kWorld, read_buffer); 772 EXPECT_STREQ(kWorld, read_buffer);
779 EXPECT_EQ(1u, read_dispatchers.size()); 773 EXPECT_EQ(1u, read_dispatchers.size());
780 EXPECT_EQ(1u, read_num_dispatchers); 774 EXPECT_EQ(1u, read_num_dispatchers);
781 ASSERT_TRUE(read_dispatchers[0]); 775 ASSERT_TRUE(read_dispatchers[0]);
782 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); 776 EXPECT_TRUE(read_dispatchers[0]->HasOneRef());
783 777
784 EXPECT_EQ(Dispatcher::kTypePlatformHandle, read_dispatchers[0]->GetType()); 778 EXPECT_EQ(Dispatcher::kTypePlatformHandle, read_dispatchers[0]->GetType());
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 835
842 mp1->Close(1); 836 mp1->Close(1);
843 837
844 RestoreInitialState(); 838 RestoreInitialState();
845 } 839 }
846 } 840 }
847 841
848 } // namespace 842 } // namespace
849 } // namespace system 843 } // namespace system
850 } // namespace mojo 844 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/system/multiprocess_message_pipe_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698