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

Side by Side Diff: mojo/edk/system/raw_channel_unittest.cc

Issue 728043002: Revert of Update mojo sdk to rev afb4440fd5a10cba980878c326180b7ad7960480 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 unified diff | Download patch
« no previous file with comments | « mojo/edk/system/raw_channel_posix.cc ('k') | mojo/edk/system/raw_channel_win.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/edk/system/raw_channel.h" 5 #include "mojo/edk/system/raw_channel.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <vector> 9 #include <vector>
10 10
(...skipping 23 matching lines...) Expand all
34 namespace system { 34 namespace system {
35 namespace { 35 namespace {
36 36
37 scoped_ptr<MessageInTransit> MakeTestMessage(uint32_t num_bytes) { 37 scoped_ptr<MessageInTransit> MakeTestMessage(uint32_t num_bytes) {
38 std::vector<unsigned char> bytes(num_bytes, 0); 38 std::vector<unsigned char> bytes(num_bytes, 0);
39 for (size_t i = 0; i < num_bytes; i++) 39 for (size_t i = 0; i < num_bytes; i++)
40 bytes[i] = static_cast<unsigned char>(i + num_bytes); 40 bytes[i] = static_cast<unsigned char>(i + num_bytes);
41 return make_scoped_ptr( 41 return make_scoped_ptr(
42 new MessageInTransit(MessageInTransit::kTypeMessagePipeEndpoint, 42 new MessageInTransit(MessageInTransit::kTypeMessagePipeEndpoint,
43 MessageInTransit::kSubtypeMessagePipeEndpointData, 43 MessageInTransit::kSubtypeMessagePipeEndpointData,
44 num_bytes, bytes.empty() ? nullptr : &bytes[0])); 44 num_bytes,
45 bytes.empty() ? nullptr : &bytes[0]));
45 } 46 }
46 47
47 bool CheckMessageData(const void* bytes, uint32_t num_bytes) { 48 bool CheckMessageData(const void* bytes, uint32_t num_bytes) {
48 const unsigned char* b = static_cast<const unsigned char*>(bytes); 49 const unsigned char* b = static_cast<const unsigned char*>(bytes);
49 for (uint32_t i = 0; i < num_bytes; i++) { 50 for (uint32_t i = 0; i < num_bytes; i++) {
50 if (b[i] != static_cast<unsigned char>(i + num_bytes)) 51 if (b[i] != static_cast<unsigned char>(i + num_bytes))
51 return false; 52 return false;
52 } 53 }
53 return true; 54 return true;
54 } 55 }
55 56
56 void InitOnIOThread(RawChannel* raw_channel, RawChannel::Delegate* delegate) { 57 void InitOnIOThread(RawChannel* raw_channel, RawChannel::Delegate* delegate) {
57 CHECK(raw_channel->Init(delegate)); 58 CHECK(raw_channel->Init(delegate));
58 } 59 }
59 60
60 bool WriteTestMessageToHandle(const embedder::PlatformHandle& handle, 61 bool WriteTestMessageToHandle(const embedder::PlatformHandle& handle,
61 uint32_t num_bytes) { 62 uint32_t num_bytes) {
62 scoped_ptr<MessageInTransit> message(MakeTestMessage(num_bytes)); 63 scoped_ptr<MessageInTransit> message(MakeTestMessage(num_bytes));
63 64
64 size_t write_size = 0; 65 size_t write_size = 0;
65 mojo::test::BlockingWrite(handle, message->main_buffer(), 66 mojo::test::BlockingWrite(
66 message->main_buffer_size(), &write_size); 67 handle, message->main_buffer(), message->main_buffer_size(), &write_size);
67 return write_size == message->main_buffer_size(); 68 return write_size == message->main_buffer_size();
68 } 69 }
69 70
70 // ----------------------------------------------------------------------------- 71 // -----------------------------------------------------------------------------
71 72
72 class RawChannelTest : public testing::Test { 73 class RawChannelTest : public testing::Test {
73 public: 74 public:
74 RawChannelTest() : io_thread_(base::TestIOThread::kManualStart) {} 75 RawChannelTest() : io_thread_(base::TestIOThread::kManualStart) {}
75 ~RawChannelTest() override {} 76 ~RawChannelTest() override {}
76 77
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 public: 128 public:
128 explicit TestMessageReaderAndChecker(embedder::PlatformHandle handle) 129 explicit TestMessageReaderAndChecker(embedder::PlatformHandle handle)
129 : handle_(handle) {} 130 : handle_(handle) {}
130 ~TestMessageReaderAndChecker() { CHECK(bytes_.empty()); } 131 ~TestMessageReaderAndChecker() { CHECK(bytes_.empty()); }
131 132
132 bool ReadAndCheckNextMessage(uint32_t expected_size) { 133 bool ReadAndCheckNextMessage(uint32_t expected_size) {
133 unsigned char buffer[4096]; 134 unsigned char buffer[4096];
134 135
135 for (size_t i = 0; i < kMessageReaderMaxPollIterations;) { 136 for (size_t i = 0; i < kMessageReaderMaxPollIterations;) {
136 size_t read_size = 0; 137 size_t read_size = 0;
137 CHECK(mojo::test::NonBlockingRead(handle_, buffer, sizeof(buffer), 138 CHECK(mojo::test::NonBlockingRead(
138 &read_size)); 139 handle_, buffer, sizeof(buffer), &read_size));
139 140
140 // Append newly-read data to |bytes_|. 141 // Append newly-read data to |bytes_|.
141 bytes_.insert(bytes_.end(), buffer, buffer + read_size); 142 bytes_.insert(bytes_.end(), buffer, buffer + read_size);
142 143
143 // If we have the header.... 144 // If we have the header....
144 size_t message_size; 145 size_t message_size;
145 if (MessageInTransit::GetNextMessageSize( 146 if (MessageInTransit::GetNextMessageSize(
146 bytes_.empty() ? nullptr : &bytes_[0], bytes_.size(), 147 bytes_.empty() ? nullptr : &bytes_[0],
148 bytes_.size(),
147 &message_size)) { 149 &message_size)) {
148 // If we've read the whole message.... 150 // If we've read the whole message....
149 if (bytes_.size() >= message_size) { 151 if (bytes_.size() >= message_size) {
150 bool rv = true; 152 bool rv = true;
151 MessageInTransit::View message_view(message_size, &bytes_[0]); 153 MessageInTransit::View message_view(message_size, &bytes_[0]);
152 CHECK_EQ(message_view.main_buffer_size(), message_size); 154 CHECK_EQ(message_view.main_buffer_size(), message_size);
153 155
154 if (message_view.num_bytes() != expected_size) { 156 if (message_view.num_bytes() != expected_size) {
155 LOG(ERROR) << "Wrong size: " << message_size << " instead of " 157 LOG(ERROR) << "Wrong size: " << message_size << " instead of "
156 << expected_size << " bytes."; 158 << expected_size << " bytes.";
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 DISALLOW_COPY_AND_ASSIGN(ReadCountdownRawChannelDelegate); 371 DISALLOW_COPY_AND_ASSIGN(ReadCountdownRawChannelDelegate);
370 }; 372 };
371 373
372 TEST_F(RawChannelTest, WriteMessageAndOnReadMessage) { 374 TEST_F(RawChannelTest, WriteMessageAndOnReadMessage) {
373 static const size_t kNumWriterThreads = 10; 375 static const size_t kNumWriterThreads = 10;
374 static const size_t kNumWriteMessagesPerThread = 4000; 376 static const size_t kNumWriteMessagesPerThread = 4000;
375 377
376 WriteOnlyRawChannelDelegate writer_delegate; 378 WriteOnlyRawChannelDelegate writer_delegate;
377 scoped_ptr<RawChannel> writer_rc(RawChannel::Create(handles[0].Pass())); 379 scoped_ptr<RawChannel> writer_rc(RawChannel::Create(handles[0].Pass()));
378 io_thread()->PostTaskAndWait(FROM_HERE, 380 io_thread()->PostTaskAndWait(FROM_HERE,
379 base::Bind(&InitOnIOThread, writer_rc.get(), 381 base::Bind(&InitOnIOThread,
382 writer_rc.get(),
380 base::Unretained(&writer_delegate))); 383 base::Unretained(&writer_delegate)));
381 384
382 ReadCountdownRawChannelDelegate reader_delegate(kNumWriterThreads * 385 ReadCountdownRawChannelDelegate reader_delegate(kNumWriterThreads *
383 kNumWriteMessagesPerThread); 386 kNumWriteMessagesPerThread);
384 scoped_ptr<RawChannel> reader_rc(RawChannel::Create(handles[1].Pass())); 387 scoped_ptr<RawChannel> reader_rc(RawChannel::Create(handles[1].Pass()));
385 io_thread()->PostTaskAndWait(FROM_HERE, 388 io_thread()->PostTaskAndWait(FROM_HERE,
386 base::Bind(&InitOnIOThread, reader_rc.get(), 389 base::Bind(&InitOnIOThread,
390 reader_rc.get(),
387 base::Unretained(&reader_delegate))); 391 base::Unretained(&reader_delegate)));
388 392
389 { 393 {
390 ScopedVector<RawChannelWriterThread> writer_threads; 394 ScopedVector<RawChannelWriterThread> writer_threads;
391 for (size_t i = 0; i < kNumWriterThreads; i++) { 395 for (size_t i = 0; i < kNumWriterThreads; i++) {
392 writer_threads.push_back(new RawChannelWriterThread( 396 writer_threads.push_back(new RawChannelWriterThread(
393 writer_rc.get(), kNumWriteMessagesPerThread)); 397 writer_rc.get(), kNumWriteMessagesPerThread));
394 } 398 }
395 for (size_t i = 0; i < writer_threads.size(); i++) 399 for (size_t i = 0; i < writer_threads.size(); i++)
396 writer_threads[i]->Start(); 400 writer_threads[i]->Start();
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
675 679
676 EXPECT_FALSE(rc->WriteMessage(MakeTestMessage(1))); 680 EXPECT_FALSE(rc->WriteMessage(MakeTestMessage(1)));
677 681
678 // Wait for the delegate, which will shut the |RawChannel| down. 682 // Wait for the delegate, which will shut the |RawChannel| down.
679 delegate.Wait(); 683 delegate.Wait();
680 } 684 }
681 685
682 } // namespace 686 } // namespace
683 } // namespace system 687 } // namespace system
684 } // namespace mojo 688 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/edk/system/raw_channel_posix.cc ('k') | mojo/edk/system/raw_channel_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698