| Index: mojo/public/c/tests/system/message_pipe_unittest.cc
|
| diff --git a/mojo/public/c/tests/system/message_pipe_unittest.cc b/mojo/public/c/tests/system/message_pipe_unittest.cc
|
| deleted file mode 100644
|
| index c10c468bfd0d084384c3c7fc925f4310cb58a9b4..0000000000000000000000000000000000000000
|
| --- a/mojo/public/c/tests/system/message_pipe_unittest.cc
|
| +++ /dev/null
|
| @@ -1,172 +0,0 @@
|
| -// Copyright 2016 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -// This file tests the C message pipe API (the functions declared in
|
| -// mojo/public/c/include/mojo/system/message_pipe.h).
|
| -
|
| -#include <mojo/system/message_pipe.h>
|
| -
|
| -#include <mojo/result.h>
|
| -#include <mojo/system/buffer.h>
|
| -#include <mojo/system/handle.h>
|
| -#include <mojo/system/wait.h>
|
| -
|
| -#include "gtest/gtest.h"
|
| -
|
| -namespace {
|
| -
|
| -const MojoHandleRights kDefaultMessagePipeHandleRights =
|
| - MOJO_HANDLE_RIGHT_TRANSFER | MOJO_HANDLE_RIGHT_READ |
|
| - MOJO_HANDLE_RIGHT_WRITE | MOJO_HANDLE_RIGHT_GET_OPTIONS |
|
| - MOJO_HANDLE_RIGHT_SET_OPTIONS;
|
| -
|
| -TEST(MessagePipeTest, InvalidHandle) {
|
| - char buffer[10] = {};
|
| - EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
|
| - MojoWriteMessage(MOJO_HANDLE_INVALID, buffer, 0u, nullptr, 0u,
|
| - MOJO_WRITE_MESSAGE_FLAG_NONE));
|
| - uint32_t buffer_size = static_cast<uint32_t>(sizeof(buffer));
|
| - EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
|
| - MojoReadMessage(MOJO_HANDLE_INVALID, buffer, &buffer_size, nullptr,
|
| - nullptr, MOJO_READ_MESSAGE_FLAG_NONE));
|
| -}
|
| -
|
| -TEST(MessagePipeTest, Basic) {
|
| - MojoHandle h0 = MOJO_HANDLE_INVALID;
|
| - MojoHandle h1 = MOJO_HANDLE_INVALID;
|
| - EXPECT_EQ(MOJO_RESULT_OK, MojoCreateMessagePipe(nullptr, &h0, &h1));
|
| - EXPECT_NE(h0, MOJO_HANDLE_INVALID);
|
| - EXPECT_NE(h1, MOJO_HANDLE_INVALID);
|
| - EXPECT_NE(h0, h1);
|
| -
|
| - // Both handles should have the correct rights.
|
| - MojoHandleRights rights = MOJO_HANDLE_RIGHT_NONE;
|
| - EXPECT_EQ(MOJO_RESULT_OK, MojoGetRights(h0, &rights));
|
| - EXPECT_EQ(kDefaultMessagePipeHandleRights, rights);
|
| - rights = MOJO_HANDLE_RIGHT_NONE;
|
| - EXPECT_EQ(MOJO_RESULT_OK, MojoGetRights(h1, &rights));
|
| - EXPECT_EQ(kDefaultMessagePipeHandleRights, rights);
|
| -
|
| - // Shouldn't be able to duplicate either handle (just test "with reduced
|
| - // rights" on one, and without on the other).
|
| - MojoHandle handle_denied = MOJO_HANDLE_INVALID;
|
| - EXPECT_EQ(MOJO_RESULT_PERMISSION_DENIED,
|
| - MojoDuplicateHandleWithReducedRights(
|
| - h0, MOJO_HANDLE_RIGHT_DUPLICATE, &handle_denied));
|
| - EXPECT_EQ(MOJO_HANDLE_INVALID, handle_denied);
|
| - handle_denied = MOJO_HANDLE_INVALID;
|
| - EXPECT_EQ(MOJO_RESULT_PERMISSION_DENIED,
|
| - MojoDuplicateHandle(h1, &handle_denied));
|
| - EXPECT_EQ(MOJO_HANDLE_INVALID, handle_denied);
|
| -
|
| - // Shouldn't be readable, we haven't written anything.
|
| - MojoHandleSignalsState state;
|
| - EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED,
|
| - MojoWait(h0, MOJO_HANDLE_SIGNAL_READABLE, 0, &state));
|
| - EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, state.satisfied_signals);
|
| - EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
|
| - MOJO_HANDLE_SIGNAL_PEER_CLOSED,
|
| - state.satisfiable_signals);
|
| -
|
| - // Should be writable.
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - MojoWait(h0, MOJO_HANDLE_SIGNAL_WRITABLE, 0, &state));
|
| - EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, state.satisfied_signals);
|
| - EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
|
| - MOJO_HANDLE_SIGNAL_PEER_CLOSED,
|
| - state.satisfiable_signals);
|
| -
|
| - // Last parameter is optional.
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - MojoWait(h0, MOJO_HANDLE_SIGNAL_WRITABLE, 0, nullptr));
|
| -
|
| - // Try to read.
|
| - char buffer[10] = {};
|
| - uint32_t buffer_size = static_cast<uint32_t>(sizeof(buffer));
|
| - EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT,
|
| - MojoReadMessage(h0, buffer, &buffer_size, nullptr, nullptr,
|
| - MOJO_READ_MESSAGE_FLAG_NONE));
|
| -
|
| - // Write to |h1|.
|
| - static const char kHello[] = "hello";
|
| - buffer_size = static_cast<uint32_t>(sizeof(kHello));
|
| - EXPECT_EQ(MOJO_RESULT_OK, MojoWriteMessage(h1, kHello, buffer_size, nullptr,
|
| - 0, MOJO_WRITE_MESSAGE_FLAG_NONE));
|
| -
|
| - // |h0| should be readable.
|
| - MojoHandleSignals sig = MOJO_HANDLE_SIGNAL_READABLE;
|
| - MojoHandleSignalsState states[1] = {};
|
| - uint32_t result_index = 1;
|
| - EXPECT_EQ(MOJO_RESULT_OK, MojoWaitMany(&h0, &sig, 1, MOJO_DEADLINE_INDEFINITE,
|
| - &result_index, states));
|
| - EXPECT_EQ(0u, result_index);
|
| - EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
|
| - states[0].satisfied_signals);
|
| - EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
|
| - MOJO_HANDLE_SIGNAL_PEER_CLOSED,
|
| - states[0].satisfiable_signals);
|
| -
|
| - // Read from |h0|.
|
| - buffer_size = static_cast<uint32_t>(sizeof(buffer));
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - MojoReadMessage(h0, buffer, &buffer_size, nullptr, nullptr,
|
| - MOJO_READ_MESSAGE_FLAG_NONE));
|
| - EXPECT_EQ(static_cast<uint32_t>(sizeof(kHello)), buffer_size);
|
| - EXPECT_STREQ(kHello, buffer);
|
| -
|
| - // |h0| should no longer be readable.
|
| - EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED,
|
| - MojoWait(h0, MOJO_HANDLE_SIGNAL_READABLE, 10, &state));
|
| - EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, state.satisfied_signals);
|
| - EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
|
| - MOJO_HANDLE_SIGNAL_PEER_CLOSED,
|
| - state.satisfiable_signals);
|
| -
|
| - // Close |h0|.
|
| - EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h0));
|
| -
|
| - // |h1| should no longer be readable or writable.
|
| - EXPECT_EQ(
|
| - MOJO_RESULT_FAILED_PRECONDITION,
|
| - MojoWait(h1, MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
|
| - 1000, &state));
|
| - EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfied_signals);
|
| - EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfiable_signals);
|
| -
|
| - EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h1));
|
| -}
|
| -
|
| -TEST(MessagePipeTest, ChecksTransferRight) {
|
| - MojoHandle h0 = MOJO_HANDLE_INVALID;
|
| - MojoHandle h1 = MOJO_HANDLE_INVALID;
|
| - EXPECT_EQ(MOJO_RESULT_OK, MojoCreateMessagePipe(nullptr, &h0, &h1));
|
| -
|
| - // Create a shared buffer (which is transferrable and duplicatable).
|
| - MojoHandle h_transferrable = MOJO_HANDLE_INVALID;
|
| - EXPECT_EQ(MOJO_RESULT_OK,
|
| - MojoCreateSharedBuffer(nullptr, 100, &h_transferrable));
|
| -
|
| - // Make a non-transferrable duplicate handle.
|
| - MojoHandle h_not_transferrable = MOJO_HANDLE_INVALID;
|
| - EXPECT_EQ(MOJO_RESULT_OK, MojoDuplicateHandleWithReducedRights(
|
| - h_transferrable, MOJO_HANDLE_RIGHT_TRANSFER,
|
| - &h_not_transferrable));
|
| -
|
| - // |h_transferrable| can be transferred.
|
| - EXPECT_EQ(MOJO_RESULT_OK, MojoWriteMessage(h0, nullptr, 0u, &h_transferrable,
|
| - 1u, MOJO_WRITE_MESSAGE_FLAG_NONE));
|
| -
|
| - // |h_not_transferrable| can be transferred.
|
| - EXPECT_EQ(MOJO_RESULT_PERMISSION_DENIED,
|
| - MojoWriteMessage(h0, nullptr, 0u, &h_not_transferrable, 1u,
|
| - MOJO_WRITE_MESSAGE_FLAG_NONE));
|
| -
|
| - EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h0));
|
| - EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h1));
|
| - EXPECT_EQ(MOJO_RESULT_OK, MojoClose(h_not_transferrable));
|
| -}
|
| -
|
| -// TODO(vtl): Add multi-threaded tests.
|
| -
|
| -} // namespace
|
|
|