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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: mojo/edk/system/ports/ports_unittest.cc
diff --git a/mojo/edk/system/ports/ports_unittest.cc b/mojo/edk/system/ports/ports_unittest.cc
index 95e2a630af8195044fcffdc8b92cb149f1b5c6ea..60246ad81e95ef13ad7c06a3016ca6ad805f5b5d 100644
--- a/mojo/edk/system/ports/ports_unittest.cc
+++ b/mojo/edk/system/ports/ports_unittest.cc
@@ -690,32 +690,12 @@ TEST_F(PortsTest, SendUninitialized) {
Node node0(node0_name, &node0_delegate);
node_map[0] = &node0;
- NodeName node1_name(1, 1);
- TestNodeDelegate node1_delegate(node1_name);
- Node node1(node1_name, &node1_delegate);
- node_map[1] = &node1;
-
- // Begin to setup a pipe between node0 and node1, but don't initialize either
- // endpoint.
- PortRef x0, x1;
+ PortRef x0;
EXPECT_EQ(OK, node0.CreateUninitializedPort(&x0));
- EXPECT_EQ(OK, node1.CreateUninitializedPort(&x1));
-
- node0_delegate.set_save_messages(true);
- node1_delegate.set_save_messages(true);
-
- // Send a message on each port and expect neither to arrive yet.
-
EXPECT_EQ(ERROR_PORT_STATE_UNEXPECTED,
SendStringMessage(&node0, x0, "oops"));
- EXPECT_EQ(ERROR_PORT_STATE_UNEXPECTED,
- SendStringMessage(&node1, x1, "oh well"));
-
EXPECT_EQ(OK, node0.ClosePort(x0));
- EXPECT_EQ(OK, node1.ClosePort(x1));
-
EXPECT_TRUE(node0.CanShutdownCleanly(false));
- EXPECT_TRUE(node1.CanShutdownCleanly(false));
}
TEST_F(PortsTest, SendFailure) {
@@ -1068,6 +1048,52 @@ TEST_F(PortsTest, SendWithClosedPeerSent) {
EXPECT_TRUE(node0.CanShutdownCleanly(false));
}
+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
+ NodeName node0_name(0, 1);
+ TestNodeDelegate node0_delegate(node0_name);
+ Node node0(node0_name, &node0_delegate);
+ node_map[0] = &node0;
+
+ NodeName node1_name(1, 1);
+ TestNodeDelegate node1_delegate(node1_name);
+ Node node1(node1_name, &node1_delegate);
+ node_map[1] = &node1;
+
+ // Setup two independent port pairs, A-B on node0 and C-D on node1.
+ PortRef A, B, C, D;
+ EXPECT_EQ(OK, node0.CreatePortPair(&A, &B));
+ EXPECT_EQ(OK, node1.CreatePortPair(&C, &D));
+
+ node0_delegate.set_read_messages(false);
+ node1_delegate.set_save_messages(true);
+
+ // Write a message on A.
+ EXPECT_EQ(OK, SendStringMessage(&node0, A, "hey"));
+
+ PumpTasks();
+
+ // Initiate a merge between B and C.
+ EXPECT_EQ(OK, node0.MergePorts(B, node1_name, C.name()));
+
+ PumpTasks();
+
+ // Expect only two receiving ports to be left after pumping tasks.
+ EXPECT_TRUE(node0.CanShutdownCleanly(true));
+ EXPECT_TRUE(node1.CanShutdownCleanly(true));
+
+ // Expect D to have received the message sent on A.
+ ScopedMessage message;
+ ASSERT_TRUE(node1_delegate.GetSavedMessage(&message));
+ EXPECT_EQ(0, strcmp("hey", ToString(message)));
+
+ EXPECT_EQ(OK, node0.ClosePort(A));
+ EXPECT_EQ(OK, node1.ClosePort(D));
+
+ // No more ports should be open.
+ EXPECT_TRUE(node0.CanShutdownCleanly(false));
+ EXPECT_TRUE(node1.CanShutdownCleanly(false));
+}
+
} // namespace test
} // namespace ports
} // namespace edk

Powered by Google App Engine
This is Rietveld 408576698