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

Unified Diff: net/tools/quic/quic_simple_server_stream_test.cc

Issue 2102253003: Make SpdyHeaderBlock non-copyable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: iOS fix. Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/tools/quic/quic_simple_server_stream.cc ('k') | net/tools/quic/test_tools/quic_test_client.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/tools/quic/quic_simple_server_stream_test.cc
diff --git a/net/tools/quic/quic_simple_server_stream_test.cc b/net/tools/quic/quic_simple_server_stream_test.cc
index 191f5d229d3e44199c3dba654f3b000aabcf1c80..5161c9f223cc8fdf397343a4cdff4a948e5866fb 100644
--- a/net/tools/quic/quic_simple_server_stream_test.cc
+++ b/net/tools/quic/quic_simple_server_stream_test.cc
@@ -4,6 +4,8 @@
#include "net/tools/quic/quic_simple_server_stream.h"
+#include <utility>
+
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_piece.h"
#include "net/quic/quic_connection.h"
@@ -120,9 +122,19 @@ class MockQuicSimpleServerSession : public QuicSimpleServerSession {
void(QuicStreamId stream_id, SpdyPriority priority));
MOCK_METHOD3(OnStreamHeadersComplete,
void(QuicStreamId stream_id, bool fin, size_t frame_len));
- MOCK_METHOD5(WriteHeaders,
+ // Methods taking non-copyable types like SpdyHeaderBlock by value cannot be
+ // mocked directly.
+ size_t WriteHeaders(
+ QuicStreamId id,
+ SpdyHeaderBlock headers,
+ bool fin,
+ SpdyPriority priority,
+ QuicAckListenerInterface* ack_notifier_delegate) override {
+ return WriteHeadersMock(id, headers, fin, priority, ack_notifier_delegate);
+ }
+ MOCK_METHOD5(WriteHeadersMock,
size_t(QuicStreamId id,
- SpdyHeaderBlock headers,
+ const SpdyHeaderBlock& headers,
bool fin,
SpdyPriority priority,
QuicAckListenerInterface* ack_notifier_delegate));
@@ -131,7 +143,17 @@ class MockQuicSimpleServerSession : public QuicSimpleServerSession {
QuicRstStreamErrorCode error,
QuicStreamOffset bytes_written));
MOCK_METHOD1(OnHeadersHeadOfLineBlocking, void(QuicTime::Delta delta));
- MOCK_METHOD4(PromisePushResources,
+ // Matchers cannot be used on non-copyable types like SpdyHeaderBlock.
+ void PromisePushResources(
+ const string& request_url,
+ const std::list<QuicInMemoryCache::ServerPushInfo>& resources,
+ QuicStreamId original_stream_id,
+ const SpdyHeaderBlock& original_request_headers) override {
+ original_request_headers_ = original_request_headers.Clone();
+ PromisePushResourcesMock(request_url, resources, original_stream_id,
+ original_request_headers);
+ }
+ MOCK_METHOD4(PromisePushResourcesMock,
void(const string&,
const std::list<QuicInMemoryCache::ServerPushInfo>&,
QuicStreamId,
@@ -139,6 +161,8 @@ class MockQuicSimpleServerSession : public QuicSimpleServerSession {
using QuicSession::ActivateStream;
+ SpdyHeaderBlock original_request_headers_;
+
private:
DISALLOW_COPY_AND_ASSIGN(MockQuicSimpleServerSession);
};
@@ -274,7 +298,7 @@ TEST_P(QuicSimpleServerStreamTest, TestFramingExtraData) {
string large_body = "hello world!!!!!!";
// We'll automatically write out an error (headers + body)
- EXPECT_CALL(session_, WriteHeaders(_, _, _, _, _));
+ EXPECT_CALL(session_, WriteHeadersMock(_, _, _, _, _));
EXPECT_CALL(session_, WritevData(_, _, _, _, _, _))
.WillOnce(Invoke(MockQuicSession::ConsumeAllData));
EXPECT_CALL(session_, SendRstStream(_, QUIC_STREAM_NO_ERROR, _)).Times(0);
@@ -305,13 +329,13 @@ TEST_P(QuicSimpleServerStreamTest, SendResponseWithIllegalResponseStatus) {
response_headers_[":status"] = "200 OK";
response_headers_["content-length"] = "5";
string body = "Yummm";
- QuicInMemoryCache::GetInstance()->AddResponse("www.google.com", "/bar",
- response_headers_, body);
+ QuicInMemoryCache::GetInstance()->AddResponse(
+ "www.google.com", "/bar", std::move(response_headers_), body);
stream_->set_fin_received(true);
InSequence s;
- EXPECT_CALL(session_, WriteHeaders(stream_->id(), _, false, _, nullptr));
+ EXPECT_CALL(session_, WriteHeadersMock(stream_->id(), _, false, _, nullptr));
EXPECT_CALL(session_, WritevData(_, _, _, _, _, _))
.Times(1)
.WillOnce(Return(QuicConsumedData(
@@ -336,13 +360,13 @@ TEST_P(QuicSimpleServerStreamTest, SendResponseWithIllegalResponseStatus2) {
response_headers_[":status"] = "+200";
response_headers_["content-length"] = "5";
string body = "Yummm";
- QuicInMemoryCache::GetInstance()->AddResponse("www.google.com", "/bar",
- response_headers_, body);
+ QuicInMemoryCache::GetInstance()->AddResponse(
+ "www.google.com", "/bar", std::move(response_headers_), body);
stream_->set_fin_received(true);
InSequence s;
- EXPECT_CALL(session_, WriteHeaders(stream_->id(), _, false, _, nullptr));
+ EXPECT_CALL(session_, WriteHeadersMock(stream_->id(), _, false, _, nullptr));
EXPECT_CALL(session_, WritevData(_, _, _, _, _, _))
.Times(1)
.WillOnce(Return(QuicConsumedData(
@@ -372,8 +396,8 @@ TEST_P(QuicSimpleServerStreamTest, SendPushResponseWith404Response) {
response_headers_[":status"] = "404";
response_headers_["content-length"] = "8";
string body = "NotFound";
- QuicInMemoryCache::GetInstance()->AddResponse("www.google.com", "/bar",
- response_headers_, body);
+ QuicInMemoryCache::GetInstance()->AddResponse(
+ "www.google.com", "/bar", std::move(response_headers_), body);
InSequence s;
EXPECT_CALL(session_,
@@ -394,12 +418,12 @@ TEST_P(QuicSimpleServerStreamTest, SendResponseWithValidHeaders) {
response_headers_[":status"] = "200";
response_headers_["content-length"] = "5";
string body = "Yummm";
- QuicInMemoryCache::GetInstance()->AddResponse("www.google.com", "/bar",
- response_headers_, body);
+ QuicInMemoryCache::GetInstance()->AddResponse(
+ "www.google.com", "/bar", std::move(response_headers_), body);
stream_->set_fin_received(true);
InSequence s;
- EXPECT_CALL(session_, WriteHeaders(stream_->id(), _, false, _, nullptr));
+ EXPECT_CALL(session_, WriteHeadersMock(stream_->id(), _, false, _, nullptr));
EXPECT_CALL(session_, WritevData(_, _, _, _, _, _))
.Times(1)
.WillOnce(Return(QuicConsumedData(body.length(), true)));
@@ -418,9 +442,8 @@ TEST_P(QuicSimpleServerStreamTest, SendReponseWithPushResources) {
string host = "www.google.com";
string request_path = "/foo";
string body = "Yummm";
- SpdyHeaderBlock response_headers;
string url = host + "/bar";
- QuicInMemoryCache::ServerPushInfo push_info(GURL(url), response_headers,
+ QuicInMemoryCache::ServerPushInfo push_info(GURL(url), SpdyHeaderBlock(),
kDefaultPriority, "Push body");
std::list<QuicInMemoryCache::ServerPushInfo> push_resources;
push_resources.push_back(push_info);
@@ -435,21 +458,21 @@ TEST_P(QuicSimpleServerStreamTest, SendReponseWithPushResources) {
stream_->set_fin_received(true);
InSequence s;
- EXPECT_CALL(session_, PromisePushResources(host + request_path, _,
- ::net::test::kClientDataStreamId1,
- *request_headers));
- EXPECT_CALL(session_, WriteHeaders(stream_->id(), _, false, _, nullptr));
+ EXPECT_CALL(session_,
+ PromisePushResourcesMock(host + request_path, _,
+ ::net::test::kClientDataStreamId1, _));
+ EXPECT_CALL(session_, WriteHeadersMock(stream_->id(), _, false, _, nullptr));
EXPECT_CALL(session_, WritevData(_, _, _, _, _, _))
.Times(1)
.WillOnce(Return(QuicConsumedData(body.length(), true)));
QuicSimpleServerStreamPeer::SendResponse(stream_);
+ EXPECT_EQ(*request_headers, session_.original_request_headers_);
}
TEST_P(QuicSimpleServerStreamTest, PushResponseOnClientInitiatedStream) {
// Calling PushResponse() on a client initialted stream is never supposed to
// happen.
- SpdyHeaderBlock headers;
- EXPECT_DFATAL(stream_->PushResponse(headers),
+ EXPECT_DFATAL(stream_->PushResponse(SpdyHeaderBlock()),
"Client initiated stream"
" shouldn't be used as promised stream.");
}
@@ -477,18 +500,18 @@ TEST_P(QuicSimpleServerStreamTest, PushResponseOnServerInitiatedStream) {
response_headers_[":status"] = "200";
response_headers_["content-length"] = "5";
const string kBody = "Hello";
- QuicInMemoryCache::GetInstance()->AddResponse(kHost, kPath, response_headers_,
- kBody);
+ QuicInMemoryCache::GetInstance()->AddResponse(
+ kHost, kPath, std::move(response_headers_), kBody);
// Call PushResponse() should trigger stream to fetch response from cache
// and send it back.
EXPECT_CALL(session_,
- WriteHeaders(kServerInitiatedStreamId, _, false,
- server_initiated_stream->priority(), nullptr));
+ WriteHeadersMock(kServerInitiatedStreamId, _, false,
+ server_initiated_stream->priority(), nullptr));
EXPECT_CALL(session_, WritevData(_, kServerInitiatedStreamId, _, _, _, _))
.Times(1)
.WillOnce(Return(QuicConsumedData(kBody.size(), true)));
- server_initiated_stream->PushResponse(headers);
+ server_initiated_stream->PushResponse(std::move(headers));
EXPECT_EQ(kPath, QuicSimpleServerStreamPeer::headers(
server_initiated_stream)[":path"]
.as_string());
@@ -500,13 +523,10 @@ TEST_P(QuicSimpleServerStreamTest, PushResponseOnServerInitiatedStream) {
TEST_P(QuicSimpleServerStreamTest, TestSendErrorResponse) {
EXPECT_CALL(session_, SendRstStream(_, QUIC_STREAM_NO_ERROR, _)).Times(0);
- response_headers_[":version"] = "HTTP/1.1";
- response_headers_[":status"] = "500 Server Error";
- response_headers_["content-length"] = "3";
stream_->set_fin_received(true);
InSequence s;
- EXPECT_CALL(session_, WriteHeaders(_, _, _, _, _));
+ EXPECT_CALL(session_, WriteHeadersMock(_, _, _, _, _));
EXPECT_CALL(session_, WritevData(_, _, _, _, _, _))
.Times(1)
.WillOnce(Return(QuicConsumedData(3, true)));
@@ -526,7 +546,7 @@ TEST_P(QuicSimpleServerStreamTest, InvalidMultipleContentLength) {
headers_string_ = SpdyUtils::SerializeUncompressedHeaders(request_headers);
- EXPECT_CALL(session_, WriteHeaders(_, _, _, _, _));
+ EXPECT_CALL(session_, WriteHeadersMock(_, _, _, _, _));
EXPECT_CALL(session_, WritevData(_, _, _, _, _, _))
.Times(AnyNumber())
.WillRepeatedly(Invoke(MockQuicSession::ConsumeAllData));
@@ -547,7 +567,7 @@ TEST_P(QuicSimpleServerStreamTest, InvalidLeadingNullContentLength) {
headers_string_ = SpdyUtils::SerializeUncompressedHeaders(request_headers);
- EXPECT_CALL(session_, WriteHeaders(_, _, _, _, _));
+ EXPECT_CALL(session_, WriteHeadersMock(_, _, _, _, _));
EXPECT_CALL(session_, WritevData(_, _, _, _, _, _))
.Times(AnyNumber())
.WillRepeatedly(Invoke(MockQuicSession::ConsumeAllData));
@@ -576,12 +596,8 @@ TEST_P(QuicSimpleServerStreamTest, ValidMultipleContentLength) {
}
TEST_P(QuicSimpleServerStreamTest, SendQuicRstStreamNoErrorWithEarlyResponse) {
- response_headers_[":version"] = "HTTP/1.1";
- response_headers_[":status"] = "500 Server Error";
- response_headers_["content-length"] = "3";
-
InSequence s;
- EXPECT_CALL(session_, WriteHeaders(stream_->id(), _, _, _, _));
+ EXPECT_CALL(session_, WriteHeadersMock(stream_->id(), _, false, _, nullptr));
EXPECT_CALL(session_, WritevData(_, _, _, _, _, _))
.Times(1)
.WillOnce(Return(QuicConsumedData(3, true)));
@@ -598,10 +614,6 @@ TEST_P(QuicSimpleServerStreamTest, SendQuicRstStreamNoErrorWithEarlyResponse) {
TEST_P(QuicSimpleServerStreamTest,
DoNotSendQuicRstStreamNoErrorWithRstReceived) {
- response_headers_[":version"] = "HTTP/1.1";
- response_headers_[":status"] = "500 Server Error";
- response_headers_["content-length"] = "3";
-
InSequence s;
EXPECT_FALSE(stream_->reading_stopped());
« no previous file with comments | « net/tools/quic/quic_simple_server_stream.cc ('k') | net/tools/quic/test_tools/quic_test_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698