OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |