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

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

Issue 1403033003: Last set of fixes to make the src/mojo/edk pass the page cycler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: another small fix Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: mojo/edk/system/raw_channel_unittest.cc
diff --git a/mojo/edk/system/raw_channel_unittest.cc b/mojo/edk/system/raw_channel_unittest.cc
index af75543bb2f6f1ce5d9c5f741068ae51ad4f7b52..a6694bdc83a5194d1d00233eefbff253990dc8d8 100644
--- a/mojo/edk/system/raw_channel_unittest.cc
+++ b/mojo/edk/system/raw_channel_unittest.cc
@@ -478,14 +478,9 @@ TEST_F(RawChannelTest, OnError) {
EXPECT_FALSE(rc->WriteMessage(MakeTestMessage(1)));
- // We should get a write error.
- delegate.WaitForWriteError();
-
- // We should also get a read error.
+ // We should get a shutdown error.
delegate.WaitForReadError();
- EXPECT_FALSE(rc->WriteMessage(MakeTestMessage(2)));
-
// Sleep a bit, to make sure we don't get another |OnError()|
// notification. (If we actually get another one, |OnError()| crashes.)
test::Sleep(test::DeadlineFromMilliseconds(20));
@@ -500,27 +495,28 @@ TEST_F(RawChannelTest, ReadUnaffectedByWriteError) {
const size_t kMessageCount = 5;
// Write a few messages into the other end.
+ RawChannel* other = RawChannel::Create(handles[1].Pass());
+ WriteOnlyRawChannelDelegate write_delegate;
+ test_io_thread()->PostTaskAndWait(
+ FROM_HERE,
+ base::Bind(&InitOnIOThread, other, base::Unretained(&write_delegate)));
uint32_t message_size = 1;
for (size_t i = 0; i < kMessageCount;
i++, message_size += message_size / 2 + 1)
- EXPECT_TRUE(WriteTestMessageToHandle(handles[1].get(), message_size));
+ EXPECT_TRUE(other->WriteMessage(MakeTestMessage(message_size)));
// Close the other end, which should make writing fail.
- handles[1].reset();
+ test_io_thread()->PostTaskAndWait(
+ FROM_HERE, base::Bind(&RawChannel::Shutdown, base::Unretained(other)));
- // Only start up reading here. The system buffer should still contain the
- // messages that were written.
+ // Only start up reading here. The RawChannel ensures that it won't close the
+ // pipe until the other end read everything.
ErrorRecordingRawChannelDelegate delegate(kMessageCount, true, true);
RawChannel* rc = RawChannel::Create(handles[0].Pass());
test_io_thread()->PostTaskAndWait(
FROM_HERE,
base::Bind(&InitOnIOThread, rc, base::Unretained(&delegate)));
- EXPECT_FALSE(rc->WriteMessage(MakeTestMessage(1)));
-
- // We should definitely get a write error.
- delegate.WaitForWriteError();
-
// Wait for reading to finish. A writing failure shouldn't affect reading.
delegate.Wait();

Powered by Google App Engine
This is Rietveld 408576698