Index: net/tools/quic/quic_spdy_server_stream_test.cc |
diff --git a/net/tools/quic/quic_spdy_server_stream_test.cc b/net/tools/quic/quic_spdy_server_stream_test.cc |
index 0691f113360cebf24d6e529364c24e746907718a..bd9e5578173435713497c13b073e33e570196032 100644 |
--- a/net/tools/quic/quic_spdy_server_stream_test.cc |
+++ b/net/tools/quic/quic_spdy_server_stream_test.cc |
@@ -46,8 +46,8 @@ class QuicSpdyServerStreamPeer : public QuicSpdyServerStream { |
using QuicSpdyServerStream::SendResponse; |
using QuicSpdyServerStream::SendErrorResponse; |
- BalsaHeaders* mutable_headers() { |
- return &headers_; |
+ SpdyHeaderBlock* mutable_headers() { |
+ return &request_headers_; |
} |
static void SendResponse(QuicSpdyServerStream* stream) { |
@@ -62,8 +62,8 @@ class QuicSpdyServerStreamPeer : public QuicSpdyServerStream { |
return stream->body_; |
} |
- static const BalsaHeaders& headers(QuicSpdyServerStream* stream) { |
- return stream->headers_; |
+ static const SpdyHeaderBlock& headers(QuicSpdyServerStream* stream) { |
+ return stream->request_headers_; |
} |
}; |
@@ -77,12 +77,14 @@ class QuicSpdyServerStreamTest : public ::testing::TestWithParam<QuicVersion> { |
SupportedVersions(GetParam()))), |
session_(connection_), |
body_("hello world") { |
- BalsaHeaders request_headers; |
- request_headers.SetRequestFirstlineFromStringPieces( |
- "POST", "https://www.google.com/", "HTTP/1.1"); |
- request_headers.ReplaceOrAppendHeader("content-length", "11"); |
+ SpdyHeaderBlock request_headers; |
+ request_headers[":host"] = ""; |
+ request_headers[":path"] = "/"; |
+ request_headers[":method"] = "POST"; |
+ request_headers[":version"] = "HTTP/1.1"; |
+ request_headers["content-length"] = "11"; |
- headers_string_ = SpdyUtils::SerializeRequestHeaders(request_headers); |
+ headers_string_ = SpdyUtils::SerializeUncompressedHeaders(request_headers); |
// New streams rely on having the peer's flow control receive window |
// negotiated in the config. |
@@ -91,49 +93,30 @@ class QuicSpdyServerStreamTest : public ::testing::TestWithParam<QuicVersion> { |
session_.config()->SetInitialSessionFlowControlWindowToSend( |
kInitialSessionFlowControlWindowForTest); |
stream_.reset(new QuicSpdyServerStreamPeer(3, &session_)); |
- } |
- static void SetUpTestCase() { |
QuicInMemoryCachePeer::ResetForTests(); |
- } |
- |
- void SetUp() override { |
- QuicInMemoryCache* cache = QuicInMemoryCache::GetInstance(); |
- |
- BalsaHeaders response_headers; |
- StringPiece body("Yum"); |
- response_headers.SetRequestFirstlineFromStringPieces("HTTP/1.1", |
- "200", |
- "OK"); |
- response_headers.AppendHeader("content-length", |
- base::IntToString(body.length())); |
string host = ""; |
string path = "/foo"; |
- // Check if response already exists and matches. |
- const QuicInMemoryCache::Response* cached_response = |
- cache->GetResponse(host, path); |
- if (cached_response != nullptr) { |
- string cached_response_headers_str, response_headers_str; |
- cached_response->headers().DumpToString(&cached_response_headers_str); |
- response_headers.DumpToString(&response_headers_str); |
- CHECK_EQ(cached_response_headers_str, response_headers_str); |
- CHECK_EQ(cached_response->body(), body); |
- return; |
- } |
- |
- cache->AddResponse(host, path, response_headers, body); |
+ SpdyHeaderBlock response_headers; |
+ StringPiece body("Yum"); |
+ QuicInMemoryCache::GetInstance()->AddResponse(host, path, response_headers, |
+ body); |
+ } |
+ |
+ ~QuicSpdyServerStreamTest() override { |
+ QuicInMemoryCachePeer::ResetForTests(); |
} |
const string& StreamBody() { |
return QuicSpdyServerStreamPeer::body(stream_.get()); |
} |
- const BalsaHeaders& StreamHeaders() { |
- return QuicSpdyServerStreamPeer::headers(stream_.get()); |
+ const string& StreamHeadersValue(const string& key) { |
+ return (*stream_->mutable_headers())[key]; |
} |
- BalsaHeaders response_headers_; |
+ SpdyHeaderBlock response_headers_; |
EpollServer eps_; |
StrictMock<MockConnection>* connection_; |
StrictMock<MockSession> session_; |
@@ -158,13 +141,12 @@ INSTANTIATE_TEST_CASE_P(Tests, QuicSpdyServerStreamTest, |
TEST_P(QuicSpdyServerStreamTest, TestFraming) { |
EXPECT_CALL(session_, WritevData(_, _, _, _, _, _)).Times(AnyNumber()). |
WillRepeatedly(Invoke(ConsumeAllData)); |
- |
- EXPECT_EQ(headers_string_.size(), stream_->ProcessData( |
- headers_string_.c_str(), headers_string_.size())); |
+ stream_->OnStreamHeaders(headers_string_); |
+ stream_->OnStreamHeadersComplete(false, headers_string_.size()); |
EXPECT_EQ(body_.size(), stream_->ProcessData(body_.c_str(), body_.size())); |
- EXPECT_EQ(11u, StreamHeaders().content_length()); |
- EXPECT_EQ("https://www.google.com/", StreamHeaders().request_uri()); |
- EXPECT_EQ("POST", StreamHeaders().request_method()); |
+ EXPECT_EQ("11", StreamHeadersValue("content-length")); |
+ EXPECT_EQ("/", StreamHeadersValue(":path")); |
+ EXPECT_EQ("POST", StreamHeadersValue(":method")); |
EXPECT_EQ(body_, StreamBody()); |
} |
@@ -172,13 +154,12 @@ TEST_P(QuicSpdyServerStreamTest, TestFramingOnePacket) { |
EXPECT_CALL(session_, WritevData(_, _, _, _, _, _)).Times(AnyNumber()). |
WillRepeatedly(Invoke(ConsumeAllData)); |
- string message = headers_string_ + body_; |
- |
- EXPECT_EQ(message.size(), stream_->ProcessData( |
- message.c_str(), message.size())); |
- EXPECT_EQ(11u, StreamHeaders().content_length()); |
- EXPECT_EQ("https://www.google.com/", StreamHeaders().request_uri()); |
- EXPECT_EQ("POST", StreamHeaders().request_method()); |
+ stream_->OnStreamHeaders(headers_string_); |
+ stream_->OnStreamHeadersComplete(false, headers_string_.size()); |
+ EXPECT_EQ(body_.size(), stream_->ProcessData(body_.c_str(), body_.size())); |
+ EXPECT_EQ("11", StreamHeadersValue("content-length")); |
+ EXPECT_EQ("/", StreamHeadersValue(":path")); |
+ EXPECT_EQ("POST", StreamHeadersValue(":method")); |
EXPECT_EQ(body_, StreamBody()); |
} |
@@ -189,26 +170,27 @@ TEST_P(QuicSpdyServerStreamTest, TestFramingExtraData) { |
EXPECT_CALL(session_, WritevData(_, _, _, _, _, _)).Times(AnyNumber()). |
WillRepeatedly(Invoke(ConsumeAllData)); |
- EXPECT_EQ(headers_string_.size(), stream_->ProcessData( |
- headers_string_.c_str(), headers_string_.size())); |
+ stream_->OnStreamHeaders(headers_string_); |
+ stream_->OnStreamHeadersComplete(false, headers_string_.size()); |
+ EXPECT_EQ(body_.size(), stream_->ProcessData(body_.c_str(), body_.size())); |
// Content length is still 11. This will register as an error and we won't |
// accept the bytes. |
stream_->ProcessData(large_body.c_str(), large_body.size()); |
- EXPECT_EQ(11u, StreamHeaders().content_length()); |
- EXPECT_EQ("https://www.google.com/", StreamHeaders().request_uri()); |
- EXPECT_EQ("POST", StreamHeaders().request_method()); |
+ EXPECT_EQ("11", StreamHeadersValue("content-length")); |
+ EXPECT_EQ("/", StreamHeadersValue(":path")); |
+ EXPECT_EQ("POST", StreamHeadersValue(":method")); |
} |
TEST_P(QuicSpdyServerStreamTest, TestSendResponse) { |
- BalsaHeaders* request_headers = stream_->mutable_headers(); |
- request_headers->SetRequestFirstlineFromStringPieces( |
- "GET", |
- "https://www.google.com/foo", |
- "HTTP/1.1"); |
+ SpdyHeaderBlock* request_headers = stream_->mutable_headers(); |
+ (*request_headers)[":path"] = "/foo"; |
+ (*request_headers)[":host"] = ""; |
+ (*request_headers)[":version"] = "HTTP/1.1"; |
+ (*request_headers)[":method"] = "GET"; |
- response_headers_.SetResponseFirstlineFromStringPieces( |
- "HTTP/1.1", "200", "OK"); |
- response_headers_.ReplaceOrAppendHeader("content-length", "3"); |
+ response_headers_[":version"] = "HTTP/1.1"; |
+ response_headers_[":status"] = "200 OK"; |
+ response_headers_["content-length"] = "3"; |
InSequence s; |
EXPECT_CALL(session_, WritevData(kHeadersStreamId, _, 0, false, _, nullptr)); |
@@ -221,9 +203,9 @@ TEST_P(QuicSpdyServerStreamTest, TestSendResponse) { |
} |
TEST_P(QuicSpdyServerStreamTest, TestSendErrorResponse) { |
- response_headers_.SetResponseFirstlineFromStringPieces( |
- "HTTP/1.1", "500", "Server Error"); |
- response_headers_.ReplaceOrAppendHeader("content-length", "3"); |
+ response_headers_[":version"] = "HTTP/1.1"; |
+ response_headers_[":status"] = "500 Server Error"; |
+ response_headers_["content-length"] = "3"; |
InSequence s; |
EXPECT_CALL(session_, WritevData(kHeadersStreamId, _, 0, false, _, nullptr)); |