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

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

Issue 336313007: Mojo: Rename MOJO_WAIT_FLAG_... -> MOJO_HANDLE_SIGNAL_.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 6 years, 6 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
« no previous file with comments | « mojo/system/local_message_pipe_endpoint.cc ('k') | mojo/system/message_pipe_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 // NOTE(vtl): Some of these tests are inherently flaky (e.g., if run on a 5 // NOTE(vtl): Some of these tests are inherently flaky (e.g., if run on a
6 // heavily-loaded system). Sorry. |test::EpsilonTimeout()| may be increased to 6 // heavily-loaded system). Sorry. |test::EpsilonTimeout()| may be increased to
7 // increase tolerance and reduce observed flakiness (though doing so reduces the 7 // increase tolerance and reduce observed flakiness (though doing so reduces the
8 // meaningfulness of the test). 8 // meaningfulness of the test).
9 9
10 #include "mojo/system/message_pipe_dispatcher.h" 10 #include "mojo/system/message_pipe_dispatcher.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 scoped_refptr<MessagePipe> mp(new MessagePipe()); 46 scoped_refptr<MessagePipe> mp(new MessagePipe());
47 d0->Init(mp, i); // 0, 1. 47 d0->Init(mp, i); // 0, 1.
48 d1->Init(mp, i ^ 1); // 1, 0. 48 d1->Init(mp, i ^ 1); // 1, 0.
49 } 49 }
50 Waiter w; 50 Waiter w;
51 uint32_t context = 0; 51 uint32_t context = 0;
52 52
53 // Try adding a writable waiter when already writable. 53 // Try adding a writable waiter when already writable.
54 w.Init(); 54 w.Init();
55 EXPECT_EQ(MOJO_RESULT_ALREADY_EXISTS, 55 EXPECT_EQ(MOJO_RESULT_ALREADY_EXISTS,
56 d0->AddWaiter(&w, MOJO_WAIT_FLAG_WRITABLE, 0)); 56 d0->AddWaiter(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 0));
57 // Shouldn't need to remove the waiter (it was not added). 57 // Shouldn't need to remove the waiter (it was not added).
58 58
59 // Add a readable waiter to |d0|, then make it readable (by writing to 59 // Add a readable waiter to |d0|, then make it readable (by writing to
60 // |d1|), then wait. 60 // |d1|), then wait.
61 w.Init(); 61 w.Init();
62 EXPECT_EQ(MOJO_RESULT_OK, 62 EXPECT_EQ(MOJO_RESULT_OK,
63 d0->AddWaiter(&w, MOJO_WAIT_FLAG_READABLE, 1)); 63 d0->AddWaiter(&w, MOJO_HANDLE_SIGNAL_READABLE, 1));
64 buffer[0] = 123456789; 64 buffer[0] = 123456789;
65 EXPECT_EQ(MOJO_RESULT_OK, 65 EXPECT_EQ(MOJO_RESULT_OK,
66 d1->WriteMessage(buffer, kBufferSize, 66 d1->WriteMessage(buffer, kBufferSize,
67 NULL, 67 NULL,
68 MOJO_WRITE_MESSAGE_FLAG_NONE)); 68 MOJO_WRITE_MESSAGE_FLAG_NONE));
69 stopwatch.Start(); 69 stopwatch.Start();
70 EXPECT_EQ(MOJO_RESULT_OK, w.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 70 EXPECT_EQ(MOJO_RESULT_OK, w.Wait(MOJO_DEADLINE_INDEFINITE, &context));
71 EXPECT_EQ(1u, context); 71 EXPECT_EQ(1u, context);
72 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout()); 72 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout());
73 d0->RemoveWaiter(&w); 73 d0->RemoveWaiter(&w);
74 74
75 // Try adding a readable waiter when already readable (from above). 75 // Try adding a readable waiter when already readable (from above).
76 w.Init(); 76 w.Init();
77 EXPECT_EQ(MOJO_RESULT_ALREADY_EXISTS, 77 EXPECT_EQ(MOJO_RESULT_ALREADY_EXISTS,
78 d0->AddWaiter(&w, MOJO_WAIT_FLAG_READABLE, 2)); 78 d0->AddWaiter(&w, MOJO_HANDLE_SIGNAL_READABLE, 2));
79 // Shouldn't need to remove the waiter (it was not added). 79 // Shouldn't need to remove the waiter (it was not added).
80 80
81 // Make |d0| no longer readable (by reading from it). 81 // Make |d0| no longer readable (by reading from it).
82 buffer[0] = 0; 82 buffer[0] = 0;
83 buffer_size = kBufferSize; 83 buffer_size = kBufferSize;
84 EXPECT_EQ(MOJO_RESULT_OK, 84 EXPECT_EQ(MOJO_RESULT_OK,
85 d0->ReadMessage(buffer, &buffer_size, 85 d0->ReadMessage(buffer, &buffer_size,
86 0, NULL, 86 0, NULL,
87 MOJO_READ_MESSAGE_FLAG_NONE)); 87 MOJO_READ_MESSAGE_FLAG_NONE));
88 EXPECT_EQ(kBufferSize, buffer_size); 88 EXPECT_EQ(kBufferSize, buffer_size);
89 EXPECT_EQ(123456789, buffer[0]); 89 EXPECT_EQ(123456789, buffer[0]);
90 90
91 // Wait for zero time for readability on |d0| (will time out). 91 // Wait for zero time for readability on |d0| (will time out).
92 w.Init(); 92 w.Init();
93 EXPECT_EQ(MOJO_RESULT_OK, 93 EXPECT_EQ(MOJO_RESULT_OK,
94 d0->AddWaiter(&w, MOJO_WAIT_FLAG_READABLE, 3)); 94 d0->AddWaiter(&w, MOJO_HANDLE_SIGNAL_READABLE, 3));
95 stopwatch.Start(); 95 stopwatch.Start();
96 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, w.Wait(0, NULL)); 96 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, w.Wait(0, NULL));
97 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout()); 97 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout());
98 d0->RemoveWaiter(&w); 98 d0->RemoveWaiter(&w);
99 99
100 // Wait for non-zero, finite time for readability on |d0| (will time out). 100 // Wait for non-zero, finite time for readability on |d0| (will time out).
101 w.Init(); 101 w.Init();
102 EXPECT_EQ(MOJO_RESULT_OK, 102 EXPECT_EQ(MOJO_RESULT_OK,
103 d0->AddWaiter(&w, MOJO_WAIT_FLAG_READABLE, 3)); 103 d0->AddWaiter(&w, MOJO_HANDLE_SIGNAL_READABLE, 3));
104 stopwatch.Start(); 104 stopwatch.Start();
105 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, 105 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED,
106 w.Wait(2 * test::EpsilonTimeout().InMicroseconds(), NULL)); 106 w.Wait(2 * test::EpsilonTimeout().InMicroseconds(), NULL));
107 base::TimeDelta elapsed = stopwatch.Elapsed(); 107 base::TimeDelta elapsed = stopwatch.Elapsed();
108 EXPECT_GT(elapsed, (2-1) * test::EpsilonTimeout()); 108 EXPECT_GT(elapsed, (2-1) * test::EpsilonTimeout());
109 EXPECT_LT(elapsed, (2+1) * test::EpsilonTimeout()); 109 EXPECT_LT(elapsed, (2+1) * test::EpsilonTimeout());
110 d0->RemoveWaiter(&w); 110 d0->RemoveWaiter(&w);
111 111
112 EXPECT_EQ(MOJO_RESULT_OK, d0->Close()); 112 EXPECT_EQ(MOJO_RESULT_OK, d0->Close());
113 EXPECT_EQ(MOJO_RESULT_OK, d1->Close()); 113 EXPECT_EQ(MOJO_RESULT_OK, d1->Close());
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 MOJO_WRITE_MESSAGE_FLAG_NONE)); 178 MOJO_WRITE_MESSAGE_FLAG_NONE));
179 buffer[0] = 234567890; 179 buffer[0] = 234567890;
180 EXPECT_EQ(MOJO_RESULT_OK, 180 EXPECT_EQ(MOJO_RESULT_OK,
181 d1->WriteMessage(buffer, kBufferSize, 181 d1->WriteMessage(buffer, kBufferSize,
182 NULL, 182 NULL,
183 MOJO_WRITE_MESSAGE_FLAG_NONE)); 183 MOJO_WRITE_MESSAGE_FLAG_NONE));
184 184
185 // Try waiting for readable on |d0|; should fail (already satisfied). 185 // Try waiting for readable on |d0|; should fail (already satisfied).
186 w.Init(); 186 w.Init();
187 EXPECT_EQ(MOJO_RESULT_ALREADY_EXISTS, 187 EXPECT_EQ(MOJO_RESULT_ALREADY_EXISTS,
188 d0->AddWaiter(&w, MOJO_WAIT_FLAG_READABLE, 0)); 188 d0->AddWaiter(&w, MOJO_HANDLE_SIGNAL_READABLE, 0));
189 189
190 // Try reading from |d1|; should fail (nothing to read). 190 // Try reading from |d1|; should fail (nothing to read).
191 buffer[0] = 0; 191 buffer[0] = 0;
192 buffer_size = kBufferSize; 192 buffer_size = kBufferSize;
193 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, 193 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT,
194 d1->ReadMessage(buffer, &buffer_size, 194 d1->ReadMessage(buffer, &buffer_size,
195 0, NULL, 195 0, NULL,
196 MOJO_READ_MESSAGE_FLAG_NONE)); 196 MOJO_READ_MESSAGE_FLAG_NONE));
197 197
198 // Close |d1|. 198 // Close |d1|.
199 EXPECT_EQ(MOJO_RESULT_OK, d1->Close()); 199 EXPECT_EQ(MOJO_RESULT_OK, d1->Close());
200 200
201 // Try waiting for readable on |d0|; should fail (already satisfied). 201 // Try waiting for readable on |d0|; should fail (already satisfied).
202 w.Init(); 202 w.Init();
203 EXPECT_EQ(MOJO_RESULT_ALREADY_EXISTS, 203 EXPECT_EQ(MOJO_RESULT_ALREADY_EXISTS,
204 d0->AddWaiter(&w, MOJO_WAIT_FLAG_READABLE, 1)); 204 d0->AddWaiter(&w, MOJO_HANDLE_SIGNAL_READABLE, 1));
205 205
206 // Read from |d0|. 206 // Read from |d0|.
207 buffer[0] = 0; 207 buffer[0] = 0;
208 buffer_size = kBufferSize; 208 buffer_size = kBufferSize;
209 EXPECT_EQ(MOJO_RESULT_OK, 209 EXPECT_EQ(MOJO_RESULT_OK,
210 d0->ReadMessage(buffer, &buffer_size, 210 d0->ReadMessage(buffer, &buffer_size,
211 0, NULL, 211 0, NULL,
212 MOJO_READ_MESSAGE_FLAG_NONE)); 212 MOJO_READ_MESSAGE_FLAG_NONE));
213 EXPECT_EQ(kBufferSize, buffer_size); 213 EXPECT_EQ(kBufferSize, buffer_size);
214 EXPECT_EQ(123456789, buffer[0]); 214 EXPECT_EQ(123456789, buffer[0]);
215 215
216 // Try waiting for readable on |d0|; should fail (already satisfied). 216 // Try waiting for readable on |d0|; should fail (already satisfied).
217 w.Init(); 217 w.Init();
218 EXPECT_EQ(MOJO_RESULT_ALREADY_EXISTS, 218 EXPECT_EQ(MOJO_RESULT_ALREADY_EXISTS,
219 d0->AddWaiter(&w, MOJO_WAIT_FLAG_READABLE, 2)); 219 d0->AddWaiter(&w, MOJO_HANDLE_SIGNAL_READABLE, 2));
220 220
221 // Read again from |d0|. 221 // Read again from |d0|.
222 buffer[0] = 0; 222 buffer[0] = 0;
223 buffer_size = kBufferSize; 223 buffer_size = kBufferSize;
224 EXPECT_EQ(MOJO_RESULT_OK, 224 EXPECT_EQ(MOJO_RESULT_OK,
225 d0->ReadMessage(buffer, &buffer_size, 225 d0->ReadMessage(buffer, &buffer_size,
226 0, NULL, 226 0, NULL,
227 MOJO_READ_MESSAGE_FLAG_NONE)); 227 MOJO_READ_MESSAGE_FLAG_NONE));
228 EXPECT_EQ(kBufferSize, buffer_size); 228 EXPECT_EQ(kBufferSize, buffer_size);
229 EXPECT_EQ(234567890, buffer[0]); 229 EXPECT_EQ(234567890, buffer[0]);
230 230
231 // Try waiting for readable on |d0|; should fail (unsatisfiable). 231 // Try waiting for readable on |d0|; should fail (unsatisfiable).
232 w.Init(); 232 w.Init();
233 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 233 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
234 d0->AddWaiter(&w, MOJO_WAIT_FLAG_READABLE, 3)); 234 d0->AddWaiter(&w, MOJO_HANDLE_SIGNAL_READABLE, 3));
235 235
236 // Try waiting for writable on |d0|; should fail (unsatisfiable). 236 // Try waiting for writable on |d0|; should fail (unsatisfiable).
237 w.Init(); 237 w.Init();
238 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 238 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
239 d0->AddWaiter(&w, MOJO_WAIT_FLAG_WRITABLE, 4)); 239 d0->AddWaiter(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 4));
240 240
241 // Try reading from |d0|; should fail (nothing to read and other end 241 // Try reading from |d0|; should fail (nothing to read and other end
242 // closed). 242 // closed).
243 buffer[0] = 0; 243 buffer[0] = 0;
244 buffer_size = kBufferSize; 244 buffer_size = kBufferSize;
245 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 245 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
246 d0->ReadMessage(buffer, &buffer_size, 246 d0->ReadMessage(buffer, &buffer_size,
247 0, NULL, 247 0, NULL,
248 MOJO_READ_MESSAGE_FLAG_NONE)); 248 MOJO_READ_MESSAGE_FLAG_NONE));
249 249
(...skipping 26 matching lines...) Expand all
276 MessagePipeDispatcher::kDefaultCreateOptions)); 276 MessagePipeDispatcher::kDefaultCreateOptions));
277 { 277 {
278 scoped_refptr<MessagePipe> mp(new MessagePipe()); 278 scoped_refptr<MessagePipe> mp(new MessagePipe());
279 d0->Init(mp, i); // 0, 1. 279 d0->Init(mp, i); // 0, 1.
280 d1->Init(mp, i ^ 1); // 1, 0. 280 d1->Init(mp, i ^ 1); // 1, 0.
281 } 281 }
282 282
283 // Wait for readable on |d1|, which will become readable after some time. 283 // Wait for readable on |d1|, which will become readable after some time.
284 { 284 {
285 test::WaiterThread thread(d1, 285 test::WaiterThread thread(d1,
286 MOJO_WAIT_FLAG_READABLE, 286 MOJO_HANDLE_SIGNAL_READABLE,
287 MOJO_DEADLINE_INDEFINITE, 287 MOJO_DEADLINE_INDEFINITE,
288 1, 288 1,
289 &did_wait, &result, &context); 289 &did_wait, &result, &context);
290 stopwatch.Start(); 290 stopwatch.Start();
291 thread.Start(); 291 thread.Start();
292 base::PlatformThread::Sleep(2 * test::EpsilonTimeout()); 292 base::PlatformThread::Sleep(2 * test::EpsilonTimeout());
293 // Wake it up by writing to |d0|. 293 // Wake it up by writing to |d0|.
294 buffer[0] = 123456789; 294 buffer[0] = 123456789;
295 EXPECT_EQ(MOJO_RESULT_OK, 295 EXPECT_EQ(MOJO_RESULT_OK,
296 d0->WriteMessage(buffer, kBufferSize, 296 d0->WriteMessage(buffer, kBufferSize,
297 NULL, 297 NULL,
298 MOJO_WRITE_MESSAGE_FLAG_NONE)); 298 MOJO_WRITE_MESSAGE_FLAG_NONE));
299 } // Joins the thread. 299 } // Joins the thread.
300 elapsed = stopwatch.Elapsed(); 300 elapsed = stopwatch.Elapsed();
301 EXPECT_GT(elapsed, (2-1) * test::EpsilonTimeout()); 301 EXPECT_GT(elapsed, (2-1) * test::EpsilonTimeout());
302 EXPECT_LT(elapsed, (2+1) * test::EpsilonTimeout()); 302 EXPECT_LT(elapsed, (2+1) * test::EpsilonTimeout());
303 EXPECT_TRUE(did_wait); 303 EXPECT_TRUE(did_wait);
304 EXPECT_EQ(MOJO_RESULT_OK, result); 304 EXPECT_EQ(MOJO_RESULT_OK, result);
305 EXPECT_EQ(1u, context); 305 EXPECT_EQ(1u, context);
306 306
307 // Now |d1| is already readable. Try waiting for it again. 307 // Now |d1| is already readable. Try waiting for it again.
308 { 308 {
309 test::WaiterThread thread(d1, 309 test::WaiterThread thread(d1,
310 MOJO_WAIT_FLAG_READABLE, 310 MOJO_HANDLE_SIGNAL_READABLE,
311 MOJO_DEADLINE_INDEFINITE, 311 MOJO_DEADLINE_INDEFINITE,
312 2, 312 2,
313 &did_wait, &result, &context); 313 &did_wait, &result, &context);
314 stopwatch.Start(); 314 stopwatch.Start();
315 thread.Start(); 315 thread.Start();
316 } // Joins the thread. 316 } // Joins the thread.
317 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout()); 317 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout());
318 EXPECT_FALSE(did_wait); 318 EXPECT_FALSE(did_wait);
319 EXPECT_EQ(MOJO_RESULT_ALREADY_EXISTS, result); 319 EXPECT_EQ(MOJO_RESULT_ALREADY_EXISTS, result);
320 320
321 // Consume what we wrote to |d0|. 321 // Consume what we wrote to |d0|.
322 buffer[0] = 0; 322 buffer[0] = 0;
323 buffer_size = kBufferSize; 323 buffer_size = kBufferSize;
324 EXPECT_EQ(MOJO_RESULT_OK, 324 EXPECT_EQ(MOJO_RESULT_OK,
325 d1->ReadMessage(buffer, &buffer_size, 325 d1->ReadMessage(buffer, &buffer_size,
326 0, NULL, 326 0, NULL,
327 MOJO_READ_MESSAGE_FLAG_NONE)); 327 MOJO_READ_MESSAGE_FLAG_NONE));
328 EXPECT_EQ(kBufferSize, buffer_size); 328 EXPECT_EQ(kBufferSize, buffer_size);
329 EXPECT_EQ(123456789, buffer[0]); 329 EXPECT_EQ(123456789, buffer[0]);
330 330
331 // Wait for readable on |d1| and close |d0| after some time, which should 331 // Wait for readable on |d1| and close |d0| after some time, which should
332 // cancel that wait. 332 // cancel that wait.
333 { 333 {
334 test::WaiterThread thread(d1, 334 test::WaiterThread thread(d1,
335 MOJO_WAIT_FLAG_READABLE, 335 MOJO_HANDLE_SIGNAL_READABLE,
336 MOJO_DEADLINE_INDEFINITE, 336 MOJO_DEADLINE_INDEFINITE,
337 3, 337 3,
338 &did_wait, &result, &context); 338 &did_wait, &result, &context);
339 stopwatch.Start(); 339 stopwatch.Start();
340 thread.Start(); 340 thread.Start();
341 base::PlatformThread::Sleep(2 * test::EpsilonTimeout()); 341 base::PlatformThread::Sleep(2 * test::EpsilonTimeout());
342 EXPECT_EQ(MOJO_RESULT_OK, d0->Close()); 342 EXPECT_EQ(MOJO_RESULT_OK, d0->Close());
343 } // Joins the thread. 343 } // Joins the thread.
344 elapsed = stopwatch.Elapsed(); 344 elapsed = stopwatch.Elapsed();
345 EXPECT_GT(elapsed, (2-1) * test::EpsilonTimeout()); 345 EXPECT_GT(elapsed, (2-1) * test::EpsilonTimeout());
(...skipping 13 matching lines...) Expand all
359 { 359 {
360 scoped_refptr<MessagePipe> mp(new MessagePipe()); 360 scoped_refptr<MessagePipe> mp(new MessagePipe());
361 d0->Init(mp, i); // 0, 1. 361 d0->Init(mp, i); // 0, 1.
362 d1->Init(mp, i ^ 1); // 1, 0. 362 d1->Init(mp, i ^ 1); // 1, 0.
363 } 363 }
364 364
365 // Wait for readable on |d1| and close |d1| after some time, which should 365 // Wait for readable on |d1| and close |d1| after some time, which should
366 // cancel that wait. 366 // cancel that wait.
367 { 367 {
368 test::WaiterThread thread(d1, 368 test::WaiterThread thread(d1,
369 MOJO_WAIT_FLAG_READABLE, 369 MOJO_HANDLE_SIGNAL_READABLE,
370 MOJO_DEADLINE_INDEFINITE, 370 MOJO_DEADLINE_INDEFINITE,
371 4, 371 4,
372 &did_wait, &result, &context); 372 &did_wait, &result, &context);
373 stopwatch.Start(); 373 stopwatch.Start();
374 thread.Start(); 374 thread.Start();
375 base::PlatformThread::Sleep(2 * test::EpsilonTimeout()); 375 base::PlatformThread::Sleep(2 * test::EpsilonTimeout());
376 EXPECT_EQ(MOJO_RESULT_OK, d1->Close()); 376 EXPECT_EQ(MOJO_RESULT_OK, d1->Close());
377 } // Joins the thread. 377 } // Joins the thread.
378 elapsed = stopwatch.Elapsed(); 378 elapsed = stopwatch.Elapsed();
379 EXPECT_GT(elapsed, (2-1) * test::EpsilonTimeout()); 379 EXPECT_GT(elapsed, (2-1) * test::EpsilonTimeout());
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 private: 463 private:
464 virtual void Run() OVERRIDE { 464 virtual void Run() OVERRIDE {
465 unsigned char buffer[kMaxMessageSize]; 465 unsigned char buffer[kMaxMessageSize];
466 MojoResult result; 466 MojoResult result;
467 Waiter w; 467 Waiter w;
468 468
469 // Read messages. 469 // Read messages.
470 for (;;) { 470 for (;;) {
471 // Wait for it to be readable. 471 // Wait for it to be readable.
472 w.Init(); 472 w.Init();
473 result = read_dispatcher_->AddWaiter(&w, MOJO_WAIT_FLAG_READABLE, 0); 473 result = read_dispatcher_->AddWaiter(&w, MOJO_HANDLE_SIGNAL_READABLE, 0);
474 EXPECT_TRUE(result == MOJO_RESULT_OK || 474 EXPECT_TRUE(result == MOJO_RESULT_OK ||
475 result == MOJO_RESULT_ALREADY_EXISTS) << "result: " << result; 475 result == MOJO_RESULT_ALREADY_EXISTS) << "result: " << result;
476 if (result == MOJO_RESULT_OK) { 476 if (result == MOJO_RESULT_OK) {
477 // Actually need to wait. 477 // Actually need to wait.
478 EXPECT_EQ(MOJO_RESULT_OK, w.Wait(MOJO_DEADLINE_INDEFINITE, NULL)); 478 EXPECT_EQ(MOJO_RESULT_OK, w.Wait(MOJO_DEADLINE_INDEFINITE, NULL));
479 read_dispatcher_->RemoveWaiter(&w); 479 read_dispatcher_->RemoveWaiter(&w);
480 } 480 }
481 481
482 // Now, try to do the read. 482 // Now, try to do the read.
483 // Clear the buffer so that we can check the result. 483 // Clear the buffer so that we can check the result.
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
589 EXPECT_EQ(total_messages_written, total_messages_read); 589 EXPECT_EQ(total_messages_written, total_messages_read);
590 EXPECT_EQ(total_bytes_written, total_bytes_read); 590 EXPECT_EQ(total_bytes_written, total_bytes_read);
591 591
592 EXPECT_EQ(MOJO_RESULT_OK, d_write->Close()); 592 EXPECT_EQ(MOJO_RESULT_OK, d_write->Close());
593 EXPECT_EQ(MOJO_RESULT_OK, d_read->Close()); 593 EXPECT_EQ(MOJO_RESULT_OK, d_read->Close());
594 } 594 }
595 595
596 } // namespace 596 } // namespace
597 } // namespace system 597 } // namespace system
598 } // namespace mojo 598 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/system/local_message_pipe_endpoint.cc ('k') | mojo/system/message_pipe_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698