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

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

Issue 2075353002: Plumb the handle signals state out of Waiter::Wait(). (Closed) Base URL: https://github.com/domokit/mojo.git@work795_wait_set_4.3-x-work794_wait_set_4.2
Patch Set: Created 4 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
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/edk/system/simple_dispatcher.h" 10 #include "mojo/edk/system/simple_dispatcher.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 hss.satisfiable_signals); 53 hss.satisfiable_signals);
54 // Shouldn't need to remove the waiter (it was not added). 54 // Shouldn't need to remove the waiter (it was not added).
55 55
56 // Wait (forever) for writable when already writable. 56 // Wait (forever) for writable when already writable.
57 w.Init(); 57 w.Init();
58 d->SetSatisfiedSignals(MOJO_HANDLE_SIGNAL_READABLE); 58 d->SetSatisfiedSignals(MOJO_HANDLE_SIGNAL_READABLE);
59 ASSERT_EQ(MOJO_RESULT_OK, 59 ASSERT_EQ(MOJO_RESULT_OK,
60 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 1, nullptr)); 60 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 1, nullptr));
61 d->SetSatisfiedSignals(MOJO_HANDLE_SIGNAL_WRITABLE); 61 d->SetSatisfiedSignals(MOJO_HANDLE_SIGNAL_WRITABLE);
62 stopwatch.Start(); 62 stopwatch.Start();
63 EXPECT_EQ(MOJO_RESULT_OK, w.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 63 EXPECT_EQ(MOJO_RESULT_OK,
64 w.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
64 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout()); 65 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout());
65 EXPECT_EQ(1u, context); 66 EXPECT_EQ(1u, context);
66 hss = HandleSignalsState(); 67 hss = HandleSignalsState();
67 d->RemoveAwakable(&w, &hss); 68 d->RemoveAwakable(&w, &hss);
68 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss.satisfied_signals); 69 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss.satisfied_signals);
69 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 70 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
70 hss.satisfiable_signals); 71 hss.satisfiable_signals);
71 72
72 // Wait for zero time for writable when already writable. 73 // Wait for zero time for writable when already writable.
73 w.Init(); 74 w.Init();
74 d->SetSatisfiedSignals(MOJO_HANDLE_SIGNAL_READABLE); 75 d->SetSatisfiedSignals(MOJO_HANDLE_SIGNAL_READABLE);
75 ASSERT_EQ(MOJO_RESULT_OK, 76 ASSERT_EQ(MOJO_RESULT_OK,
76 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 2, nullptr)); 77 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 2, nullptr));
77 d->SetSatisfiedSignals(MOJO_HANDLE_SIGNAL_WRITABLE); 78 d->SetSatisfiedSignals(MOJO_HANDLE_SIGNAL_WRITABLE);
78 stopwatch.Start(); 79 stopwatch.Start();
79 EXPECT_EQ(MOJO_RESULT_OK, w.Wait(0, &context)); 80 EXPECT_EQ(MOJO_RESULT_OK, w.Wait(0, &context, nullptr));
80 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout()); 81 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout());
81 EXPECT_EQ(2u, context); 82 EXPECT_EQ(2u, context);
82 hss = HandleSignalsState(); 83 hss = HandleSignalsState();
83 d->RemoveAwakable(&w, &hss); 84 d->RemoveAwakable(&w, &hss);
84 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss.satisfied_signals); 85 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss.satisfied_signals);
85 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 86 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
86 hss.satisfiable_signals); 87 hss.satisfiable_signals);
87 88
88 // Wait for non-zero, finite time for writable when already writable. 89 // Wait for non-zero, finite time for writable when already writable.
89 w.Init(); 90 w.Init();
90 d->SetSatisfiedSignals(MOJO_HANDLE_SIGNAL_READABLE); 91 d->SetSatisfiedSignals(MOJO_HANDLE_SIGNAL_READABLE);
91 ASSERT_EQ(MOJO_RESULT_OK, 92 ASSERT_EQ(MOJO_RESULT_OK,
92 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 3, nullptr)); 93 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 3, nullptr));
93 d->SetSatisfiedSignals(MOJO_HANDLE_SIGNAL_WRITABLE); 94 d->SetSatisfiedSignals(MOJO_HANDLE_SIGNAL_WRITABLE);
94 stopwatch.Start(); 95 stopwatch.Start();
95 EXPECT_EQ(MOJO_RESULT_OK, w.Wait(2 * test::EpsilonTimeout(), &context)); 96 EXPECT_EQ(MOJO_RESULT_OK,
97 w.Wait(2 * test::EpsilonTimeout(), &context, nullptr));
96 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout()); 98 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout());
97 EXPECT_EQ(3u, context); 99 EXPECT_EQ(3u, context);
98 hss = HandleSignalsState(); 100 hss = HandleSignalsState();
99 d->RemoveAwakable(&w, &hss); 101 d->RemoveAwakable(&w, &hss);
100 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss.satisfied_signals); 102 EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss.satisfied_signals);
101 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 103 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
102 hss.satisfiable_signals); 104 hss.satisfiable_signals);
103 105
104 // Wait for zero time for writable when not writable (will time out). 106 // Wait for zero time for writable when not writable (will time out).
105 w.Init(); 107 w.Init();
106 d->SetSatisfiedSignals(MOJO_HANDLE_SIGNAL_READABLE); 108 d->SetSatisfiedSignals(MOJO_HANDLE_SIGNAL_READABLE);
107 ASSERT_EQ(MOJO_RESULT_OK, 109 ASSERT_EQ(MOJO_RESULT_OK,
108 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 4, nullptr)); 110 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 4, nullptr));
109 stopwatch.Start(); 111 stopwatch.Start();
110 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, w.Wait(0, nullptr)); 112 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, w.Wait(0, nullptr, nullptr));
111 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout()); 113 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout());
112 hss = HandleSignalsState(); 114 hss = HandleSignalsState();
113 d->RemoveAwakable(&w, &hss); 115 d->RemoveAwakable(&w, &hss);
114 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfied_signals); 116 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfied_signals);
115 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 117 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
116 hss.satisfiable_signals); 118 hss.satisfiable_signals);
117 119
118 // Wait for non-zero, finite time for writable when not writable (will time 120 // Wait for non-zero, finite time for writable when not writable (will time
119 // out). 121 // out).
120 w.Init(); 122 w.Init();
121 d->SetSatisfiedSignals(MOJO_HANDLE_SIGNAL_READABLE); 123 d->SetSatisfiedSignals(MOJO_HANDLE_SIGNAL_READABLE);
122 ASSERT_EQ(MOJO_RESULT_OK, 124 ASSERT_EQ(MOJO_RESULT_OK,
123 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 5, nullptr)); 125 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 5, nullptr));
124 stopwatch.Start(); 126 stopwatch.Start();
125 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, 127 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED,
126 w.Wait(2 * test::EpsilonTimeout(), nullptr)); 128 w.Wait(2 * test::EpsilonTimeout(), nullptr, nullptr));
127 MojoDeadline elapsed = stopwatch.Elapsed(); 129 MojoDeadline elapsed = stopwatch.Elapsed();
128 EXPECT_GT(elapsed, (2 - 1) * test::EpsilonTimeout()); 130 EXPECT_GT(elapsed, (2 - 1) * test::EpsilonTimeout());
129 EXPECT_LT(elapsed, (2 + 1) * test::EpsilonTimeout()); 131 EXPECT_LT(elapsed, (2 + 1) * test::EpsilonTimeout());
130 hss = HandleSignalsState(); 132 hss = HandleSignalsState();
131 d->RemoveAwakable(&w, &hss); 133 d->RemoveAwakable(&w, &hss);
132 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfied_signals); 134 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfied_signals);
133 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 135 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
134 hss.satisfiable_signals); 136 hss.satisfiable_signals);
135 137
136 EXPECT_EQ(MOJO_RESULT_OK, d->Close()); 138 EXPECT_EQ(MOJO_RESULT_OK, d->Close());
(...skipping 20 matching lines...) Expand all
157 159
158 // Wait (forever) for writable and then it becomes never writable. 160 // Wait (forever) for writable and then it becomes never writable.
159 w.Init(); 161 w.Init();
160 d->SetSatisfiableSignals(MOJO_HANDLE_SIGNAL_READABLE | 162 d->SetSatisfiableSignals(MOJO_HANDLE_SIGNAL_READABLE |
161 MOJO_HANDLE_SIGNAL_WRITABLE); 163 MOJO_HANDLE_SIGNAL_WRITABLE);
162 ASSERT_EQ(MOJO_RESULT_OK, 164 ASSERT_EQ(MOJO_RESULT_OK,
163 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 2, nullptr)); 165 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 2, nullptr));
164 d->SetSatisfiableSignals(MOJO_HANDLE_SIGNAL_READABLE); 166 d->SetSatisfiableSignals(MOJO_HANDLE_SIGNAL_READABLE);
165 stopwatch.Start(); 167 stopwatch.Start();
166 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 168 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
167 w.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 169 w.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
168 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout()); 170 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout());
169 EXPECT_EQ(2u, context); 171 EXPECT_EQ(2u, context);
170 hss = HandleSignalsState(); 172 hss = HandleSignalsState();
171 d->RemoveAwakable(&w, &hss); 173 d->RemoveAwakable(&w, &hss);
172 EXPECT_EQ(0u, hss.satisfied_signals); 174 EXPECT_EQ(0u, hss.satisfied_signals);
173 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfiable_signals); 175 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfiable_signals);
174 176
175 // Wait for zero time for writable and then it becomes never writable. 177 // Wait for zero time for writable and then it becomes never writable.
176 w.Init(); 178 w.Init();
177 d->SetSatisfiableSignals(MOJO_HANDLE_SIGNAL_READABLE | 179 d->SetSatisfiableSignals(MOJO_HANDLE_SIGNAL_READABLE |
178 MOJO_HANDLE_SIGNAL_WRITABLE); 180 MOJO_HANDLE_SIGNAL_WRITABLE);
179 ASSERT_EQ(MOJO_RESULT_OK, 181 ASSERT_EQ(MOJO_RESULT_OK,
180 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 3, nullptr)); 182 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 3, nullptr));
181 d->SetSatisfiableSignals(MOJO_HANDLE_SIGNAL_READABLE); 183 d->SetSatisfiableSignals(MOJO_HANDLE_SIGNAL_READABLE);
182 stopwatch.Start(); 184 stopwatch.Start();
183 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, w.Wait(0, &context)); 185 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, w.Wait(0, &context, nullptr));
184 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout()); 186 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout());
185 EXPECT_EQ(3u, context); 187 EXPECT_EQ(3u, context);
186 hss = HandleSignalsState(); 188 hss = HandleSignalsState();
187 d->RemoveAwakable(&w, &hss); 189 d->RemoveAwakable(&w, &hss);
188 EXPECT_EQ(0u, hss.satisfied_signals); 190 EXPECT_EQ(0u, hss.satisfied_signals);
189 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfiable_signals); 191 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfiable_signals);
190 192
191 // Wait for non-zero, finite time for writable and then it becomes never 193 // Wait for non-zero, finite time for writable and then it becomes never
192 // writable. 194 // writable.
193 w.Init(); 195 w.Init();
194 d->SetSatisfiableSignals(MOJO_HANDLE_SIGNAL_READABLE | 196 d->SetSatisfiableSignals(MOJO_HANDLE_SIGNAL_READABLE |
195 MOJO_HANDLE_SIGNAL_WRITABLE); 197 MOJO_HANDLE_SIGNAL_WRITABLE);
196 ASSERT_EQ(MOJO_RESULT_OK, 198 ASSERT_EQ(MOJO_RESULT_OK,
197 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 4, nullptr)); 199 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 4, nullptr));
198 d->SetSatisfiableSignals(MOJO_HANDLE_SIGNAL_READABLE); 200 d->SetSatisfiableSignals(MOJO_HANDLE_SIGNAL_READABLE);
199 stopwatch.Start(); 201 stopwatch.Start();
200 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 202 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
201 w.Wait(2 * test::EpsilonTimeout(), &context)); 203 w.Wait(2 * test::EpsilonTimeout(), &context, nullptr));
202 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout()); 204 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout());
203 EXPECT_EQ(4u, context); 205 EXPECT_EQ(4u, context);
204 hss = HandleSignalsState(); 206 hss = HandleSignalsState();
205 d->RemoveAwakable(&w, &hss); 207 d->RemoveAwakable(&w, &hss);
206 EXPECT_EQ(0u, hss.satisfied_signals); 208 EXPECT_EQ(0u, hss.satisfied_signals);
207 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfiable_signals); 209 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfiable_signals);
208 210
209 EXPECT_EQ(MOJO_RESULT_OK, d->Close()); 211 EXPECT_EQ(MOJO_RESULT_OK, d->Close());
210 } 212 }
211 213
(...skipping 16 matching lines...) Expand all
228 EXPECT_EQ(0u, hss.satisfiable_signals); 230 EXPECT_EQ(0u, hss.satisfiable_signals);
229 // Shouldn't need to remove the waiter (it was not added). 231 // Shouldn't need to remove the waiter (it was not added).
230 232
231 // Wait (forever) for writable and then the dispatcher is closed. 233 // Wait (forever) for writable and then the dispatcher is closed.
232 d = MakeRefCounted<test::MockSimpleDispatcher>(); 234 d = MakeRefCounted<test::MockSimpleDispatcher>();
233 w.Init(); 235 w.Init();
234 ASSERT_EQ(MOJO_RESULT_OK, 236 ASSERT_EQ(MOJO_RESULT_OK,
235 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 2, nullptr)); 237 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 2, nullptr));
236 EXPECT_EQ(MOJO_RESULT_OK, d->Close()); 238 EXPECT_EQ(MOJO_RESULT_OK, d->Close());
237 stopwatch.Start(); 239 stopwatch.Start();
238 EXPECT_EQ(MOJO_RESULT_CANCELLED, w.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 240 EXPECT_EQ(MOJO_RESULT_CANCELLED,
241 w.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
239 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout()); 242 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout());
240 EXPECT_EQ(2u, context); 243 EXPECT_EQ(2u, context);
241 // Don't need to remove waiters from closed dispatchers. 244 // Don't need to remove waiters from closed dispatchers.
242 245
243 // Wait for zero time for writable and then the dispatcher is closed. 246 // Wait for zero time for writable and then the dispatcher is closed.
244 d = MakeRefCounted<test::MockSimpleDispatcher>(); 247 d = MakeRefCounted<test::MockSimpleDispatcher>();
245 w.Init(); 248 w.Init();
246 ASSERT_EQ(MOJO_RESULT_OK, 249 ASSERT_EQ(MOJO_RESULT_OK,
247 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 3, nullptr)); 250 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 3, nullptr));
248 EXPECT_EQ(MOJO_RESULT_OK, d->Close()); 251 EXPECT_EQ(MOJO_RESULT_OK, d->Close());
249 stopwatch.Start(); 252 stopwatch.Start();
250 EXPECT_EQ(MOJO_RESULT_CANCELLED, w.Wait(0, &context)); 253 EXPECT_EQ(MOJO_RESULT_CANCELLED, w.Wait(0, &context, nullptr));
251 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout()); 254 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout());
252 EXPECT_EQ(3u, context); 255 EXPECT_EQ(3u, context);
253 // Don't need to remove waiters from closed dispatchers. 256 // Don't need to remove waiters from closed dispatchers.
254 257
255 // Wait for non-zero, finite time for writable and then the dispatcher is 258 // Wait for non-zero, finite time for writable and then the dispatcher is
256 // closed. 259 // closed.
257 d = MakeRefCounted<test::MockSimpleDispatcher>(); 260 d = MakeRefCounted<test::MockSimpleDispatcher>();
258 w.Init(); 261 w.Init();
259 ASSERT_EQ(MOJO_RESULT_OK, 262 ASSERT_EQ(MOJO_RESULT_OK,
260 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 4, nullptr)); 263 d->AddAwakable(&w, MOJO_HANDLE_SIGNAL_WRITABLE, 4, nullptr));
261 EXPECT_EQ(MOJO_RESULT_OK, d->Close()); 264 EXPECT_EQ(MOJO_RESULT_OK, d->Close());
262 stopwatch.Start(); 265 stopwatch.Start();
263 EXPECT_EQ(MOJO_RESULT_CANCELLED, 266 EXPECT_EQ(MOJO_RESULT_CANCELLED,
264 w.Wait(2 * test::EpsilonTimeout(), &context)); 267 w.Wait(2 * test::EpsilonTimeout(), &context, nullptr));
265 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout()); 268 EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout());
266 EXPECT_EQ(4u, context); 269 EXPECT_EQ(4u, context);
267 // Don't need to remove waiters from closed dispatchers. 270 // Don't need to remove waiters from closed dispatchers.
268 } 271 }
269 272
270 TEST(SimpleDispatcherTest, BasicThreaded) { 273 TEST(SimpleDispatcherTest, BasicThreaded) {
271 Stopwatch stopwatch; 274 Stopwatch stopwatch;
272 bool did_wait; 275 bool did_wait;
273 MojoResult result; 276 MojoResult result;
274 uint64_t context; 277 uint64_t context;
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
528 // Since we closed before joining, we can't say much about what each thread 531 // Since we closed before joining, we can't say much about what each thread
529 // saw as the state. 532 // saw as the state.
530 } 533 }
531 } 534 }
532 535
533 // TODO(vtl): Stress test? 536 // TODO(vtl): Stress test?
534 537
535 } // namespace 538 } // namespace
536 } // namespace system 539 } // namespace system
537 } // namespace mojo 540 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698