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

Side by Side Diff: mojo/edk/system/ports/ports_unittest.cc

Issue 1675603002: [mojo-edk] Simplify multiprocess pipe bootstrap (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 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 <stdio.h> 5 #include <stdio.h>
6 #include <stdlib.h> 6 #include <stdlib.h>
7 #include <string.h> 7 #include <string.h>
8 8
9 #include <map> 9 #include <map>
10 #include <queue> 10 #include <queue>
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 EXPECT_TRUE(node0.CanShutdownCleanly(false)); 683 EXPECT_TRUE(node0.CanShutdownCleanly(false));
684 EXPECT_TRUE(node1.CanShutdownCleanly(false)); 684 EXPECT_TRUE(node1.CanShutdownCleanly(false));
685 } 685 }
686 686
687 TEST_F(PortsTest, SendUninitialized) { 687 TEST_F(PortsTest, SendUninitialized) {
688 NodeName node0_name(0, 1); 688 NodeName node0_name(0, 1);
689 TestNodeDelegate node0_delegate(node0_name); 689 TestNodeDelegate node0_delegate(node0_name);
690 Node node0(node0_name, &node0_delegate); 690 Node node0(node0_name, &node0_delegate);
691 node_map[0] = &node0; 691 node_map[0] = &node0;
692 692
693 NodeName node1_name(1, 1); 693 PortRef x0;
694 TestNodeDelegate node1_delegate(node1_name);
695 Node node1(node1_name, &node1_delegate);
696 node_map[1] = &node1;
697
698 // Begin to setup a pipe between node0 and node1, but don't initialize either
699 // endpoint.
700 PortRef x0, x1;
701 EXPECT_EQ(OK, node0.CreateUninitializedPort(&x0)); 694 EXPECT_EQ(OK, node0.CreateUninitializedPort(&x0));
702 EXPECT_EQ(OK, node1.CreateUninitializedPort(&x1));
703
704 node0_delegate.set_save_messages(true);
705 node1_delegate.set_save_messages(true);
706
707 // Send a message on each port and expect neither to arrive yet.
708
709 EXPECT_EQ(ERROR_PORT_STATE_UNEXPECTED, 695 EXPECT_EQ(ERROR_PORT_STATE_UNEXPECTED,
710 SendStringMessage(&node0, x0, "oops")); 696 SendStringMessage(&node0, x0, "oops"));
711 EXPECT_EQ(ERROR_PORT_STATE_UNEXPECTED,
712 SendStringMessage(&node1, x1, "oh well"));
713
714 EXPECT_EQ(OK, node0.ClosePort(x0)); 697 EXPECT_EQ(OK, node0.ClosePort(x0));
715 EXPECT_EQ(OK, node1.ClosePort(x1));
716
717 EXPECT_TRUE(node0.CanShutdownCleanly(false)); 698 EXPECT_TRUE(node0.CanShutdownCleanly(false));
718 EXPECT_TRUE(node1.CanShutdownCleanly(false));
719 } 699 }
720 700
721 TEST_F(PortsTest, SendFailure) { 701 TEST_F(PortsTest, SendFailure) {
722 NodeName node0_name(0, 1); 702 NodeName node0_name(0, 1);
723 TestNodeDelegate node0_delegate(node0_name); 703 TestNodeDelegate node0_delegate(node0_name);
724 Node node0(node0_name, &node0_delegate); 704 Node node0(node0_name, &node0_delegate);
725 node_map[0] = &node0; 705 node_map[0] = &node0;
726 706
727 node0_delegate.set_save_messages(true); 707 node0_delegate.set_save_messages(true);
728 708
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
1061 EXPECT_FALSE(status.has_messages); 1041 EXPECT_FALSE(status.has_messages);
1062 EXPECT_TRUE(status.peer_closed); 1042 EXPECT_TRUE(status.peer_closed);
1063 1043
1064 node0.ClosePort(E); 1044 node0.ClosePort(E);
1065 1045
1066 PumpTasks(); 1046 PumpTasks();
1067 1047
1068 EXPECT_TRUE(node0.CanShutdownCleanly(false)); 1048 EXPECT_TRUE(node0.CanShutdownCleanly(false));
1069 } 1049 }
1070 1050
1051 TEST_F(PortsTest, MergePorts1) {
darin (slow to review) 2016/02/05 17:46:45 any other cases worth testing here? like error cas
Ken Rockot(use gerrit already) 2016/02/05 19:43:05 several new tests added
1052 NodeName node0_name(0, 1);
1053 TestNodeDelegate node0_delegate(node0_name);
1054 Node node0(node0_name, &node0_delegate);
1055 node_map[0] = &node0;
1056
1057 NodeName node1_name(1, 1);
1058 TestNodeDelegate node1_delegate(node1_name);
1059 Node node1(node1_name, &node1_delegate);
1060 node_map[1] = &node1;
1061
1062 // Setup two independent port pairs, A-B on node0 and C-D on node1.
1063 PortRef A, B, C, D;
1064 EXPECT_EQ(OK, node0.CreatePortPair(&A, &B));
1065 EXPECT_EQ(OK, node1.CreatePortPair(&C, &D));
1066
1067 node0_delegate.set_read_messages(false);
1068 node1_delegate.set_save_messages(true);
1069
1070 // Write a message on A.
1071 EXPECT_EQ(OK, SendStringMessage(&node0, A, "hey"));
1072
1073 PumpTasks();
1074
1075 // Initiate a merge between B and C.
1076 EXPECT_EQ(OK, node0.MergePorts(B, node1_name, C.name()));
1077
1078 PumpTasks();
1079
1080 // Expect only two receiving ports to be left after pumping tasks.
1081 EXPECT_TRUE(node0.CanShutdownCleanly(true));
1082 EXPECT_TRUE(node1.CanShutdownCleanly(true));
1083
1084 // Expect D to have received the message sent on A.
1085 ScopedMessage message;
1086 ASSERT_TRUE(node1_delegate.GetSavedMessage(&message));
1087 EXPECT_EQ(0, strcmp("hey", ToString(message)));
1088
1089 EXPECT_EQ(OK, node0.ClosePort(A));
1090 EXPECT_EQ(OK, node1.ClosePort(D));
1091
1092 // No more ports should be open.
1093 EXPECT_TRUE(node0.CanShutdownCleanly(false));
1094 EXPECT_TRUE(node1.CanShutdownCleanly(false));
1095 }
1096
1071 } // namespace test 1097 } // namespace test
1072 } // namespace ports 1098 } // namespace ports
1073 } // namespace edk 1099 } // namespace edk
1074 } // namespace mojo 1100 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698