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 40639de9253367e19b0e8989e310eea260d2b199..6914674d935dcfa8795e3e83de3208493fc03545 100644 |
--- a/net/quic/quic_http_stream_test.cc |
+++ b/net/quic/quic_http_stream_test.cc |
@@ -86,7 +86,8 @@ class AutoClosingStream : public QuicHttpStream { |
const base::WeakPtr<QuicChromiumClientSession>& session) |
: QuicHttpStream(session) {} |
- void OnHeadersAvailable(const SpdyHeaderBlock& headers) override { |
+ void OnHeadersAvailable(const SpdyHeaderBlock& headers, |
+ size_t frame_len) override { |
Close(false); |
} |
@@ -257,19 +258,22 @@ class QuicHttpStreamTest : public ::testing::TestWithParam<QuicVersion> { |
scoped_ptr<QuicEncryptedPacket> ConstructRequestHeadersPacket( |
QuicPacketNumber packet_number, |
bool fin, |
- RequestPriority request_priority) { |
+ RequestPriority request_priority, |
+ size_t* spdy_headers_frame_length) { |
QuicPriority priority = |
ConvertRequestPriorityToQuicPriority(request_priority); |
- return maker_.MakeRequestHeadersPacket(packet_number, stream_id_, |
- kIncludeVersion, fin, priority, |
- request_headers_); |
+ return maker_.MakeRequestHeadersPacket( |
+ packet_number, stream_id_, kIncludeVersion, fin, priority, |
+ request_headers_, spdy_headers_frame_length); |
} |
scoped_ptr<QuicEncryptedPacket> ConstructResponseHeadersPacket( |
QuicPacketNumber packet_number, |
- bool fin) { |
+ bool fin, |
+ size_t* spdy_headers_frame_length) { |
return maker_.MakeResponseHeadersPacket( |
- packet_number, stream_id_, !kIncludeVersion, fin, response_headers_); |
+ packet_number, stream_id_, !kIncludeVersion, fin, response_headers_, |
+ spdy_headers_frame_length); |
} |
scoped_ptr<QuicEncryptedPacket> ConstructRstStreamPacket( |
@@ -350,7 +354,9 @@ TEST_P(QuicHttpStreamTest, CanReuseConnection) { |
TEST_P(QuicHttpStreamTest, GetRequest) { |
SetRequest("GET", "/", DEFAULT_PRIORITY); |
- AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY)); |
+ size_t spdy_request_header_frame_length; |
+ AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, |
+ &spdy_request_header_frame_length)); |
Initialize(); |
request_.method = "GET"; |
@@ -368,7 +374,9 @@ TEST_P(QuicHttpStreamTest, GetRequest) { |
stream_->ReadResponseHeaders(callback_.callback())); |
SetResponse("404 Not Found", std::string()); |
- ProcessPacket(ConstructResponseHeadersPacket(2, kFin)); |
+ size_t spdy_response_header_frame_length; |
+ ProcessPacket(ConstructResponseHeadersPacket( |
+ 2, kFin, &spdy_response_header_frame_length)); |
// Now that the headers have been processed, the callback will return. |
EXPECT_EQ(OK, callback_.WaitForResult()); |
@@ -386,15 +394,19 @@ TEST_P(QuicHttpStreamTest, GetRequest) { |
EXPECT_TRUE(AtEof()); |
// QuicHttpStream::GetTotalSent/ReceivedBytes currently only includes the |
- // payload. |
- EXPECT_EQ(0, stream_->GetTotalSentBytes()); |
- EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); |
+ // headers and payload. |
+ EXPECT_EQ(static_cast<int64_t>(spdy_request_header_frame_length), |
+ stream_->GetTotalSentBytes()); |
+ EXPECT_EQ(static_cast<int64_t>(spdy_response_header_frame_length), |
+ stream_->GetTotalReceivedBytes()); |
} |
// Regression test for http://crbug.com/288128 |
TEST_P(QuicHttpStreamTest, GetRequestLargeResponse) { |
SetRequest("GET", "/", DEFAULT_PRIORITY); |
- AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY)); |
+ size_t spdy_request_headers_frame_length; |
+ AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, |
+ &spdy_request_headers_frame_length)); |
Initialize(); |
request_.method = "GET"; |
@@ -418,7 +430,9 @@ TEST_P(QuicHttpStreamTest, GetRequestLargeResponse) { |
headers["big6"] = std::string(1000, 'x'); // Lots of x's. |
response_headers_ = headers; |
- ProcessPacket(ConstructResponseHeadersPacket(2, kFin)); |
+ size_t spdy_response_headers_frame_length; |
+ ProcessPacket(ConstructResponseHeadersPacket( |
+ 2, kFin, &spdy_response_headers_frame_length)); |
// Now that the headers have been processed, the callback will return. |
EXPECT_EQ(OK, callback_.WaitForResult()); |
@@ -434,9 +448,11 @@ TEST_P(QuicHttpStreamTest, GetRequestLargeResponse) { |
EXPECT_TRUE(AtEof()); |
// QuicHttpStream::GetTotalSent/ReceivedBytes currently only includes the |
- // payload. |
- EXPECT_EQ(0, stream_->GetTotalSentBytes()); |
- EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); |
+ // headers and payload. |
+ EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), |
+ stream_->GetTotalSentBytes()); |
+ EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length), |
+ stream_->GetTotalReceivedBytes()); |
} |
// Regression test for http://crbug.com/409101 |
@@ -463,7 +479,9 @@ TEST_P(QuicHttpStreamTest, SessionClosedBeforeSendRequest) { |
// Regression test for http://crbug.com/409871 |
TEST_P(QuicHttpStreamTest, SessionClosedBeforeReadResponseHeaders) { |
SetRequest("GET", "/", DEFAULT_PRIORITY); |
- AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY)); |
+ size_t spdy_request_headers_frame_length; |
+ AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, |
+ &spdy_request_headers_frame_length)); |
Initialize(); |
request_.method = "GET"; |
@@ -480,14 +498,17 @@ TEST_P(QuicHttpStreamTest, SessionClosedBeforeReadResponseHeaders) { |
EXPECT_NE(OK, stream_->ReadResponseHeaders(callback_.callback())); |
// QuicHttpStream::GetTotalSent/ReceivedBytes currently only includes the |
- // payload. |
- EXPECT_EQ(0, stream_->GetTotalSentBytes()); |
+ // headers and payload. |
+ EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), |
+ stream_->GetTotalSentBytes()); |
EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); |
} |
TEST_P(QuicHttpStreamTest, SendPostRequest) { |
SetRequest("POST", "/", DEFAULT_PRIORITY); |
- AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY)); |
+ size_t spdy_request_headers_frame_length; |
+ AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY, |
+ &spdy_request_headers_frame_length)); |
AddWrite(ConstructDataPacket(2, kIncludeVersion, kFin, 0, kUploadData)); |
AddWrite(ConstructAckPacket(3, 3, 1)); |
@@ -512,7 +533,9 @@ TEST_P(QuicHttpStreamTest, SendPostRequest) { |
// Send the response headers (but not the body). |
SetResponse("200 OK", std::string()); |
- ProcessPacket(ConstructResponseHeadersPacket(2, !kFin)); |
+ size_t spdy_response_headers_frame_length; |
+ ProcessPacket(ConstructResponseHeadersPacket( |
+ 2, !kFin, &spdy_response_headers_frame_length)); |
// The headers have arrived, but they are delivered asynchronously. |
EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); |
@@ -533,17 +556,21 @@ TEST_P(QuicHttpStreamTest, SendPostRequest) { |
EXPECT_TRUE(AtEof()); |
// QuicHttpStream::GetTotalSent/ReceivedBytes currently only includes the |
- // payload. |
- EXPECT_EQ(static_cast<int64_t>(strlen(kUploadData)), |
+ // headers and payload. |
+ EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length + |
+ strlen(kUploadData)), |
stream_->GetTotalSentBytes()); |
- EXPECT_EQ(static_cast<int64_t>(strlen(kResponseBody)), |
+ EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length + |
+ strlen(kResponseBody)), |
stream_->GetTotalReceivedBytes()); |
} |
TEST_P(QuicHttpStreamTest, SendChunkedPostRequest) { |
SetRequest("POST", "/", DEFAULT_PRIORITY); |
size_t chunk_size = strlen(kUploadData); |
- AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY)); |
+ size_t spdy_request_headers_frame_length; |
+ AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY, |
+ &spdy_request_headers_frame_length)); |
AddWrite(ConstructDataPacket(2, kIncludeVersion, !kFin, 0, kUploadData)); |
AddWrite(ConstructDataPacket(3, kIncludeVersion, kFin, chunk_size, |
kUploadData)); |
@@ -572,7 +599,9 @@ TEST_P(QuicHttpStreamTest, SendChunkedPostRequest) { |
// Send the response headers (but not the body). |
SetResponse("200 OK", std::string()); |
- ProcessPacket(ConstructResponseHeadersPacket(2, !kFin)); |
+ size_t spdy_response_headers_frame_length; |
+ ProcessPacket(ConstructResponseHeadersPacket( |
+ 2, !kFin, &spdy_response_headers_frame_length)); |
// The headers have arrived, but they are delivered asynchronously |
EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); |
@@ -595,17 +624,21 @@ TEST_P(QuicHttpStreamTest, SendChunkedPostRequest) { |
EXPECT_TRUE(AtEof()); |
// QuicHttpStream::GetTotalSent/ReceivedBytes currently only includes the |
- // payload. |
- EXPECT_EQ(static_cast<int64_t>(strlen(kUploadData) * 2), |
+ // headers and payload. |
+ EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length + |
+ strlen(kUploadData) * 2), |
stream_->GetTotalSentBytes()); |
- EXPECT_EQ(static_cast<int64_t>(strlen(kResponseBody)), |
+ EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length + |
+ strlen(kResponseBody)), |
stream_->GetTotalReceivedBytes()); |
} |
TEST_P(QuicHttpStreamTest, SendChunkedPostRequestWithFinalEmptyDataPacket) { |
SetRequest("POST", "/", DEFAULT_PRIORITY); |
size_t chunk_size = strlen(kUploadData); |
- AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY)); |
+ size_t spdy_request_headers_frame_length; |
+ AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY, |
+ &spdy_request_headers_frame_length)); |
AddWrite(ConstructDataPacket(2, kIncludeVersion, !kFin, 0, kUploadData)); |
AddWrite(ConstructDataPacket(3, kIncludeVersion, kFin, chunk_size, "")); |
AddWrite(ConstructAckPacket(4, 3, 1)); |
@@ -632,7 +665,9 @@ TEST_P(QuicHttpStreamTest, SendChunkedPostRequestWithFinalEmptyDataPacket) { |
// Send the response headers (but not the body). |
SetResponse("200 OK", std::string()); |
- ProcessPacket(ConstructResponseHeadersPacket(2, !kFin)); |
+ size_t spdy_response_headers_frame_length; |
+ ProcessPacket(ConstructResponseHeadersPacket( |
+ 2, !kFin, &spdy_response_headers_frame_length)); |
// The headers have arrived, but they are delivered asynchronously |
EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); |
@@ -654,16 +689,20 @@ TEST_P(QuicHttpStreamTest, SendChunkedPostRequestWithFinalEmptyDataPacket) { |
EXPECT_TRUE(AtEof()); |
// QuicHttpStream::GetTotalSent/ReceivedBytes currently only includes the |
- // payload. |
- EXPECT_EQ(static_cast<int64_t>(strlen(kUploadData)), |
+ // headers and payload. |
+ EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length + |
+ strlen(kUploadData)), |
stream_->GetTotalSentBytes()); |
- EXPECT_EQ(static_cast<int64_t>(strlen(kResponseBody)), |
+ EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length + |
+ strlen(kResponseBody)), |
stream_->GetTotalReceivedBytes()); |
} |
TEST_P(QuicHttpStreamTest, SendChunkedPostRequestWithOneEmptyDataPacket) { |
SetRequest("POST", "/", DEFAULT_PRIORITY); |
- AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY)); |
+ size_t spdy_request_headers_frame_length; |
+ AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY, |
+ &spdy_request_headers_frame_length)); |
AddWrite(ConstructDataPacket(2, kIncludeVersion, kFin, 0, "")); |
AddWrite(ConstructAckPacket(3, 3, 1)); |
Initialize(); |
@@ -688,7 +727,9 @@ TEST_P(QuicHttpStreamTest, SendChunkedPostRequestWithOneEmptyDataPacket) { |
// Send the response headers (but not the body). |
SetResponse("200 OK", std::string()); |
- ProcessPacket(ConstructResponseHeadersPacket(2, !kFin)); |
+ size_t spdy_response_headers_frame_length; |
+ ProcessPacket(ConstructResponseHeadersPacket( |
+ 2, !kFin, &spdy_response_headers_frame_length)); |
// The headers have arrived, but they are delivered asynchronously |
EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); |
@@ -711,15 +752,19 @@ TEST_P(QuicHttpStreamTest, SendChunkedPostRequestWithOneEmptyDataPacket) { |
EXPECT_TRUE(AtEof()); |
// QuicHttpStream::GetTotalSent/ReceivedBytes currently only includes the |
- // payload. |
- EXPECT_EQ(0, stream_->GetTotalSentBytes()); |
- EXPECT_EQ(static_cast<int64_t>(strlen(kResponseBody)), |
+ // headers and payload. |
+ EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), |
+ stream_->GetTotalSentBytes()); |
+ EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length + |
+ strlen(kResponseBody)), |
stream_->GetTotalReceivedBytes()); |
} |
TEST_P(QuicHttpStreamTest, DestroyedEarly) { |
SetRequest("GET", "/", DEFAULT_PRIORITY); |
- AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY)); |
+ size_t spdy_request_headers_frame_length; |
+ AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, |
+ &spdy_request_headers_frame_length)); |
AddWrite(ConstructAckAndRstStreamPacket(2)); |
use_closing_stream_ = true; |
Initialize(); |
@@ -740,21 +785,25 @@ TEST_P(QuicHttpStreamTest, DestroyedEarly) { |
// Send the response with a body. |
SetResponse("404 OK", "hello world!"); |
// In the course of processing this packet, the QuicHttpStream close itself. |
- ProcessPacket(ConstructResponseHeadersPacket(2, kFin)); |
+ ProcessPacket(ConstructResponseHeadersPacket(2, kFin, nullptr)); |
base::MessageLoop::current()->RunUntilIdle(); |
EXPECT_TRUE(AtEof()); |
// QuicHttpStream::GetTotalSent/ReceivedBytes currently only includes the |
- // payload. |
- EXPECT_EQ(0, stream_->GetTotalSentBytes()); |
+ // headers and payload. |
+ EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), |
+ stream_->GetTotalSentBytes()); |
+ // Zero since the stream is closed before processing the headers. |
EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); |
} |
TEST_P(QuicHttpStreamTest, Priority) { |
SetRequest("GET", "/", MEDIUM); |
- AddWrite(ConstructRequestHeadersPacket(1, kFin, MEDIUM)); |
+ size_t spdy_request_headers_frame_length; |
+ AddWrite(ConstructRequestHeadersPacket(1, kFin, MEDIUM, |
+ &spdy_request_headers_frame_length)); |
AddWrite(ConstructAckAndRstStreamPacket(2)); |
use_closing_stream_ = true; |
Initialize(); |
@@ -787,15 +836,17 @@ TEST_P(QuicHttpStreamTest, Priority) { |
// Send the response with a body. |
SetResponse("404 OK", "hello world!"); |
// In the course of processing this packet, the QuicHttpStream close itself. |
- ProcessPacket(ConstructResponseHeadersPacket(2, kFin)); |
+ ProcessPacket(ConstructResponseHeadersPacket(2, kFin, nullptr)); |
base::MessageLoop::current()->RunUntilIdle(); |
EXPECT_TRUE(AtEof()); |
// QuicHttpStream::GetTotalSent/ReceivedBytes currently only includes the |
- // payload. |
- EXPECT_EQ(0, stream_->GetTotalSentBytes()); |
+ // headers and payload. |
+ EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), |
+ stream_->GetTotalSentBytes()); |
+ // Zero since the stream is closed before processing the headers. |
EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); |
} |
@@ -830,8 +881,6 @@ TEST_P(QuicHttpStreamTest, CheckPriorityWithNoDelegate) { |
reliable_stream->EffectivePriority()); |
reliable_stream->SetDelegate(delegate); |
- // QuicHttpStream::GetTotalSent/ReceivedBytes currently only includes the |
- // payload. |
EXPECT_EQ(0, stream_->GetTotalSentBytes()); |
EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); |
} |