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

Side by Side Diff: blimp/net/stream_packet_reader_unittest.cc

Issue 1962393004: Added a debug info UI for Blimp (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added empty implementation for linux client Created 4 years, 7 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 unified diff | Download patch
« no previous file with comments | « blimp/net/stream_packet_reader.cc ('k') | blimp/net/stream_packet_writer.h » ('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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 <stddef.h> 5 #include <stddef.h>
6 #include <string> 6 #include <string>
7 7
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "base/sys_byteorder.h" 9 #include "base/sys_byteorder.h"
10 #include "blimp/net/blimp_connection_statistics.h"
10 #include "blimp/net/common.h" 11 #include "blimp/net/common.h"
11 #include "blimp/net/stream_packet_reader.h" 12 #include "blimp/net/stream_packet_reader.h"
12 #include "blimp/net/test_common.h" 13 #include "blimp/net/test_common.h"
13 #include "net/base/completion_callback.h" 14 #include "net/base/completion_callback.h"
14 #include "net/base/io_buffer.h" 15 #include "net/base/io_buffer.h"
15 #include "net/base/net_errors.h" 16 #include "net/base/net_errors.h"
16 #include "net/base/test_completion_callback.h" 17 #include "net/base/test_completion_callback.h"
17 #include "net/socket/socket.h" 18 #include "net/socket/socket.h"
18 #include "testing/gmock/include/gmock/gmock.h" 19 #include "testing/gmock/include/gmock/gmock.h"
19 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
20 21
21 using testing::_; 22 using testing::_;
22 using testing::DoAll; 23 using testing::DoAll;
23 using testing::Mock; 24 using testing::Mock;
24 using testing::NotNull; 25 using testing::NotNull;
25 using testing::Return; 26 using testing::Return;
26 using testing::SaveArg; 27 using testing::SaveArg;
27 using testing::WithArg; 28 using testing::WithArg;
28 29
29 namespace blimp { 30 namespace blimp {
30 namespace { 31 namespace {
31 32
32 class StreamPacketReaderTest : public testing::Test { 33 class StreamPacketReaderTest : public testing::Test {
33 public: 34 public:
34 StreamPacketReaderTest() 35 StreamPacketReaderTest()
35 : buffer_(new net::GrowableIOBuffer), 36 : buffer_(new net::GrowableIOBuffer),
36 test_msg_("U WOT M8"), 37 test_msg_("U WOT M8"),
37 data_reader_(&socket_) {} 38 data_reader_(&socket_, &statistics_) {}
38 39
39 ~StreamPacketReaderTest() override {} 40 ~StreamPacketReaderTest() override {}
40 41
41 void ReadPacket() { data_reader_.ReadPacket(buffer_, callback_.callback()); } 42 void ReadPacket() { data_reader_.ReadPacket(buffer_, callback_.callback()); }
42 43
43 protected: 44 protected:
44 base::MessageLoop message_loop_; 45 base::MessageLoop message_loop_;
45 scoped_refptr<net::GrowableIOBuffer> buffer_; 46 scoped_refptr<net::GrowableIOBuffer> buffer_;
46 std::string test_msg_; 47 std::string test_msg_;
47 net::TestCompletionCallback callback_; 48 net::TestCompletionCallback callback_;
48 testing::StrictMock<MockStreamSocket> socket_; 49 testing::StrictMock<MockStreamSocket> socket_;
49 testing::InSequence sequence_; 50 testing::InSequence sequence_;
51 BlimpConnectionStatistics statistics_;
50 StreamPacketReader data_reader_; 52 StreamPacketReader data_reader_;
51 }; 53 };
52 54
53 // Successful read with 1 async header read and 1 async payload read. 55 // Successful read with 1 async header read and 1 async payload read.
54 TEST_F(StreamPacketReaderTest, ReadAsyncHeaderAsyncPayload) { 56 TEST_F(StreamPacketReaderTest, ReadAsyncHeaderAsyncPayload) {
55 net::CompletionCallback socket_cb; 57 net::CompletionCallback socket_cb;
56 58
57 EXPECT_CALL(socket_, Read(NotNull(), kPacketHeaderSizeBytes, _)) 59 EXPECT_CALL(socket_, Read(NotNull(), kPacketHeaderSizeBytes, _))
58 .WillOnce(DoAll(FillBufferFromString<0>(EncodeHeader(test_msg_.size())), 60 .WillOnce(DoAll(FillBufferFromString<0>(EncodeHeader(test_msg_.size())),
59 SaveArg<2>(&socket_cb), Return(net::ERR_IO_PENDING))); 61 SaveArg<2>(&socket_cb), Return(net::ERR_IO_PENDING)));
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 .RetiresOnSaturation(); 151 .RetiresOnSaturation();
150 152
151 // Read the second message's payload synchronously. 153 // Read the second message's payload synchronously.
152 EXPECT_CALL(socket_, Read(NotNull(), test_msg2.size(), _)) 154 EXPECT_CALL(socket_, Read(NotNull(), test_msg2.size(), _))
153 .WillOnce( 155 .WillOnce(
154 DoAll(FillBufferFromString<0>(test_msg2), Return(test_msg2.size()))) 156 DoAll(FillBufferFromString<0>(test_msg2), Return(test_msg2.size())))
155 .RetiresOnSaturation(); 157 .RetiresOnSaturation();
156 158
157 ReadPacket(); 159 ReadPacket();
158 ASSERT_EQ(static_cast<int>(test_msg_.size()), callback_.WaitForResult()); 160 ASSERT_EQ(static_cast<int>(test_msg_.size()), callback_.WaitForResult());
161 EXPECT_EQ(static_cast<int>(test_msg_.size()),
162 statistics_.Get(BlimpConnectionStatistics::BYTES_RECEIVED));
159 163
160 ReadPacket(); 164 ReadPacket();
161 ASSERT_EQ(static_cast<int>(test_msg2.size()), callback_.WaitForResult()); 165 ASSERT_EQ(static_cast<int>(test_msg2.size()), callback_.WaitForResult());
166 EXPECT_EQ(static_cast<int>(test_msg_.size() + test_msg2.size()),
167 statistics_.Get(BlimpConnectionStatistics::BYTES_RECEIVED));
162 168
163 EXPECT_TRUE(BufferStartsWith(buffer_.get(), test_msg2.size(), test_msg2)); 169 EXPECT_TRUE(BufferStartsWith(buffer_.get(), test_msg2.size(), test_msg2));
164 EXPECT_FALSE(callback_.have_result()); 170 EXPECT_FALSE(callback_.have_result());
165 } 171 }
166 172
167 // Successful read of 2 messages, header and payload reads all completing 173 // Successful read of 2 messages, header and payload reads all completing
168 // asynchronously with no partial results. 174 // asynchronously with no partial results.
169 TEST_F(StreamPacketReaderTest, ReadMultipleMessagesAsync) { 175 TEST_F(StreamPacketReaderTest, ReadMultipleMessagesAsync) {
170 net::TestCompletionCallback read_cb1; 176 net::TestCompletionCallback read_cb1;
171 net::TestCompletionCallback read_cb2; 177 net::TestCompletionCallback read_cb2;
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 ReadPacket(); 312 ReadPacket();
307 cb.Run(net::ERR_FAILED); 313 cb.Run(net::ERR_FAILED);
308 EXPECT_EQ(net::ERR_FAILED, callback_.WaitForResult()); 314 EXPECT_EQ(net::ERR_FAILED, callback_.WaitForResult());
309 } 315 }
310 316
311 // Verify that async header read completions don't break us if the 317 // Verify that async header read completions don't break us if the
312 // StreamPacketReader object was destroyed. 318 // StreamPacketReader object was destroyed.
313 TEST_F(StreamPacketReaderTest, ReaderDeletedDuringAsyncHeaderRead) { 319 TEST_F(StreamPacketReaderTest, ReaderDeletedDuringAsyncHeaderRead) {
314 net::CompletionCallback cb; 320 net::CompletionCallback cb;
315 net::TestCompletionCallback test_cb; 321 net::TestCompletionCallback test_cb;
316 std::unique_ptr<StreamPacketReader> reader(new StreamPacketReader(&socket_)); 322 std::unique_ptr<StreamPacketReader> reader(
323 new StreamPacketReader(&socket_, &statistics_));
317 324
318 EXPECT_CALL(socket_, Read(NotNull(), kPacketHeaderSizeBytes, _)) 325 EXPECT_CALL(socket_, Read(NotNull(), kPacketHeaderSizeBytes, _))
319 .WillOnce(DoAll(FillBufferFromString<0>(EncodeHeader(test_msg_.size())), 326 .WillOnce(DoAll(FillBufferFromString<0>(EncodeHeader(test_msg_.size())),
320 SaveArg<2>(&cb), Return(net::ERR_IO_PENDING))); 327 SaveArg<2>(&cb), Return(net::ERR_IO_PENDING)));
321 328
322 reader->ReadPacket(buffer_, callback_.callback()); 329 reader->ReadPacket(buffer_, callback_.callback());
323 reader.reset(); // Delete the reader object. 330 reader.reset(); // Delete the reader object.
324 cb.Run(kPacketHeaderSizeBytes); // Complete the socket operation. 331 cb.Run(kPacketHeaderSizeBytes); // Complete the socket operation.
325 } 332 }
326 333
327 // Verify that async payload read completions don't break us if the 334 // Verify that async payload read completions don't break us if the
328 // StreamPacketReader object was destroyed. 335 // StreamPacketReader object was destroyed.
329 TEST_F(StreamPacketReaderTest, ReaderDeletedDuringAsyncPayloadRead) { 336 TEST_F(StreamPacketReaderTest, ReaderDeletedDuringAsyncPayloadRead) {
330 net::CompletionCallback cb; 337 net::CompletionCallback cb;
331 std::unique_ptr<StreamPacketReader> reader(new StreamPacketReader(&socket_)); 338 std::unique_ptr<StreamPacketReader> reader(
339 new StreamPacketReader(&socket_, &statistics_));
332 340
333 EXPECT_CALL(socket_, Read(NotNull(), kPacketHeaderSizeBytes, _)) 341 EXPECT_CALL(socket_, Read(NotNull(), kPacketHeaderSizeBytes, _))
334 .WillOnce(DoAll(FillBufferFromString<0>(EncodeHeader(test_msg_.size())), 342 .WillOnce(DoAll(FillBufferFromString<0>(EncodeHeader(test_msg_.size())),
335 Return(kPacketHeaderSizeBytes))); 343 Return(kPacketHeaderSizeBytes)));
336 EXPECT_CALL(socket_, Read(NotNull(), test_msg_.size(), _)) 344 EXPECT_CALL(socket_, Read(NotNull(), test_msg_.size(), _))
337 .WillOnce(DoAll(SaveArg<2>(&cb), Return(net::ERR_IO_PENDING))); 345 .WillOnce(DoAll(SaveArg<2>(&cb), Return(net::ERR_IO_PENDING)));
338 reader->ReadPacket(buffer_, callback_.callback()); 346 reader->ReadPacket(buffer_, callback_.callback());
339 347
340 reader.reset(); // Delete the reader object. 348 reader.reset(); // Delete the reader object.
341 cb.Run(net::ERR_FAILED); // Complete the socket operation. 349 cb.Run(net::ERR_FAILED); // Complete the socket operation.
(...skipping 17 matching lines...) Expand all
359 FillBufferFromString<0>(EncodeHeader(kMaxPacketPayloadSizeBytes + 1)), 367 FillBufferFromString<0>(EncodeHeader(kMaxPacketPayloadSizeBytes + 1)),
360 Return(kPacketHeaderSizeBytes))); 368 Return(kPacketHeaderSizeBytes)));
361 369
362 ReadPacket(); 370 ReadPacket();
363 EXPECT_EQ(net::ERR_INVALID_RESPONSE, callback_.WaitForResult()); 371 EXPECT_EQ(net::ERR_INVALID_RESPONSE, callback_.WaitForResult());
364 } 372 }
365 373
366 } // namespace 374 } // namespace
367 375
368 } // namespace blimp 376 } // namespace blimp
OLDNEW
« no previous file with comments | « blimp/net/stream_packet_reader.cc ('k') | blimp/net/stream_packet_writer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698