Index: mojo/edk/system/core_unittest.cc |
diff --git a/mojo/edk/system/core_unittest.cc b/mojo/edk/system/core_unittest.cc |
index 814ce4bc3c955b3d6eb2f059eb60ef1a195c061d..0d60b48a8bdb002271823ca233251e968fc1c217 100644 |
--- a/mojo/edk/system/core_unittest.cc |
+++ b/mojo/edk/system/core_unittest.cc |
@@ -10,9 +10,9 @@ |
#include "base/bind.h" |
#include "mojo/edk/embedder/embedder_internal.h" |
-#include "mojo/edk/system/awakable.h" |
#include "mojo/edk/system/core_test_base.h" |
#include "mojo/edk/system/test_utils.h" |
+#include "mojo/public/cpp/system/wait.h" |
#if defined(OS_WIN) |
#include "base/win/windows_version.h" |
@@ -97,72 +97,11 @@ TEST_F(CoreTest, Basic) { |
ASSERT_EQ(MOJO_RESULT_UNIMPLEMENTED, core()->EndReadData(h, 0)); |
ASSERT_EQ(1u, info.GetEndReadDataCallCount()); |
- ASSERT_EQ(0u, info.GetAddAwakableCallCount()); |
- ASSERT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
- core()->Wait(h, ~MOJO_HANDLE_SIGNAL_NONE, MOJO_DEADLINE_INDEFINITE, |
- nullptr)); |
- ASSERT_EQ(1u, info.GetAddAwakableCallCount()); |
- ASSERT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
- core()->Wait(h, ~MOJO_HANDLE_SIGNAL_NONE, 0, nullptr)); |
- ASSERT_EQ(2u, info.GetAddAwakableCallCount()); |
- MojoHandleSignalsState hss = kFullMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
- core()->Wait(h, ~MOJO_HANDLE_SIGNAL_NONE, MOJO_DEADLINE_INDEFINITE, |
- &hss)); |
- ASSERT_EQ(3u, info.GetAddAwakableCallCount()); |
- ASSERT_EQ(0u, hss.satisfied_signals); |
- ASSERT_EQ(0u, hss.satisfiable_signals); |
- ASSERT_EQ( |
- MOJO_RESULT_FAILED_PRECONDITION, |
- core()->Wait(h, ~MOJO_HANDLE_SIGNAL_NONE, 10 * 1000, nullptr)); |
- ASSERT_EQ(4u, info.GetAddAwakableCallCount()); |
- hss = kFullMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
- core()->Wait(h, ~MOJO_HANDLE_SIGNAL_NONE, 10 * 1000, &hss)); |
- ASSERT_EQ(5u, info.GetAddAwakableCallCount()); |
- ASSERT_EQ(0u, hss.satisfied_signals); |
- ASSERT_EQ(0u, hss.satisfiable_signals); |
- |
- MojoHandleSignals handle_signals = ~MOJO_HANDLE_SIGNAL_NONE; |
- ASSERT_EQ( |
- MOJO_RESULT_FAILED_PRECONDITION, |
- core()->WaitMany(&h, &handle_signals, 1, MOJO_DEADLINE_INDEFINITE, |
- nullptr, nullptr)); |
- ASSERT_EQ(6u, info.GetAddAwakableCallCount()); |
- uint32_t result_index = static_cast<uint32_t>(-1); |
- ASSERT_EQ( |
- MOJO_RESULT_FAILED_PRECONDITION, |
- core()->WaitMany(&h, &handle_signals, 1, MOJO_DEADLINE_INDEFINITE, |
- &result_index, nullptr)); |
- ASSERT_EQ(7u, info.GetAddAwakableCallCount()); |
- ASSERT_EQ(0u, result_index); |
- hss = kFullMojoHandleSignalsState; |
- ASSERT_EQ( |
- MOJO_RESULT_FAILED_PRECONDITION, |
- core()->WaitMany(&h, &handle_signals, 1, MOJO_DEADLINE_INDEFINITE, |
- nullptr, &hss)); |
- ASSERT_EQ(8u, info.GetAddAwakableCallCount()); |
- ASSERT_EQ(0u, hss.satisfied_signals); |
- ASSERT_EQ(0u, hss.satisfiable_signals); |
- result_index = static_cast<uint32_t>(-1); |
- hss = kFullMojoHandleSignalsState; |
- ASSERT_EQ( |
- MOJO_RESULT_FAILED_PRECONDITION, |
- core()->WaitMany(&h, &handle_signals, 1, MOJO_DEADLINE_INDEFINITE, |
- &result_index, &hss)); |
- ASSERT_EQ(9u, info.GetAddAwakableCallCount()); |
- ASSERT_EQ(0u, result_index); |
- ASSERT_EQ(0u, hss.satisfied_signals); |
- ASSERT_EQ(0u, hss.satisfiable_signals); |
- |
ASSERT_EQ(0u, info.GetDtorCallCount()); |
ASSERT_EQ(0u, info.GetCloseCallCount()); |
ASSERT_EQ(MOJO_RESULT_OK, core()->Close(h)); |
ASSERT_EQ(1u, info.GetCloseCallCount()); |
ASSERT_EQ(1u, info.GetDtorCallCount()); |
- |
- // No awakables should ever have ever been added. |
- ASSERT_EQ(0u, info.GetRemoveAwakableCallCount()); |
} |
TEST_F(CoreTest, InvalidArguments) { |
@@ -181,125 +120,6 @@ TEST_F(CoreTest, InvalidArguments) { |
ASSERT_EQ(1u, info.GetCloseCallCount()); |
} |
- // |Wait()|: |
- { |
- ASSERT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->Wait(MOJO_HANDLE_INVALID, ~MOJO_HANDLE_SIGNAL_NONE, |
- MOJO_DEADLINE_INDEFINITE, nullptr)); |
- ASSERT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->Wait(10, ~MOJO_HANDLE_SIGNAL_NONE, |
- MOJO_DEADLINE_INDEFINITE, nullptr)); |
- |
- MojoHandleSignalsState hss = kFullMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->Wait(MOJO_HANDLE_INVALID, ~MOJO_HANDLE_SIGNAL_NONE, |
- MOJO_DEADLINE_INDEFINITE, &hss)); |
- // On invalid argument, it shouldn't modify the handle signals state. |
- ASSERT_EQ(kFullMojoHandleSignalsState.satisfied_signals, |
- hss.satisfied_signals); |
- ASSERT_EQ(kFullMojoHandleSignalsState.satisfiable_signals, |
- hss.satisfiable_signals); |
- hss = kFullMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->Wait(10, ~MOJO_HANDLE_SIGNAL_NONE, |
- MOJO_DEADLINE_INDEFINITE, &hss)); |
- // On invalid argument, it shouldn't modify the handle signals state. |
- ASSERT_EQ(kFullMojoHandleSignalsState.satisfied_signals, |
- hss.satisfied_signals); |
- ASSERT_EQ(kFullMojoHandleSignalsState.satisfiable_signals, |
- hss.satisfiable_signals); |
- } |
- |
- // |WaitMany()|: |
- { |
- MojoHandle handles[2] = {MOJO_HANDLE_INVALID, MOJO_HANDLE_INVALID}; |
- MojoHandleSignals signals[2] = {~MOJO_HANDLE_SIGNAL_NONE, |
- ~MOJO_HANDLE_SIGNAL_NONE}; |
- ASSERT_EQ( |
- MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WaitMany(handles, signals, 0, MOJO_DEADLINE_INDEFINITE, |
- nullptr, nullptr)); |
- ASSERT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WaitMany(nullptr, signals, 0, MOJO_DEADLINE_INDEFINITE, |
- nullptr, nullptr)); |
- // If |num_handles| is invalid, it should leave |result_index| and |
- // |signals_states| alone. |
- // (We use -1 internally; make sure that doesn't leak.) |
- uint32_t result_index = 123; |
- MojoHandleSignalsState hss = kFullMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WaitMany(nullptr, signals, 0, MOJO_DEADLINE_INDEFINITE, |
- &result_index, &hss)); |
- ASSERT_EQ(123u, result_index); |
- ASSERT_EQ(kFullMojoHandleSignalsState.satisfied_signals, |
- hss.satisfied_signals); |
- ASSERT_EQ(kFullMojoHandleSignalsState.satisfiable_signals, |
- hss.satisfiable_signals); |
- |
- ASSERT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WaitMany(handles, nullptr, 0, MOJO_DEADLINE_INDEFINITE, |
- nullptr, nullptr)); |
- ASSERT_EQ( |
- MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WaitMany(handles, signals, 1, MOJO_DEADLINE_INDEFINITE, nullptr, |
- nullptr)); |
- // But if a handle is bad, then it should set |result_index| but still leave |
- // |signals_states| alone. |
- result_index = static_cast<uint32_t>(-1); |
- hss = kFullMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WaitMany( |
- handles, signals, 1, MOJO_DEADLINE_INDEFINITE, &result_index, |
- &hss)); |
- ASSERT_EQ(0u, result_index); |
- ASSERT_EQ(kFullMojoHandleSignalsState.satisfied_signals, |
- hss.satisfied_signals); |
- ASSERT_EQ(kFullMojoHandleSignalsState.satisfiable_signals, |
- hss.satisfiable_signals); |
- |
- MockHandleInfo info[2]; |
- handles[0] = CreateMockHandle(&info[0]); |
- |
- result_index = static_cast<uint32_t>(-1); |
- hss = kFullMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
- core()->WaitMany( |
- handles, signals, 1, MOJO_DEADLINE_INDEFINITE, &result_index, |
- &hss)); |
- ASSERT_EQ(0u, result_index); |
- ASSERT_EQ(0u, hss.satisfied_signals); |
- ASSERT_EQ(0u, hss.satisfiable_signals); |
- |
- // On invalid argument, it'll leave |signals_states| alone. |
- result_index = static_cast<uint32_t>(-1); |
- hss = kFullMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WaitMany( |
- handles, signals, 2, MOJO_DEADLINE_INDEFINITE, &result_index, |
- &hss)); |
- ASSERT_EQ(1u, result_index); |
- ASSERT_EQ(kFullMojoHandleSignalsState.satisfied_signals, |
- hss.satisfied_signals); |
- ASSERT_EQ(kFullMojoHandleSignalsState.satisfiable_signals, |
- hss.satisfiable_signals); |
- handles[1] = handles[0] + 1; // Invalid handle. |
- ASSERT_EQ( |
- MOJO_RESULT_INVALID_ARGUMENT, |
- core()->WaitMany(handles, signals, 2, MOJO_DEADLINE_INDEFINITE, nullptr, |
- nullptr)); |
- handles[1] = CreateMockHandle(&info[1]); |
- ASSERT_EQ( |
- MOJO_RESULT_FAILED_PRECONDITION, |
- core()->WaitMany(handles, signals, 2, MOJO_DEADLINE_INDEFINITE, nullptr, |
- nullptr)); |
- |
- // TODO(vtl): Test one where we get "failed precondition" only for the |
- // second handle (and the first one is valid to wait on). |
- |
- ASSERT_EQ(MOJO_RESULT_OK, core()->Close(handles[0])); |
- ASSERT_EQ(MOJO_RESULT_OK, core()->Close(handles[1])); |
- } |
- |
// |CreateMessagePipe()|: Nothing to check (apart from things that cause |
// death). |
@@ -451,22 +271,6 @@ TEST_F(CoreTest, InvalidArgumentsDeath) { |
const char kMemoryCheckFailedRegex[] = "Check failed"; |
#endif |
- // |WaitMany()|: |
- { |
- MojoHandle handle = MOJO_HANDLE_INVALID; |
- MojoHandleSignals signals = ~MOJO_HANDLE_SIGNAL_NONE; |
- ASSERT_DEATH_IF_SUPPORTED( |
- core()->WaitMany(nullptr, &signals, 1, MOJO_DEADLINE_INDEFINITE, |
- nullptr, nullptr), |
- kMemoryCheckFailedRegex); |
- ASSERT_DEATH_IF_SUPPORTED( |
- core()->WaitMany(&handle, nullptr, 1, MOJO_DEADLINE_INDEFINITE, nullptr, |
- nullptr), |
- kMemoryCheckFailedRegex); |
- // TODO(vtl): |result_index| and |signals_states| are optional. Test them |
- // with non-null invalid pointers? |
- } |
- |
// |CreateMessagePipe()|: |
{ |
MojoHandle h; |
@@ -498,14 +302,9 @@ TEST_F(CoreTest, InvalidArgumentsDeath) { |
} |
} |
-// TODO(vtl): test |Wait()| and |WaitMany()| properly |
-// - including |WaitMany()| with the same handle more than once (with |
-// same/different signals) |
- |
TEST_F(CoreTest, MessagePipe) { |
MojoHandle h[2]; |
MojoHandleSignalsState hss[2]; |
- uint32_t result_index; |
ASSERT_EQ(MOJO_RESULT_OK, core()->CreateMessagePipe(nullptr, &h[0], &h[1])); |
// Should get two distinct, valid handles. |
@@ -514,15 +313,10 @@ TEST_F(CoreTest, MessagePipe) { |
ASSERT_NE(h[0], h[1]); |
// Neither should be readable. |
- MojoHandleSignals signals[2] = {MOJO_HANDLE_SIGNAL_READABLE, |
- MOJO_HANDLE_SIGNAL_READABLE}; |
- result_index = static_cast<uint32_t>(-1); |
hss[0] = kEmptyMojoHandleSignalsState; |
hss[1] = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ( |
- MOJO_RESULT_DEADLINE_EXCEEDED, |
- core()->WaitMany(h, signals, 2, 0, &result_index, hss)); |
- ASSERT_EQ(static_cast<uint32_t>(-1), result_index); |
+ EXPECT_EQ(MOJO_RESULT_OK, core()->QueryHandleSignalsState(h[0], &hss[0])); |
+ EXPECT_EQ(MOJO_RESULT_OK, core()->QueryHandleSignalsState(h[1], &hss[1])); |
ASSERT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss[0].satisfied_signals); |
ASSERT_EQ(kAllSignals, hss[0].satisfiable_signals); |
ASSERT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss[1].satisfied_signals); |
@@ -539,34 +333,6 @@ TEST_F(CoreTest, MessagePipe) { |
ASSERT_EQ('a', buffer[0]); |
ASSERT_EQ(1u, buffer_size); |
- // Both should be writable. |
- hss[0] = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_OK, core()->Wait(h[0], MOJO_HANDLE_SIGNAL_WRITABLE, |
- 1000000000, &hss[0])); |
- ASSERT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss[0].satisfied_signals); |
- ASSERT_EQ(kAllSignals, hss[0].satisfiable_signals); |
- hss[0] = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_OK, core()->Wait(h[1], MOJO_HANDLE_SIGNAL_WRITABLE, |
- 1000000000, &hss[0])); |
- ASSERT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss[0].satisfied_signals); |
- ASSERT_EQ(kAllSignals, hss[0].satisfiable_signals); |
- |
- // Also check that |h[1]| is writable using |WaitMany()|. |
- signals[0] = MOJO_HANDLE_SIGNAL_READABLE; |
- signals[1] = MOJO_HANDLE_SIGNAL_WRITABLE; |
- result_index = static_cast<uint32_t>(-1); |
- hss[0] = kEmptyMojoHandleSignalsState; |
- hss[1] = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ( |
- MOJO_RESULT_OK, |
- core()->WaitMany(h, signals, 2, MOJO_DEADLINE_INDEFINITE, &result_index, |
- hss)); |
- ASSERT_EQ(1u, result_index); |
- ASSERT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss[0].satisfied_signals); |
- ASSERT_EQ(kAllSignals, hss[0].satisfiable_signals); |
- ASSERT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss[1].satisfied_signals); |
- ASSERT_EQ(kAllSignals, hss[1].satisfiable_signals); |
- |
// Write to |h[1]|. |
buffer[0] = 'b'; |
ASSERT_EQ( |
@@ -574,22 +340,9 @@ TEST_F(CoreTest, MessagePipe) { |
core()->WriteMessage(h[1], buffer, 1, nullptr, 0, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
- // Check that |h[0]| is now readable. |
- signals[0] = MOJO_HANDLE_SIGNAL_READABLE; |
- signals[1] = MOJO_HANDLE_SIGNAL_READABLE; |
- result_index = static_cast<uint32_t>(-1); |
- hss[0] = kEmptyMojoHandleSignalsState; |
- hss[1] = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ( |
- MOJO_RESULT_OK, |
- core()->WaitMany(h, signals, 2, MOJO_DEADLINE_INDEFINITE, &result_index, |
- hss)); |
- ASSERT_EQ(0u, result_index); |
- ASSERT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
- hss[0].satisfied_signals); |
- ASSERT_EQ(kAllSignals, hss[0].satisfiable_signals); |
- ASSERT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss[1].satisfied_signals); |
- ASSERT_EQ(kAllSignals, hss[1].satisfiable_signals); |
+ // Wait for |h[0]| to become readable. |
+ EXPECT_EQ(MOJO_RESULT_OK, mojo::Wait(mojo::Handle(h[0]), |
+ MOJO_HANDLE_SIGNAL_READABLE, &hss[0])); |
// Read from |h[0]|. |
// First, get only the size. |
@@ -611,8 +364,7 @@ TEST_F(CoreTest, MessagePipe) { |
// |h[0]| should no longer be readable. |
hss[0] = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, |
- core()->Wait(h[0], MOJO_HANDLE_SIGNAL_READABLE, 0, &hss[0])); |
+ EXPECT_EQ(MOJO_RESULT_OK, core()->QueryHandleSignalsState(h[0], &hss[0])); |
ASSERT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss[0].satisfied_signals); |
ASSERT_EQ(kAllSignals, hss[0].satisfiable_signals); |
@@ -627,28 +379,21 @@ TEST_F(CoreTest, MessagePipe) { |
ASSERT_EQ(MOJO_RESULT_OK, core()->Close(h[0])); |
// Wait for |h[1]| to learn about the other end's closure. |
- ASSERT_EQ(MOJO_RESULT_OK, |
- core()->Wait(h[1], MOJO_HANDLE_SIGNAL_PEER_CLOSED, 1000000000, |
- &hss[0])); |
+ EXPECT_EQ( |
+ MOJO_RESULT_OK, |
+ mojo::Wait(mojo::Handle(h[1]), MOJO_HANDLE_SIGNAL_PEER_CLOSED, &hss[1])); |
// Check that |h[1]| is no longer writable (and will never be). |
- hss[0] = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
- core()->Wait(h[1], MOJO_HANDLE_SIGNAL_WRITABLE, 1000000000, |
- &hss[0])); |
- ASSERT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
- hss[0].satisfied_signals); |
- ASSERT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
- hss[0].satisfiable_signals); |
+ EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
+ hss[1].satisfied_signals); |
+ EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
+ hss[1].satisfiable_signals); |
// Check that |h[1]| is still readable (for the moment). |
- hss[0] = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_OK, core()->Wait(h[1], MOJO_HANDLE_SIGNAL_READABLE, |
- 1000000000, &hss[0])); |
- ASSERT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
- hss[0].satisfied_signals); |
- ASSERT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
- hss[0].satisfiable_signals); |
+ EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
+ hss[1].satisfied_signals); |
+ EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
+ hss[1].satisfiable_signals); |
// Discard a message from |h[1]|. |
ASSERT_EQ(MOJO_RESULT_RESOURCE_EXHAUSTED, |
@@ -656,12 +401,10 @@ TEST_F(CoreTest, MessagePipe) { |
MOJO_READ_MESSAGE_FLAG_MAY_DISCARD)); |
// |h[1]| is no longer readable (and will never be). |
- hss[0] = kFullMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
- core()->Wait(h[1], MOJO_HANDLE_SIGNAL_READABLE, 1000000000, |
- &hss[0])); |
- ASSERT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss[0].satisfied_signals); |
- ASSERT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss[0].satisfiable_signals); |
+ hss[1] = kFullMojoHandleSignalsState; |
+ EXPECT_EQ(MOJO_RESULT_OK, core()->QueryHandleSignalsState(h[1], &hss[1])); |
+ EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss[1].satisfied_signals); |
+ EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss[1].satisfiable_signals); |
// Try writing to |h[1]|. |
buffer[0] = 'e'; |
@@ -696,9 +439,8 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing1) { |
core()->WriteMessage(h_passing[0], kHello, kHelloSize, nullptr, 0, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
hss = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_OK, |
- core()->Wait(h_passing[1], MOJO_HANDLE_SIGNAL_READABLE, 1000000000, |
- &hss)); |
+ EXPECT_EQ(MOJO_RESULT_OK, mojo::Wait(mojo::Handle(h_passing[1]), |
+ MOJO_HANDLE_SIGNAL_READABLE, &hss)); |
ASSERT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
hss.satisfied_signals); |
ASSERT_EQ(kAllSignals, hss.satisfiable_signals); |
@@ -737,9 +479,8 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing1) { |
core()->WriteMessage(h_passed[0], kHello, kHelloSize, nullptr, 0, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
hss = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_OK, |
- core()->Wait(h_passed[1], MOJO_HANDLE_SIGNAL_READABLE, 1000000000, |
- &hss)); |
+ ASSERT_EQ(MOJO_RESULT_OK, mojo::Wait(mojo::Handle(h_passed[1]), |
+ MOJO_HANDLE_SIGNAL_READABLE, &hss)); |
ASSERT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
hss.satisfied_signals); |
ASSERT_EQ(kAllSignals, hss.satisfiable_signals); |
@@ -759,9 +500,8 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing1) { |
&h_passed[1], 1, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
hss = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_OK, |
- core()->Wait(h_passing[1], MOJO_HANDLE_SIGNAL_READABLE, 1000000000, |
- &hss)); |
+ ASSERT_EQ(MOJO_RESULT_OK, mojo::Wait(mojo::Handle(h_passing[1]), |
+ MOJO_HANDLE_SIGNAL_READABLE, &hss)); |
ASSERT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
hss.satisfied_signals); |
ASSERT_EQ(kAllSignals, hss.satisfiable_signals); |
@@ -792,9 +532,8 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing1) { |
core()->WriteMessage(h_passed[0], kHello, kHelloSize, nullptr, 0, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
hss = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_OK, |
- core()->Wait(h_received, MOJO_HANDLE_SIGNAL_READABLE, 1000000000, |
- &hss)); |
+ ASSERT_EQ(MOJO_RESULT_OK, mojo::Wait(mojo::Handle(h_received), |
+ MOJO_HANDLE_SIGNAL_READABLE, &hss)); |
ASSERT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
hss.satisfied_signals); |
ASSERT_EQ(kAllSignals, hss.satisfiable_signals); |
@@ -827,33 +566,15 @@ TEST_F(CoreTest, DataPipe) { |
// Producer should be never-readable, but already writable. |
hss = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ( |
- MOJO_RESULT_FAILED_PRECONDITION, |
- core()->Wait(ph, MOJO_HANDLE_SIGNAL_READABLE, 0, &hss)); |
- ASSERT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss.satisfied_signals); |
- ASSERT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
- hss.satisfiable_signals); |
- hss = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_OK, core()->Wait(ph, MOJO_HANDLE_SIGNAL_WRITABLE, 0, |
- &hss)); |
+ EXPECT_EQ(MOJO_RESULT_OK, core()->QueryHandleSignalsState(ph, &hss)); |
ASSERT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss.satisfied_signals); |
ASSERT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
hss.satisfiable_signals); |
// Consumer should be never-writable, and not yet readable. |
hss = kFullMojoHandleSignalsState; |
- ASSERT_EQ( |
- MOJO_RESULT_FAILED_PRECONDITION, |
- core()->Wait(ch, MOJO_HANDLE_SIGNAL_WRITABLE, 0, &hss)); |
- ASSERT_EQ(0u, hss.satisfied_signals); |
- EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED | |
- MOJO_HANDLE_SIGNAL_NEW_DATA_READABLE, |
- hss.satisfiable_signals); |
- hss = kFullMojoHandleSignalsState; |
- ASSERT_EQ( |
- MOJO_RESULT_DEADLINE_EXCEEDED, |
- core()->Wait(ch, MOJO_HANDLE_SIGNAL_READABLE, 0, &hss)); |
- ASSERT_EQ(0u, hss.satisfied_signals); |
+ EXPECT_EQ(MOJO_RESULT_OK, core()->QueryHandleSignalsState(ch, &hss)); |
+ EXPECT_EQ(0u, hss.satisfied_signals); |
EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED | |
MOJO_HANDLE_SIGNAL_NEW_DATA_READABLE, |
hss.satisfiable_signals); |
@@ -867,13 +588,12 @@ TEST_F(CoreTest, DataPipe) { |
ASSERT_EQ(2u, num_bytes); |
// Wait for the data to arrive to the consumer. |
- ASSERT_EQ(MOJO_RESULT_OK, |
- core()->Wait(ch, MOJO_HANDLE_SIGNAL_READABLE, 1000000000, &hss)); |
+ EXPECT_EQ(MOJO_RESULT_OK, |
+ mojo::Wait(mojo::Handle(ch), MOJO_HANDLE_SIGNAL_READABLE, &hss)); |
// Consumer should now be readable. |
hss = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_OK, core()->Wait(ch, MOJO_HANDLE_SIGNAL_READABLE, 0, |
- &hss)); |
+ EXPECT_EQ(MOJO_RESULT_OK, core()->QueryHandleSignalsState(ch, &hss)); |
EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_NEW_DATA_READABLE, |
hss.satisfied_signals); |
EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED | |
@@ -924,7 +644,7 @@ TEST_F(CoreTest, DataPipe) { |
// Wait for the data to arrive to the consumer. |
ASSERT_EQ(MOJO_RESULT_OK, |
- core()->Wait(ch, MOJO_HANDLE_SIGNAL_READABLE, 1000000000, &hss)); |
+ mojo::Wait(mojo::Handle(ch), MOJO_HANDLE_SIGNAL_READABLE, &hss)); |
// Query how much data we have. |
num_bytes = 0; |
@@ -964,7 +684,7 @@ TEST_F(CoreTest, DataPipe) { |
// Ensure the 3 bytes were read. |
ASSERT_EQ(MOJO_RESULT_OK, |
- core()->Wait(ch, MOJO_HANDLE_SIGNAL_READABLE, 1000000000, &hss)); |
+ mojo::Wait(mojo::Handle(ch), MOJO_HANDLE_SIGNAL_READABLE, &hss)); |
// Try a two-phase read of the remaining three bytes with peek. Should fail. |
const void* read_ptr = nullptr; |
@@ -995,9 +715,7 @@ TEST_F(CoreTest, DataPipe) { |
// Consumer should now be no longer readable. |
hss = kFullMojoHandleSignalsState; |
- ASSERT_EQ( |
- MOJO_RESULT_DEADLINE_EXCEEDED, |
- core()->Wait(ch, MOJO_HANDLE_SIGNAL_READABLE, 0, &hss)); |
+ EXPECT_EQ(MOJO_RESULT_OK, core()->QueryHandleSignalsState(ch, &hss)); |
EXPECT_EQ(0u, hss.satisfied_signals); |
EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED | |
MOJO_HANDLE_SIGNAL_NEW_DATA_READABLE, |
@@ -1009,14 +727,12 @@ TEST_F(CoreTest, DataPipe) { |
ASSERT_EQ(MOJO_RESULT_OK, core()->Close(ph)); |
// Wait for this to get to the consumer. |
- ASSERT_EQ(MOJO_RESULT_OK, |
- core()->Wait(ch, MOJO_HANDLE_SIGNAL_PEER_CLOSED, 1000000000, &hss)); |
+ EXPECT_EQ(MOJO_RESULT_OK, |
+ mojo::Wait(mojo::Handle(ch), MOJO_HANDLE_SIGNAL_PEER_CLOSED, &hss)); |
// The consumer should now be never-readable. |
hss = kFullMojoHandleSignalsState; |
- ASSERT_EQ( |
- MOJO_RESULT_FAILED_PRECONDITION, |
- core()->Wait(ch, MOJO_HANDLE_SIGNAL_READABLE, 0, &hss)); |
+ EXPECT_EQ(MOJO_RESULT_OK, core()->QueryHandleSignalsState(ch, &hss)); |
ASSERT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfied_signals); |
ASSERT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfiable_signals); |
@@ -1049,9 +765,8 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing2) { |
core()->WriteMessage(h_passing[0], kHello, kHelloSize, &ch, 1, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
hss = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_OK, |
- core()->Wait(h_passing[1], MOJO_HANDLE_SIGNAL_READABLE, 1000000000, |
- &hss)); |
+ ASSERT_EQ(MOJO_RESULT_OK, mojo::Wait(mojo::Handle(h_passing[1]), |
+ MOJO_HANDLE_SIGNAL_READABLE, &hss)); |
ASSERT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
hss.satisfied_signals); |
ASSERT_EQ(kAllSignals, hss.satisfiable_signals); |
@@ -1083,9 +798,8 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing2) { |
core()->WriteData(ph, kWorld, &num_bytes, |
MOJO_WRITE_DATA_FLAG_ALL_OR_NONE)); |
hss = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_OK, |
- core()->Wait(ch_received, MOJO_HANDLE_SIGNAL_READABLE, 1000000000, |
- &hss)); |
+ EXPECT_EQ(MOJO_RESULT_OK, mojo::Wait(mojo::Handle(ch_received), |
+ MOJO_HANDLE_SIGNAL_READABLE, &hss)); |
EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_NEW_DATA_READABLE, |
hss.satisfied_signals); |
EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED | |
@@ -1103,9 +817,8 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing2) { |
core()->WriteMessage(h_passing[0], kWorld, kWorldSize, &ph, 1, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
hss = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_OK, |
- core()->Wait(h_passing[1], MOJO_HANDLE_SIGNAL_READABLE, 1000000000, |
- &hss)); |
+ ASSERT_EQ(MOJO_RESULT_OK, mojo::Wait(mojo::Handle(h_passing[1]), |
+ MOJO_HANDLE_SIGNAL_READABLE, &hss)); |
ASSERT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
hss.satisfied_signals); |
ASSERT_EQ(kAllSignals, hss.satisfiable_signals); |
@@ -1137,9 +850,8 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing2) { |
core()->WriteData(ph_received, kHello, &num_bytes, |
MOJO_WRITE_DATA_FLAG_ALL_OR_NONE)); |
hss = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_OK, |
- core()->Wait(ch_received, MOJO_HANDLE_SIGNAL_READABLE, 1000000000, |
- &hss)); |
+ EXPECT_EQ(MOJO_RESULT_OK, mojo::Wait(mojo::Handle(ch_received), |
+ MOJO_HANDLE_SIGNAL_READABLE, &hss)); |
EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_NEW_DATA_READABLE, |
hss.satisfied_signals); |
EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED | |
@@ -1173,9 +885,8 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing2) { |
core()->WriteMessage(h_passing[0], kHello, kHelloSize, &ch, 1, |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
ch = MOJO_HANDLE_INVALID; |
- ASSERT_EQ(MOJO_RESULT_OK, |
- core()->Wait(h_passing[1], MOJO_HANDLE_SIGNAL_READABLE, 1000000000, |
- nullptr)); |
+ EXPECT_EQ(MOJO_RESULT_OK, mojo::Wait(mojo::Handle(h_passing[1]), |
+ MOJO_HANDLE_SIGNAL_READABLE)); |
num_bytes = kBufferSize; |
num_handles = arraysize(handles); |
ASSERT_EQ(MOJO_RESULT_OK, |
@@ -1194,8 +905,8 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing2) { |
// Wait for |ch| to be readable. |
hss = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_OK, core()->Wait(ch, MOJO_HANDLE_SIGNAL_READABLE, |
- 1000000000, &hss)); |
+ EXPECT_EQ(MOJO_RESULT_OK, |
+ mojo::Wait(mojo::Handle(ch), MOJO_HANDLE_SIGNAL_READABLE, &hss)); |
EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_NEW_DATA_READABLE, |
hss.satisfied_signals); |
EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED | |
@@ -1218,9 +929,8 @@ TEST_F(CoreTest, MessagePipeBasicLocalHandlePassing2) { |
MOJO_WRITE_MESSAGE_FLAG_NONE)); |
ph = MOJO_HANDLE_INVALID; |
hss = kEmptyMojoHandleSignalsState; |
- ASSERT_EQ(MOJO_RESULT_OK, |
- core()->Wait(h_passing[1], MOJO_HANDLE_SIGNAL_READABLE, 1000000000, |
- &hss)); |
+ EXPECT_EQ(MOJO_RESULT_OK, mojo::Wait(mojo::Handle(h_passing[1]), |
+ MOJO_HANDLE_SIGNAL_READABLE, &hss)); |
ASSERT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
hss.satisfied_signals); |
ASSERT_EQ(kAllSignals, hss.satisfiable_signals); |