OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |