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

Unified Diff: net/spdy/spdy_headers_block_parser_test.cc

Issue 863253002: Update from https://crrev.com/312600 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 11 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
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 e2fdb311a1bbc268f6df018cbbca80486e52bb2a..81338883ef50732e8f29ed4f035ccdbf374e7159 100644
--- a/net/spdy/spdy_headers_block_parser_test.cc
+++ b/net/spdy/spdy_headers_block_parser_test.cc
@@ -9,6 +9,7 @@
#include "base/memory/scoped_ptr.h"
#include "base/strings/string_number_conversions.h"
#include "base/sys_byteorder.h"
+#include "net/test/gtest_util.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -22,12 +23,9 @@ using std::string;
// and call the callback methods when we should.
class MockSpdyHeadersHandler : public SpdyHeadersHandlerInterface {
public:
- MOCK_METHOD2(OnHeaderBlock, void(SpdyStreamId stream_id,
- uint32_t num_of_headers));
- MOCK_METHOD2(OnHeaderBlockEnd, void(SpdyStreamId stream_id, size_t bytes));
- MOCK_METHOD3(OnHeader, void(SpdyStreamId stream_id,
- StringPiece,
- StringPiece));
+ MOCK_METHOD1(OnHeaderBlock, void(uint32_t num_of_headers));
+ MOCK_METHOD1(OnHeaderBlockEnd, void(size_t bytes));
+ MOCK_METHOD2(OnHeader, void(StringPiece key, StringPiece value));
};
class SpdyHeadersBlockParserTest :
@@ -121,13 +119,13 @@ TEST_P(SpdyHeadersBlockParserTest, BasicTest) {
// handling a headers block.
string headers(CreateHeaders(1, false));
- EXPECT_CALL(handler_, OnHeaderBlock(1, 1)).Times(1);
+ EXPECT_CALL(handler_, OnHeaderBlock(1)).Times(1);
std::string expect_key = kBaseKey + IntToString(0);
std::string expect_value = kBaseValue + IntToString(0);
- EXPECT_CALL(handler_, OnHeader(1, StringPiece(expect_key),
+ EXPECT_CALL(handler_, OnHeader(StringPiece(expect_key),
StringPiece(expect_value))).Times(1);
- EXPECT_CALL(handler_, OnHeaderBlockEnd(1, headers.length())).Times(1);
+ EXPECT_CALL(handler_, OnHeaderBlockEnd(headers.length())).Times(1);
EXPECT_TRUE(parser_->
HandleControlFrameHeadersData(1, headers.c_str(), headers.length()));
@@ -139,13 +137,13 @@ TEST_P(SpdyHeadersBlockParserTest, NullsSupportedTest) {
// 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);
+ EXPECT_CALL(handler_, OnHeaderBlock(1)).Times(1);
std::string expect_key = kBaseKey + string("\0", 1) + IntToString(0);
std::string expect_value = kBaseValue + string("\0", 1) + IntToString(0);
- EXPECT_CALL(handler_, OnHeader(1, StringPiece(expect_key),
+ EXPECT_CALL(handler_, OnHeader(StringPiece(expect_key),
StringPiece(expect_value))).Times(1);
- EXPECT_CALL(handler_, OnHeaderBlockEnd(1, headers.length())).Times(1);
+ EXPECT_CALL(handler_, OnHeaderBlockEnd(headers.length())).Times(1);
EXPECT_TRUE(parser_->
HandleControlFrameHeadersData(1, headers.c_str(), headers.length()));
@@ -166,17 +164,16 @@ TEST_P(SpdyHeadersBlockParserTest, MultipleBlocksAndHeadersWithPartialData) {
}
// For each block we expect to parse out the headers in order.
for (int i = 0; i < kNumHeaderBlocks; i++) {
- EXPECT_CALL(handler_, OnHeaderBlock(i, kNumHeadersInBlock)).Times(1);
+ EXPECT_CALL(handler_, OnHeaderBlock(kNumHeadersInBlock)).Times(1);
for (int j = 0; j < kNumHeadersInBlock; j++) {
EXPECT_CALL(handler_, OnHeader(
- i,
StringPiece(retained_arguments[2 * j]),
StringPiece(retained_arguments[2 * j + 1]))).Times(1);
}
- EXPECT_CALL(handler_, OnHeaderBlockEnd(i, headers.length())).Times(1);
+ EXPECT_CALL(handler_, OnHeaderBlockEnd(headers.length())).Times(1);
}
// Parse the header blocks, feeding the parser one byte at a time.
- for (int i = 0; i < kNumHeaderBlocks; i++) {
+ for (int i = 1; i <= kNumHeaderBlocks; i++) {
for (string::iterator it = headers.begin(); it != headers.end(); ++it) {
if ((it + 1) == headers.end()) {
// Last byte completes the block.
@@ -191,15 +188,15 @@ TEST_P(SpdyHeadersBlockParserTest, MultipleBlocksAndHeadersWithPartialData) {
}
TEST_P(SpdyHeadersBlockParserTest, HandlesEmptyCallsTest) {
- EXPECT_CALL(handler_, OnHeaderBlock(1, 1)).Times(1);
+ EXPECT_CALL(handler_, OnHeaderBlock(1)).Times(1);
string headers(CreateHeaders(1, false));
string expect_key = kBaseKey + IntToString(0);
string expect_value = kBaseValue + IntToString(0);
- EXPECT_CALL(handler_, OnHeader(1, StringPiece(expect_key),
+ EXPECT_CALL(handler_, OnHeader(StringPiece(expect_key),
StringPiece(expect_value))).Times(1);
- EXPECT_CALL(handler_, OnHeaderBlockEnd(1, headers.length())).Times(1);
+ EXPECT_CALL(handler_, OnHeaderBlockEnd(headers.length())).Times(1);
// Send a header in pieces with intermediate empty calls.
for (string::iterator it = headers.begin(); it != headers.end(); ++it) {
@@ -228,7 +225,7 @@ TEST_P(SpdyHeadersBlockParserTest, LargeBlocksDiscardedTest) {
parser_.reset(new SpdyHeadersBlockParser(spdy_version_, &handler_));
// Header block with one header, which has a too-long key.
{
- EXPECT_CALL(handler_, OnHeaderBlock(1, 1)).Times(1);
+ EXPECT_CALL(handler_, OnHeaderBlock(1)).Times(1);
string headers = EncodeLength(1) + EncodeLength(
SpdyHeadersBlockParser::kMaximumFieldLength + 1);
@@ -242,17 +239,39 @@ 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, headers.length())).Times(1);
+ EXPECT_CALL(handler_, OnHeaderBlock(1)).Times(1);
+ EXPECT_CALL(handler_, OnHeaderBlockEnd(headers.length())).Times(1);
string expect_key = kBaseKey + IntToString(0);
string expect_value = kBaseValue + IntToString(0);
- EXPECT_CALL(handler_, OnHeader(1, StringPiece(expect_key),
+ EXPECT_CALL(handler_, OnHeader(StringPiece(expect_key),
StringPiece(expect_value))).Times(1);
- EXPECT_FALSE(parser_->
- HandleControlFrameHeadersData(1, headers.c_str(), headers.length()));
+ EXPECT_FALSE(parser_->HandleControlFrameHeadersData(1, headers.c_str(),
+ headers.length()));
EXPECT_EQ(SpdyHeadersBlockParser::TOO_MUCH_DATA, parser_->get_error());
}
+TEST_P(SpdyHeadersBlockParserTest, WrongStreamIdTest) {
+ string headers(CreateHeaders(kNumHeadersInBlock, false));
+ EXPECT_FALSE(parser_->HandleControlFrameHeadersData(1, headers.data(), 1));
+ EXPECT_EQ(SpdyHeadersBlockParser::NEED_MORE_DATA, parser_->get_error());
+ bool result;
+ EXPECT_DFATAL(
+ result = parser_->HandleControlFrameHeadersData(2, headers.data() + 1, 1),
+ "Unexpected stream id: 2 \\(expected 1\\)");
+ EXPECT_FALSE(result);
+ EXPECT_EQ(SpdyHeadersBlockParser::UNEXPECTED_STREAM_ID, parser_->get_error());
+}
+
+TEST_P(SpdyHeadersBlockParserTest, InvalidStreamIdTest) {
+ string headers(CreateHeaders(kNumHeadersInBlock, false));
+ bool result;
+ EXPECT_DFATAL(
+ result = parser_->HandleControlFrameHeadersData(0, headers.data(), 1),
+ "Expected nonzero stream id, saw: 0");
+ EXPECT_FALSE(result);
+ EXPECT_EQ(SpdyHeadersBlockParser::UNEXPECTED_STREAM_ID, parser_->get_error());
+}
+
} // namespace net

Powered by Google App Engine
This is Rietveld 408576698