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

Side by Side Diff: net/spdy/spdy_headers_block_parser_test.cc

Issue 885443002: Roll Chrome into Mojo. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Rebase to ToT mojo Created 5 years, 10 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 unified diff | Download patch
« no previous file with comments | « net/spdy/spdy_headers_block_parser.cc ('k') | net/spdy/spdy_session.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/spdy/spdy_headers_block_parser.h" 5 #include "net/spdy/spdy_headers_block_parser.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 EXPECT_CALL(handler_, OnHeaderBlock(1)).Times(1); 122 EXPECT_CALL(handler_, OnHeaderBlock(1)).Times(1);
123 123
124 std::string expect_key = kBaseKey + IntToString(0); 124 std::string expect_key = kBaseKey + IntToString(0);
125 std::string expect_value = kBaseValue + IntToString(0); 125 std::string expect_value = kBaseValue + IntToString(0);
126 EXPECT_CALL(handler_, OnHeader(StringPiece(expect_key), 126 EXPECT_CALL(handler_, OnHeader(StringPiece(expect_key),
127 StringPiece(expect_value))).Times(1); 127 StringPiece(expect_value))).Times(1);
128 EXPECT_CALL(handler_, OnHeaderBlockEnd(headers.length())).Times(1); 128 EXPECT_CALL(handler_, OnHeaderBlockEnd(headers.length())).Times(1);
129 129
130 EXPECT_TRUE(parser_-> 130 EXPECT_TRUE(parser_->
131 HandleControlFrameHeadersData(1, headers.c_str(), headers.length())); 131 HandleControlFrameHeadersData(1, headers.c_str(), headers.length()));
132 EXPECT_EQ(SpdyHeadersBlockParser::OK, parser_->get_error()); 132 EXPECT_EQ(SpdyHeadersBlockParser::NO_PARSER_ERROR, parser_->get_error());
133 } 133 }
134 134
135 TEST_P(SpdyHeadersBlockParserTest, NullsSupportedTest) { 135 TEST_P(SpdyHeadersBlockParserTest, NullsSupportedTest) {
136 // Sanity test, verify that we parse out correctly a block with 136 // Sanity test, verify that we parse out correctly a block with
137 // a single key-value pair when the key and value contain null charecters. 137 // a single key-value pair when the key and value contain null charecters.
138 string headers(CreateHeaders(1, true)); 138 string headers(CreateHeaders(1, true));
139 139
140 EXPECT_CALL(handler_, OnHeaderBlock(1)).Times(1); 140 EXPECT_CALL(handler_, OnHeaderBlock(1)).Times(1);
141 141
142 std::string expect_key = kBaseKey + string("\0", 1) + IntToString(0); 142 std::string expect_key = kBaseKey + string("\0", 1) + IntToString(0);
143 std::string expect_value = kBaseValue + string("\0", 1) + IntToString(0); 143 std::string expect_value = kBaseValue + string("\0", 1) + IntToString(0);
144 EXPECT_CALL(handler_, OnHeader(StringPiece(expect_key), 144 EXPECT_CALL(handler_, OnHeader(StringPiece(expect_key),
145 StringPiece(expect_value))).Times(1); 145 StringPiece(expect_value))).Times(1);
146 EXPECT_CALL(handler_, OnHeaderBlockEnd(headers.length())).Times(1); 146 EXPECT_CALL(handler_, OnHeaderBlockEnd(headers.length())).Times(1);
147 147
148 EXPECT_TRUE(parser_-> 148 EXPECT_TRUE(parser_->
149 HandleControlFrameHeadersData(1, headers.c_str(), headers.length())); 149 HandleControlFrameHeadersData(1, headers.c_str(), headers.length()));
150 EXPECT_EQ(SpdyHeadersBlockParser::OK, parser_->get_error()); 150 EXPECT_EQ(SpdyHeadersBlockParser::NO_PARSER_ERROR, parser_->get_error());
151 } 151 }
152 152
153 TEST_P(SpdyHeadersBlockParserTest, MultipleBlocksAndHeadersWithPartialData) { 153 TEST_P(SpdyHeadersBlockParserTest, MultipleBlocksAndHeadersWithPartialData) {
154 testing::InSequence s; 154 testing::InSequence s;
155 155
156 // CreateHeaders is deterministic; we can call it once for the whole test. 156 // CreateHeaders is deterministic; we can call it once for the whole test.
157 string headers(CreateHeaders(kNumHeadersInBlock, false)); 157 string headers(CreateHeaders(kNumHeadersInBlock, false));
158 158
159 // The mock doesn't retain storage of arguments, so keep them in scope. 159 // The mock doesn't retain storage of arguments, so keep them in scope.
160 std::vector<string> retained_arguments; 160 std::vector<string> retained_arguments;
(...skipping 10 matching lines...) Expand all
171 StringPiece(retained_arguments[2 * j + 1]))).Times(1); 171 StringPiece(retained_arguments[2 * j + 1]))).Times(1);
172 } 172 }
173 EXPECT_CALL(handler_, OnHeaderBlockEnd(headers.length())).Times(1); 173 EXPECT_CALL(handler_, OnHeaderBlockEnd(headers.length())).Times(1);
174 } 174 }
175 // Parse the header blocks, feeding the parser one byte at a time. 175 // Parse the header blocks, feeding the parser one byte at a time.
176 for (int i = 1; i <= kNumHeaderBlocks; i++) { 176 for (int i = 1; i <= kNumHeaderBlocks; i++) {
177 for (string::iterator it = headers.begin(); it != headers.end(); ++it) { 177 for (string::iterator it = headers.begin(); it != headers.end(); ++it) {
178 if ((it + 1) == headers.end()) { 178 if ((it + 1) == headers.end()) {
179 // Last byte completes the block. 179 // Last byte completes the block.
180 EXPECT_TRUE(parser_->HandleControlFrameHeadersData(i, &(*it), 1)); 180 EXPECT_TRUE(parser_->HandleControlFrameHeadersData(i, &(*it), 1));
181 EXPECT_EQ(SpdyHeadersBlockParser::OK, parser_->get_error()); 181 EXPECT_EQ(SpdyHeadersBlockParser::NO_PARSER_ERROR,
182 parser_->get_error());
182 } else { 183 } else {
183 EXPECT_FALSE(parser_->HandleControlFrameHeadersData(i, &(*it), 1)); 184 EXPECT_FALSE(parser_->HandleControlFrameHeadersData(i, &(*it), 1));
184 EXPECT_EQ(SpdyHeadersBlockParser::NEED_MORE_DATA, parser_->get_error()); 185 EXPECT_EQ(SpdyHeadersBlockParser::NEED_MORE_DATA, parser_->get_error());
185 } 186 }
186 } 187 }
187 } 188 }
188 } 189 }
189 190
190 TEST_P(SpdyHeadersBlockParserTest, HandlesEmptyCallsTest) { 191 TEST_P(SpdyHeadersBlockParserTest, HandlesEmptyCallsTest) {
191 EXPECT_CALL(handler_, OnHeaderBlock(1)).Times(1); 192 EXPECT_CALL(handler_, OnHeaderBlock(1)).Times(1);
192 193
193 string headers(CreateHeaders(1, false)); 194 string headers(CreateHeaders(1, false));
194 195
195 string expect_key = kBaseKey + IntToString(0); 196 string expect_key = kBaseKey + IntToString(0);
196 string expect_value = kBaseValue + IntToString(0); 197 string expect_value = kBaseValue + IntToString(0);
197 EXPECT_CALL(handler_, OnHeader(StringPiece(expect_key), 198 EXPECT_CALL(handler_, OnHeader(StringPiece(expect_key),
198 StringPiece(expect_value))).Times(1); 199 StringPiece(expect_value))).Times(1);
199 EXPECT_CALL(handler_, OnHeaderBlockEnd(headers.length())).Times(1); 200 EXPECT_CALL(handler_, OnHeaderBlockEnd(headers.length())).Times(1);
200 201
201 // Send a header in pieces with intermediate empty calls. 202 // Send a header in pieces with intermediate empty calls.
202 for (string::iterator it = headers.begin(); it != headers.end(); ++it) { 203 for (string::iterator it = headers.begin(); it != headers.end(); ++it) {
203 if ((it + 1) == headers.end()) { 204 if ((it + 1) == headers.end()) {
204 // Last byte completes the block. 205 // Last byte completes the block.
205 EXPECT_TRUE(parser_->HandleControlFrameHeadersData(1, &(*it), 1)); 206 EXPECT_TRUE(parser_->HandleControlFrameHeadersData(1, &(*it), 1));
206 EXPECT_EQ(SpdyHeadersBlockParser::OK, parser_->get_error()); 207 EXPECT_EQ(SpdyHeadersBlockParser::NO_PARSER_ERROR, parser_->get_error());
207 } else { 208 } else {
208 EXPECT_FALSE(parser_->HandleControlFrameHeadersData(1, &(*it), 1)); 209 EXPECT_FALSE(parser_->HandleControlFrameHeadersData(1, &(*it), 1));
209 EXPECT_EQ(SpdyHeadersBlockParser::NEED_MORE_DATA, parser_->get_error()); 210 EXPECT_EQ(SpdyHeadersBlockParser::NEED_MORE_DATA, parser_->get_error());
210 EXPECT_FALSE(parser_->HandleControlFrameHeadersData(1, NULL, 0)); 211 EXPECT_FALSE(parser_->HandleControlFrameHeadersData(1, NULL, 0));
211 } 212 }
212 } 213 }
213 } 214 }
214 215
215 TEST_P(SpdyHeadersBlockParserTest, LargeBlocksDiscardedTest) { 216 TEST_P(SpdyHeadersBlockParserTest, LargeBlocksDiscardedTest) {
216 // Header block with too many headers. 217 // Header block with too many headers.
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 string headers(CreateHeaders(kNumHeadersInBlock, false)); 269 string headers(CreateHeaders(kNumHeadersInBlock, false));
269 bool result; 270 bool result;
270 EXPECT_DFATAL( 271 EXPECT_DFATAL(
271 result = parser_->HandleControlFrameHeadersData(0, headers.data(), 1), 272 result = parser_->HandleControlFrameHeadersData(0, headers.data(), 1),
272 "Expected nonzero stream id, saw: 0"); 273 "Expected nonzero stream id, saw: 0");
273 EXPECT_FALSE(result); 274 EXPECT_FALSE(result);
274 EXPECT_EQ(SpdyHeadersBlockParser::UNEXPECTED_STREAM_ID, parser_->get_error()); 275 EXPECT_EQ(SpdyHeadersBlockParser::UNEXPECTED_STREAM_ID, parser_->get_error());
275 } 276 }
276 277
277 } // namespace net 278 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_headers_block_parser.cc ('k') | net/spdy/spdy_session.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698