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

Unified Diff: net/spdy/spdy_headers_block_parser_test.cc

Issue 290003006: Land recent SPDY changes (through 67282679) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase on nullptr => NULL Created 6 years, 7 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/spdy/spdy_headers_block_parser.cc ('k') | net/spdy/spdy_protocol.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/spdy/spdy_headers_block_parser_test.cc
diff --git a/net/spdy/spdy_headers_block_parser_test.cc b/net/spdy/spdy_headers_block_parser_test.cc
index d9a54068d285e110873791fa71fad3542794badf..7764bc9c3aa04abef25a68bce6bd219489b42ab5 100644
--- a/net/spdy/spdy_headers_block_parser_test.cc
+++ b/net/spdy/spdy_headers_block_parser_test.cc
@@ -26,7 +26,7 @@ class MockSpdyHeadersHandler : public SpdyHeadersHandlerInterface {
public:
MOCK_METHOD2(OnHeaderBlock, void(SpdyStreamId stream_id,
uint32_t num_of_headers));
- MOCK_METHOD1(OnHeaderBlockEnd, void(SpdyStreamId stream_id));
+ MOCK_METHOD2(OnHeaderBlockEnd, void(SpdyStreamId stream_id, size_t bytes));
MOCK_METHOD3(OnHeader, void(SpdyStreamId stream_id,
StringPiece,
StringPiece));
@@ -120,15 +120,16 @@ TEST_P(SpdyHeadersBlockParserTest, BasicTest) {
// Sanity test, verify that we parse out correctly a block with
// a single key-value pair and that we notify when we start and finish
// handling a headers block.
+ string headers(CreateHeaders(1, false));
+
EXPECT_CALL(handler_, OnHeaderBlock(1, 1)).Times(1);
std::string expect_key = base_key + IntToString(0);
std::string expect_value = base_value + IntToString(0);
EXPECT_CALL(handler_, OnHeader(1, StringPiece(expect_key),
StringPiece(expect_value))).Times(1);
- EXPECT_CALL(handler_, OnHeaderBlockEnd(1)).Times(1);
+ EXPECT_CALL(handler_, OnHeaderBlockEnd(1, headers.length())).Times(1);
- string headers(CreateHeaders(1, false));
EXPECT_TRUE(parser_->
HandleControlFrameHeadersData(1, headers.c_str(), headers.length()));
EXPECT_EQ(SpdyHeadersBlockParser::OK, parser_->get_error());
@@ -137,15 +138,16 @@ TEST_P(SpdyHeadersBlockParserTest, BasicTest) {
TEST_P(SpdyHeadersBlockParserTest, NullsSupportedTest) {
// Sanity test, verify that we parse out correctly a block with
// a single key-value pair when the key and value contain null charecters.
+ string headers(CreateHeaders(1, true));
+
EXPECT_CALL(handler_, OnHeaderBlock(1, 1)).Times(1);
std::string expect_key = base_key + string("\0", 1) + IntToString(0);
std::string expect_value = base_value + string("\0", 1) + IntToString(0);
EXPECT_CALL(handler_, OnHeader(1, StringPiece(expect_key),
StringPiece(expect_value))).Times(1);
- EXPECT_CALL(handler_, OnHeaderBlockEnd(1)).Times(1);
+ EXPECT_CALL(handler_, OnHeaderBlockEnd(1, headers.length())).Times(1);
- string headers(CreateHeaders(1, true));
EXPECT_TRUE(parser_->
HandleControlFrameHeadersData(1, headers.c_str(), headers.length()));
EXPECT_EQ(SpdyHeadersBlockParser::OK, parser_->get_error());
@@ -154,6 +156,9 @@ TEST_P(SpdyHeadersBlockParserTest, NullsSupportedTest) {
TEST_P(SpdyHeadersBlockParserTest, MultipleBlocksAndHeadersWithPartialData) {
testing::InSequence s;
+ // CreateHeaders is deterministic; we can call it once for the whole test.
+ string headers(CreateHeaders(kNumHeadersInBlock, false));
+
// The mock doesn't retain storage of arguments, so keep them in scope.
std::vector<string> retained_arguments;
for (int i = 0; i < kNumHeadersInBlock; i++) {
@@ -169,11 +174,10 @@ TEST_P(SpdyHeadersBlockParserTest, MultipleBlocksAndHeadersWithPartialData) {
StringPiece(retained_arguments[2 * j]),
StringPiece(retained_arguments[2 * j + 1]))).Times(1);
}
- EXPECT_CALL(handler_, OnHeaderBlockEnd(i)).Times(1);
+ EXPECT_CALL(handler_, OnHeaderBlockEnd(i, headers.length())).Times(1);
}
// Parse the header blocks, feeding the parser one byte at a time.
for (int i = 0; i < kNumHeaderBlocks; i++) {
- string headers(CreateHeaders(kNumHeadersInBlock, false));
for (string::iterator it = headers.begin(); it != headers.end(); ++it) {
if ((it + 1) == headers.end()) {
// Last byte completes the block.
@@ -190,14 +194,15 @@ TEST_P(SpdyHeadersBlockParserTest, MultipleBlocksAndHeadersWithPartialData) {
TEST_P(SpdyHeadersBlockParserTest, HandlesEmptyCallsTest) {
EXPECT_CALL(handler_, OnHeaderBlock(1, 1)).Times(1);
+ string headers(CreateHeaders(1, false));
+
string expect_key = base_key + IntToString(0);
string expect_value = base_value + IntToString(0);
EXPECT_CALL(handler_, OnHeader(1, StringPiece(expect_key),
StringPiece(expect_value))).Times(1);
- EXPECT_CALL(handler_, OnHeaderBlockEnd(1)).Times(1);
+ EXPECT_CALL(handler_, OnHeaderBlockEnd(1, headers.length())).Times(1);
// Send a header in pieces with intermediate empty calls.
- string headers(CreateHeaders(1, false));
for (string::iterator it = headers.begin(); it != headers.end(); ++it) {
if ((it + 1) == headers.end()) {
// Last byte completes the block.
@@ -236,15 +241,16 @@ TEST_P(SpdyHeadersBlockParserTest, LargeBlocksDiscardedTest) {
}
TEST_P(SpdyHeadersBlockParserTest, ExtraDataTest) {
+ string headers = CreateHeaders(1, false) + "foobar";
+
EXPECT_CALL(handler_, OnHeaderBlock(1, 1)).Times(1);
- EXPECT_CALL(handler_, OnHeaderBlockEnd(1)).Times(1);
+ EXPECT_CALL(handler_, OnHeaderBlockEnd(1, headers.length())).Times(1);
string expect_key = base_key + IntToString(0);
string expect_value = base_value + IntToString(0);
EXPECT_CALL(handler_, OnHeader(1, StringPiece(expect_key),
StringPiece(expect_value))).Times(1);
- string headers = CreateHeaders(1, false) + "foobar";
EXPECT_FALSE(parser_->
HandleControlFrameHeadersData(1, headers.c_str(), headers.length()));
EXPECT_EQ(SpdyHeadersBlockParser::TOO_MUCH_DATA, parser_->get_error());
« no previous file with comments | « net/spdy/spdy_headers_block_parser.cc ('k') | net/spdy/spdy_protocol.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698