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

Unified Diff: mojo/edk/system/local_data_pipe_unittest.cc

Issue 703273002: Update mojo sdk to rev 04a510fb37db10642e156957f9b2c11c2f6442ac (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix content/child -> mojo/common linking Created 6 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/edk/system/local_data_pipe.cc ('k') | mojo/mojo.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/edk/system/local_data_pipe_unittest.cc
diff --git a/mojo/edk/system/local_data_pipe_unittest.cc b/mojo/edk/system/local_data_pipe_unittest.cc
index 979b4d2ce799eb215fb3db3363b1b3214e273d9a..e8bc7160250a50567ce2894e2def354b6986f2e9 100644
--- a/mojo/edk/system/local_data_pipe_unittest.cc
+++ b/mojo/edk/system/local_data_pipe_unittest.cc
@@ -118,8 +118,10 @@ TEST(LocalDataPipeTest, SimpleReadWrite) {
num_bytes = static_cast<uint32_t>(arraysize(elements) * sizeof(elements[0]));
EXPECT_EQ(
MOJO_RESULT_SHOULD_WAIT,
- dp->ConsumerReadData(
- UserPointer<void>(elements), MakeUserPointer(&num_bytes), false));
+ dp->ConsumerReadData(UserPointer<void>(elements),
+ MakeUserPointer(&num_bytes),
+ false,
+ false));
// Query; nothing there yet.
num_bytes = 0;
@@ -135,8 +137,10 @@ TEST(LocalDataPipeTest, SimpleReadWrite) {
num_bytes = sizeof(elements[0]) + 1;
EXPECT_EQ(
MOJO_RESULT_INVALID_ARGUMENT,
- dp->ConsumerReadData(
- UserPointer<void>(elements), MakeUserPointer(&num_bytes), false));
+ dp->ConsumerReadData(UserPointer<void>(elements),
+ MakeUserPointer(&num_bytes),
+ false,
+ false));
// Write two elements.
elements[0] = 123;
@@ -160,8 +164,10 @@ TEST(LocalDataPipeTest, SimpleReadWrite) {
num_bytes = static_cast<uint32_t>(1u * sizeof(elements[0]));
EXPECT_EQ(
MOJO_RESULT_OK,
- dp->ConsumerReadData(
- UserPointer<void>(elements), MakeUserPointer(&num_bytes), false));
+ dp->ConsumerReadData(UserPointer<void>(elements),
+ MakeUserPointer(&num_bytes),
+ false,
+ false));
EXPECT_EQ(1u * sizeof(elements[0]), num_bytes);
EXPECT_EQ(123, elements[0]);
EXPECT_EQ(-1, elements[1]);
@@ -171,14 +177,35 @@ TEST(LocalDataPipeTest, SimpleReadWrite) {
EXPECT_EQ(MOJO_RESULT_OK, dp->ConsumerQueryData(MakeUserPointer(&num_bytes)));
EXPECT_EQ(1 * sizeof(elements[0]), num_bytes);
+ // Peek one element.
+ elements[0] = -1;
+ elements[1] = -1;
+ num_bytes = static_cast<uint32_t>(1u * sizeof(elements[0]));
+ EXPECT_EQ(
+ MOJO_RESULT_OK,
+ dp->ConsumerReadData(UserPointer<void>(elements),
+ MakeUserPointer(&num_bytes),
+ false,
+ true));
+ EXPECT_EQ(1u * sizeof(elements[0]), num_bytes);
+ EXPECT_EQ(456, elements[0]);
+ EXPECT_EQ(-1, elements[1]);
+
+ // Query. Still has 1 element remaining.
+ num_bytes = 0;
+ EXPECT_EQ(MOJO_RESULT_OK, dp->ConsumerQueryData(MakeUserPointer(&num_bytes)));
+ EXPECT_EQ(1 * sizeof(elements[0]), num_bytes);
+
// Try to read two elements, with "all or none".
elements[0] = -1;
elements[1] = -1;
num_bytes = static_cast<uint32_t>(2u * sizeof(elements[0]));
EXPECT_EQ(
MOJO_RESULT_OUT_OF_RANGE,
- dp->ConsumerReadData(
- UserPointer<void>(elements), MakeUserPointer(&num_bytes), true));
+ dp->ConsumerReadData(UserPointer<void>(elements),
+ MakeUserPointer(&num_bytes),
+ true,
+ false));
EXPECT_EQ(-1, elements[0]);
EXPECT_EQ(-1, elements[1]);
@@ -188,8 +215,10 @@ TEST(LocalDataPipeTest, SimpleReadWrite) {
num_bytes = static_cast<uint32_t>(2u * sizeof(elements[0]));
EXPECT_EQ(
MOJO_RESULT_OK,
- dp->ConsumerReadData(
- UserPointer<void>(elements), MakeUserPointer(&num_bytes), false));
+ dp->ConsumerReadData(UserPointer<void>(elements),
+ MakeUserPointer(&num_bytes),
+ false,
+ false));
EXPECT_EQ(456, elements[0]);
EXPECT_EQ(-1, elements[1]);
@@ -262,6 +291,32 @@ TEST(LocalDataPipeTest, BasicProducerWaiting) {
EXPECT_EQ(0u, hss.satisfied_signals);
EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss.satisfiable_signals);
+ // Peek one element.
+ elements[0] = -1;
+ elements[1] = -1;
+ num_bytes = static_cast<uint32_t>(1u * sizeof(elements[0]));
+ EXPECT_EQ(
+ MOJO_RESULT_OK,
+ dp->ConsumerReadData(UserPointer<void>(elements),
+ MakeUserPointer(&num_bytes),
+ true,
+ true));
+ EXPECT_EQ(static_cast<uint32_t>(1u * sizeof(elements[0])), num_bytes);
+ EXPECT_EQ(123, elements[0]);
+ EXPECT_EQ(-1, elements[1]);
+
+ // Add a waiter.
+ waiter.Init();
+ ASSERT_EQ(
+ MOJO_RESULT_OK,
+ dp->ProducerAddWaiter(&waiter, MOJO_HANDLE_SIGNAL_WRITABLE, 56, nullptr));
+ // And it still shouldn't be writable yet.
+ EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, waiter.Wait(0, nullptr));
+ hss = HandleSignalsState();
+ dp->ProducerRemoveWaiter(&waiter, &hss);
+ EXPECT_EQ(0u, hss.satisfied_signals);
+ EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss.satisfiable_signals);
+
// Do it again.
waiter.Init();
ASSERT_EQ(
@@ -274,8 +329,10 @@ TEST(LocalDataPipeTest, BasicProducerWaiting) {
num_bytes = static_cast<uint32_t>(1u * sizeof(elements[0]));
EXPECT_EQ(
MOJO_RESULT_OK,
- dp->ConsumerReadData(
- UserPointer<void>(elements), MakeUserPointer(&num_bytes), true));
+ dp->ConsumerReadData(UserPointer<void>(elements),
+ MakeUserPointer(&num_bytes),
+ true,
+ false));
EXPECT_EQ(static_cast<uint32_t>(1u * sizeof(elements[0])), num_bytes);
EXPECT_EQ(123, elements[0]);
EXPECT_EQ(-1, elements[1]);
@@ -432,14 +489,39 @@ TEST(LocalDataPipeTest, BasicConsumerWaiting) {
EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfied_signals);
EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfiable_signals);
+ // Peek one element.
+ elements[0] = -1;
+ elements[1] = -1;
+ num_bytes = static_cast<uint32_t>(1u * sizeof(elements[0]));
+ EXPECT_EQ(
+ MOJO_RESULT_OK,
+ dp->ConsumerReadData(UserPointer<void>(elements),
+ MakeUserPointer(&num_bytes),
+ true,
+ true));
+ EXPECT_EQ(static_cast<uint32_t>(1u * sizeof(elements[0])), num_bytes);
+ EXPECT_EQ(456, elements[0]);
+ EXPECT_EQ(-1, elements[1]);
+
+ // Should still be readable.
+ waiter.Init();
+ hss = HandleSignalsState();
+ EXPECT_EQ(
+ MOJO_RESULT_ALREADY_EXISTS,
+ dp->ConsumerAddWaiter(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 78, &hss));
+ EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfied_signals);
+ EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE, hss.satisfiable_signals);
+
// Read one element.
elements[0] = -1;
elements[1] = -1;
num_bytes = static_cast<uint32_t>(1u * sizeof(elements[0]));
EXPECT_EQ(
MOJO_RESULT_OK,
- dp->ConsumerReadData(
- UserPointer<void>(elements), MakeUserPointer(&num_bytes), true));
+ dp->ConsumerReadData(UserPointer<void>(elements),
+ MakeUserPointer(&num_bytes),
+ true,
+ false));
EXPECT_EQ(static_cast<uint32_t>(1u * sizeof(elements[0])), num_bytes);
EXPECT_EQ(456, elements[0]);
EXPECT_EQ(-1, elements[1]);
@@ -485,8 +567,10 @@ TEST(LocalDataPipeTest, BasicConsumerWaiting) {
num_bytes = static_cast<uint32_t>(1u * sizeof(elements[0]));
EXPECT_EQ(
MOJO_RESULT_OK,
- dp->ConsumerReadData(
- UserPointer<void>(elements), MakeUserPointer(&num_bytes), true));
+ dp->ConsumerReadData(UserPointer<void>(elements),
+ MakeUserPointer(&num_bytes),
+ true,
+ false));
EXPECT_EQ(static_cast<uint32_t>(1u * sizeof(elements[0])), num_bytes);
EXPECT_EQ(789, elements[0]);
EXPECT_EQ(-1, elements[1]);
@@ -843,8 +927,10 @@ TEST(LocalDataPipeTest, BasicMayDiscardWaiting) {
element = 0;
EXPECT_EQ(
MOJO_RESULT_OK,
- dp->ConsumerReadData(
- UserPointer<void>(&element), MakeUserPointer(&num_bytes), false));
+ dp->ConsumerReadData(UserPointer<void>(&element),
+ MakeUserPointer(&num_bytes),
+ false,
+ false));
EXPECT_EQ(static_cast<uint32_t>(sizeof(int32_t)), num_bytes);
EXPECT_EQ(456, element);
@@ -908,8 +994,10 @@ TEST(LocalDataPipeTest, MayDiscard) {
num_bytes = 5u * sizeof(int32_t);
memset(buffer, 0xab, sizeof(buffer));
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ConsumerReadData(
- UserPointer<void>(buffer), MakeUserPointer(&num_bytes), false));
+ dp->ConsumerReadData(UserPointer<void>(buffer),
+ MakeUserPointer(&num_bytes),
+ false,
+ false));
EXPECT_EQ(5u * sizeof(int32_t), num_bytes);
int32_t expected_buffer[100];
memset(expected_buffer, 0xab, sizeof(expected_buffer));
@@ -933,8 +1021,10 @@ TEST(LocalDataPipeTest, MayDiscard) {
num_bytes = 5u * sizeof(int32_t);
memset(buffer, 0xab, sizeof(buffer));
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ConsumerReadData(
- UserPointer<void>(buffer), MakeUserPointer(&num_bytes), false));
+ dp->ConsumerReadData(UserPointer<void>(buffer),
+ MakeUserPointer(&num_bytes),
+ false,
+ false));
EXPECT_EQ(5u * sizeof(int32_t), num_bytes);
memset(expected_buffer, 0xab, sizeof(expected_buffer));
expected_buffer[0] = 8;
@@ -972,8 +1062,10 @@ TEST(LocalDataPipeTest, MayDiscard) {
num_bytes = sizeof(buffer);
memset(buffer, 0xab, sizeof(buffer));
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ConsumerReadData(
- UserPointer<void>(buffer), MakeUserPointer(&num_bytes), false));
+ dp->ConsumerReadData(UserPointer<void>(buffer),
+ MakeUserPointer(&num_bytes),
+ false,
+ false));
EXPECT_EQ(10u * sizeof(int32_t), num_bytes);
memset(expected_buffer, 0xab, sizeof(expected_buffer));
expected_buffer[0] = 104;
@@ -1062,8 +1154,10 @@ TEST(LocalDataPipeTest, MayDiscard) {
num_bytes = sizeof(buffer);
memset(buffer, 0xab, sizeof(buffer));
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ConsumerReadData(
- UserPointer<void>(buffer), MakeUserPointer(&num_bytes), false));
+ dp->ConsumerReadData(UserPointer<void>(buffer),
+ MakeUserPointer(&num_bytes),
+ false,
+ false));
EXPECT_EQ(8u * sizeof(int32_t), num_bytes);
memset(expected_buffer, 0xab, sizeof(expected_buffer));
expected_buffer[0] = 500;
@@ -1134,8 +1228,10 @@ TEST(LocalDataPipeTest, AllOrNone) {
num_bytes = 11u * sizeof(int32_t);
memset(buffer, 0xab, sizeof(buffer));
EXPECT_EQ(MOJO_RESULT_OUT_OF_RANGE,
- dp->ConsumerReadData(
- UserPointer<void>(buffer), MakeUserPointer(&num_bytes), true));
+ dp->ConsumerReadData(UserPointer<void>(buffer),
+ MakeUserPointer(&num_bytes),
+ true,
+ false));
int32_t expected_buffer[100];
memset(expected_buffer, 0xab, sizeof(expected_buffer));
EXPECT_EQ(0, memcmp(buffer, expected_buffer, sizeof(buffer)));
@@ -1172,8 +1268,10 @@ TEST(LocalDataPipeTest, AllOrNone) {
num_bytes = 5u * sizeof(int32_t);
memset(buffer, 0xab, sizeof(buffer));
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ConsumerReadData(
- UserPointer<void>(buffer), MakeUserPointer(&num_bytes), true));
+ dp->ConsumerReadData(UserPointer<void>(buffer),
+ MakeUserPointer(&num_bytes),
+ true,
+ false));
EXPECT_EQ(5u * sizeof(int32_t), num_bytes);
memset(expected_buffer, 0xab, sizeof(expected_buffer));
Seq(100, 5, expected_buffer);
@@ -1183,8 +1281,10 @@ TEST(LocalDataPipeTest, AllOrNone) {
num_bytes = 6u * sizeof(int32_t);
memset(buffer, 0xab, sizeof(buffer));
EXPECT_EQ(MOJO_RESULT_OUT_OF_RANGE,
- dp->ConsumerReadData(
- UserPointer<void>(buffer), MakeUserPointer(&num_bytes), true));
+ dp->ConsumerReadData(UserPointer<void>(buffer),
+ MakeUserPointer(&num_bytes),
+ true,
+ false));
memset(expected_buffer, 0xab, sizeof(expected_buffer));
EXPECT_EQ(0, memcmp(buffer, expected_buffer, sizeof(buffer)));
@@ -1211,8 +1311,10 @@ TEST(LocalDataPipeTest, AllOrNone) {
num_bytes = 4u * sizeof(int32_t);
memset(buffer, 0xab, sizeof(buffer));
EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
- dp->ConsumerReadData(
- UserPointer<void>(buffer), MakeUserPointer(&num_bytes), true));
+ dp->ConsumerReadData(UserPointer<void>(buffer),
+ MakeUserPointer(&num_bytes),
+ true,
+ false));
memset(expected_buffer, 0xab, sizeof(expected_buffer));
EXPECT_EQ(0, memcmp(buffer, expected_buffer, sizeof(buffer)));
@@ -1225,8 +1327,10 @@ TEST(LocalDataPipeTest, AllOrNone) {
num_bytes = 2u * sizeof(int32_t);
memset(buffer, 0xab, sizeof(buffer));
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ConsumerReadData(
- UserPointer<void>(buffer), MakeUserPointer(&num_bytes), true));
+ dp->ConsumerReadData(UserPointer<void>(buffer),
+ MakeUserPointer(&num_bytes),
+ true,
+ false));
EXPECT_EQ(2u * sizeof(int32_t), num_bytes);
memset(expected_buffer, 0xab, sizeof(expected_buffer));
Seq(400, 2, expected_buffer);
@@ -1291,8 +1395,10 @@ TEST(LocalDataPipeTest, AllOrNoneMayDiscard) {
num_bytes = 1u * sizeof(int32_t);
memset(buffer, 0xab, sizeof(buffer));
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ConsumerReadData(
- UserPointer<void>(buffer), MakeUserPointer(&num_bytes), true));
+ dp->ConsumerReadData(UserPointer<void>(buffer),
+ MakeUserPointer(&num_bytes),
+ true,
+ false));
EXPECT_EQ(1u * sizeof(int32_t), num_bytes);
int32_t expected_buffer[100];
memset(expected_buffer, 0xab, sizeof(expected_buffer));
@@ -1303,8 +1409,10 @@ TEST(LocalDataPipeTest, AllOrNoneMayDiscard) {
num_bytes = 10u * sizeof(int32_t);
memset(buffer, 0xab, sizeof(buffer));
EXPECT_EQ(MOJO_RESULT_OUT_OF_RANGE,
- dp->ConsumerReadData(
- UserPointer<void>(buffer), MakeUserPointer(&num_bytes), true));
+ dp->ConsumerReadData(UserPointer<void>(buffer),
+ MakeUserPointer(&num_bytes),
+ true,
+ false));
memset(expected_buffer, 0xab, sizeof(expected_buffer));
EXPECT_EQ(0, memcmp(buffer, expected_buffer, sizeof(buffer)));
@@ -1336,8 +1444,10 @@ TEST(LocalDataPipeTest, AllOrNoneMayDiscard) {
num_bytes = 10u * sizeof(int32_t);
memset(buffer, 0xab, sizeof(buffer));
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ConsumerReadData(
- UserPointer<void>(buffer), MakeUserPointer(&num_bytes), true));
+ dp->ConsumerReadData(UserPointer<void>(buffer),
+ MakeUserPointer(&num_bytes),
+ true,
+ false));
memset(expected_buffer, 0xab, sizeof(expected_buffer));
EXPECT_EQ(10u * sizeof(int32_t), num_bytes);
Seq(300, 10, expected_buffer);
@@ -1525,8 +1635,10 @@ TEST(LocalDataPipeTest, WrapAround) {
num_bytes = 10u;
EXPECT_EQ(
MOJO_RESULT_OK,
- dp->ConsumerReadData(
- UserPointer<void>(read_buffer), MakeUserPointer(&num_bytes), false));
+ dp->ConsumerReadData(UserPointer<void>(read_buffer),
+ MakeUserPointer(&num_bytes),
+ false,
+ false));
EXPECT_EQ(10u, num_bytes);
EXPECT_EQ(0, memcmp(read_buffer, &test_data[0], 10u));
@@ -1572,8 +1684,10 @@ TEST(LocalDataPipeTest, WrapAround) {
memset(read_buffer, 0, num_bytes);
EXPECT_EQ(
MOJO_RESULT_OK,
- dp->ConsumerReadData(
- UserPointer<void>(read_buffer), MakeUserPointer(&num_bytes), false));
+ dp->ConsumerReadData(UserPointer<void>(read_buffer),
+ MakeUserPointer(&num_bytes),
+ false,
+ false));
EXPECT_EQ(100u, num_bytes);
EXPECT_EQ(0, memcmp(read_buffer, &test_data[10], 100u));
@@ -1753,13 +1867,27 @@ TEST(LocalDataPipeTest, CloseWriteRead) {
// Close the producer.
dp->ProducerClose();
- // Read that data.
+ // Peek that data.
char buffer[1000];
num_bytes = static_cast<uint32_t>(sizeof(buffer));
EXPECT_EQ(
MOJO_RESULT_OK,
- dp->ConsumerReadData(
- UserPointer<void>(buffer), MakeUserPointer(&num_bytes), false));
+ dp->ConsumerReadData(UserPointer<void>(buffer),
+ MakeUserPointer(&num_bytes),
+ false,
+ true));
+ EXPECT_EQ(kTestDataSize, num_bytes);
+ EXPECT_EQ(0, memcmp(buffer, kTestData, kTestDataSize));
+
+ // Read that data.
+ memset(buffer, 0, 1000);
+ num_bytes = static_cast<uint32_t>(sizeof(buffer));
+ EXPECT_EQ(
+ MOJO_RESULT_OK,
+ dp->ConsumerReadData(UserPointer<void>(buffer),
+ MakeUserPointer(&num_bytes),
+ false,
+ false));
EXPECT_EQ(kTestDataSize, num_bytes);
EXPECT_EQ(0, memcmp(buffer, kTestData, kTestDataSize));
@@ -1767,8 +1895,10 @@ TEST(LocalDataPipeTest, CloseWriteRead) {
num_bytes = static_cast<uint32_t>(sizeof(buffer));
EXPECT_EQ(
MOJO_RESULT_FAILED_PRECONDITION,
- dp->ConsumerReadData(
- UserPointer<void>(buffer), MakeUserPointer(&num_bytes), false));
+ dp->ConsumerReadData(UserPointer<void>(buffer),
+ MakeUserPointer(&num_bytes),
+ false,
+ false));
// A two-phase read should also fail.
const void* read_buffer_ptr = nullptr;
« no previous file with comments | « mojo/edk/system/local_data_pipe.cc ('k') | mojo/mojo.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698