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

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

Issue 1687093002: [mojo-edk] Bring most tests back up on Android (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
« no previous file with comments | « mojo/edk/system/message_pipe_unittest.cc ('k') | mojo/edk/system/shared_buffer_unittest.cc » ('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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 #include <stdio.h> 7 #include <stdio.h>
8 #include <string.h> 8 #include <string.h>
9 9
10 #include <string> 10 #include <string>
(...skipping 754 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 h) { 765 h) {
766 for (;;) { 766 for (;;) {
767 std::string message = ReadMessage(h); 767 std::string message = ReadMessage(h);
768 if (message == "exit") 768 if (message == "exit")
769 break; 769 break;
770 WriteMessage(h, message); 770 WriteMessage(h, message);
771 } 771 }
772 return 0; 772 return 0;
773 } 773 }
774 774
775 TEST_F(MultiprocessMessagePipeTest, MultiprocessChannelPipe) { 775 #if defined(OS_ANDROID)
776 // Android multi-process tests are not executing the new process. This is flaky.
777 #define MAYBE_MultiprocessChannelPipe DISABLED_MultiprocessChannelPipe
778 #else
779 #define MAYBE_MultiprocessChannelPipe MultiprocessChannelPipe
780 #endif
781 TEST_F(MultiprocessMessagePipeTest, MAYBE_MultiprocessChannelPipe) {
776 RUN_CHILD_ON_PIPE(ChannelEchoClient, h) 782 RUN_CHILD_ON_PIPE(ChannelEchoClient, h)
777 VerifyEcho(h, "in an interstellar burst"); 783 VerifyEcho(h, "in an interstellar burst");
778 VerifyEcho(h, "i am back to save the universe"); 784 VerifyEcho(h, "i am back to save the universe");
779 VerifyEcho(h, std::string(10 * 1024 * 1024, 'o')); 785 VerifyEcho(h, std::string(10 * 1024 * 1024, 'o'));
780 786
781 WriteMessage(h, "exit"); 787 WriteMessage(h, "exit");
782 END_CHILD() 788 END_CHILD()
783 } 789 }
784 790
785 // Receives a pipe handle from the primordial channel and echos on it until 791 // Receives a pipe handle from the primordial channel and echos on it until
786 // "exit". Used to test simple pipe transfer across processes via channels. 792 // "exit". Used to test simple pipe transfer across processes via channels.
787 DEFINE_TEST_CLIENT_WITH_PIPE(EchoServiceClient, MultiprocessMessagePipeTest, 793 DEFINE_TEST_CLIENT_WITH_PIPE(EchoServiceClient, MultiprocessMessagePipeTest,
788 h) { 794 h) {
789 MojoHandle p; 795 MojoHandle p;
790 ReadMessageWithHandles(h, &p, 1); 796 ReadMessageWithHandles(h, &p, 1);
791 for (;;) { 797 for (;;) {
792 std::string message = ReadMessage(p); 798 std::string message = ReadMessage(p);
793 if (message == "exit") 799 if (message == "exit")
794 break; 800 break;
795 WriteMessage(p, message); 801 WriteMessage(p, message);
796 } 802 }
797 return 0; 803 return 0;
798 } 804 }
799 805
800 TEST_F(MultiprocessMessagePipeTest, PassMessagePipeCrossProcess) { 806 #if defined(OS_ANDROID)
807 // Android multi-process tests are not executing the new process. This is flaky.
808 #define MAYBE_PassMessagePipeCrossProcess DISABLED_PassMessagePipeCrossProcess
809 #else
810 #define MAYBE_PassMessagePipeCrossProcess PassMessagePipeCrossProcess
811 #endif
812 TEST_F(MultiprocessMessagePipeTest, MAYBE_PassMessagePipeCrossProcess) {
801 MojoHandle p0, p1; 813 MojoHandle p0, p1;
802 CreateMessagePipe(&p0, &p1); 814 CreateMessagePipe(&p0, &p1);
803 RUN_CHILD_ON_PIPE(EchoServiceClient, h) 815 RUN_CHILD_ON_PIPE(EchoServiceClient, h)
804 816
805 // Pass one end of the pipe to the other process. 817 // Pass one end of the pipe to the other process.
806 WriteMessageWithHandles(h, "here take this", &p1, 1); 818 WriteMessageWithHandles(h, "here take this", &p1, 1);
807 819
808 VerifyEcho(p0, "and you may ask yourself"); 820 VerifyEcho(p0, "and you may ask yourself");
809 VerifyEcho(p0, "where does that highway go?"); 821 VerifyEcho(p0, "where does that highway go?");
810 VerifyEcho(p0, std::string(20 * 1024 * 1024, 'i')); 822 VerifyEcho(p0, std::string(20 * 1024 * 1024, 'i'));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
847 WriteMessage(handles[index], ReadMessage(handles[index])); 859 WriteMessage(handles[index], ReadMessage(handles[index]));
848 } 860 }
849 } 861 }
850 862
851 for (size_t i = 1; i < handles.size(); ++i) 863 for (size_t i = 1; i < handles.size(); ++i)
852 CloseHandle(handles[i]); 864 CloseHandle(handles[i]);
853 865
854 return 0; 866 return 0;
855 } 867 }
856 868
857 TEST_F(MultiprocessMessagePipeTest, PassMoarMessagePipesCrossProcess) { 869 #if defined(OS_ANDROID)
870 // Android multi-process tests are not executing the new process. This is flaky.
871 #define MAYBE_PassMoarMessagePipesCrossProcess \
872 DISABLED_PassMoarMessagePipesCrossProcess
873 #else
874 #define MAYBE_PassMoarMessagePipesCrossProcess PassMoarMessagePipesCrossProcess
875 #endif
876 TEST_F(MultiprocessMessagePipeTest, MAYBE_PassMoarMessagePipesCrossProcess) {
858 MojoHandle echo_factory_proxy, echo_factory_request; 877 MojoHandle echo_factory_proxy, echo_factory_request;
859 CreateMessagePipe(&echo_factory_proxy, &echo_factory_request); 878 CreateMessagePipe(&echo_factory_proxy, &echo_factory_request);
860 879
861 MojoHandle echo_proxy_a, echo_request_a; 880 MojoHandle echo_proxy_a, echo_request_a;
862 CreateMessagePipe(&echo_proxy_a, &echo_request_a); 881 CreateMessagePipe(&echo_proxy_a, &echo_request_a);
863 882
864 MojoHandle echo_proxy_b, echo_request_b; 883 MojoHandle echo_proxy_b, echo_request_b;
865 CreateMessagePipe(&echo_proxy_b, &echo_request_b); 884 CreateMessagePipe(&echo_proxy_b, &echo_request_b);
866 885
867 MojoHandle echo_proxy_c, echo_request_c; 886 MojoHandle echo_proxy_c, echo_request_c;
(...skipping 24 matching lines...) Expand all
892 911
893 WriteMessage(h, "exit"); 912 WriteMessage(h, "exit");
894 END_CHILD() 913 END_CHILD()
895 914
896 CloseHandle(echo_factory_proxy); 915 CloseHandle(echo_factory_proxy);
897 CloseHandle(echo_proxy_a); 916 CloseHandle(echo_proxy_a);
898 CloseHandle(echo_proxy_b); 917 CloseHandle(echo_proxy_b);
899 CloseHandle(echo_proxy_c); 918 CloseHandle(echo_proxy_c);
900 } 919 }
901 920
902 TEST_F(MultiprocessMessagePipeTest, ChannelPipesWithMultipleChildren) { 921 #if defined(OS_ANDROID)
922 // Android multi-process tests are not executing the new process. This is flaky.
923 #define MAYBE_ChannelPipesWithMultipleChildren \
924 DISABLED_ChannelPipesWithMultipleChildren
925 #else
926 #define MAYBE_ChannelPipesWithMultipleChildren ChannelPipesWithMultipleChildren
927 #endif
928 TEST_F(MultiprocessMessagePipeTest, MAYBE_ChannelPipesWithMultipleChildren) {
903 RUN_CHILD_ON_PIPE(ChannelEchoClient, a) 929 RUN_CHILD_ON_PIPE(ChannelEchoClient, a)
904 RUN_CHILD_ON_PIPE(ChannelEchoClient, b) 930 RUN_CHILD_ON_PIPE(ChannelEchoClient, b)
905 VerifyEcho(a, "hello child 0"); 931 VerifyEcho(a, "hello child 0");
906 VerifyEcho(b, "hello child 1"); 932 VerifyEcho(b, "hello child 1");
907 933
908 WriteMessage(a, "exit"); 934 WriteMessage(a, "exit");
909 WriteMessage(b, "exit"); 935 WriteMessage(b, "exit");
910 END_CHILD() 936 END_CHILD()
911 END_CHILD() 937 END_CHILD()
912 } 938 }
913 939
914 // Reads and turns a pipe handle some number of times to create lots of 940 // Reads and turns a pipe handle some number of times to create lots of
915 // transient proxies. 941 // transient proxies.
916 DEFINE_TEST_CLIENT_TEST_WITH_PIPE(PingPongPipeClient, 942 DEFINE_TEST_CLIENT_TEST_WITH_PIPE(PingPongPipeClient,
917 MultiprocessMessagePipeTest, h) { 943 MultiprocessMessagePipeTest, h) {
918 const size_t kNumBounces = 50; 944 const size_t kNumBounces = 50;
919 MojoHandle p0, p1; 945 MojoHandle p0, p1;
920 ReadMessageWithHandles(h, &p0, 1); 946 ReadMessageWithHandles(h, &p0, 1);
921 ReadMessageWithHandles(h, &p1, 1); 947 ReadMessageWithHandles(h, &p1, 1);
922 for (size_t i = 0; i < kNumBounces; ++i) { 948 for (size_t i = 0; i < kNumBounces; ++i) {
923 WriteMessageWithHandles(h, "", &p1, 1); 949 WriteMessageWithHandles(h, "", &p1, 1);
924 ReadMessageWithHandles(h, &p1, 1); 950 ReadMessageWithHandles(h, &p1, 1);
925 } 951 }
926 WriteMessageWithHandles(h, "", &p0, 1); 952 WriteMessageWithHandles(h, "", &p0, 1);
927 WriteMessage(p1, "bye"); 953 WriteMessage(p1, "bye");
928 MojoClose(p1); 954 MojoClose(p1);
929 EXPECT_EQ("quit", ReadMessage(h)); 955 EXPECT_EQ("quit", ReadMessage(h));
930 } 956 }
931 957
932 TEST_F(MultiprocessMessagePipeTest, PingPongPipe) { 958 #if defined(OS_ANDROID)
959 // Android multi-process tests are not executing the new process. This is flaky.
960 #define MAYBE_PingPongPipe DISABLED_PingPongPipe
961 #else
962 #define MAYBE_PingPongPipe PingPongPipe
963 #endif
964 TEST_F(MultiprocessMessagePipeTest, MAYBE_PingPongPipe) {
933 MojoHandle p0, p1; 965 MojoHandle p0, p1;
934 CreateMessagePipe(&p0, &p1); 966 CreateMessagePipe(&p0, &p1);
935 967
936 RUN_CHILD_ON_PIPE(PingPongPipeClient, h) 968 RUN_CHILD_ON_PIPE(PingPongPipeClient, h)
937 const size_t kNumBounces = 50; 969 const size_t kNumBounces = 50;
938 WriteMessageWithHandles(h, "", &p0, 1); 970 WriteMessageWithHandles(h, "", &p0, 1);
939 WriteMessageWithHandles(h, "", &p1, 1); 971 WriteMessageWithHandles(h, "", &p1, 1);
940 for (size_t i = 0; i < kNumBounces; ++i) { 972 for (size_t i = 0; i < kNumBounces; ++i) {
941 ReadMessageWithHandles(h, &p1, 1); 973 ReadMessageWithHandles(h, &p1, 1);
942 WriteMessageWithHandles(h, "", &p1, 1); 974 WriteMessageWithHandles(h, "", &p1, 1);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
1021 break; 1053 break;
1022 } 1054 }
1023 } 1055 }
1024 1056
1025 for (auto& pipe: named_pipes) 1057 for (auto& pipe: named_pipes)
1026 CloseHandle(pipe.second); 1058 CloseHandle(pipe.second);
1027 1059
1028 return 0; 1060 return 0;
1029 } 1061 }
1030 1062
1031 TEST_F(MultiprocessMessagePipeTest, ChildToChildPipes) { 1063 #if defined(OS_ANDROID)
1064 // Android multi-process tests are not executing the new process. This is flaky.
1065 #define MAYBE_ChildToChildPipes DISABLED_ChildToChildPipes
1066 #else
1067 #define MAYBE_ChildToChildPipes ChildToChildPipes
1068 #endif
1069 TEST_F(MultiprocessMessagePipeTest, MAYBE_ChildToChildPipes) {
1032 RUN_CHILD_ON_PIPE(CommandDrivenClient, h0) 1070 RUN_CHILD_ON_PIPE(CommandDrivenClient, h0)
1033 RUN_CHILD_ON_PIPE(CommandDrivenClient, h1) 1071 RUN_CHILD_ON_PIPE(CommandDrivenClient, h1)
1034 CommandDrivenClientController a(h0); 1072 CommandDrivenClientController a(h0);
1035 CommandDrivenClientController b(h1); 1073 CommandDrivenClientController b(h1);
1036 1074
1037 // Create a pipe and pass each end to a different client. 1075 // Create a pipe and pass each end to a different client.
1038 MojoHandle p0, p1; 1076 MojoHandle p0, p1;
1039 CreateMessagePipe(&p0, &p1); 1077 CreateMessagePipe(&p0, &p1);
1040 a.SendHandle("x", p0); 1078 a.SendHandle("x", p0);
1041 b.SendHandle("y", p1); 1079 b.SendHandle("y", p1);
1042 1080
1043 // Make sure they can talk. 1081 // Make sure they can talk.
1044 a.Send("say:x:hello sir"); 1082 a.Send("say:x:hello sir");
1045 b.Send("hear:y:hello sir"); 1083 b.Send("hear:y:hello sir");
1046 1084
1047 b.Send("say:y:i love multiprocess pipes!"); 1085 b.Send("say:y:i love multiprocess pipes!");
1048 a.Send("hear:x:i love multiprocess pipes!"); 1086 a.Send("hear:x:i love multiprocess pipes!");
1049 1087
1050 a.Exit(); 1088 a.Exit();
1051 b.Exit(); 1089 b.Exit();
1052 END_CHILD() 1090 END_CHILD()
1053 END_CHILD() 1091 END_CHILD()
1054 } 1092 }
1055 1093
1056 TEST_F(MultiprocessMessagePipeTest, MoreChildToChildPipes) { 1094 #if defined(OS_ANDROID)
1095 // Android multi-process tests are not executing the new process. This is flaky.
1096 #define MAYBE_MoreChildToChildPipes DISABLED_MoreChildToChildPipes
1097 #else
1098 #define MAYBE_MoreChildToChildPipes MoreChildToChildPipes
1099 #endif
1100 TEST_F(MultiprocessMessagePipeTest, MAYBE_MoreChildToChildPipes) {
1057 RUN_CHILD_ON_PIPE(CommandDrivenClient, h0) 1101 RUN_CHILD_ON_PIPE(CommandDrivenClient, h0)
1058 RUN_CHILD_ON_PIPE(CommandDrivenClient, h1) 1102 RUN_CHILD_ON_PIPE(CommandDrivenClient, h1)
1059 RUN_CHILD_ON_PIPE(CommandDrivenClient, h2) 1103 RUN_CHILD_ON_PIPE(CommandDrivenClient, h2)
1060 RUN_CHILD_ON_PIPE(CommandDrivenClient, h3) 1104 RUN_CHILD_ON_PIPE(CommandDrivenClient, h3)
1061 CommandDrivenClientController a(h0), b(h1), c(h2), d(h3); 1105 CommandDrivenClientController a(h0), b(h1), c(h2), d(h3);
1062 1106
1063 // Connect a to b and c to d 1107 // Connect a to b and c to d
1064 1108
1065 MojoHandle p0, p1; 1109 MojoHandle p0, p1;
1066 1110
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1132 1176
1133 DEFINE_TEST_CLIENT_TEST_WITH_PIPE(ReceivePipeWithClosedPeer, 1177 DEFINE_TEST_CLIENT_TEST_WITH_PIPE(ReceivePipeWithClosedPeer,
1134 MultiprocessMessagePipeTest, h) { 1178 MultiprocessMessagePipeTest, h) {
1135 MojoHandle p; 1179 MojoHandle p;
1136 EXPECT_EQ("foo", ReadMessageWithHandles(h, &p, 1)); 1180 EXPECT_EQ("foo", ReadMessageWithHandles(h, &p, 1));
1137 1181
1138 EXPECT_EQ(MOJO_RESULT_OK, MojoWait(p, MOJO_HANDLE_SIGNAL_PEER_CLOSED, 1182 EXPECT_EQ(MOJO_RESULT_OK, MojoWait(p, MOJO_HANDLE_SIGNAL_PEER_CLOSED,
1139 MOJO_DEADLINE_INDEFINITE, nullptr)); 1183 MOJO_DEADLINE_INDEFINITE, nullptr));
1140 } 1184 }
1141 1185
1142 TEST_F(MultiprocessMessagePipeTest, SendPipeThenClosePeer) { 1186 #if defined(OS_ANDROID)
1187 // Android multi-process tests are not executing the new process. This is flaky.
1188 #define MAYBE_SendPipeThenClosePeer DISABLED_SendPipeThenClosePeer
1189 #else
1190 #define MAYBE_SendPipeThenClosePeer SendPipeThenClosePeer
1191 #endif
1192 TEST_F(MultiprocessMessagePipeTest, MAYBE_SendPipeThenClosePeer) {
1143 RUN_CHILD_ON_PIPE(ReceivePipeWithClosedPeer, h) 1193 RUN_CHILD_ON_PIPE(ReceivePipeWithClosedPeer, h)
1144 MojoHandle a, b; 1194 MojoHandle a, b;
1145 CreateMessagePipe(&a, &b); 1195 CreateMessagePipe(&a, &b);
1146 1196
1147 // Send |a| and immediately close |b|. The child should observe closure. 1197 // Send |a| and immediately close |b|. The child should observe closure.
1148 WriteMessageWithHandles(h, "foo", &a, 1); 1198 WriteMessageWithHandles(h, "foo", &a, 1);
1149 MojoClose(b); 1199 MojoClose(b);
1150 END_CHILD() 1200 END_CHILD()
1151 } 1201 }
1152 1202
(...skipping 30 matching lines...) Expand all
1183 1233
1184 // Wait for the service client to signal closure. 1234 // Wait for the service client to signal closure.
1185 EXPECT_EQ(MOJO_RESULT_OK, MojoWait(service_client, 1235 EXPECT_EQ(MOJO_RESULT_OK, MojoWait(service_client,
1186 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 1236 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
1187 MOJO_DEADLINE_INDEFINITE, nullptr)); 1237 MOJO_DEADLINE_INDEFINITE, nullptr));
1188 1238
1189 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(service_client)); 1239 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(service_client));
1190 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(application_client)); 1240 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(application_client));
1191 } 1241 }
1192 1242
1193 TEST_F(MultiprocessMessagePipeTest, SendPipeWithClosedPeerBetweenChildren) { 1243 #if defined(OS_ANDROID)
1244 // Android multi-process tests are not executing the new process. This is flaky.
1245 #define MAYBE_SendPipeWithClosedPeerBetweenChildren \
1246 DISABLED_SendPipeWithClosedPeerBetweenChildren
1247 #else
1248 #define MAYBE_SendPipeWithClosedPeerBetweenChildren \
1249 SendPipeWithClosedPeerBetweenChildren
1250 #endif
1251 TEST_F(MultiprocessMessagePipeTest,
1252 MAYBE_SendPipeWithClosedPeerBetweenChildren) {
1194 RUN_CHILD_ON_PIPE(SendOtherChildPipeWithClosedPeer, kid_a) 1253 RUN_CHILD_ON_PIPE(SendOtherChildPipeWithClosedPeer, kid_a)
1195 RUN_CHILD_ON_PIPE(ReceivePipeWithClosedPeerFromOtherChild, kid_b) 1254 RUN_CHILD_ON_PIPE(ReceivePipeWithClosedPeerFromOtherChild, kid_b)
1196 // Receive an "application request" from the first child and forward it 1255 // Receive an "application request" from the first child and forward it
1197 // to the second child. 1256 // to the second child.
1198 MojoHandle application_request; 1257 MojoHandle application_request;
1199 EXPECT_EQ("c2a plz", 1258 EXPECT_EQ("c2a plz",
1200 ReadMessageWithHandles(kid_a, &application_request, 1)); 1259 ReadMessageWithHandles(kid_a, &application_request, 1));
1201 1260
1202 WriteMessageWithHandles(kid_b, "c2a", &application_request, 1); 1261 WriteMessageWithHandles(kid_b, "c2a", &application_request, 1);
1203 END_CHILD() 1262 END_CHILD()
1204 1263
1205 WriteMessage(kid_a, "quit"); 1264 WriteMessage(kid_a, "quit");
1206 END_CHILD() 1265 END_CHILD()
1207 } 1266 }
1208 1267
1209 TEST_F(MultiprocessMessagePipeTest, SendClosePeerSend) { 1268
1269 #if defined(OS_ANDROID)
1270 // Android multi-process tests are not executing the new process. This is flaky.
1271 #define MAYBE_SendClosePeerSend DISABLED_SendClosePeerSend
1272 #else
1273 #define MAYBE_SendClosePeerSend SendClosePeerSend
1274 #endif
1275 TEST_F(MultiprocessMessagePipeTest, MAYBE_SendClosePeerSend) {
1210 MojoHandle a, b; 1276 MojoHandle a, b;
1211 CreateMessagePipe(&a, &b); 1277 CreateMessagePipe(&a, &b);
1212 1278
1213 MojoHandle c, d; 1279 MojoHandle c, d;
1214 CreateMessagePipe(&c, &d); 1280 CreateMessagePipe(&c, &d);
1215 1281
1216 // Send |a| over |c|, immediately close |b|, then send |a| back over |d|. 1282 // Send |a| over |c|, immediately close |b|, then send |a| back over |d|.
1217 WriteMessageWithHandles(c, "foo", &a, 1); 1283 WriteMessageWithHandles(c, "foo", &a, 1);
1218 EXPECT_EQ("foo", ReadMessageWithHandles(d, &a, 1)); 1284 EXPECT_EQ("foo", ReadMessageWithHandles(d, &a, 1));
1219 WriteMessageWithHandles(d, "bar", &a, 1); 1285 WriteMessageWithHandles(d, "bar", &a, 1);
(...skipping 22 matching lines...) Expand all
1242 // the parent, just for some extra proxying goodness. 1308 // the parent, just for some extra proxying goodness.
1243 WriteMessageWithHandles(c, "foo", &pipe[1], 1); 1309 WriteMessageWithHandles(c, "foo", &pipe[1], 1);
1244 EXPECT_EQ("foo", ReadMessageWithHandles(d, &pipe[1], 1)); 1310 EXPECT_EQ("foo", ReadMessageWithHandles(d, &pipe[1], 1));
1245 1311
1246 // And finally pass it back to the parent. 1312 // And finally pass it back to the parent.
1247 WriteMessageWithHandles(h, "bar", &pipe[1], 1); 1313 WriteMessageWithHandles(h, "bar", &pipe[1], 1);
1248 1314
1249 EXPECT_EQ("quit", ReadMessage(h)); 1315 EXPECT_EQ("quit", ReadMessage(h));
1250 } 1316 }
1251 1317
1252 TEST_F(MultiprocessMessagePipeTest, WriteCloseSendPeer) { 1318 #if defined(OS_ANDROID)
1319 // Android multi-process tests are not executing the new process. This is flaky.
1320 #define MAYBE_WriteCloseSendPeer DISABLED_WriteCloseSendPeer
1321 #else
1322 #define MAYBE_WriteCloseSendPeer WriteCloseSendPeer
1323 #endif
1324 TEST_F(MultiprocessMessagePipeTest, MAYBE_WriteCloseSendPeer) {
1253 MojoHandle pipe[2]; 1325 MojoHandle pipe[2];
1254 CreateMessagePipe(&pipe[0], &pipe[1]); 1326 CreateMessagePipe(&pipe[0], &pipe[1]);
1255 1327
1256 RUN_CHILD_ON_PIPE(WriteCloseSendPeerClient, h) 1328 RUN_CHILD_ON_PIPE(WriteCloseSendPeerClient, h)
1257 // Pass the pipe to the child. 1329 // Pass the pipe to the child.
1258 WriteMessageWithHandles(h, "foo", pipe, 2); 1330 WriteMessageWithHandles(h, "foo", pipe, 2);
1259 1331
1260 // Read back an endpoint which should have messages on it. 1332 // Read back an endpoint which should have messages on it.
1261 MojoHandle p; 1333 MojoHandle p;
1262 EXPECT_EQ("bar", ReadMessageWithHandles(h, &p, 1)); 1334 EXPECT_EQ("bar", ReadMessageWithHandles(h, &p, 1));
(...skipping 19 matching lines...) Expand all
1282 edk::PassWrappedPlatformHandle(channel_handle, &channel)); 1354 edk::PassWrappedPlatformHandle(channel_handle, &channel));
1283 ASSERT_TRUE(channel.is_valid()); 1355 ASSERT_TRUE(channel.is_valid());
1284 1356
1285 // Create a new pipe using our end of the channel. 1357 // Create a new pipe using our end of the channel.
1286 ScopedMessagePipeHandle pipe = edk::CreateMessagePipe(std::move(channel)); 1358 ScopedMessagePipeHandle pipe = edk::CreateMessagePipe(std::move(channel));
1287 1359
1288 // Ensure that we can read and write on the new pipe. 1360 // Ensure that we can read and write on the new pipe.
1289 VerifyEcho(pipe.get().value(), "goodbye"); 1361 VerifyEcho(pipe.get().value(), "goodbye");
1290 } 1362 }
1291 1363
1292 TEST_F(MultiprocessMessagePipeTest, BootstrapMessagePipeAsync) { 1364 #if defined(OS_ANDROID)
1365 // Android multi-process tests are not executing the new process. This is flaky.
1366 #define MAYBE_BootstrapMessagePipeAsync DISABLED_BootstrapMessagePipeAsync
1367 #else
1368 #define MAYBE_BootstrapMessagePipeAsync BootstrapMessagePipeAsync
1369 #endif
1370 TEST_F(MultiprocessMessagePipeTest, MAYBE_BootstrapMessagePipeAsync) {
1293 // Tests that new cross-process message pipes can be created synchronously 1371 // Tests that new cross-process message pipes can be created synchronously
1294 // using asynchronous negotiation over an arbitrary platform channel. 1372 // using asynchronous negotiation over an arbitrary platform channel.
1295 RUN_CHILD_ON_PIPE(BootstrapMessagePipeAsyncClient, child) 1373 RUN_CHILD_ON_PIPE(BootstrapMessagePipeAsyncClient, child)
1296 // Pass one end of a platform channel to the child. 1374 // Pass one end of a platform channel to the child.
1297 PlatformChannelPair platform_channel; 1375 PlatformChannelPair platform_channel;
1298 MojoHandle client_channel_handle; 1376 MojoHandle client_channel_handle;
1299 EXPECT_EQ(MOJO_RESULT_OK, 1377 EXPECT_EQ(MOJO_RESULT_OK,
1300 CreatePlatformHandleWrapper(platform_channel.PassClientHandle(), 1378 CreatePlatformHandleWrapper(platform_channel.PassClientHandle(),
1301 &client_channel_handle)); 1379 &client_channel_handle));
1302 WriteMessageWithHandles(child, "hi", &client_channel_handle, 1); 1380 WriteMessageWithHandles(child, "hi", &client_channel_handle, 1);
1303 1381
1304 // Create a new pipe using our end of the channel. 1382 // Create a new pipe using our end of the channel.
1305 ScopedMessagePipeHandle pipe = 1383 ScopedMessagePipeHandle pipe =
1306 edk::CreateMessagePipe(platform_channel.PassServerHandle()); 1384 edk::CreateMessagePipe(platform_channel.PassServerHandle());
1307 1385
1308 // Ensure that we can read and write on the new pipe. 1386 // Ensure that we can read and write on the new pipe.
1309 VerifyEcho(pipe.get().value(), "goodbye"); 1387 VerifyEcho(pipe.get().value(), "goodbye");
1310 END_CHILD() 1388 END_CHILD()
1311 } 1389 }
1312 1390
1313 } // namespace 1391 } // namespace
1314 } // namespace edk 1392 } // namespace edk
1315 } // namespace mojo 1393 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/edk/system/message_pipe_unittest.cc ('k') | mojo/edk/system/shared_buffer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698