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

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

Issue 345463003: Mojo: MojoWaitFlags -> MojoHandleSignals. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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/core_test_base.cc ('k') | mojo/system/data_pipe.h » ('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 "mojo/system/core.h" 5 #include "mojo/system/core.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/threading/platform_thread.h" 10 #include "base/threading/platform_thread.h"
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 96 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
97 core()->Wait(h, MOJO_WAIT_FLAG_EVERYTHING, 97 core()->Wait(h, MOJO_WAIT_FLAG_EVERYTHING,
98 MOJO_DEADLINE_INDEFINITE)); 98 MOJO_DEADLINE_INDEFINITE));
99 EXPECT_EQ(1u, info.GetAddWaiterCallCount()); 99 EXPECT_EQ(1u, info.GetAddWaiterCallCount());
100 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 100 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
101 core()->Wait(h, MOJO_WAIT_FLAG_EVERYTHING, 0)); 101 core()->Wait(h, MOJO_WAIT_FLAG_EVERYTHING, 0));
102 EXPECT_EQ(2u, info.GetAddWaiterCallCount()); 102 EXPECT_EQ(2u, info.GetAddWaiterCallCount());
103 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 103 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
104 core()->Wait(h, MOJO_WAIT_FLAG_EVERYTHING, 10 * 1000)); 104 core()->Wait(h, MOJO_WAIT_FLAG_EVERYTHING, 10 * 1000));
105 EXPECT_EQ(3u, info.GetAddWaiterCallCount()); 105 EXPECT_EQ(3u, info.GetAddWaiterCallCount());
106 MojoWaitFlags wait_flags = MOJO_WAIT_FLAG_EVERYTHING; 106 MojoHandleSignals handle_signals = MOJO_WAIT_FLAG_EVERYTHING;
107 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 107 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
108 core()->WaitMany(&h, &wait_flags, 1, MOJO_DEADLINE_INDEFINITE)); 108 core()->WaitMany(&h, &handle_signals, 1, MOJO_DEADLINE_INDEFINITE));
109 EXPECT_EQ(4u, info.GetAddWaiterCallCount()); 109 EXPECT_EQ(4u, info.GetAddWaiterCallCount());
110 110
111 EXPECT_EQ(0u, info.GetDtorCallCount()); 111 EXPECT_EQ(0u, info.GetDtorCallCount());
112 EXPECT_EQ(0u, info.GetCloseCallCount()); 112 EXPECT_EQ(0u, info.GetCloseCallCount());
113 EXPECT_EQ(0u, info.GetCancelAllWaitersCallCount()); 113 EXPECT_EQ(0u, info.GetCancelAllWaitersCallCount());
114 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h)); 114 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h));
115 EXPECT_EQ(1u, info.GetCancelAllWaitersCallCount()); 115 EXPECT_EQ(1u, info.GetCancelAllWaitersCallCount());
116 EXPECT_EQ(1u, info.GetCloseCallCount()); 116 EXPECT_EQ(1u, info.GetCloseCallCount());
117 EXPECT_EQ(1u, info.GetDtorCallCount()); 117 EXPECT_EQ(1u, info.GetDtorCallCount());
118 118
(...skipping 22 matching lines...) Expand all
141 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 141 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
142 core()->Wait(MOJO_HANDLE_INVALID, MOJO_WAIT_FLAG_EVERYTHING, 142 core()->Wait(MOJO_HANDLE_INVALID, MOJO_WAIT_FLAG_EVERYTHING,
143 MOJO_DEADLINE_INDEFINITE)); 143 MOJO_DEADLINE_INDEFINITE));
144 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 144 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
145 core()->Wait(10, MOJO_WAIT_FLAG_EVERYTHING, 145 core()->Wait(10, MOJO_WAIT_FLAG_EVERYTHING,
146 MOJO_DEADLINE_INDEFINITE)); 146 MOJO_DEADLINE_INDEFINITE));
147 } 147 }
148 148
149 // |WaitMany()|: 149 // |WaitMany()|:
150 { 150 {
151 MojoHandle handles[2] = { MOJO_HANDLE_INVALID, MOJO_HANDLE_INVALID }; 151 MojoHandle handles[2] = {MOJO_HANDLE_INVALID, MOJO_HANDLE_INVALID};
152 MojoWaitFlags flags[2] = { MOJO_WAIT_FLAG_EVERYTHING, 152 MojoHandleSignals signals[2] = {MOJO_WAIT_FLAG_EVERYTHING,
153 MOJO_WAIT_FLAG_EVERYTHING }; 153 MOJO_WAIT_FLAG_EVERYTHING};
154 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 154 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
155 core()->WaitMany(handles, flags, 0, MOJO_DEADLINE_INDEFINITE)); 155 core()->WaitMany(handles, signals, 0, MOJO_DEADLINE_INDEFINITE));
156 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 156 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
157 core()->WaitMany(NULL, flags, 0, MOJO_DEADLINE_INDEFINITE)); 157 core()->WaitMany(NULL, signals, 0, MOJO_DEADLINE_INDEFINITE));
158 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 158 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
159 core()->WaitMany(handles, NULL, 0, MOJO_DEADLINE_INDEFINITE)); 159 core()->WaitMany(handles, NULL, 0, MOJO_DEADLINE_INDEFINITE));
160 160
161 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 161 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
162 core()->WaitMany(NULL, flags, 1, MOJO_DEADLINE_INDEFINITE)); 162 core()->WaitMany(NULL, signals, 1, MOJO_DEADLINE_INDEFINITE));
163 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 163 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
164 core()->WaitMany(handles, NULL, 1, MOJO_DEADLINE_INDEFINITE)); 164 core()->WaitMany(handles, NULL, 1, MOJO_DEADLINE_INDEFINITE));
165 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 165 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
166 core()->WaitMany(handles, flags, 1, MOJO_DEADLINE_INDEFINITE)); 166 core()->WaitMany(handles, signals, 1, MOJO_DEADLINE_INDEFINITE));
167 167
168 MockHandleInfo info[2]; 168 MockHandleInfo info[2];
169 handles[0] = CreateMockHandle(&info[0]); 169 handles[0] = CreateMockHandle(&info[0]);
170 170
171 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 171 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
172 core()->WaitMany(handles, flags, 1, MOJO_DEADLINE_INDEFINITE)); 172 core()->WaitMany(handles, signals, 1, MOJO_DEADLINE_INDEFINITE));
173 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 173 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
174 core()->WaitMany(handles, flags, 2, MOJO_DEADLINE_INDEFINITE)); 174 core()->WaitMany(handles, signals, 2, MOJO_DEADLINE_INDEFINITE));
175 handles[1] = handles[0] + 1; // Invalid handle. 175 handles[1] = handles[0] + 1; // Invalid handle.
176 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 176 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
177 core()->WaitMany(handles, flags, 2, MOJO_DEADLINE_INDEFINITE)); 177 core()->WaitMany(handles, signals, 2, MOJO_DEADLINE_INDEFINITE));
178 handles[1] = CreateMockHandle(&info[1]); 178 handles[1] = CreateMockHandle(&info[1]);
179 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 179 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
180 core()->WaitMany(handles, flags, 2, MOJO_DEADLINE_INDEFINITE)); 180 core()->WaitMany(handles, signals, 2, MOJO_DEADLINE_INDEFINITE));
181 181
182 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(handles[0])); 182 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(handles[0]));
183 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(handles[1])); 183 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(handles[1]));
184 } 184 }
185 185
186 // |CreateMessagePipe()|: 186 // |CreateMessagePipe()|:
187 { 187 {
188 MojoHandle h; 188 MojoHandle h;
189 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, 189 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
190 core()->CreateMessagePipe(NULL, NULL, NULL)); 190 core()->CreateMessagePipe(NULL, NULL, NULL));
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 MOJO_READ_MESSAGE_FLAG_NONE)); 313 MOJO_READ_MESSAGE_FLAG_NONE));
314 // Checked by |Core|, shouldn't go through to the dispatcher. 314 // Checked by |Core|, shouldn't go through to the dispatcher.
315 EXPECT_EQ(1u, info.GetReadMessageCallCount()); 315 EXPECT_EQ(1u, info.GetReadMessageCallCount());
316 316
317 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h)); 317 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h));
318 } 318 }
319 } 319 }
320 320
321 // TODO(vtl): test |Wait()| and |WaitMany()| properly 321 // TODO(vtl): test |Wait()| and |WaitMany()| properly
322 // - including |WaitMany()| with the same handle more than once (with 322 // - including |WaitMany()| with the same handle more than once (with
323 // same/different flags) 323 // same/different signals)
324 324
325 TEST_F(CoreTest, MessagePipe) { 325 TEST_F(CoreTest, MessagePipe) {
326 MojoHandle h[2]; 326 MojoHandle h[2];
327 327
328 EXPECT_EQ(MOJO_RESULT_OK, core()->CreateMessagePipe(NULL, &h[0], &h[1])); 328 EXPECT_EQ(MOJO_RESULT_OK, core()->CreateMessagePipe(NULL, &h[0], &h[1]));
329 // Should get two distinct, valid handles. 329 // Should get two distinct, valid handles.
330 EXPECT_NE(h[0], MOJO_HANDLE_INVALID); 330 EXPECT_NE(h[0], MOJO_HANDLE_INVALID);
331 EXPECT_NE(h[1], MOJO_HANDLE_INVALID); 331 EXPECT_NE(h[1], MOJO_HANDLE_INVALID);
332 EXPECT_NE(h[0], h[1]); 332 EXPECT_NE(h[0], h[1]);
333 333
334 // Neither should be readable. 334 // Neither should be readable.
335 MojoWaitFlags flags[2] = { MOJO_WAIT_FLAG_READABLE, MOJO_WAIT_FLAG_READABLE }; 335 MojoHandleSignals signals[2] = {MOJO_WAIT_FLAG_READABLE,
336 MOJO_WAIT_FLAG_READABLE};
336 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, 337 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED,
337 core()->WaitMany(h, flags, 2, 0)); 338 core()->WaitMany(h, signals, 2, 0));
338 339
339 // Try to read anyway. 340 // Try to read anyway.
340 char buffer[1] = { 'a' }; 341 char buffer[1] = { 'a' };
341 uint32_t buffer_size = 1; 342 uint32_t buffer_size = 1;
342 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, 343 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT,
343 core()->ReadMessage(h[0], buffer, &buffer_size, NULL, NULL, 344 core()->ReadMessage(h[0], buffer, &buffer_size, NULL, NULL,
344 MOJO_READ_MESSAGE_FLAG_NONE)); 345 MOJO_READ_MESSAGE_FLAG_NONE));
345 // Check that it left its inputs alone. 346 // Check that it left its inputs alone.
346 EXPECT_EQ('a', buffer[0]); 347 EXPECT_EQ('a', buffer[0]);
347 EXPECT_EQ(1u, buffer_size); 348 EXPECT_EQ(1u, buffer_size);
348 349
349 // Both should be writable. 350 // Both should be writable.
350 EXPECT_EQ(MOJO_RESULT_OK, 351 EXPECT_EQ(MOJO_RESULT_OK,
351 core()->Wait(h[0], MOJO_WAIT_FLAG_WRITABLE, 1000000000)); 352 core()->Wait(h[0], MOJO_WAIT_FLAG_WRITABLE, 1000000000));
352 EXPECT_EQ(MOJO_RESULT_OK, 353 EXPECT_EQ(MOJO_RESULT_OK,
353 core()->Wait(h[1], MOJO_WAIT_FLAG_WRITABLE, 1000000000)); 354 core()->Wait(h[1], MOJO_WAIT_FLAG_WRITABLE, 1000000000));
354 355
355 // Also check that |h[1]| is writable using |WaitMany()|. 356 // Also check that |h[1]| is writable using |WaitMany()|.
356 flags[0] = MOJO_WAIT_FLAG_READABLE; 357 signals[0] = MOJO_WAIT_FLAG_READABLE;
357 flags[1] = MOJO_WAIT_FLAG_WRITABLE; 358 signals[1] = MOJO_WAIT_FLAG_WRITABLE;
358 EXPECT_EQ(1, core()->WaitMany(h, flags, 2, MOJO_DEADLINE_INDEFINITE)); 359 EXPECT_EQ(1, core()->WaitMany(h, signals, 2, MOJO_DEADLINE_INDEFINITE));
359 360
360 // Write to |h[1]|. 361 // Write to |h[1]|.
361 buffer[0] = 'b'; 362 buffer[0] = 'b';
362 EXPECT_EQ(MOJO_RESULT_OK, 363 EXPECT_EQ(MOJO_RESULT_OK,
363 core()->WriteMessage(h[1], buffer, 1, NULL, 0, 364 core()->WriteMessage(h[1], buffer, 1, NULL, 0,
364 MOJO_WRITE_MESSAGE_FLAG_NONE)); 365 MOJO_WRITE_MESSAGE_FLAG_NONE));
365 366
366 // Check that |h[0]| is now readable. 367 // Check that |h[0]| is now readable.
367 flags[0] = MOJO_WAIT_FLAG_READABLE; 368 signals[0] = MOJO_WAIT_FLAG_READABLE;
368 flags[1] = MOJO_WAIT_FLAG_READABLE; 369 signals[1] = MOJO_WAIT_FLAG_READABLE;
369 EXPECT_EQ(0, core()->WaitMany(h, flags, 2, MOJO_DEADLINE_INDEFINITE)); 370 EXPECT_EQ(0, core()->WaitMany(h, signals, 2, MOJO_DEADLINE_INDEFINITE));
370 371
371 // Read from |h[0]|. 372 // Read from |h[0]|.
372 // First, get only the size. 373 // First, get only the size.
373 buffer_size = 0; 374 buffer_size = 0;
374 EXPECT_EQ(MOJO_RESULT_RESOURCE_EXHAUSTED, 375 EXPECT_EQ(MOJO_RESULT_RESOURCE_EXHAUSTED,
375 core()->ReadMessage(h[0], NULL, &buffer_size, NULL, NULL, 376 core()->ReadMessage(h[0], NULL, &buffer_size, NULL, NULL,
376 MOJO_READ_MESSAGE_FLAG_NONE)); 377 MOJO_READ_MESSAGE_FLAG_NONE));
377 EXPECT_EQ(1u, buffer_size); 378 EXPECT_EQ(1u, buffer_size);
378 // Then actually read it. 379 // Then actually read it.
379 buffer[0] = 'c'; 380 buffer[0] = 'c';
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h_passing[1])); 873 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h_passing[1]));
873 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ph)); 874 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ph));
874 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ch)); 875 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ch));
875 } 876 }
876 877
877 // TODO(vtl): Test |DuplicateBufferHandle()| and |MapBuffer()|. 878 // TODO(vtl): Test |DuplicateBufferHandle()| and |MapBuffer()|.
878 879
879 } // namespace 880 } // namespace
880 } // namespace system 881 } // namespace system
881 } // namespace mojo 882 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/system/core_test_base.cc ('k') | mojo/system/data_pipe.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698