| Index: net/quic/quic_http_stream_test.cc
|
| diff --git a/net/quic/quic_http_stream_test.cc b/net/quic/quic_http_stream_test.cc
|
| index f54d3d1d94a91bcf7fe6f2b42a93c49184630e3a..6a1a977139fe95756496fe429b2bc1424aed37a8 100644
|
| --- a/net/quic/quic_http_stream_test.cc
|
| +++ b/net/quic/quic_http_stream_test.cc
|
| @@ -59,9 +59,13 @@ class TestQuicConnection : public QuicConnection {
|
| IPEndPoint address,
|
| QuicConnectionHelper* helper,
|
| QuicPacketWriter* writer)
|
| - : QuicConnection(connection_id, address, helper, writer, false,
|
| - versions, kInitialFlowControlWindowForTest) {
|
| - }
|
| + : QuicConnection(connection_id,
|
| + address,
|
| + helper,
|
| + writer,
|
| + false,
|
| + versions,
|
| + kInitialFlowControlWindowForTest) {}
|
|
|
| void SetSendAlgorithm(SendAlgorithmInterface* send_algorithm) {
|
| QuicConnectionPeer::SetSendAlgorithm(this, send_algorithm);
|
| @@ -88,8 +92,7 @@ class TestReceiveAlgorithm : public ReceiveAlgorithmInterface {
|
| class AutoClosingStream : public QuicHttpStream {
|
| public:
|
| explicit AutoClosingStream(const base::WeakPtr<QuicClientSession>& session)
|
| - : QuicHttpStream(session) {
|
| - }
|
| + : QuicHttpStream(session) {}
|
|
|
| virtual int OnDataReceived(const char* data, int length) OVERRIDE {
|
| Close(false);
|
| @@ -117,9 +120,7 @@ class QuicHttpStreamTest : public ::testing::TestWithParam<QuicVersion> {
|
| // be used by the mock socket when performing the write.
|
| struct PacketToWrite {
|
| PacketToWrite(IoMode mode, QuicEncryptedPacket* packet)
|
| - : mode(mode),
|
| - packet(packet) {
|
| - }
|
| + : mode(mode), packet(packet) {}
|
| IoMode mode;
|
| QuicEncryptedPacket* packet;
|
| };
|
| @@ -151,9 +152,7 @@ class QuicHttpStreamTest : public ::testing::TestWithParam<QuicVersion> {
|
| }
|
|
|
| // Returns the packet to be written at position |pos|.
|
| - QuicEncryptedPacket* GetWrite(size_t pos) {
|
| - return writes_[pos].packet;
|
| - }
|
| + QuicEncryptedPacket* GetWrite(size_t pos) { return writes_[pos].packet; }
|
|
|
| bool AtEof() {
|
| return socket_data_->at_read_eof() && socket_data_->at_write_eof();
|
| @@ -172,52 +171,57 @@ class QuicHttpStreamTest : public ::testing::TestWithParam<QuicVersion> {
|
| writes_[i].packet->length());
|
| };
|
|
|
| - socket_data_.reset(new StaticSocketDataProvider(NULL, 0, mock_writes_.get(),
|
| - writes_.size()));
|
| + socket_data_.reset(new StaticSocketDataProvider(
|
| + NULL, 0, mock_writes_.get(), writes_.size()));
|
|
|
| - MockUDPClientSocket* socket = new MockUDPClientSocket(socket_data_.get(),
|
| - net_log_.net_log());
|
| + MockUDPClientSocket* socket =
|
| + new MockUDPClientSocket(socket_data_.get(), net_log_.net_log());
|
| socket->Connect(peer_addr_);
|
| runner_ = new TestTaskRunner(&clock_);
|
| send_algorithm_ = new MockSendAlgorithm();
|
| receive_algorithm_ = new TestReceiveAlgorithm();
|
| - EXPECT_CALL(*receive_algorithm_, RecordIncomingPacket(_, _, _)).
|
| - Times(AnyNumber());
|
| - EXPECT_CALL(*send_algorithm_,
|
| - OnPacketSent(_, _, _, _)).WillRepeatedly(Return(true));
|
| - EXPECT_CALL(*send_algorithm_, RetransmissionDelay()).WillRepeatedly(
|
| - Return(QuicTime::Delta::Zero()));
|
| - EXPECT_CALL(*send_algorithm_, GetCongestionWindow()).WillRepeatedly(
|
| - Return(kMaxPacketSize));
|
| - EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _)).
|
| - WillRepeatedly(Return(QuicTime::Delta::Zero()));
|
| - EXPECT_CALL(*send_algorithm_, BandwidthEstimate()).WillRepeatedly(
|
| - Return(QuicBandwidth::Zero()));
|
| + EXPECT_CALL(*receive_algorithm_, RecordIncomingPacket(_, _, _))
|
| + .Times(AnyNumber());
|
| + EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _))
|
| + .WillRepeatedly(Return(true));
|
| + EXPECT_CALL(*send_algorithm_, RetransmissionDelay())
|
| + .WillRepeatedly(Return(QuicTime::Delta::Zero()));
|
| + EXPECT_CALL(*send_algorithm_, GetCongestionWindow())
|
| + .WillRepeatedly(Return(kMaxPacketSize));
|
| + EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _))
|
| + .WillRepeatedly(Return(QuicTime::Delta::Zero()));
|
| + EXPECT_CALL(*send_algorithm_, BandwidthEstimate())
|
| + .WillRepeatedly(Return(QuicBandwidth::Zero()));
|
| EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)).Times(AnyNumber());
|
| - helper_.reset(new QuicConnectionHelper(runner_.get(), &clock_,
|
| - &random_generator_));
|
| + helper_.reset(
|
| + new QuicConnectionHelper(runner_.get(), &clock_, &random_generator_));
|
| writer_.reset(new QuicDefaultPacketWriter(socket));
|
| connection_ = new TestQuicConnection(SupportedVersions(GetParam()),
|
| - connection_id_, peer_addr_,
|
| - helper_.get(), writer_.get());
|
| + connection_id_,
|
| + peer_addr_,
|
| + helper_.get(),
|
| + writer_.get());
|
| connection_->set_visitor(&visitor_);
|
| connection_->SetSendAlgorithm(send_algorithm_);
|
| connection_->SetReceiveAlgorithm(receive_algorithm_);
|
| crypto_config_.SetDefaults();
|
| - session_.reset(
|
| - new QuicClientSession(connection_,
|
| - scoped_ptr<DatagramClientSocket>(socket),
|
| - writer_.Pass(), NULL,
|
| - &crypto_client_stream_factory_,
|
| - make_scoped_ptr((QuicServerInfo*)NULL),
|
| - QuicServerId(kServerHostname, kServerPort,
|
| - false, PRIVACY_MODE_DISABLED),
|
| - DefaultQuicConfig(), &crypto_config_, NULL));
|
| + session_.reset(new QuicClientSession(
|
| + connection_,
|
| + scoped_ptr<DatagramClientSocket>(socket),
|
| + writer_.Pass(),
|
| + NULL,
|
| + &crypto_client_stream_factory_,
|
| + make_scoped_ptr((QuicServerInfo*)NULL),
|
| + QuicServerId(
|
| + kServerHostname, kServerPort, false, PRIVACY_MODE_DISABLED),
|
| + DefaultQuicConfig(),
|
| + &crypto_config_,
|
| + NULL));
|
| session_->GetCryptoStream()->CryptoConnect();
|
| EXPECT_TRUE(session_->IsCryptoHandshakeConfirmed());
|
| - stream_.reset(use_closing_stream_ ?
|
| - new AutoClosingStream(session_->GetWeakPtr()) :
|
| - new QuicHttpStream(session_->GetWeakPtr()));
|
| + stream_.reset(use_closing_stream_
|
| + ? new AutoClosingStream(session_->GetWeakPtr())
|
| + : new QuicHttpStream(session_->GetWeakPtr()));
|
| clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(20));
|
| }
|
|
|
| @@ -259,23 +263,31 @@ class QuicHttpStreamTest : public ::testing::TestWithParam<QuicVersion> {
|
| scoped_ptr<QuicEncryptedPacket> ConstructRstStreamPacket(
|
| QuicPacketSequenceNumber sequence_number) {
|
| return maker_.MakeRstPacket(
|
| - sequence_number, true, stream_id_,
|
| + sequence_number,
|
| + true,
|
| + stream_id_,
|
| AdjustErrorForVersion(QUIC_RST_FLOW_CONTROL_ACCOUNTING, GetParam()));
|
| }
|
|
|
| scoped_ptr<QuicEncryptedPacket> ConstructAckAndRstStreamPacket(
|
| QuicPacketSequenceNumber sequence_number) {
|
| - return maker_.MakeAckAndRstPacket(
|
| - sequence_number, !kIncludeVersion, stream_id_, QUIC_STREAM_CANCELLED,
|
| - 2, 1, !kIncludeCongestionFeedback);
|
| + return maker_.MakeAckAndRstPacket(sequence_number,
|
| + !kIncludeVersion,
|
| + stream_id_,
|
| + QUIC_STREAM_CANCELLED,
|
| + 2,
|
| + 1,
|
| + !kIncludeCongestionFeedback);
|
| }
|
|
|
| scoped_ptr<QuicEncryptedPacket> ConstructAckPacket(
|
| QuicPacketSequenceNumber sequence_number,
|
| QuicPacketSequenceNumber largest_received,
|
| QuicPacketSequenceNumber least_unacked) {
|
| - return maker_.MakeAckPacket(sequence_number, largest_received,
|
| - least_unacked, !kIncludeCongestionFeedback);
|
| + return maker_.MakeAckPacket(sequence_number,
|
| + largest_received,
|
| + least_unacked,
|
| + !kIncludeCongestionFeedback);
|
| }
|
|
|
| BoundNetLog net_log_;
|
| @@ -314,7 +326,8 @@ class QuicHttpStreamTest : public ::testing::TestWithParam<QuicVersion> {
|
| std::vector<PacketToWrite> writes_;
|
| };
|
|
|
| -INSTANTIATE_TEST_CASE_P(Version, QuicHttpStreamTest,
|
| +INSTANTIATE_TEST_CASE_P(Version,
|
| + QuicHttpStreamTest,
|
| ::testing::ValuesIn(QuicSupportedVersions()));
|
|
|
| TEST_P(QuicHttpStreamTest, RenewStreamForAuth) {
|
| @@ -340,17 +353,17 @@ TEST_P(QuicHttpStreamTest, GetRequest) {
|
| request_.method = "GET";
|
| request_.url = GURL("http://www.google.com/");
|
|
|
| - EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY,
|
| - net_log_, callback_.callback()));
|
| - EXPECT_EQ(OK, stream_->SendRequest(headers_, &response_,
|
| - callback_.callback()));
|
| + EXPECT_EQ(OK,
|
| + stream_->InitializeStream(
|
| + &request_, DEFAULT_PRIORITY, net_log_, callback_.callback()));
|
| + EXPECT_EQ(OK,
|
| + stream_->SendRequest(headers_, &response_, callback_.callback()));
|
| EXPECT_EQ(&response_, stream_->GetResponseInfo());
|
|
|
| // Ack the request.
|
| ProcessPacket(ConstructAckPacket(1, 0, 0));
|
|
|
| - EXPECT_EQ(ERR_IO_PENDING,
|
| - stream_->ReadResponseHeaders(callback_.callback()));
|
| + EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback()));
|
|
|
| SetResponse("404 Not Found", std::string());
|
| ProcessPacket(ConstructResponseHeadersPacket(2, kFin));
|
| @@ -362,9 +375,10 @@ TEST_P(QuicHttpStreamTest, GetRequest) {
|
| EXPECT_TRUE(response_.headers->HasHeaderValue("Content-Type", "text/plain"));
|
|
|
| // There is no body, so this should return immediately.
|
| - EXPECT_EQ(0, stream_->ReadResponseBody(read_buffer_.get(),
|
| - read_buffer_->size(),
|
| - callback_.callback()));
|
| + EXPECT_EQ(
|
| + 0,
|
| + stream_->ReadResponseBody(
|
| + read_buffer_.get(), read_buffer_->size(), callback_.callback()));
|
| EXPECT_TRUE(stream_->IsResponseBodyComplete());
|
| EXPECT_TRUE(AtEof());
|
| }
|
| @@ -378,17 +392,17 @@ TEST_P(QuicHttpStreamTest, GetRequestLargeResponse) {
|
| request_.method = "GET";
|
| request_.url = GURL("http://www.google.com/");
|
|
|
| - EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY,
|
| - net_log_, callback_.callback()));
|
| - EXPECT_EQ(OK, stream_->SendRequest(headers_, &response_,
|
| - callback_.callback()));
|
| + EXPECT_EQ(OK,
|
| + stream_->InitializeStream(
|
| + &request_, DEFAULT_PRIORITY, net_log_, callback_.callback()));
|
| + EXPECT_EQ(OK,
|
| + stream_->SendRequest(headers_, &response_, callback_.callback()));
|
| EXPECT_EQ(&response_, stream_->GetResponseInfo());
|
|
|
| // Ack the request.
|
| ProcessPacket(ConstructAckPacket(1, 0, 0));
|
|
|
| - EXPECT_EQ(ERR_IO_PENDING,
|
| - stream_->ReadResponseHeaders(callback_.callback()));
|
| + EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback()));
|
|
|
| SpdyHeaderBlock headers;
|
| headers[":status"] = "200 OK";
|
| @@ -408,9 +422,10 @@ TEST_P(QuicHttpStreamTest, GetRequestLargeResponse) {
|
| EXPECT_TRUE(response_.headers->HasHeaderValue("Content-Type", "text/plain"));
|
|
|
| // There is no body, so this should return immediately.
|
| - EXPECT_EQ(0, stream_->ReadResponseBody(read_buffer_.get(),
|
| - read_buffer_->size(),
|
| - callback_.callback()));
|
| + EXPECT_EQ(
|
| + 0,
|
| + stream_->ReadResponseBody(
|
| + read_buffer_.get(), read_buffer_->size(), callback_.callback()));
|
| EXPECT_TRUE(stream_->IsResponseBodyComplete());
|
| EXPECT_TRUE(AtEof());
|
| }
|
| @@ -432,10 +447,11 @@ TEST_P(QuicHttpStreamTest, SendPostRequest) {
|
| request_.upload_data_stream = &upload_data_stream;
|
| ASSERT_EQ(OK, request_.upload_data_stream->Init(CompletionCallback()));
|
|
|
| - EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY,
|
| - net_log_, callback_.callback()));
|
| - EXPECT_EQ(OK, stream_->SendRequest(headers_, &response_,
|
| - callback_.callback()));
|
| + EXPECT_EQ(OK,
|
| + stream_->InitializeStream(
|
| + &request_, DEFAULT_PRIORITY, net_log_, callback_.callback()));
|
| + EXPECT_EQ(OK,
|
| + stream_->SendRequest(headers_, &response_, callback_.callback()));
|
| EXPECT_EQ(&response_, stream_->GetResponseInfo());
|
|
|
| // Ack both packets in the request.
|
| @@ -455,9 +471,10 @@ TEST_P(QuicHttpStreamTest, SendPostRequest) {
|
| const char kResponseBody[] = "Hello world!";
|
| ProcessPacket(ConstructDataPacket(3, false, kFin, 0, kResponseBody));
|
| // Since the body has already arrived, this should return immediately.
|
| - EXPECT_EQ(static_cast<int>(strlen(kResponseBody)),
|
| - stream_->ReadResponseBody(read_buffer_.get(), read_buffer_->size(),
|
| - callback_.callback()));
|
| + EXPECT_EQ(
|
| + static_cast<int>(strlen(kResponseBody)),
|
| + stream_->ReadResponseBody(
|
| + read_buffer_.get(), read_buffer_->size(), callback_.callback()));
|
|
|
| EXPECT_TRUE(stream_->IsResponseBodyComplete());
|
| EXPECT_TRUE(AtEof());
|
| @@ -468,8 +485,8 @@ TEST_P(QuicHttpStreamTest, SendChunkedPostRequest) {
|
| size_t chunk_size = strlen(kUploadData);
|
| AddWrite(ConstructRequestHeadersPacket(1, !kFin));
|
| AddWrite(ConstructDataPacket(2, kIncludeVersion, !kFin, 0, kUploadData));
|
| - AddWrite(ConstructDataPacket(3, kIncludeVersion, kFin, chunk_size,
|
| - kUploadData));
|
| + AddWrite(
|
| + ConstructDataPacket(3, kIncludeVersion, kFin, chunk_size, kUploadData));
|
| AddWrite(ConstructAckPacket(4, 3, 1));
|
| Initialize();
|
|
|
| @@ -481,10 +498,11 @@ TEST_P(QuicHttpStreamTest, SendChunkedPostRequest) {
|
| request_.upload_data_stream = &upload_data_stream;
|
| ASSERT_EQ(OK, request_.upload_data_stream->Init(CompletionCallback()));
|
|
|
| - ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY,
|
| - net_log_, callback_.callback()));
|
| - ASSERT_EQ(ERR_IO_PENDING, stream_->SendRequest(headers_, &response_,
|
| - callback_.callback()));
|
| + ASSERT_EQ(OK,
|
| + stream_->InitializeStream(
|
| + &request_, DEFAULT_PRIORITY, net_log_, callback_.callback()));
|
| + ASSERT_EQ(ERR_IO_PENDING,
|
| + stream_->SendRequest(headers_, &response_, callback_.callback()));
|
| EXPECT_EQ(&response_, stream_->GetResponseInfo());
|
|
|
| upload_data_stream.AppendChunk(kUploadData, chunk_size, true);
|
| @@ -504,13 +522,14 @@ TEST_P(QuicHttpStreamTest, SendChunkedPostRequest) {
|
|
|
| // Send the response body.
|
| const char kResponseBody[] = "Hello world!";
|
| - ProcessPacket(ConstructDataPacket(3, false, kFin, response_data_.length(),
|
| - kResponseBody));
|
| + ProcessPacket(ConstructDataPacket(
|
| + 3, false, kFin, response_data_.length(), kResponseBody));
|
|
|
| // Since the body has already arrived, this should return immediately.
|
| - ASSERT_EQ(static_cast<int>(strlen(kResponseBody)),
|
| - stream_->ReadResponseBody(read_buffer_.get(), read_buffer_->size(),
|
| - callback_.callback()));
|
| + ASSERT_EQ(
|
| + static_cast<int>(strlen(kResponseBody)),
|
| + stream_->ReadResponseBody(
|
| + read_buffer_.get(), read_buffer_->size(), callback_.callback()));
|
|
|
| EXPECT_TRUE(stream_->IsResponseBodyComplete());
|
| EXPECT_TRUE(AtEof());
|
| @@ -526,16 +545,16 @@ TEST_P(QuicHttpStreamTest, DestroyedEarly) {
|
| request_.method = "GET";
|
| request_.url = GURL("http://www.google.com/");
|
|
|
| - EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY,
|
| - net_log_, callback_.callback()));
|
| - EXPECT_EQ(OK, stream_->SendRequest(headers_, &response_,
|
| - callback_.callback()));
|
| + EXPECT_EQ(OK,
|
| + stream_->InitializeStream(
|
| + &request_, DEFAULT_PRIORITY, net_log_, callback_.callback()));
|
| + EXPECT_EQ(OK,
|
| + stream_->SendRequest(headers_, &response_, callback_.callback()));
|
| EXPECT_EQ(&response_, stream_->GetResponseInfo());
|
|
|
| // Ack the request.
|
| ProcessPacket(ConstructAckPacket(1, 0, 0));
|
| - EXPECT_EQ(ERR_IO_PENDING,
|
| - stream_->ReadResponseHeaders(callback_.callback()));
|
| + EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback()));
|
|
|
| // Send the response with a body.
|
| SetResponse("404 OK", "hello world!");
|
| @@ -555,8 +574,9 @@ TEST_P(QuicHttpStreamTest, Priority) {
|
| request_.method = "GET";
|
| request_.url = GURL("http://www.google.com/");
|
|
|
| - EXPECT_EQ(OK, stream_->InitializeStream(&request_, MEDIUM,
|
| - net_log_, callback_.callback()));
|
| + EXPECT_EQ(OK,
|
| + stream_->InitializeStream(
|
| + &request_, MEDIUM, net_log_, callback_.callback()));
|
|
|
| // Check that priority is highest.
|
| QuicReliableClientStream* reliable_stream =
|
| @@ -565,18 +585,18 @@ TEST_P(QuicHttpStreamTest, Priority) {
|
| DCHECK_EQ(QuicWriteBlockedList::kHighestPriority,
|
| reliable_stream->EffectivePriority());
|
|
|
| - EXPECT_EQ(OK, stream_->SendRequest(headers_, &response_,
|
| - callback_.callback()));
|
| + EXPECT_EQ(OK,
|
| + stream_->SendRequest(headers_, &response_, callback_.callback()));
|
| EXPECT_EQ(&response_, stream_->GetResponseInfo());
|
|
|
| // Check that priority has now dropped back to MEDIUM.
|
| - DCHECK_EQ(MEDIUM, ConvertQuicPriorityToRequestPriority(
|
| - reliable_stream->EffectivePriority()));
|
| + DCHECK_EQ(MEDIUM,
|
| + ConvertQuicPriorityToRequestPriority(
|
| + reliable_stream->EffectivePriority()));
|
|
|
| // Ack the request.
|
| ProcessPacket(ConstructAckPacket(1, 0, 0));
|
| - EXPECT_EQ(ERR_IO_PENDING,
|
| - stream_->ReadResponseHeaders(callback_.callback()));
|
| + EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback()));
|
|
|
| // Send the response with a body.
|
| SetResponse("404 OK", "hello world!");
|
| @@ -598,8 +618,9 @@ TEST_P(QuicHttpStreamTest, CheckPriorityWithNoDelegate) {
|
| request_.method = "GET";
|
| request_.url = GURL("http://www.google.com/");
|
|
|
| - EXPECT_EQ(OK, stream_->InitializeStream(&request_, MEDIUM,
|
| - net_log_, callback_.callback()));
|
| + EXPECT_EQ(OK,
|
| + stream_->InitializeStream(
|
| + &request_, MEDIUM, net_log_, callback_.callback()));
|
|
|
| // Check that priority is highest.
|
| QuicReliableClientStream* reliable_stream =
|
|
|