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

Side by Side Diff: mojo/system/message_pipe_unittest.cc

Issue 419973005: Convert WriteMessage...() to use the new user pointer handling (see r285350). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
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 "mojo/system/message_pipe.h" 5 #include "mojo/system/message_pipe.h"
6 6
7 #include "base/memory/ref_counted.h" 7 #include "base/memory/ref_counted.h"
8 #include "base/threading/platform_thread.h" // For |Sleep()|. 8 #include "base/threading/platform_thread.h" // For |Sleep()|.
9 #include "base/time/time.h" 9 #include "base/time/time.h"
10 #include "mojo/system/waiter.h" 10 #include "mojo/system/waiter.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 buffer_size = kBufferSize; 52 buffer_size = kBufferSize;
53 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, 53 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT,
54 mp->ReadMessage(1, UserPointer<void>(buffer), 54 mp->ReadMessage(1, UserPointer<void>(buffer),
55 MakeUserPointer(&buffer_size), 0, NULL, 55 MakeUserPointer(&buffer_size), 0, NULL,
56 MOJO_READ_MESSAGE_FLAG_NONE)); 56 MOJO_READ_MESSAGE_FLAG_NONE));
57 57
58 // Write from port 1 (to port 0). 58 // Write from port 1 (to port 0).
59 buffer[0] = 789012345; 59 buffer[0] = 789012345;
60 buffer[1] = 0; 60 buffer[1] = 0;
61 EXPECT_EQ(MOJO_RESULT_OK, 61 EXPECT_EQ(MOJO_RESULT_OK,
62 mp->WriteMessage(1, 62 mp->WriteMessage(1, UserPointer<const void>(buffer),
63 buffer, static_cast<uint32_t>(sizeof(buffer[0])), 63 static_cast<uint32_t>(sizeof(buffer[0])), NULL,
64 NULL,
65 MOJO_WRITE_MESSAGE_FLAG_NONE)); 64 MOJO_WRITE_MESSAGE_FLAG_NONE));
66 65
67 // Read from port 0. 66 // Read from port 0.
68 buffer[0] = 123; 67 buffer[0] = 123;
69 buffer[1] = 456; 68 buffer[1] = 456;
70 buffer_size = kBufferSize; 69 buffer_size = kBufferSize;
71 EXPECT_EQ(MOJO_RESULT_OK, 70 EXPECT_EQ(MOJO_RESULT_OK,
72 mp->ReadMessage(0, UserPointer<void>(buffer), 71 mp->ReadMessage(0, UserPointer<void>(buffer),
73 MakeUserPointer(&buffer_size), 0, NULL, 72 MakeUserPointer(&buffer_size), 0, NULL,
74 MOJO_READ_MESSAGE_FLAG_NONE)); 73 MOJO_READ_MESSAGE_FLAG_NONE));
75 EXPECT_EQ(static_cast<uint32_t>(sizeof(buffer[0])), buffer_size); 74 EXPECT_EQ(static_cast<uint32_t>(sizeof(buffer[0])), buffer_size);
76 EXPECT_EQ(789012345, buffer[0]); 75 EXPECT_EQ(789012345, buffer[0]);
77 EXPECT_EQ(456, buffer[1]); 76 EXPECT_EQ(456, buffer[1]);
78 77
79 // Read again from port 0 -- it should be empty. 78 // Read again from port 0 -- it should be empty.
80 buffer_size = kBufferSize; 79 buffer_size = kBufferSize;
81 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, 80 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT,
82 mp->ReadMessage(0, UserPointer<void>(buffer), 81 mp->ReadMessage(0, UserPointer<void>(buffer),
83 MakeUserPointer(&buffer_size), 0, NULL, 82 MakeUserPointer(&buffer_size), 0, NULL,
84 MOJO_READ_MESSAGE_FLAG_NONE)); 83 MOJO_READ_MESSAGE_FLAG_NONE));
85 84
86 // Write two messages from port 0 (to port 1). 85 // Write two messages from port 0 (to port 1).
87 buffer[0] = 123456789; 86 buffer[0] = 123456789;
88 buffer[1] = 0; 87 buffer[1] = 0;
89 EXPECT_EQ(MOJO_RESULT_OK, 88 EXPECT_EQ(MOJO_RESULT_OK,
90 mp->WriteMessage(0, 89 mp->WriteMessage(0, UserPointer<const void>(buffer),
91 buffer, static_cast<uint32_t>(sizeof(buffer[0])), 90 static_cast<uint32_t>(sizeof(buffer[0])), NULL,
92 NULL,
93 MOJO_WRITE_MESSAGE_FLAG_NONE)); 91 MOJO_WRITE_MESSAGE_FLAG_NONE));
94 buffer[0] = 234567890; 92 buffer[0] = 234567890;
95 buffer[1] = 0; 93 buffer[1] = 0;
96 EXPECT_EQ(MOJO_RESULT_OK, 94 EXPECT_EQ(MOJO_RESULT_OK,
97 mp->WriteMessage(0, 95 mp->WriteMessage(0, UserPointer<const void>(buffer),
98 buffer, static_cast<uint32_t>(sizeof(buffer[0])), 96 static_cast<uint32_t>(sizeof(buffer[0])), NULL,
99 NULL,
100 MOJO_WRITE_MESSAGE_FLAG_NONE)); 97 MOJO_WRITE_MESSAGE_FLAG_NONE));
101 98
102 // Read from port 1 with buffer size 0 (should get the size of next message). 99 // Read from port 1 with buffer size 0 (should get the size of next message).
103 // Also test that giving a null buffer is okay when the buffer size is 0. 100 // Also test that giving a null buffer is okay when the buffer size is 0.
104 buffer_size = 0; 101 buffer_size = 0;
105 EXPECT_EQ(MOJO_RESULT_RESOURCE_EXHAUSTED, 102 EXPECT_EQ(MOJO_RESULT_RESOURCE_EXHAUSTED,
106 mp->ReadMessage(1, NullUserPointer(), MakeUserPointer(&buffer_size), 103 mp->ReadMessage(1, NullUserPointer(), MakeUserPointer(&buffer_size),
107 0, NULL, 104 0, NULL,
108 MOJO_READ_MESSAGE_FLAG_NONE)); 105 MOJO_READ_MESSAGE_FLAG_NONE));
109 EXPECT_EQ(static_cast<uint32_t>(sizeof(buffer[0])), buffer_size); 106 EXPECT_EQ(static_cast<uint32_t>(sizeof(buffer[0])), buffer_size);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 buffer_size = kBufferSize; 146 buffer_size = kBufferSize;
150 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, 147 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT,
151 mp->ReadMessage(1, UserPointer<void>(buffer), 148 mp->ReadMessage(1, UserPointer<void>(buffer),
152 MakeUserPointer(&buffer_size), 0, NULL, 149 MakeUserPointer(&buffer_size), 0, NULL,
153 MOJO_READ_MESSAGE_FLAG_NONE)); 150 MOJO_READ_MESSAGE_FLAG_NONE));
154 151
155 // Write from port 0 (to port 1). 152 // Write from port 0 (to port 1).
156 buffer[0] = 345678901; 153 buffer[0] = 345678901;
157 buffer[1] = 0; 154 buffer[1] = 0;
158 EXPECT_EQ(MOJO_RESULT_OK, 155 EXPECT_EQ(MOJO_RESULT_OK,
159 mp->WriteMessage(0, 156 mp->WriteMessage(0, UserPointer<const void>(buffer),
160 buffer, static_cast<uint32_t>(sizeof(buffer[0])), 157 static_cast<uint32_t>(sizeof(buffer[0])), NULL,
161 NULL,
162 MOJO_WRITE_MESSAGE_FLAG_NONE)); 158 MOJO_WRITE_MESSAGE_FLAG_NONE));
163 159
164 // Close port 0. 160 // Close port 0.
165 mp->Close(0); 161 mp->Close(0);
166 162
167 // Try to write from port 1 (to port 0). 163 // Try to write from port 1 (to port 0).
168 buffer[0] = 456789012; 164 buffer[0] = 456789012;
169 buffer[1] = 0; 165 buffer[1] = 0;
170 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 166 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
171 mp->WriteMessage(1, 167 mp->WriteMessage(1, UserPointer<const void>(buffer),
172 buffer, static_cast<uint32_t>(sizeof(buffer[0])), 168 static_cast<uint32_t>(sizeof(buffer[0])), NULL,
173 NULL,
174 MOJO_WRITE_MESSAGE_FLAG_NONE)); 169 MOJO_WRITE_MESSAGE_FLAG_NONE));
175 170
176 // Read from port 1; should still get message (even though port 0 was closed). 171 // Read from port 1; should still get message (even though port 0 was closed).
177 buffer[0] = 123; 172 buffer[0] = 123;
178 buffer[1] = 456; 173 buffer[1] = 456;
179 buffer_size = kBufferSize; 174 buffer_size = kBufferSize;
180 EXPECT_EQ(MOJO_RESULT_OK, 175 EXPECT_EQ(MOJO_RESULT_OK,
181 mp->ReadMessage(1, UserPointer<void>(buffer), 176 mp->ReadMessage(1, UserPointer<void>(buffer),
182 MakeUserPointer(&buffer_size), 0, NULL, 177 MakeUserPointer(&buffer_size), 0, NULL,
183 MOJO_READ_MESSAGE_FLAG_NONE)); 178 MOJO_READ_MESSAGE_FLAG_NONE));
(...skipping 15 matching lines...) Expand all
199 scoped_refptr<MessagePipe> mp(new MessagePipe()); 194 scoped_refptr<MessagePipe> mp(new MessagePipe());
200 195
201 int32_t buffer[1]; 196 int32_t buffer[1];
202 const uint32_t kBufferSize = static_cast<uint32_t>(sizeof(buffer)); 197 const uint32_t kBufferSize = static_cast<uint32_t>(sizeof(buffer));
203 uint32_t buffer_size; 198 uint32_t buffer_size;
204 199
205 // Write some messages from port 1 (to port 0). 200 // Write some messages from port 1 (to port 0).
206 for (int32_t i = 0; i < 5; i++) { 201 for (int32_t i = 0; i < 5; i++) {
207 buffer[0] = i; 202 buffer[0] = i;
208 EXPECT_EQ(MOJO_RESULT_OK, 203 EXPECT_EQ(MOJO_RESULT_OK,
209 mp->WriteMessage(1, 204 mp->WriteMessage(1, UserPointer<const void>(buffer), kBufferSize,
210 buffer, kBufferSize, 205 NULL, MOJO_WRITE_MESSAGE_FLAG_NONE));
211 NULL,
212 MOJO_WRITE_MESSAGE_FLAG_NONE));
213 } 206 }
214 207
215 // Port 0 shouldn't be empty. 208 // Port 0 shouldn't be empty.
216 buffer_size = 0; 209 buffer_size = 0;
217 EXPECT_EQ(MOJO_RESULT_RESOURCE_EXHAUSTED, 210 EXPECT_EQ(MOJO_RESULT_RESOURCE_EXHAUSTED,
218 mp->ReadMessage(0, NullUserPointer(), MakeUserPointer(&buffer_size), 211 mp->ReadMessage(0, NullUserPointer(), MakeUserPointer(&buffer_size),
219 0, NULL, 212 0, NULL,
220 MOJO_READ_MESSAGE_FLAG_NONE)); 213 MOJO_READ_MESSAGE_FLAG_NONE));
221 EXPECT_EQ(kBufferSize, buffer_size); 214 EXPECT_EQ(kBufferSize, buffer_size);
222 215
223 // Close port 0 first, which should have outstanding (incoming) messages. 216 // Close port 0 first, which should have outstanding (incoming) messages.
224 mp->Close(0); 217 mp->Close(0);
225 mp->Close(1); 218 mp->Close(1);
226 } 219 }
227 220
228 TEST(MessagePipeTest, DiscardMode) { 221 TEST(MessagePipeTest, DiscardMode) {
229 scoped_refptr<MessagePipe> mp(new MessagePipe()); 222 scoped_refptr<MessagePipe> mp(new MessagePipe());
230 223
231 int32_t buffer[2]; 224 int32_t buffer[2];
232 const uint32_t kBufferSize = static_cast<uint32_t>(sizeof(buffer)); 225 const uint32_t kBufferSize = static_cast<uint32_t>(sizeof(buffer));
233 uint32_t buffer_size; 226 uint32_t buffer_size;
234 227
235 // Write from port 1 (to port 0). 228 // Write from port 1 (to port 0).
236 buffer[0] = 789012345; 229 buffer[0] = 789012345;
237 buffer[1] = 0; 230 buffer[1] = 0;
238 EXPECT_EQ(MOJO_RESULT_OK, 231 EXPECT_EQ(MOJO_RESULT_OK,
239 mp->WriteMessage(1, 232 mp->WriteMessage(1, UserPointer<const void>(buffer),
240 buffer, static_cast<uint32_t>(sizeof(buffer[0])), 233 static_cast<uint32_t>(sizeof(buffer[0])), NULL,
241 NULL,
242 MOJO_WRITE_MESSAGE_FLAG_NONE)); 234 MOJO_WRITE_MESSAGE_FLAG_NONE));
243 235
244 // Read/discard from port 0 (no buffer); get size. 236 // Read/discard from port 0 (no buffer); get size.
245 buffer_size = 0; 237 buffer_size = 0;
246 EXPECT_EQ(MOJO_RESULT_RESOURCE_EXHAUSTED, 238 EXPECT_EQ(MOJO_RESULT_RESOURCE_EXHAUSTED,
247 mp->ReadMessage(0, NullUserPointer(), MakeUserPointer(&buffer_size), 239 mp->ReadMessage(0, NullUserPointer(), MakeUserPointer(&buffer_size),
248 0, NULL, 240 0, NULL,
249 MOJO_READ_MESSAGE_FLAG_MAY_DISCARD)); 241 MOJO_READ_MESSAGE_FLAG_MAY_DISCARD));
250 EXPECT_EQ(static_cast<uint32_t>(sizeof(buffer[0])), buffer_size); 242 EXPECT_EQ(static_cast<uint32_t>(sizeof(buffer[0])), buffer_size);
251 243
252 // Read again from port 0 -- it should be empty. 244 // Read again from port 0 -- it should be empty.
253 buffer_size = kBufferSize; 245 buffer_size = kBufferSize;
254 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, 246 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT,
255 mp->ReadMessage(0, UserPointer<void>(buffer), 247 mp->ReadMessage(0, UserPointer<void>(buffer),
256 MakeUserPointer(&buffer_size), 0, NULL, 248 MakeUserPointer(&buffer_size), 0, NULL,
257 MOJO_READ_MESSAGE_FLAG_MAY_DISCARD)); 249 MOJO_READ_MESSAGE_FLAG_MAY_DISCARD));
258 250
259 // Write from port 1 (to port 0). 251 // Write from port 1 (to port 0).
260 buffer[0] = 890123456; 252 buffer[0] = 890123456;
261 buffer[1] = 0; 253 buffer[1] = 0;
262 EXPECT_EQ(MOJO_RESULT_OK, 254 EXPECT_EQ(MOJO_RESULT_OK,
263 mp->WriteMessage(1, 255 mp->WriteMessage(1, UserPointer<const void>(buffer),
264 buffer, static_cast<uint32_t>(sizeof(buffer[0])), 256 static_cast<uint32_t>(sizeof(buffer[0])), NULL,
265 NULL,
266 MOJO_WRITE_MESSAGE_FLAG_NONE)); 257 MOJO_WRITE_MESSAGE_FLAG_NONE));
267 258
268 // Read from port 0 (buffer big enough). 259 // Read from port 0 (buffer big enough).
269 buffer[0] = 123; 260 buffer[0] = 123;
270 buffer[1] = 456; 261 buffer[1] = 456;
271 buffer_size = kBufferSize; 262 buffer_size = kBufferSize;
272 EXPECT_EQ(MOJO_RESULT_OK, 263 EXPECT_EQ(MOJO_RESULT_OK,
273 mp->ReadMessage(0, UserPointer<void>(buffer), 264 mp->ReadMessage(0, UserPointer<void>(buffer),
274 MakeUserPointer(&buffer_size), 0, NULL, 265 MakeUserPointer(&buffer_size), 0, NULL,
275 MOJO_READ_MESSAGE_FLAG_MAY_DISCARD)); 266 MOJO_READ_MESSAGE_FLAG_MAY_DISCARD));
276 EXPECT_EQ(static_cast<uint32_t>(sizeof(buffer[0])), buffer_size); 267 EXPECT_EQ(static_cast<uint32_t>(sizeof(buffer[0])), buffer_size);
277 EXPECT_EQ(890123456, buffer[0]); 268 EXPECT_EQ(890123456, buffer[0]);
278 EXPECT_EQ(456, buffer[1]); 269 EXPECT_EQ(456, buffer[1]);
279 270
280 // Read again from port 0 -- it should be empty. 271 // Read again from port 0 -- it should be empty.
281 buffer_size = kBufferSize; 272 buffer_size = kBufferSize;
282 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, 273 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT,
283 mp->ReadMessage(0, UserPointer<void>(buffer), 274 mp->ReadMessage(0, UserPointer<void>(buffer),
284 MakeUserPointer(&buffer_size), 0, NULL, 275 MakeUserPointer(&buffer_size), 0, NULL,
285 MOJO_READ_MESSAGE_FLAG_MAY_DISCARD)); 276 MOJO_READ_MESSAGE_FLAG_MAY_DISCARD));
286 277
287 // Write from port 1 (to port 0). 278 // Write from port 1 (to port 0).
288 buffer[0] = 901234567; 279 buffer[0] = 901234567;
289 buffer[1] = 0; 280 buffer[1] = 0;
290 EXPECT_EQ(MOJO_RESULT_OK, 281 EXPECT_EQ(MOJO_RESULT_OK,
291 mp->WriteMessage(1, 282 mp->WriteMessage(1, UserPointer<const void>(buffer),
292 buffer, static_cast<uint32_t>(sizeof(buffer[0])), 283 static_cast<uint32_t>(sizeof(buffer[0])), NULL,
293 NULL,
294 MOJO_WRITE_MESSAGE_FLAG_NONE)); 284 MOJO_WRITE_MESSAGE_FLAG_NONE));
295 285
296 // Read/discard from port 0 (buffer too small); get size. 286 // Read/discard from port 0 (buffer too small); get size.
297 buffer_size = 1; 287 buffer_size = 1;
298 EXPECT_EQ(MOJO_RESULT_RESOURCE_EXHAUSTED, 288 EXPECT_EQ(MOJO_RESULT_RESOURCE_EXHAUSTED,
299 mp->ReadMessage(0, UserPointer<void>(buffer), 289 mp->ReadMessage(0, UserPointer<void>(buffer),
300 MakeUserPointer(&buffer_size), 0, NULL, 290 MakeUserPointer(&buffer_size), 0, NULL,
301 MOJO_READ_MESSAGE_FLAG_MAY_DISCARD)); 291 MOJO_READ_MESSAGE_FLAG_MAY_DISCARD));
302 EXPECT_EQ(static_cast<uint32_t>(sizeof(buffer[0])), buffer_size); 292 EXPECT_EQ(static_cast<uint32_t>(sizeof(buffer[0])), buffer_size);
303 293
304 // Read again from port 0 -- it should be empty. 294 // Read again from port 0 -- it should be empty.
305 buffer_size = kBufferSize; 295 buffer_size = kBufferSize;
306 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, 296 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT,
307 mp->ReadMessage(0, UserPointer<void>(buffer), 297 mp->ReadMessage(0, UserPointer<void>(buffer),
308 MakeUserPointer(&buffer_size), 0, NULL, 298 MakeUserPointer(&buffer_size), 0, NULL,
309 MOJO_READ_MESSAGE_FLAG_MAY_DISCARD)); 299 MOJO_READ_MESSAGE_FLAG_MAY_DISCARD));
310 300
311 // Write from port 1 (to port 0). 301 // Write from port 1 (to port 0).
312 buffer[0] = 123456789; 302 buffer[0] = 123456789;
313 buffer[1] = 0; 303 buffer[1] = 0;
314 EXPECT_EQ(MOJO_RESULT_OK, 304 EXPECT_EQ(MOJO_RESULT_OK,
315 mp->WriteMessage(1, 305 mp->WriteMessage(1, UserPointer<const void>(buffer),
316 buffer, static_cast<uint32_t>(sizeof(buffer[0])), 306 static_cast<uint32_t>(sizeof(buffer[0])), NULL,
317 NULL,
318 MOJO_WRITE_MESSAGE_FLAG_NONE)); 307 MOJO_WRITE_MESSAGE_FLAG_NONE));
319 308
320 // Discard from port 0. 309 // Discard from port 0.
321 buffer_size = 1; 310 buffer_size = 1;
322 EXPECT_EQ(MOJO_RESULT_RESOURCE_EXHAUSTED, 311 EXPECT_EQ(MOJO_RESULT_RESOURCE_EXHAUSTED,
323 mp->ReadMessage(0, NullUserPointer(), NullUserPointer(), 0, NULL, 312 mp->ReadMessage(0, NullUserPointer(), NullUserPointer(), 0, NULL,
324 MOJO_READ_MESSAGE_FLAG_MAY_DISCARD)); 313 MOJO_READ_MESSAGE_FLAG_MAY_DISCARD));
325 314
326 // Read again from port 0 -- it should be empty. 315 // Read again from port 0 -- it should be empty.
327 buffer_size = kBufferSize; 316 buffer_size = kBufferSize;
(...skipping 29 matching lines...) Expand all
357 // Not yet readable. 346 // Not yet readable.
358 waiter.Init(); 347 waiter.Init();
359 ASSERT_EQ(MOJO_RESULT_OK, 348 ASSERT_EQ(MOJO_RESULT_OK,
360 mp->AddWaiter(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 1)); 349 mp->AddWaiter(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 1));
361 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, waiter.Wait(0, NULL)); 350 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, waiter.Wait(0, NULL));
362 mp->RemoveWaiter(0, &waiter); 351 mp->RemoveWaiter(0, &waiter);
363 352
364 // Write from port 0 (to port 1), to make port 1 readable. 353 // Write from port 0 (to port 1), to make port 1 readable.
365 buffer[0] = 123456789; 354 buffer[0] = 123456789;
366 EXPECT_EQ(MOJO_RESULT_OK, 355 EXPECT_EQ(MOJO_RESULT_OK,
367 mp->WriteMessage(0, 356 mp->WriteMessage(0, UserPointer<const void>(buffer), kBufferSize,
368 buffer, kBufferSize, 357 NULL, MOJO_WRITE_MESSAGE_FLAG_NONE));
369 NULL,
370 MOJO_WRITE_MESSAGE_FLAG_NONE));
371 358
372 // Port 1 should already be readable now. 359 // Port 1 should already be readable now.
373 waiter.Init(); 360 waiter.Init();
374 EXPECT_EQ(MOJO_RESULT_ALREADY_EXISTS, 361 EXPECT_EQ(MOJO_RESULT_ALREADY_EXISTS,
375 mp->AddWaiter(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 2)); 362 mp->AddWaiter(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 2));
376 waiter.Init(); 363 waiter.Init();
377 EXPECT_EQ(MOJO_RESULT_ALREADY_EXISTS, 364 EXPECT_EQ(MOJO_RESULT_ALREADY_EXISTS,
378 mp->AddWaiter(1, 365 mp->AddWaiter(1,
379 &waiter, 366 &waiter,
380 MOJO_HANDLE_SIGNAL_READABLE | 367 MOJO_HANDLE_SIGNAL_READABLE |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 416
430 thread.waiter()->Init(); 417 thread.waiter()->Init();
431 ASSERT_EQ(MOJO_RESULT_OK, 418 ASSERT_EQ(MOJO_RESULT_OK,
432 mp->AddWaiter(1, thread.waiter(), MOJO_HANDLE_SIGNAL_READABLE, 419 mp->AddWaiter(1, thread.waiter(), MOJO_HANDLE_SIGNAL_READABLE,
433 1)); 420 1));
434 thread.Start(); 421 thread.Start();
435 422
436 buffer[0] = 123456789; 423 buffer[0] = 123456789;
437 // Write from port 0 (to port 1), which should wake up the waiter. 424 // Write from port 0 (to port 1), which should wake up the waiter.
438 EXPECT_EQ(MOJO_RESULT_OK, 425 EXPECT_EQ(MOJO_RESULT_OK,
439 mp->WriteMessage(0, 426 mp->WriteMessage(0, UserPointer<const void>(buffer), kBufferSize,
440 buffer, kBufferSize, 427 NULL, MOJO_WRITE_MESSAGE_FLAG_NONE));
441 NULL,
442 MOJO_WRITE_MESSAGE_FLAG_NONE));
443 428
444 mp->RemoveWaiter(1, thread.waiter()); 429 mp->RemoveWaiter(1, thread.waiter());
445 430
446 mp->Close(0); 431 mp->Close(0);
447 mp->Close(1); 432 mp->Close(1);
448 } // Joins |thread|. 433 } // Joins |thread|.
449 // The waiter should have woken up successfully. 434 // The waiter should have woken up successfully.
450 EXPECT_EQ(MOJO_RESULT_OK, result); 435 EXPECT_EQ(MOJO_RESULT_OK, result);
451 EXPECT_EQ(1u, context); 436 EXPECT_EQ(1u, context);
452 437
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 mp->CancelAllWaiters(1); 479 mp->CancelAllWaiters(1);
495 mp->Close(1); 480 mp->Close(1);
496 } // Joins |thread|. 481 } // Joins |thread|.
497 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, result); 482 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, result);
498 EXPECT_EQ(3u, context); 483 EXPECT_EQ(3u, context);
499 } 484 }
500 485
501 } // namespace 486 } // namespace
502 } // namespace system 487 } // namespace system
503 } // namespace mojo 488 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/system/message_pipe_dispatcher_unittest.cc ('k') | mojo/system/multiprocess_message_pipe_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698