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

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

Issue 694463002: Revert of Update mojo sdk to rev e083961bf11fd0c94d40be8853761da529b6d444 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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/system/channel_endpoint.cc ('k') | mojo/public/BUILD.gn » ('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 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 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 MOJO_READ_MESSAGE_FLAG_NONE)); 472 MOJO_READ_MESSAGE_FLAG_NONE));
473 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(buffer_size)); 473 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(buffer_size));
474 EXPECT_STREQ(kWorld, buffer); 474 EXPECT_STREQ(kWorld, buffer);
475 475
476 mp0->Close(0); 476 mp0->Close(0);
477 mp1->Close(1); 477 mp1->Close(1);
478 mp2->Close(0); 478 mp2->Close(0);
479 mp3->Close(0); 479 mp3->Close(0);
480 } 480 }
481 481
482 TEST_F(RemoteMessagePipeTest, CloseBeforeAttachAndRun) {
483 static const char kHello[] = "hello";
484 char buffer[100] = {0};
485 uint32_t buffer_size = static_cast<uint32_t>(sizeof(buffer));
486 Waiter waiter;
487 HandleSignalsState hss;
488 uint32_t context = 0;
489
490 // Connect message pipes. MP 0, port 1 will be attached to channel 0 and
491 // connected to MP 1, port 0, which will be attached to channel 1. This leaves
492 // MP 0, port 0 and MP 1, port 1 as the "user-facing" endpoints.
493
494 scoped_refptr<ChannelEndpoint> ep0;
495 scoped_refptr<MessagePipe> mp0(MessagePipe::CreateLocalProxy(&ep0));
496
497 // Write to MP 0, port 0.
498 EXPECT_EQ(MOJO_RESULT_OK,
499 mp0->WriteMessage(0,
500 UserPointer<const void>(kHello),
501 sizeof(kHello),
502 nullptr,
503 MOJO_WRITE_MESSAGE_FLAG_NONE));
504
505 // Close MP 0, port 0 before it's even been attached to the channel and run.
506 mp0->Close(0);
507
508 BootstrapChannelEndpointNoWait(0, ep0);
509
510 scoped_refptr<ChannelEndpoint> ep1;
511 scoped_refptr<MessagePipe> mp1(MessagePipe::CreateProxyLocal(&ep1));
512
513 // Prepare to wait on MP 1, port 1. (Add the waiter now. Otherwise, if we do
514 // it later, it might already be readable.)
515 waiter.Init();
516 ASSERT_EQ(
517 MOJO_RESULT_OK,
518 mp1->AddWaiter(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 123, nullptr));
519
520 BootstrapChannelEndpointNoWait(1, ep1);
521
522 // Wait.
523 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context));
524 EXPECT_EQ(123u, context);
525 hss = HandleSignalsState();
526 // Note: MP 1, port 1 should definitely should be readable, but it may or may
527 // not appear as writable (there's a race, and it may not have noticed that
528 // the other side was closed yet -- e.g., inserting a sleep here would make it
529 // much more likely to notice that it's no longer writable).
530 mp1->RemoveWaiter(1, &waiter, &hss);
531 EXPECT_TRUE((hss.satisfied_signals & MOJO_HANDLE_SIGNAL_READABLE));
532 EXPECT_TRUE((hss.satisfiable_signals & MOJO_HANDLE_SIGNAL_READABLE));
533
534 // Read from MP 1, port 1.
535 EXPECT_EQ(MOJO_RESULT_OK,
536 mp1->ReadMessage(1,
537 UserPointer<void>(buffer),
538 MakeUserPointer(&buffer_size),
539 nullptr,
540 nullptr,
541 MOJO_READ_MESSAGE_FLAG_NONE));
542 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(buffer_size));
543 EXPECT_STREQ(kHello, buffer);
544
545 // And MP 1, port 1.
546 mp1->Close(1);
547 }
548
549 TEST_F(RemoteMessagePipeTest, CloseBeforeConnect) { 482 TEST_F(RemoteMessagePipeTest, CloseBeforeConnect) {
550 static const char kHello[] = "hello"; 483 static const char kHello[] = "hello";
551 char buffer[100] = {0}; 484 char buffer[100] = {0};
552 uint32_t buffer_size = static_cast<uint32_t>(sizeof(buffer)); 485 uint32_t buffer_size = static_cast<uint32_t>(sizeof(buffer));
553 Waiter waiter; 486 Waiter waiter;
554 HandleSignalsState hss; 487 HandleSignalsState hss;
555 uint32_t context = 0; 488 uint32_t context = 0;
556 489
557 // Connect message pipes. MP 0, port 1 will be attached to channel 0 and 490 // Connect message pipes. MP 0, port 1 will be attached to channel 0 and
558 // connected to MP 1, port 0, which will be attached to channel 1. This leaves 491 // connected to MP 1, port 0, which will be attached to channel 1. This leaves
(...skipping 729 matching lines...) Expand 10 before | Expand all | Expand 10 after
1288 mp0->Close(0); 1221 mp0->Close(0);
1289 mp1->Close(1); 1222 mp1->Close(1);
1290 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); 1223 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close());
1291 // Note that |local_mp|'s port 0 belong to |dispatcher|, which was closed. 1224 // Note that |local_mp|'s port 0 belong to |dispatcher|, which was closed.
1292 local_mp->Close(1); 1225 local_mp->Close(1);
1293 } 1226 }
1294 1227
1295 } // namespace 1228 } // namespace
1296 } // namespace system 1229 } // namespace system
1297 } // namespace mojo 1230 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/edk/system/channel_endpoint.cc ('k') | mojo/public/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698