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

Side by Side Diff: net/spdy/chromium/buffered_spdy_framer_unittest.cc

Issue 2847133003: Add NetLog event for invalid Http/2 response header (Closed)
Patch Set: fix test Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/chromium/buffered_spdy_framer.h" 5 #include "net/spdy/chromium/buffered_spdy_framer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "net/log/net_log_with_source.h"
11 #include "net/spdy/chromium/spdy_test_util_common.h" 12 #include "net/spdy/chromium/spdy_test_util_common.h"
12 #include "testing/platform_test.h" 13 #include "testing/platform_test.h"
13 14
14 namespace net { 15 namespace net {
15 16
16 namespace { 17 namespace {
17 18
18 class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface { 19 class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface {
19 public: 20 public:
20 TestBufferedSpdyVisitor() 21 TestBufferedSpdyVisitor()
21 : buffered_spdy_framer_(), 22 : buffered_spdy_framer_(NetLogWithSource()),
22 error_count_(0), 23 error_count_(0),
23 setting_count_(0), 24 setting_count_(0),
24 headers_frame_count_(0), 25 headers_frame_count_(0),
25 push_promise_frame_count_(0), 26 push_promise_frame_count_(0),
26 goaway_count_(0), 27 goaway_count_(0),
27 altsvc_count_(0), 28 altsvc_count_(0),
28 header_stream_id_(static_cast<SpdyStreamId>(-1)), 29 header_stream_id_(static_cast<SpdyStreamId>(-1)),
29 promised_stream_id_(static_cast<SpdyStreamId>(-1)) {} 30 promised_stream_id_(static_cast<SpdyStreamId>(-1)) {}
30 31
31 void OnError(SpdyFramer::SpdyFramerError spdy_framer_error) override { 32 void OnError(SpdyFramer::SpdyFramerError spdy_framer_error) override {
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 EXPECT_EQ(0, visitor.error_count_); 192 EXPECT_EQ(0, visitor.error_count_);
192 EXPECT_EQ(2, visitor.setting_count_); 193 EXPECT_EQ(2, visitor.setting_count_);
193 } 194 }
194 195
195 TEST_F(BufferedSpdyFramerTest, HeaderListTooLarge) { 196 TEST_F(BufferedSpdyFramerTest, HeaderListTooLarge) {
196 SpdyHeaderBlock headers; 197 SpdyHeaderBlock headers;
197 SpdyString long_header_value(256 * 1024, 'x'); 198 SpdyString long_header_value(256 * 1024, 'x');
198 headers["foo"] = long_header_value; 199 headers["foo"] = long_header_value;
199 SpdyHeadersIR headers_ir(/*stream_id=*/1, std::move(headers)); 200 SpdyHeadersIR headers_ir(/*stream_id=*/1, std::move(headers));
200 201
201 BufferedSpdyFramer framer; 202 BufferedSpdyFramer framer((NetLogWithSource()));
Bence 2017/05/10 12:43:29 I think there is an extra pair of () here that sho
xunjieli 2017/05/10 18:24:59 Done. Compiler complains that I need to extra ().
202 SpdySerializedFrame control_frame = framer.SerializeFrame(headers_ir); 203 SpdySerializedFrame control_frame = framer.SerializeFrame(headers_ir);
203 204
204 TestBufferedSpdyVisitor visitor; 205 TestBufferedSpdyVisitor visitor;
205 visitor.SimulateInFramer(control_frame); 206 visitor.SimulateInFramer(control_frame);
206 207
207 EXPECT_EQ(1, visitor.error_count_); 208 EXPECT_EQ(1, visitor.error_count_);
208 EXPECT_EQ(0, visitor.headers_frame_count_); 209 EXPECT_EQ(0, visitor.headers_frame_count_);
209 EXPECT_EQ(0, visitor.push_promise_frame_count_); 210 EXPECT_EQ(0, visitor.push_promise_frame_count_);
210 EXPECT_EQ(SpdyHeaderBlock(), visitor.headers_); 211 EXPECT_EQ(SpdyHeaderBlock(), visitor.headers_);
211 } 212 }
(...skipping 20 matching lines...) Expand all
232 EXPECT_EQ(1, visitor.error_count_); 233 EXPECT_EQ(1, visitor.error_count_);
233 EXPECT_EQ(1, visitor.headers_frame_count_); 234 EXPECT_EQ(1, visitor.headers_frame_count_);
234 } 235 }
235 236
236 TEST_F(BufferedSpdyFramerTest, ReadHeadersHeaderBlock) { 237 TEST_F(BufferedSpdyFramerTest, ReadHeadersHeaderBlock) {
237 SpdyHeaderBlock headers; 238 SpdyHeaderBlock headers;
238 headers["alpha"] = "beta"; 239 headers["alpha"] = "beta";
239 headers["gamma"] = "delta"; 240 headers["gamma"] = "delta";
240 SpdyHeadersIR headers_ir(/*stream_id=*/1, headers.Clone()); 241 SpdyHeadersIR headers_ir(/*stream_id=*/1, headers.Clone());
241 242
242 BufferedSpdyFramer framer; 243 BufferedSpdyFramer framer((NetLogWithSource()));
243 SpdySerializedFrame control_frame = framer.SerializeFrame(headers_ir); 244 SpdySerializedFrame control_frame = framer.SerializeFrame(headers_ir);
244 245
245 TestBufferedSpdyVisitor visitor; 246 TestBufferedSpdyVisitor visitor;
246 visitor.SimulateInFramer(control_frame); 247 visitor.SimulateInFramer(control_frame);
247 EXPECT_EQ(0, visitor.error_count_); 248 EXPECT_EQ(0, visitor.error_count_);
248 EXPECT_EQ(1, visitor.headers_frame_count_); 249 EXPECT_EQ(1, visitor.headers_frame_count_);
249 EXPECT_EQ(0, visitor.push_promise_frame_count_); 250 EXPECT_EQ(0, visitor.push_promise_frame_count_);
250 EXPECT_EQ(headers, visitor.headers_); 251 EXPECT_EQ(headers, visitor.headers_);
251 } 252 }
252 253
253 TEST_F(BufferedSpdyFramerTest, ReadPushPromiseHeaderBlock) { 254 TEST_F(BufferedSpdyFramerTest, ReadPushPromiseHeaderBlock) {
254 SpdyHeaderBlock headers; 255 SpdyHeaderBlock headers;
255 headers["alpha"] = "beta"; 256 headers["alpha"] = "beta";
256 headers["gamma"] = "delta"; 257 headers["gamma"] = "delta";
257 BufferedSpdyFramer framer; 258 BufferedSpdyFramer framer((NetLogWithSource()));
258 SpdyPushPromiseIR push_promise_ir(/*stream_id=*/1, /*promised_stream_id=*/2, 259 SpdyPushPromiseIR push_promise_ir(/*stream_id=*/1, /*promised_stream_id=*/2,
259 headers.Clone()); 260 headers.Clone());
260 SpdySerializedFrame control_frame = framer.SerializeFrame(push_promise_ir); 261 SpdySerializedFrame control_frame = framer.SerializeFrame(push_promise_ir);
261 262
262 TestBufferedSpdyVisitor visitor; 263 TestBufferedSpdyVisitor visitor;
263 visitor.SimulateInFramer(control_frame); 264 visitor.SimulateInFramer(control_frame);
264 EXPECT_EQ(0, visitor.error_count_); 265 EXPECT_EQ(0, visitor.error_count_);
265 EXPECT_EQ(0, visitor.headers_frame_count_); 266 EXPECT_EQ(0, visitor.headers_frame_count_);
266 EXPECT_EQ(1, visitor.push_promise_frame_count_); 267 EXPECT_EQ(1, visitor.push_promise_frame_count_);
267 EXPECT_EQ(headers, visitor.headers_); 268 EXPECT_EQ(headers, visitor.headers_);
268 EXPECT_EQ(1u, visitor.header_stream_id_); 269 EXPECT_EQ(1u, visitor.header_stream_id_);
269 EXPECT_EQ(2u, visitor.promised_stream_id_); 270 EXPECT_EQ(2u, visitor.promised_stream_id_);
270 } 271 }
271 272
272 TEST_F(BufferedSpdyFramerTest, GoAwayDebugData) { 273 TEST_F(BufferedSpdyFramerTest, GoAwayDebugData) {
273 SpdyGoAwayIR go_ir(/*last_accepted_stream_id=*/2, ERROR_CODE_FRAME_SIZE_ERROR, 274 SpdyGoAwayIR go_ir(/*last_accepted_stream_id=*/2, ERROR_CODE_FRAME_SIZE_ERROR,
274 "foo"); 275 "foo");
275 BufferedSpdyFramer framer; 276 BufferedSpdyFramer framer((NetLogWithSource()));
276 SpdySerializedFrame goaway_frame = framer.SerializeFrame(go_ir); 277 SpdySerializedFrame goaway_frame = framer.SerializeFrame(go_ir);
277 278
278 TestBufferedSpdyVisitor visitor; 279 TestBufferedSpdyVisitor visitor;
279 visitor.SimulateInFramer(goaway_frame); 280 visitor.SimulateInFramer(goaway_frame);
280 EXPECT_EQ(0, visitor.error_count_); 281 EXPECT_EQ(0, visitor.error_count_);
281 EXPECT_EQ(1, visitor.goaway_count_); 282 EXPECT_EQ(1, visitor.goaway_count_);
282 EXPECT_EQ(2u, visitor.goaway_last_accepted_stream_id_); 283 EXPECT_EQ(2u, visitor.goaway_last_accepted_stream_id_);
283 EXPECT_EQ(ERROR_CODE_FRAME_SIZE_ERROR, visitor.goaway_error_code_); 284 EXPECT_EQ(ERROR_CODE_FRAME_SIZE_ERROR, visitor.goaway_error_code_);
284 EXPECT_EQ("foo", visitor.goaway_debug_data_); 285 EXPECT_EQ("foo", visitor.goaway_debug_data_);
285 } 286 }
286 287
287 // ALTSVC frame on stream 0 must have an origin. 288 // ALTSVC frame on stream 0 must have an origin.
288 TEST_F(BufferedSpdyFramerTest, OnAltSvcOnStreamZero) { 289 TEST_F(BufferedSpdyFramerTest, OnAltSvcOnStreamZero) {
289 const SpdyStreamId altsvc_stream_id(0); 290 const SpdyStreamId altsvc_stream_id(0);
290 SpdyAltSvcIR altsvc_ir(altsvc_stream_id); 291 SpdyAltSvcIR altsvc_ir(altsvc_stream_id);
291 SpdyAltSvcWireFormat::AlternativeService alternative_service( 292 SpdyAltSvcWireFormat::AlternativeService alternative_service(
292 "quic", "alternative.example.org", 443, 86400, 293 "quic", "alternative.example.org", 443, 86400,
293 SpdyAltSvcWireFormat::VersionVector()); 294 SpdyAltSvcWireFormat::VersionVector());
294 altsvc_ir.add_altsvc(alternative_service); 295 altsvc_ir.add_altsvc(alternative_service);
295 const char altsvc_origin[] = "https://www.example.org"; 296 const char altsvc_origin[] = "https://www.example.org";
296 altsvc_ir.set_origin(altsvc_origin); 297 altsvc_ir.set_origin(altsvc_origin);
297 BufferedSpdyFramer framer; 298 BufferedSpdyFramer framer((NetLogWithSource()));
298 SpdySerializedFrame altsvc_frame(framer.SerializeFrame(altsvc_ir)); 299 SpdySerializedFrame altsvc_frame(framer.SerializeFrame(altsvc_ir));
299 300
300 TestBufferedSpdyVisitor visitor; 301 TestBufferedSpdyVisitor visitor;
301 visitor.SimulateInFramer(altsvc_frame); 302 visitor.SimulateInFramer(altsvc_frame);
302 EXPECT_EQ(0, visitor.error_count_); 303 EXPECT_EQ(0, visitor.error_count_);
303 EXPECT_EQ(1, visitor.altsvc_count_); 304 EXPECT_EQ(1, visitor.altsvc_count_);
304 EXPECT_EQ(altsvc_stream_id, visitor.altsvc_stream_id_); 305 EXPECT_EQ(altsvc_stream_id, visitor.altsvc_stream_id_);
305 EXPECT_EQ(altsvc_origin, visitor.altsvc_origin_); 306 EXPECT_EQ(altsvc_origin, visitor.altsvc_origin_);
306 ASSERT_EQ(1u, visitor.altsvc_vector_.size()); 307 ASSERT_EQ(1u, visitor.altsvc_vector_.size());
307 EXPECT_EQ(alternative_service, visitor.altsvc_vector_[0]); 308 EXPECT_EQ(alternative_service, visitor.altsvc_vector_[0]);
308 } 309 }
309 310
310 // ALTSVC frame on a non-zero stream must not have an origin. 311 // ALTSVC frame on a non-zero stream must not have an origin.
311 TEST_F(BufferedSpdyFramerTest, OnAltSvcOnNonzeroStream) { 312 TEST_F(BufferedSpdyFramerTest, OnAltSvcOnNonzeroStream) {
312 const SpdyStreamId altsvc_stream_id(1); 313 const SpdyStreamId altsvc_stream_id(1);
313 SpdyAltSvcIR altsvc_ir(altsvc_stream_id); 314 SpdyAltSvcIR altsvc_ir(altsvc_stream_id);
314 SpdyAltSvcWireFormat::AlternativeService alternative_service( 315 SpdyAltSvcWireFormat::AlternativeService alternative_service(
315 "quic", "alternative.example.org", 443, 86400, 316 "quic", "alternative.example.org", 443, 86400,
316 SpdyAltSvcWireFormat::VersionVector()); 317 SpdyAltSvcWireFormat::VersionVector());
317 altsvc_ir.add_altsvc(alternative_service); 318 altsvc_ir.add_altsvc(alternative_service);
318 BufferedSpdyFramer framer; 319 BufferedSpdyFramer framer((NetLogWithSource()));
319 SpdySerializedFrame altsvc_frame(framer.SerializeFrame(altsvc_ir)); 320 SpdySerializedFrame altsvc_frame(framer.SerializeFrame(altsvc_ir));
320 321
321 TestBufferedSpdyVisitor visitor; 322 TestBufferedSpdyVisitor visitor;
322 visitor.SimulateInFramer(altsvc_frame); 323 visitor.SimulateInFramer(altsvc_frame);
323 EXPECT_EQ(0, visitor.error_count_); 324 EXPECT_EQ(0, visitor.error_count_);
324 EXPECT_EQ(1, visitor.altsvc_count_); 325 EXPECT_EQ(1, visitor.altsvc_count_);
325 EXPECT_EQ(altsvc_stream_id, visitor.altsvc_stream_id_); 326 EXPECT_EQ(altsvc_stream_id, visitor.altsvc_stream_id_);
326 EXPECT_TRUE(visitor.altsvc_origin_.empty()); 327 EXPECT_TRUE(visitor.altsvc_origin_.empty());
327 ASSERT_EQ(1u, visitor.altsvc_vector_.size()); 328 ASSERT_EQ(1u, visitor.altsvc_vector_.size());
328 EXPECT_EQ(alternative_service, visitor.altsvc_vector_[0]); 329 EXPECT_EQ(alternative_service, visitor.altsvc_vector_[0]);
329 } 330 }
330 331
331 } // namespace net 332 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698