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 #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 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 core()->WaitMany(handles, flags, 2, MOJO_DEADLINE_INDEFINITE)); | 180 core()->WaitMany(handles, flags, 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)); | 190 core()->CreateMessagePipe(NULL, NULL, NULL)); |
191 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 191 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
192 core()->CreateMessagePipe(&h, NULL)); | 192 core()->CreateMessagePipe(NULL, &h, NULL)); |
193 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 193 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
194 core()->CreateMessagePipe(NULL, &h)); | 194 core()->CreateMessagePipe(NULL, NULL, &h)); |
195 } | 195 } |
196 | 196 |
197 // |WriteMessage()|: | 197 // |WriteMessage()|: |
198 // Only check arguments checked by |Core|, namely |handle|, |handles|, and | 198 // Only check arguments checked by |Core|, namely |handle|, |handles|, and |
199 // |num_handles|. | 199 // |num_handles|. |
200 { | 200 { |
201 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 201 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
202 core()->WriteMessage(MOJO_HANDLE_INVALID, NULL, 0, NULL, 0, | 202 core()->WriteMessage(MOJO_HANDLE_INVALID, NULL, 0, NULL, 0, |
203 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 203 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
204 | 204 |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 flags) |
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(&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 MojoWaitFlags flags[2] = { MOJO_WAIT_FLAG_READABLE, MOJO_WAIT_FLAG_READABLE }; |
336 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, | 336 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, |
337 core()->WaitMany(h, flags, 2, 0)); | 337 core()->WaitMany(h, flags, 2, 0)); |
338 | 338 |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
431 const uint32_t kWorldSize = static_cast<uint32_t>(sizeof(kWorld)); | 431 const uint32_t kWorldSize = static_cast<uint32_t>(sizeof(kWorld)); |
432 char buffer[100]; | 432 char buffer[100]; |
433 const uint32_t kBufferSize = static_cast<uint32_t>(sizeof(buffer)); | 433 const uint32_t kBufferSize = static_cast<uint32_t>(sizeof(buffer)); |
434 uint32_t num_bytes; | 434 uint32_t num_bytes; |
435 MojoHandle handles[10]; | 435 MojoHandle handles[10]; |
436 uint32_t num_handles; | 436 uint32_t num_handles; |
437 MojoHandle h_received; | 437 MojoHandle h_received; |
438 | 438 |
439 MojoHandle h_passing[2]; | 439 MojoHandle h_passing[2]; |
440 EXPECT_EQ(MOJO_RESULT_OK, | 440 EXPECT_EQ(MOJO_RESULT_OK, |
441 core()->CreateMessagePipe(&h_passing[0], &h_passing[1])); | 441 core()->CreateMessagePipe(NULL, &h_passing[0], &h_passing[1])); |
442 | 442 |
443 // Make sure that |h_passing[]| work properly. | 443 // Make sure that |h_passing[]| work properly. |
444 EXPECT_EQ(MOJO_RESULT_OK, | 444 EXPECT_EQ(MOJO_RESULT_OK, |
445 core()->WriteMessage(h_passing[0], | 445 core()->WriteMessage(h_passing[0], |
446 kHello, kHelloSize, | 446 kHello, kHelloSize, |
447 NULL, 0, | 447 NULL, 0, |
448 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 448 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
449 EXPECT_EQ(MOJO_RESULT_OK, | 449 EXPECT_EQ(MOJO_RESULT_OK, |
450 core()->Wait(h_passing[1], MOJO_WAIT_FLAG_READABLE, 1000000000)); | 450 core()->Wait(h_passing[1], MOJO_WAIT_FLAG_READABLE, 1000000000)); |
451 num_bytes = kBufferSize; | 451 num_bytes = kBufferSize; |
(...skipping 15 matching lines...) Expand all Loading... |
467 &h_passing[0], 1, | 467 &h_passing[0], 1, |
468 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 468 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
469 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 469 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
470 core()->WriteMessage(h_passing[0], | 470 core()->WriteMessage(h_passing[0], |
471 kHello, kHelloSize, | 471 kHello, kHelloSize, |
472 &h_passing[1], 1, | 472 &h_passing[1], 1, |
473 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 473 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
474 | 474 |
475 MojoHandle h_passed[2]; | 475 MojoHandle h_passed[2]; |
476 EXPECT_EQ(MOJO_RESULT_OK, | 476 EXPECT_EQ(MOJO_RESULT_OK, |
477 core()->CreateMessagePipe(&h_passed[0], &h_passed[1])); | 477 core()->CreateMessagePipe(NULL, &h_passed[0], &h_passed[1])); |
478 | 478 |
479 // Make sure that |h_passed[]| work properly. | 479 // Make sure that |h_passed[]| work properly. |
480 EXPECT_EQ(MOJO_RESULT_OK, | 480 EXPECT_EQ(MOJO_RESULT_OK, |
481 core()->WriteMessage(h_passed[0], | 481 core()->WriteMessage(h_passed[0], |
482 kHello, kHelloSize, | 482 kHello, kHelloSize, |
483 NULL, 0, | 483 NULL, 0, |
484 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 484 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
485 EXPECT_EQ(MOJO_RESULT_OK, | 485 EXPECT_EQ(MOJO_RESULT_OK, |
486 core()->Wait(h_passed[1], MOJO_WAIT_FLAG_READABLE, 1000000000)); | 486 core()->Wait(h_passed[1], MOJO_WAIT_FLAG_READABLE, 1000000000)); |
487 num_bytes = kBufferSize; | 487 num_bytes = kBufferSize; |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
679 const char kWorld[] = "world!!!"; | 679 const char kWorld[] = "world!!!"; |
680 const uint32_t kWorldSize = static_cast<uint32_t>(sizeof(kWorld)); | 680 const uint32_t kWorldSize = static_cast<uint32_t>(sizeof(kWorld)); |
681 char buffer[100]; | 681 char buffer[100]; |
682 const uint32_t kBufferSize = static_cast<uint32_t>(sizeof(buffer)); | 682 const uint32_t kBufferSize = static_cast<uint32_t>(sizeof(buffer)); |
683 uint32_t num_bytes; | 683 uint32_t num_bytes; |
684 MojoHandle handles[10]; | 684 MojoHandle handles[10]; |
685 uint32_t num_handles; | 685 uint32_t num_handles; |
686 | 686 |
687 MojoHandle h_passing[2]; | 687 MojoHandle h_passing[2]; |
688 EXPECT_EQ(MOJO_RESULT_OK, | 688 EXPECT_EQ(MOJO_RESULT_OK, |
689 core()->CreateMessagePipe(&h_passing[0], &h_passing[1])); | 689 core()->CreateMessagePipe(NULL, &h_passing[0], &h_passing[1])); |
690 | 690 |
691 MojoHandle ph, ch; | 691 MojoHandle ph, ch; |
692 EXPECT_EQ(MOJO_RESULT_OK, | 692 EXPECT_EQ(MOJO_RESULT_OK, |
693 core()->CreateDataPipe(NULL, &ph, &ch)); | 693 core()->CreateDataPipe(NULL, &ph, &ch)); |
694 | 694 |
695 // Send |ch| from |h_passing[0]| to |h_passing[1]|. | 695 // Send |ch| from |h_passing[0]| to |h_passing[1]|. |
696 EXPECT_EQ(MOJO_RESULT_OK, | 696 EXPECT_EQ(MOJO_RESULT_OK, |
697 core()->WriteMessage(h_passing[0], | 697 core()->WriteMessage(h_passing[0], |
698 kHello, kHelloSize, | 698 kHello, kHelloSize, |
699 &ch, 1, | 699 &ch, 1, |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
872 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h_passing[1])); | 872 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h_passing[1])); |
873 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ph)); | 873 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ph)); |
874 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ch)); | 874 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ch)); |
875 } | 875 } |
876 | 876 |
877 // TODO(vtl): Test |DuplicateBufferHandle()| and |MapBuffer()|. | 877 // TODO(vtl): Test |DuplicateBufferHandle()| and |MapBuffer()|. |
878 | 878 |
879 } // namespace | 879 } // namespace |
880 } // namespace system | 880 } // namespace system |
881 } // namespace mojo | 881 } // namespace mojo |
OLD | NEW |