OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 <inttypes.h> | 5 #include <inttypes.h> |
6 #include <stdio.h> | 6 #include <stdio.h> |
7 #include <stdlib.h> | 7 #include <stdlib.h> |
8 #include <string.h> | 8 #include <string.h> |
9 | 9 |
10 #include <map> | 10 #include <map> |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 base::AutoLock lock(lock_); | 165 base::AutoLock lock(lock_); |
166 drop_messages_ = value; | 166 drop_messages_ = value; |
167 } | 167 } |
168 | 168 |
169 void set_save_messages(bool value) { | 169 void set_save_messages(bool value) { |
170 base::AutoLock lock(lock_); | 170 base::AutoLock lock(lock_); |
171 save_messages_ = value; | 171 save_messages_ = value; |
172 } | 172 } |
173 | 173 |
174 bool ReadMessage(const PortRef& port, ScopedMessage* message) { | 174 bool ReadMessage(const PortRef& port, ScopedMessage* message) { |
175 return node_.GetMessage(port, message) == OK && *message; | 175 return node_.GetMessage(port, message, nullptr) == OK && *message; |
176 } | 176 } |
177 | 177 |
178 bool GetSavedMessage(ScopedMessage* message) { | 178 bool GetSavedMessage(ScopedMessage* message) { |
179 base::AutoLock lock(lock_); | 179 base::AutoLock lock(lock_); |
180 if (saved_messages_.empty()) { | 180 if (saved_messages_.empty()) { |
181 message->reset(); | 181 message->reset(); |
182 return false; | 182 return false; |
183 } | 183 } |
184 std::swap(*message, saved_messages_.front()); | 184 std::swap(*message, saved_messages_.front()); |
185 saved_messages_.pop(); | 185 saved_messages_.pop(); |
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
574 WaitForIdle(); | 574 WaitForIdle(); |
575 | 575 |
576 node1.set_drop_messages(true); | 576 node1.set_drop_messages(true); |
577 | 577 |
578 RemoveNode(&node1); | 578 RemoveNode(&node1); |
579 | 579 |
580 WaitForIdle(); | 580 WaitForIdle(); |
581 | 581 |
582 // a0 should have eventually detected peer closure after node loss. | 582 // a0 should have eventually detected peer closure after node loss. |
583 ScopedMessage message; | 583 ScopedMessage message; |
584 EXPECT_EQ(ERROR_PORT_PEER_CLOSED, node0.node().GetMessage(a0, &message)); | 584 EXPECT_EQ(ERROR_PORT_PEER_CLOSED, |
| 585 node0.node().GetMessage(a0, &message, nullptr)); |
585 EXPECT_FALSE(message); | 586 EXPECT_FALSE(message); |
586 | 587 |
587 EXPECT_EQ(OK, node0.node().ClosePort(a0)); | 588 EXPECT_EQ(OK, node0.node().ClosePort(a0)); |
588 | 589 |
589 EXPECT_EQ(OK, node0.node().ClosePort(x0)); | 590 EXPECT_EQ(OK, node0.node().ClosePort(x0)); |
590 | 591 |
591 EXPECT_EQ(OK, node1.node().GetMessage(x1, &message)); | 592 EXPECT_EQ(OK, node1.node().GetMessage(x1, &message, nullptr)); |
592 EXPECT_TRUE(message); | 593 EXPECT_TRUE(message); |
593 node1.ClosePortsInMessage(message.get()); | 594 node1.ClosePortsInMessage(message.get()); |
594 | 595 |
595 EXPECT_EQ(OK, node1.node().ClosePort(x1)); | 596 EXPECT_EQ(OK, node1.node().ClosePort(x1)); |
596 | 597 |
597 WaitForIdle(); | 598 WaitForIdle(); |
598 | 599 |
599 EXPECT_TRUE(node0.node().CanShutdownCleanly()); | 600 EXPECT_TRUE(node0.node().CanShutdownCleanly()); |
600 EXPECT_TRUE(node1.node().CanShutdownCleanly()); | 601 EXPECT_TRUE(node1.node().CanShutdownCleanly()); |
601 } | 602 } |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
718 } | 719 } |
719 | 720 |
720 TEST_F(PortsTest, GetMessage1) { | 721 TEST_F(PortsTest, GetMessage1) { |
721 TestNode node(0); | 722 TestNode node(0); |
722 AddNode(&node); | 723 AddNode(&node); |
723 | 724 |
724 PortRef a0, a1; | 725 PortRef a0, a1; |
725 EXPECT_EQ(OK, node.node().CreatePortPair(&a0, &a1)); | 726 EXPECT_EQ(OK, node.node().CreatePortPair(&a0, &a1)); |
726 | 727 |
727 ScopedMessage message; | 728 ScopedMessage message; |
728 EXPECT_EQ(OK, node.node().GetMessage(a0, &message)); | 729 EXPECT_EQ(OK, node.node().GetMessage(a0, &message, nullptr)); |
729 EXPECT_FALSE(message); | 730 EXPECT_FALSE(message); |
730 | 731 |
731 EXPECT_EQ(OK, node.node().ClosePort(a1)); | 732 EXPECT_EQ(OK, node.node().ClosePort(a1)); |
732 | 733 |
733 WaitForIdle(); | 734 WaitForIdle(); |
734 | 735 |
735 EXPECT_EQ(ERROR_PORT_PEER_CLOSED, node.node().GetMessage(a0, &message)); | 736 EXPECT_EQ(ERROR_PORT_PEER_CLOSED, |
| 737 node.node().GetMessage(a0, &message, nullptr)); |
736 EXPECT_FALSE(message); | 738 EXPECT_FALSE(message); |
737 | 739 |
738 EXPECT_EQ(OK, node.node().ClosePort(a0)); | 740 EXPECT_EQ(OK, node.node().ClosePort(a0)); |
739 | 741 |
740 WaitForIdle(); | 742 WaitForIdle(); |
741 | 743 |
742 EXPECT_TRUE(node.node().CanShutdownCleanly()); | 744 EXPECT_TRUE(node.node().CanShutdownCleanly()); |
743 } | 745 } |
744 | 746 |
745 TEST_F(PortsTest, GetMessage2) { | 747 TEST_F(PortsTest, GetMessage2) { |
746 TestNode node(0); | 748 TestNode node(0); |
747 AddNode(&node); | 749 AddNode(&node); |
748 | 750 |
749 PortRef a0, a1; | 751 PortRef a0, a1; |
750 EXPECT_EQ(OK, node.node().CreatePortPair(&a0, &a1)); | 752 EXPECT_EQ(OK, node.node().CreatePortPair(&a0, &a1)); |
751 | 753 |
752 EXPECT_EQ(OK, node.SendStringMessage(a1, "1")); | 754 EXPECT_EQ(OK, node.SendStringMessage(a1, "1")); |
753 | 755 |
754 ScopedMessage message; | 756 ScopedMessage message; |
755 EXPECT_EQ(OK, node.node().GetMessage(a0, &message)); | 757 EXPECT_EQ(OK, node.node().GetMessage(a0, &message, nullptr)); |
756 | 758 |
757 ASSERT_TRUE(message); | 759 ASSERT_TRUE(message); |
758 EXPECT_TRUE(MessageEquals(message, "1")); | 760 EXPECT_TRUE(MessageEquals(message, "1")); |
759 | 761 |
760 EXPECT_EQ(OK, node.node().ClosePort(a0)); | 762 EXPECT_EQ(OK, node.node().ClosePort(a0)); |
761 EXPECT_EQ(OK, node.node().ClosePort(a1)); | 763 EXPECT_EQ(OK, node.node().ClosePort(a1)); |
762 | 764 |
763 EXPECT_TRUE(node.node().CanShutdownCleanly()); | 765 EXPECT_TRUE(node.node().CanShutdownCleanly()); |
764 } | 766 } |
765 | 767 |
766 TEST_F(PortsTest, GetMessage3) { | 768 TEST_F(PortsTest, GetMessage3) { |
767 TestNode node(0); | 769 TestNode node(0); |
768 AddNode(&node); | 770 AddNode(&node); |
769 | 771 |
770 PortRef a0, a1; | 772 PortRef a0, a1; |
771 EXPECT_EQ(OK, node.node().CreatePortPair(&a0, &a1)); | 773 EXPECT_EQ(OK, node.node().CreatePortPair(&a0, &a1)); |
772 | 774 |
773 const char* kStrings[] = { | 775 const char* kStrings[] = { |
774 "1", | 776 "1", |
775 "2", | 777 "2", |
776 "3" | 778 "3" |
777 }; | 779 }; |
778 | 780 |
779 for (size_t i = 0; i < sizeof(kStrings)/sizeof(kStrings[0]); ++i) | 781 for (size_t i = 0; i < sizeof(kStrings)/sizeof(kStrings[0]); ++i) |
780 EXPECT_EQ(OK, node.SendStringMessage(a1, kStrings[i])); | 782 EXPECT_EQ(OK, node.SendStringMessage(a1, kStrings[i])); |
781 | 783 |
782 ScopedMessage message; | 784 ScopedMessage message; |
783 for (size_t i = 0; i < sizeof(kStrings)/sizeof(kStrings[0]); ++i) { | 785 for (size_t i = 0; i < sizeof(kStrings)/sizeof(kStrings[0]); ++i) { |
784 EXPECT_EQ(OK, node.node().GetMessage(a0, &message)); | 786 EXPECT_EQ(OK, node.node().GetMessage(a0, &message, nullptr)); |
785 ASSERT_TRUE(message); | 787 ASSERT_TRUE(message); |
786 EXPECT_TRUE(MessageEquals(message, kStrings[i])); | 788 EXPECT_TRUE(MessageEquals(message, kStrings[i])); |
787 } | 789 } |
788 | 790 |
789 EXPECT_EQ(OK, node.node().ClosePort(a0)); | 791 EXPECT_EQ(OK, node.node().ClosePort(a0)); |
790 EXPECT_EQ(OK, node.node().ClosePort(a1)); | 792 EXPECT_EQ(OK, node.node().ClosePort(a1)); |
791 | 793 |
792 EXPECT_TRUE(node.node().CanShutdownCleanly()); | 794 EXPECT_TRUE(node.node().CanShutdownCleanly()); |
793 } | 795 } |
794 | 796 |
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1467 | 1469 |
1468 // Expect everything to have gone away. | 1470 // Expect everything to have gone away. |
1469 EXPECT_TRUE(node0.node().CanShutdownCleanly()); | 1471 EXPECT_TRUE(node0.node().CanShutdownCleanly()); |
1470 EXPECT_TRUE(node1.node().CanShutdownCleanly()); | 1472 EXPECT_TRUE(node1.node().CanShutdownCleanly()); |
1471 } | 1473 } |
1472 | 1474 |
1473 } // namespace test | 1475 } // namespace test |
1474 } // namespace ports | 1476 } // namespace ports |
1475 } // namespace edk | 1477 } // namespace edk |
1476 } // namespace mojo | 1478 } // namespace mojo |
OLD | NEW |