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

Side by Side Diff: net/quic/quic_http_stream_test.cc

Issue 23587004: If the stream is being closed locally (for example in the case of a (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix tests Created 7 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « net/quic/quic_http_stream.cc ('k') | net/quic/quic_protocol.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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "net/quic/quic_http_stream.h" 5 #include "net/quic/quic_http_stream.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "net/base/net_errors.h" 9 #include "net/base/net_errors.h"
10 #include "net/base/test_completion_callback.h" 10 #include "net/base/test_completion_callback.h"
(...skipping 16 matching lines...) Expand all
27 #include "net/quic/test_tools/test_task_runner.h" 27 #include "net/quic/test_tools/test_task_runner.h"
28 #include "net/socket/socket_test_util.h" 28 #include "net/socket/socket_test_util.h"
29 #include "net/spdy/spdy_frame_builder.h" 29 #include "net/spdy/spdy_frame_builder.h"
30 #include "net/spdy/spdy_framer.h" 30 #include "net/spdy/spdy_framer.h"
31 #include "net/spdy/spdy_http_utils.h" 31 #include "net/spdy/spdy_http_utils.h"
32 #include "net/spdy/spdy_protocol.h" 32 #include "net/spdy/spdy_protocol.h"
33 #include "testing/gmock/include/gmock/gmock.h" 33 #include "testing/gmock/include/gmock/gmock.h"
34 #include "testing/gtest/include/gtest/gtest.h" 34 #include "testing/gtest/include/gtest/gtest.h"
35 35
36 using testing::_; 36 using testing::_;
37 using testing::AnyNumber;
38 using testing::Return;
37 39
38 namespace net { 40 namespace net {
39 namespace test { 41 namespace test {
40 namespace { 42 namespace {
41 43
42 const char kUploadData[] = "hello world!"; 44 const char kUploadData[] = "hello world!";
43 45
44 class TestQuicConnection : public QuicConnection { 46 class TestQuicConnection : public QuicConnection {
45 public: 47 public:
46 TestQuicConnection(QuicGuid guid, 48 TestQuicConnection(QuicGuid guid,
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 163
162 socket_data_.reset(new StaticSocketDataProvider(NULL, 0, mock_writes_.get(), 164 socket_data_.reset(new StaticSocketDataProvider(NULL, 0, mock_writes_.get(),
163 writes_.size())); 165 writes_.size()));
164 166
165 MockUDPClientSocket* socket = new MockUDPClientSocket(socket_data_.get(), 167 MockUDPClientSocket* socket = new MockUDPClientSocket(socket_data_.get(),
166 net_log_.net_log()); 168 net_log_.net_log());
167 socket->Connect(peer_addr_); 169 socket->Connect(peer_addr_);
168 runner_ = new TestTaskRunner(&clock_); 170 runner_ = new TestTaskRunner(&clock_);
169 send_algorithm_ = new MockSendAlgorithm(); 171 send_algorithm_ = new MockSendAlgorithm();
170 receive_algorithm_ = new TestReceiveAlgorithm(NULL); 172 receive_algorithm_ = new TestReceiveAlgorithm(NULL);
173 EXPECT_CALL(*receive_algorithm_, RecordIncomingPacket(_, _, _, _)).
174 Times(AnyNumber());
175 EXPECT_CALL(*send_algorithm_, SentPacket(_, _, _, _)).Times(AnyNumber());
171 EXPECT_CALL(*send_algorithm_, RetransmissionDelay()).WillRepeatedly( 176 EXPECT_CALL(*send_algorithm_, RetransmissionDelay()).WillRepeatedly(
172 testing::Return(QuicTime::Delta::Zero())); 177 Return(QuicTime::Delta::Zero()));
173 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _, _)). 178 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _, _)).
174 WillRepeatedly(testing::Return(QuicTime::Delta::Zero())); 179 WillRepeatedly(Return(QuicTime::Delta::Zero()));
175 EXPECT_CALL(*send_algorithm_, SmoothedRtt()).WillRepeatedly( 180 EXPECT_CALL(*send_algorithm_, SmoothedRtt()).WillRepeatedly(
176 testing::Return(QuicTime::Delta::Zero())); 181 Return(QuicTime::Delta::Zero()));
177 EXPECT_CALL(*send_algorithm_, BandwidthEstimate()).WillRepeatedly( 182 EXPECT_CALL(*send_algorithm_, BandwidthEstimate()).WillRepeatedly(
178 testing::Return(QuicBandwidth::Zero())); 183 Return(QuicBandwidth::Zero()));
179 helper_ = new QuicConnectionHelper(runner_.get(), &clock_, 184 helper_ = new QuicConnectionHelper(runner_.get(), &clock_,
180 &random_generator_, socket); 185 &random_generator_, socket);
181 connection_ = new TestQuicConnection(guid_, peer_addr_, helper_); 186 connection_ = new TestQuicConnection(guid_, peer_addr_, helper_);
182 connection_->set_visitor(&visitor_); 187 connection_->set_visitor(&visitor_);
183 connection_->SetSendAlgorithm(send_algorithm_); 188 connection_->SetSendAlgorithm(send_algorithm_);
184 connection_->SetReceiveAlgorithm(receive_algorithm_); 189 connection_->SetReceiveAlgorithm(receive_algorithm_);
185 crypto_config_.SetDefaults(); 190 crypto_config_.SetDefaults();
186 session_.reset( 191 session_.reset(
187 new QuicClientSession(connection_, 192 new QuicClientSession(connection_,
188 scoped_ptr<DatagramClientSocket>(socket), NULL, 193 scoped_ptr<DatagramClientSocket>(socket), NULL,
(...skipping 27 matching lines...) Expand all
216 221
217 std::string SerializeHeaderBlock(const SpdyHeaderBlock& headers, 222 std::string SerializeHeaderBlock(const SpdyHeaderBlock& headers,
218 bool write_priority) { 223 bool write_priority) {
219 QuicSpdyCompressor compressor; 224 QuicSpdyCompressor compressor;
220 if (framer_.version() >= QUIC_VERSION_9 && write_priority) { 225 if (framer_.version() >= QUIC_VERSION_9 && write_priority) {
221 return compressor.CompressHeadersWithPriority(0, headers); 226 return compressor.CompressHeadersWithPriority(0, headers);
222 } 227 }
223 return compressor.CompressHeaders(headers); 228 return compressor.CompressHeaders(headers);
224 } 229 }
225 230
226 // Returns a newly created packet to send kData on stream 1. 231 // Returns a newly created packet to send kData on stream 3.
227 QuicEncryptedPacket* ConstructDataPacket( 232 QuicEncryptedPacket* ConstructDataPacket(
228 QuicPacketSequenceNumber sequence_number, 233 QuicPacketSequenceNumber sequence_number,
229 bool should_include_version, 234 bool should_include_version,
230 bool fin, 235 bool fin,
231 QuicStreamOffset offset, 236 QuicStreamOffset offset,
232 base::StringPiece data) { 237 base::StringPiece data) {
233 InitializeHeader(sequence_number, should_include_version); 238 InitializeHeader(sequence_number, should_include_version);
234 QuicStreamFrame frame(3, fin, offset, data); 239 QuicStreamFrame frame(3, fin, offset, data);
235 return ConstructPacket(header_, QuicFrame(&frame)); 240 return ConstructPacket(header_, QuicFrame(&frame));
236 } 241 }
237 242
243 // Returns a newly created packet to RST_STREAM stream 3.
244 QuicEncryptedPacket* ConstructRstStreamPacket(
245 QuicPacketSequenceNumber sequence_number) {
246 InitializeHeader(sequence_number, false);
247 QuicRstStreamFrame frame(3, QUIC_SERVER_ERROR_PROCESSING_STREAM);
248 return ConstructPacket(header_, QuicFrame(&frame));
249 }
250
238 // Returns a newly created packet to send ack data. 251 // Returns a newly created packet to send ack data.
239 QuicEncryptedPacket* ConstructAckPacket( 252 QuicEncryptedPacket* ConstructAckPacket(
240 QuicPacketSequenceNumber sequence_number, 253 QuicPacketSequenceNumber sequence_number,
241 QuicPacketSequenceNumber largest_received, 254 QuicPacketSequenceNumber largest_received,
242 QuicPacketSequenceNumber least_unacked) { 255 QuicPacketSequenceNumber least_unacked) {
243 InitializeHeader(sequence_number, false); 256 InitializeHeader(sequence_number, false);
244 257
245 QuicAckFrame ack(largest_received, QuicTime::Zero(), least_unacked); 258 QuicAckFrame ack(largest_received, QuicTime::Zero(), least_unacked);
246 ack.sent_info.entropy_hash = 0; 259 ack.sent_info.entropy_hash = 0;
247 ack.received_info.entropy_hash = 0; 260 ack.received_info.entropy_hash = 0;
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 stream_->ReadResponseBody(read_buffer_.get(), read_buffer_->size(), 543 stream_->ReadResponseBody(read_buffer_.get(), read_buffer_->size(),
531 callback_.callback())); 544 callback_.callback()));
532 545
533 EXPECT_TRUE(stream_->IsResponseBodyComplete()); 546 EXPECT_TRUE(stream_->IsResponseBodyComplete());
534 EXPECT_TRUE(AtEof()); 547 EXPECT_TRUE(AtEof());
535 } 548 }
536 549
537 TEST_F(QuicHttpStreamTest, DestroyedEarly) { 550 TEST_F(QuicHttpStreamTest, DestroyedEarly) {
538 SetRequestString("GET", "/"); 551 SetRequestString("GET", "/");
539 AddWrite(SYNCHRONOUS, ConstructDataPacket(1, true, kFin, 0, request_data_)); 552 AddWrite(SYNCHRONOUS, ConstructDataPacket(1, true, kFin, 0, request_data_));
553 AddWrite(SYNCHRONOUS, ConstructRstStreamPacket(2));
540 use_closing_stream_ = true; 554 use_closing_stream_ = true;
541 Initialize(); 555 Initialize();
542 556
543 request_.method = "GET"; 557 request_.method = "GET";
544 request_.url = GURL("http://www.google.com/"); 558 request_.url = GURL("http://www.google.com/");
545 559
546 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, 560 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY,
547 net_log_, callback_.callback())); 561 net_log_, callback_.callback()));
548 EXPECT_EQ(OK, stream_->SendRequest(headers_, &response_, 562 EXPECT_EQ(OK, stream_->SendRequest(headers_, &response_,
549 callback_.callback())); 563 callback_.callback()));
(...skipping 12 matching lines...) Expand all
562 576
563 // In the course of processing this packet, the QuicHttpStream close itself. 577 // In the course of processing this packet, the QuicHttpStream close itself.
564 ProcessPacket(*resp); 578 ProcessPacket(*resp);
565 579
566 EXPECT_TRUE(AtEof()); 580 EXPECT_TRUE(AtEof());
567 } 581 }
568 582
569 } // namespace test 583 } // namespace test
570 584
571 } // namespace net 585 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_http_stream.cc ('k') | net/quic/quic_protocol.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698