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

Side by Side Diff: net/quic/quic_headers_stream_test.cc

Issue 1852423004: Implement SpdySerializedFrame move semantics. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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/quic/quic_headers_stream.cc ('k') | net/quic/spdy_utils.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/quic/quic_headers_stream.h" 5 #include "net/quic/quic_headers_stream.h"
6 6
7 #include "net/quic/quic_utils.h" 7 #include "net/quic/quic_utils.h"
8 #include "net/quic/spdy_utils.h" 8 #include "net/quic/spdy_utils.h"
9 #include "net/quic/test_tools/quic_connection_peer.h" 9 #include "net/quic/test_tools/quic_connection_peer.h"
10 #include "net/quic/test_tools/quic_spdy_session_peer.h" 10 #include "net/quic/test_tools/quic_spdy_session_peer.h"
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 } 315 }
316 } 316 }
317 } 317 }
318 318
319 TEST_P(QuicHeadersStreamTest, ProcessRawData) { 319 TEST_P(QuicHeadersStreamTest, ProcessRawData) {
320 for (QuicStreamId stream_id = kClientDataStreamId1; 320 for (QuicStreamId stream_id = kClientDataStreamId1;
321 stream_id < kClientDataStreamId3; stream_id += 2) { 321 stream_id < kClientDataStreamId3; stream_id += 2) {
322 for (bool fin : {false, true}) { 322 for (bool fin : {false, true}) {
323 for (SpdyPriority priority = 0; priority < 7; ++priority) { 323 for (SpdyPriority priority = 0; priority < 7; ++priority) {
324 // Replace with "WriteHeadersAndSaveData" 324 // Replace with "WriteHeadersAndSaveData"
325 scoped_ptr<SpdySerializedFrame> frame; 325 SpdySerializedFrame frame;
326 if (perspective() == Perspective::IS_SERVER) { 326 if (perspective() == Perspective::IS_SERVER) {
327 SpdyHeadersIR headers_frame(stream_id); 327 SpdyHeadersIR headers_frame(stream_id);
328 headers_frame.set_header_block(headers_); 328 headers_frame.set_header_block(headers_);
329 headers_frame.set_fin(fin); 329 headers_frame.set_fin(fin);
330 headers_frame.set_has_priority(true); 330 headers_frame.set_has_priority(true);
331 frame.reset(framer_->SerializeFrame(headers_frame)); 331 frame = framer_->SerializeFrame(headers_frame);
332 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)); 332 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0));
333 } else { 333 } else {
334 SpdyHeadersIR headers_frame(stream_id); 334 SpdyHeadersIR headers_frame(stream_id);
335 headers_frame.set_header_block(headers_); 335 headers_frame.set_header_block(headers_);
336 headers_frame.set_fin(fin); 336 headers_frame.set_fin(fin);
337 frame.reset(framer_->SerializeFrame(headers_frame)); 337 frame = framer_->SerializeFrame(headers_frame);
338 } 338 }
339 EXPECT_CALL(session_, OnStreamHeaders(stream_id, _)) 339 EXPECT_CALL(session_, OnStreamHeaders(stream_id, _))
340 .WillRepeatedly(WithArgs<1>(Invoke( 340 .WillRepeatedly(WithArgs<1>(Invoke(
341 this, &QuicHeadersStreamTest::SaveHeaderDataStringPiece))); 341 this, &QuicHeadersStreamTest::SaveHeaderDataStringPiece)));
342 EXPECT_CALL(session_, 342 EXPECT_CALL(session_,
343 OnStreamHeadersComplete(stream_id, fin, frame->size())); 343 OnStreamHeadersComplete(stream_id, fin, frame.size()));
344 stream_frame_.frame_buffer = frame->data(); 344 stream_frame_.frame_buffer = frame.data();
345 stream_frame_.frame_length = frame->size(); 345 stream_frame_.frame_length = frame.size();
346 headers_stream_->OnStreamFrame(stream_frame_); 346 headers_stream_->OnStreamFrame(stream_frame_);
347 stream_frame_.offset += frame->size(); 347 stream_frame_.offset += frame.size();
348 CheckHeaders(); 348 CheckHeaders();
349 } 349 }
350 } 350 }
351 } 351 }
352 } 352 }
353 353
354 TEST_P(QuicHeadersStreamTest, ProcessPushPromise) { 354 TEST_P(QuicHeadersStreamTest, ProcessPushPromise) {
355 if (perspective() == Perspective::IS_SERVER) 355 if (perspective() == Perspective::IS_SERVER)
356 return; 356 return;
357 for (QuicStreamId stream_id = kClientDataStreamId1; 357 for (QuicStreamId stream_id = kClientDataStreamId1;
358 stream_id < kClientDataStreamId3; stream_id += 2) { 358 stream_id < kClientDataStreamId3; stream_id += 2) {
359 QuicStreamId promised_stream_id = NextPromisedStreamId(); 359 QuicStreamId promised_stream_id = NextPromisedStreamId();
360 scoped_ptr<SpdySerializedFrame> frame;
361 SpdyPushPromiseIR push_promise(stream_id, promised_stream_id); 360 SpdyPushPromiseIR push_promise(stream_id, promised_stream_id);
362 push_promise.set_header_block(headers_); 361 push_promise.set_header_block(headers_);
363 frame.reset(framer_->SerializeFrame(push_promise)); 362 SpdySerializedFrame frame(framer_->SerializeFrame(push_promise));
364 if (perspective() == Perspective::IS_SERVER) { 363 if (perspective() == Perspective::IS_SERVER) {
365 EXPECT_CALL(*connection_, 364 EXPECT_CALL(*connection_,
366 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, 365 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA,
367 "PUSH_PROMISE not supported.", _)) 366 "PUSH_PROMISE not supported.", _))
368 .WillRepeatedly(InvokeWithoutArgs( 367 .WillRepeatedly(InvokeWithoutArgs(
369 this, &QuicHeadersStreamTest::TearDownLocalConnectionState)); 368 this, &QuicHeadersStreamTest::TearDownLocalConnectionState));
370 } else { 369 } else {
371 EXPECT_CALL(session_, OnPromiseHeaders(stream_id, _)) 370 EXPECT_CALL(session_, OnPromiseHeaders(stream_id, _))
372 .WillRepeatedly(WithArgs<1>( 371 .WillRepeatedly(WithArgs<1>(
373 Invoke(this, &QuicHeadersStreamTest::SaveHeaderDataStringPiece))); 372 Invoke(this, &QuicHeadersStreamTest::SaveHeaderDataStringPiece)));
374 EXPECT_CALL(session_, OnPromiseHeadersComplete( 373 EXPECT_CALL(session_, OnPromiseHeadersComplete(
375 stream_id, promised_stream_id, frame->size())); 374 stream_id, promised_stream_id, frame.size()));
376 } 375 }
377 stream_frame_.frame_buffer = frame->data(); 376 stream_frame_.frame_buffer = frame.data();
378 stream_frame_.frame_length = frame->size(); 377 stream_frame_.frame_length = frame.size();
379 headers_stream_->OnStreamFrame(stream_frame_); 378 headers_stream_->OnStreamFrame(stream_frame_);
380 if (perspective() == Perspective::IS_CLIENT) { 379 if (perspective() == Perspective::IS_CLIENT) {
381 stream_frame_.offset += frame->size(); 380 stream_frame_.offset += frame.size();
382 CheckHeaders(); 381 CheckHeaders();
383 } 382 }
384 } 383 }
385 } 384 }
386 385
387 TEST_P(QuicHeadersStreamTest, EmptyHeaderHOLBlockedTime) { 386 TEST_P(QuicHeadersStreamTest, EmptyHeaderHOLBlockedTime) {
388 EXPECT_CALL(session_, OnHeadersHeadOfLineBlocking(_)).Times(0); 387 EXPECT_CALL(session_, OnHeadersHeadOfLineBlocking(_)).Times(0);
389 testing::InSequence seq; 388 testing::InSequence seq;
390 bool fin = true; 389 bool fin = true;
391 for (int stream_num = 0; stream_num < 10; stream_num++) { 390 for (int stream_num = 0; stream_num < 10; stream_num++) {
392 QuicStreamId stream_id = QuicClientDataStreamId(stream_num); 391 QuicStreamId stream_id = QuicClientDataStreamId(stream_num);
393 // Replace with "WriteHeadersAndSaveData" 392 // Replace with "WriteHeadersAndSaveData"
394 scoped_ptr<SpdySerializedFrame> frame; 393 SpdySerializedFrame frame;
395 if (perspective() == Perspective::IS_SERVER) { 394 if (perspective() == Perspective::IS_SERVER) {
396 SpdyHeadersIR headers_frame(stream_id); 395 SpdyHeadersIR headers_frame(stream_id);
397 headers_frame.set_header_block(headers_); 396 headers_frame.set_header_block(headers_);
398 headers_frame.set_fin(fin); 397 headers_frame.set_fin(fin);
399 headers_frame.set_has_priority(true); 398 headers_frame.set_has_priority(true);
400 frame.reset(framer_->SerializeFrame(headers_frame)); 399 frame = framer_->SerializeFrame(headers_frame);
401 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)); 400 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0));
402 } else { 401 } else {
403 SpdyHeadersIR headers_frame(stream_id); 402 SpdyHeadersIR headers_frame(stream_id);
404 headers_frame.set_header_block(headers_); 403 headers_frame.set_header_block(headers_);
405 headers_frame.set_fin(fin); 404 headers_frame.set_fin(fin);
406 frame.reset(framer_->SerializeFrame(headers_frame)); 405 frame = framer_->SerializeFrame(headers_frame);
407 } 406 }
408 EXPECT_CALL(session_, OnStreamHeaders(stream_id, _)); 407 EXPECT_CALL(session_, OnStreamHeaders(stream_id, _));
409 EXPECT_CALL(session_, 408 EXPECT_CALL(session_,
410 OnStreamHeadersComplete(stream_id, fin, frame->size())); 409 OnStreamHeadersComplete(stream_id, fin, frame.size()));
411 stream_frame_.frame_buffer = frame->data(); 410 stream_frame_.frame_buffer = frame.data();
412 stream_frame_.frame_length = frame->size(); 411 stream_frame_.frame_length = frame.size();
413 headers_stream_->OnStreamFrame(stream_frame_); 412 headers_stream_->OnStreamFrame(stream_frame_);
414 connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1)); 413 connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1));
415 stream_frame_.offset += frame->size(); 414 stream_frame_.offset += frame.size();
416 } 415 }
417 } 416 }
418 417
419 TEST_P(QuicHeadersStreamTest, NonEmptyHeaderHOLBlockedTime) { 418 TEST_P(QuicHeadersStreamTest, NonEmptyHeaderHOLBlockedTime) {
420 QuicStreamId stream_id; 419 QuicStreamId stream_id;
421 bool fin = true; 420 bool fin = true;
422 QuicStreamFrame stream_frames[10]; 421 QuicStreamFrame stream_frames[10];
423 scoped_ptr<SpdySerializedFrame> frames[10]; 422 SpdySerializedFrame frames[10];
424 // First create all the frames in order 423 // First create all the frames in order
425 { 424 {
426 InSequence seq; 425 InSequence seq;
427 for (int stream_num = 0; stream_num < 10; ++stream_num) { 426 for (int stream_num = 0; stream_num < 10; ++stream_num) {
428 stream_id = QuicClientDataStreamId(stream_num); 427 stream_id = QuicClientDataStreamId(stream_num);
429 if (perspective() == Perspective::IS_SERVER) { 428 if (perspective() == Perspective::IS_SERVER) {
430 SpdyHeadersIR headers_frame(stream_id); 429 SpdyHeadersIR headers_frame(stream_id);
431 headers_frame.set_header_block(headers_); 430 headers_frame.set_header_block(headers_);
432 headers_frame.set_fin(fin); 431 headers_frame.set_fin(fin);
433 headers_frame.set_has_priority(true); 432 headers_frame.set_has_priority(true);
434 frames[stream_num].reset(framer_->SerializeFrame(headers_frame)); 433 frames[stream_num] = framer_->SerializeFrame(headers_frame);
435 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)).Times(1); 434 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)).Times(1);
436 } else { 435 } else {
437 SpdyHeadersIR headers_frame(stream_id); 436 SpdyHeadersIR headers_frame(stream_id);
438 headers_frame.set_header_block(headers_); 437 headers_frame.set_header_block(headers_);
439 headers_frame.set_fin(fin); 438 headers_frame.set_fin(fin);
440 frames[stream_num].reset(framer_->SerializeFrame(headers_frame)); 439 frames[stream_num] = framer_->SerializeFrame(headers_frame);
441 } 440 }
442 stream_frames[stream_num].stream_id = stream_frame_.stream_id; 441 stream_frames[stream_num].stream_id = stream_frame_.stream_id;
443 stream_frames[stream_num].offset = stream_frame_.offset; 442 stream_frames[stream_num].offset = stream_frame_.offset;
444 stream_frames[stream_num].frame_buffer = frames[stream_num]->data(); 443 stream_frames[stream_num].frame_buffer = frames[stream_num].data();
445 stream_frames[stream_num].frame_length = frames[stream_num]->size(); 444 stream_frames[stream_num].frame_length = frames[stream_num].size();
446 DVLOG(1) << "make frame for stream " << stream_num << " offset " 445 DVLOG(1) << "make frame for stream " << stream_num << " offset "
447 << stream_frames[stream_num].offset; 446 << stream_frames[stream_num].offset;
448 stream_frame_.offset += frames[stream_num]->size(); 447 stream_frame_.offset += frames[stream_num].size();
449 EXPECT_CALL(session_, OnStreamHeaders(stream_id, _)).Times(1); 448 EXPECT_CALL(session_, OnStreamHeaders(stream_id, _)).Times(1);
450 EXPECT_CALL(session_, OnStreamHeadersComplete(stream_id, fin, _)) 449 EXPECT_CALL(session_, OnStreamHeadersComplete(stream_id, fin, _))
451 .Times(1); 450 .Times(1);
452 } 451 }
453 } 452 }
454 453
455 // Actually writing the frames in reverse order will cause HOL blocking. 454 // Actually writing the frames in reverse order will cause HOL blocking.
456 EXPECT_CALL(session_, OnHeadersHeadOfLineBlocking(_)).Times(9); 455 EXPECT_CALL(session_, OnHeadersHeadOfLineBlocking(_)).Times(9);
457 456
458 for (int stream_num = 9; stream_num >= 0; --stream_num) { 457 for (int stream_num = 9; stream_num >= 0; --stream_num) {
459 DVLOG(1) << "OnStreamFrame for stream " << stream_num << " offset " 458 DVLOG(1) << "OnStreamFrame for stream " << stream_num << " offset "
460 << stream_frames[stream_num].offset; 459 << stream_frames[stream_num].offset;
461 headers_stream_->OnStreamFrame(stream_frames[stream_num]); 460 headers_stream_->OnStreamFrame(stream_frames[stream_num]);
462 connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1)); 461 connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1));
463 } 462 }
464 } 463 }
465 464
466 TEST_P(QuicHeadersStreamTest, ProcessLargeRawData) { 465 TEST_P(QuicHeadersStreamTest, ProcessLargeRawData) {
467 // We want to create a frame that is more than the SPDY Framer's max control 466 // We want to create a frame that is more than the SPDY Framer's max control
468 // frame size, which is 16K, but less than the HPACK decoders max decode 467 // frame size, which is 16K, but less than the HPACK decoders max decode
469 // buffer size, which is 32K. 468 // buffer size, which is 32K.
470 headers_["key0"] = string(1 << 13, '.'); 469 headers_["key0"] = string(1 << 13, '.');
471 headers_["key1"] = string(1 << 13, '.'); 470 headers_["key1"] = string(1 << 13, '.');
472 headers_["key2"] = string(1 << 13, '.'); 471 headers_["key2"] = string(1 << 13, '.');
473 for (QuicStreamId stream_id = kClientDataStreamId1; 472 for (QuicStreamId stream_id = kClientDataStreamId1;
474 stream_id < kClientDataStreamId3; stream_id += 2) { 473 stream_id < kClientDataStreamId3; stream_id += 2) {
475 for (bool fin : {false, true}) { 474 for (bool fin : {false, true}) {
476 for (SpdyPriority priority = 0; priority < 7; ++priority) { 475 for (SpdyPriority priority = 0; priority < 7; ++priority) {
477 // Replace with "WriteHeadersAndSaveData" 476 // Replace with "WriteHeadersAndSaveData"
478 scoped_ptr<SpdySerializedFrame> frame; 477 SpdySerializedFrame frame;
479 if (perspective() == Perspective::IS_SERVER) { 478 if (perspective() == Perspective::IS_SERVER) {
480 SpdyHeadersIR headers_frame(stream_id); 479 SpdyHeadersIR headers_frame(stream_id);
481 headers_frame.set_header_block(headers_); 480 headers_frame.set_header_block(headers_);
482 headers_frame.set_fin(fin); 481 headers_frame.set_fin(fin);
483 headers_frame.set_has_priority(true); 482 headers_frame.set_has_priority(true);
484 frame.reset(framer_->SerializeFrame(headers_frame)); 483 frame = framer_->SerializeFrame(headers_frame);
485 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)); 484 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0));
486 } else { 485 } else {
487 SpdyHeadersIR headers_frame(stream_id); 486 SpdyHeadersIR headers_frame(stream_id);
488 headers_frame.set_header_block(headers_); 487 headers_frame.set_header_block(headers_);
489 headers_frame.set_fin(fin); 488 headers_frame.set_fin(fin);
490 frame.reset(framer_->SerializeFrame(headers_frame)); 489 frame = framer_->SerializeFrame(headers_frame);
491 } 490 }
492 EXPECT_CALL(session_, OnStreamHeaders(stream_id, _)) 491 EXPECT_CALL(session_, OnStreamHeaders(stream_id, _))
493 .WillRepeatedly(WithArgs<1>(Invoke( 492 .WillRepeatedly(WithArgs<1>(Invoke(
494 this, &QuicHeadersStreamTest::SaveHeaderDataStringPiece))); 493 this, &QuicHeadersStreamTest::SaveHeaderDataStringPiece)));
495 EXPECT_CALL(session_, 494 EXPECT_CALL(session_,
496 OnStreamHeadersComplete(stream_id, fin, frame->size())); 495 OnStreamHeadersComplete(stream_id, fin, frame.size()));
497 stream_frame_.frame_buffer = frame->data(); 496 stream_frame_.frame_buffer = frame.data();
498 stream_frame_.frame_length = frame->size(); 497 stream_frame_.frame_length = frame.size();
499 headers_stream_->OnStreamFrame(stream_frame_); 498 headers_stream_->OnStreamFrame(stream_frame_);
500 stream_frame_.offset += frame->size(); 499 stream_frame_.offset += frame.size();
501 CheckHeaders(); 500 CheckHeaders();
502 } 501 }
503 } 502 }
504 } 503 }
505 } 504 }
506 505
507 TEST_P(QuicHeadersStreamTest, ProcessBadData) { 506 TEST_P(QuicHeadersStreamTest, ProcessBadData) {
508 const char kBadData[] = "blah blah blah"; 507 const char kBadData[] = "blah blah blah";
509 EXPECT_CALL(*connection_, 508 EXPECT_CALL(*connection_,
510 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, _, _)) 509 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, _, _))
511 .Times(::testing::AnyNumber()); 510 .Times(::testing::AnyNumber());
512 stream_frame_.frame_buffer = kBadData; 511 stream_frame_.frame_buffer = kBadData;
513 stream_frame_.frame_length = strlen(kBadData); 512 stream_frame_.frame_length = strlen(kBadData);
514 headers_stream_->OnStreamFrame(stream_frame_); 513 headers_stream_->OnStreamFrame(stream_frame_);
515 } 514 }
516 515
517 TEST_P(QuicHeadersStreamTest, ProcessSpdyDataFrame) { 516 TEST_P(QuicHeadersStreamTest, ProcessSpdyDataFrame) {
518 SpdyDataIR data(2, ""); 517 SpdyDataIR data(2, "");
519 scoped_ptr<SpdySerializedFrame> frame(framer_->SerializeFrame(data)); 518 SpdySerializedFrame frame(framer_->SerializeFrame(data));
520 EXPECT_CALL(*connection_, CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, 519 EXPECT_CALL(*connection_, CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA,
521 "SPDY DATA frame received.", _)) 520 "SPDY DATA frame received.", _))
522 .WillOnce(InvokeWithoutArgs( 521 .WillOnce(InvokeWithoutArgs(
523 this, &QuicHeadersStreamTest::TearDownLocalConnectionState)); 522 this, &QuicHeadersStreamTest::TearDownLocalConnectionState));
524 stream_frame_.frame_buffer = frame->data(); 523 stream_frame_.frame_buffer = frame.data();
525 stream_frame_.frame_length = frame->size(); 524 stream_frame_.frame_length = frame.size();
526 headers_stream_->OnStreamFrame(stream_frame_); 525 headers_stream_->OnStreamFrame(stream_frame_);
527 } 526 }
528 527
529 TEST_P(QuicHeadersStreamTest, ProcessSpdyRstStreamFrame) { 528 TEST_P(QuicHeadersStreamTest, ProcessSpdyRstStreamFrame) {
530 SpdyRstStreamIR data(2, RST_STREAM_PROTOCOL_ERROR); 529 SpdyRstStreamIR data(2, RST_STREAM_PROTOCOL_ERROR);
531 scoped_ptr<SpdySerializedFrame> frame(framer_->SerializeFrame(data)); 530 SpdySerializedFrame frame(framer_->SerializeFrame(data));
532 EXPECT_CALL(*connection_, 531 EXPECT_CALL(*connection_,
533 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, 532 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA,
534 "SPDY RST_STREAM frame received.", _)) 533 "SPDY RST_STREAM frame received.", _))
535 .WillOnce(InvokeWithoutArgs( 534 .WillOnce(InvokeWithoutArgs(
536 this, &QuicHeadersStreamTest::TearDownLocalConnectionState)); 535 this, &QuicHeadersStreamTest::TearDownLocalConnectionState));
537 stream_frame_.frame_buffer = frame->data(); 536 stream_frame_.frame_buffer = frame.data();
538 stream_frame_.frame_length = frame->size(); 537 stream_frame_.frame_length = frame.size();
539 headers_stream_->OnStreamFrame(stream_frame_); 538 headers_stream_->OnStreamFrame(stream_frame_);
540 } 539 }
541 540
542 TEST_P(QuicHeadersStreamTest, ProcessSpdySettingsFrame) { 541 TEST_P(QuicHeadersStreamTest, ProcessSpdySettingsFrame) {
543 SpdySettingsIR data; 542 SpdySettingsIR data;
544 data.AddSetting(SETTINGS_HEADER_TABLE_SIZE, true, true, 0); 543 data.AddSetting(SETTINGS_HEADER_TABLE_SIZE, true, true, 0);
545 scoped_ptr<SpdySerializedFrame> frame(framer_->SerializeFrame(data)); 544 SpdySerializedFrame frame(framer_->SerializeFrame(data));
546 EXPECT_CALL(*connection_, CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, 545 EXPECT_CALL(*connection_, CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA,
547 "SPDY SETTINGS frame received.", _)) 546 "SPDY SETTINGS frame received.", _))
548 .WillOnce(InvokeWithoutArgs( 547 .WillOnce(InvokeWithoutArgs(
549 this, &QuicHeadersStreamTest::TearDownLocalConnectionState)); 548 this, &QuicHeadersStreamTest::TearDownLocalConnectionState));
550 stream_frame_.frame_buffer = frame->data(); 549 stream_frame_.frame_buffer = frame.data();
551 stream_frame_.frame_length = frame->size(); 550 stream_frame_.frame_length = frame.size();
552 headers_stream_->OnStreamFrame(stream_frame_); 551 headers_stream_->OnStreamFrame(stream_frame_);
553 } 552 }
554 553
555 TEST_P(QuicHeadersStreamTest, ProcessSpdyPingFrame) { 554 TEST_P(QuicHeadersStreamTest, ProcessSpdyPingFrame) {
556 SpdyPingIR data(1); 555 SpdyPingIR data(1);
557 scoped_ptr<SpdySerializedFrame> frame(framer_->SerializeFrame(data)); 556 SpdySerializedFrame frame(framer_->SerializeFrame(data));
558 EXPECT_CALL(*connection_, CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, 557 EXPECT_CALL(*connection_, CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA,
559 "SPDY PING frame received.", _)) 558 "SPDY PING frame received.", _))
560 .WillOnce(InvokeWithoutArgs( 559 .WillOnce(InvokeWithoutArgs(
561 this, &QuicHeadersStreamTest::TearDownLocalConnectionState)); 560 this, &QuicHeadersStreamTest::TearDownLocalConnectionState));
562 stream_frame_.frame_buffer = frame->data(); 561 stream_frame_.frame_buffer = frame.data();
563 stream_frame_.frame_length = frame->size(); 562 stream_frame_.frame_length = frame.size();
564 headers_stream_->OnStreamFrame(stream_frame_); 563 headers_stream_->OnStreamFrame(stream_frame_);
565 } 564 }
566 565
567 TEST_P(QuicHeadersStreamTest, ProcessSpdyGoAwayFrame) { 566 TEST_P(QuicHeadersStreamTest, ProcessSpdyGoAwayFrame) {
568 SpdyGoAwayIR data(1, GOAWAY_PROTOCOL_ERROR, "go away"); 567 SpdyGoAwayIR data(1, GOAWAY_PROTOCOL_ERROR, "go away");
569 scoped_ptr<SpdySerializedFrame> frame(framer_->SerializeFrame(data)); 568 SpdySerializedFrame frame(framer_->SerializeFrame(data));
570 EXPECT_CALL(*connection_, CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, 569 EXPECT_CALL(*connection_, CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA,
571 "SPDY GOAWAY frame received.", _)) 570 "SPDY GOAWAY frame received.", _))
572 .WillOnce(InvokeWithoutArgs( 571 .WillOnce(InvokeWithoutArgs(
573 this, &QuicHeadersStreamTest::TearDownLocalConnectionState)); 572 this, &QuicHeadersStreamTest::TearDownLocalConnectionState));
574 stream_frame_.frame_buffer = frame->data(); 573 stream_frame_.frame_buffer = frame.data();
575 stream_frame_.frame_length = frame->size(); 574 stream_frame_.frame_length = frame.size();
576 headers_stream_->OnStreamFrame(stream_frame_); 575 headers_stream_->OnStreamFrame(stream_frame_);
577 } 576 }
578 577
579 TEST_P(QuicHeadersStreamTest, ProcessSpdyWindowUpdateFrame) { 578 TEST_P(QuicHeadersStreamTest, ProcessSpdyWindowUpdateFrame) {
580 SpdyWindowUpdateIR data(1, 1); 579 SpdyWindowUpdateIR data(1, 1);
581 scoped_ptr<SpdySerializedFrame> frame(framer_->SerializeFrame(data)); 580 SpdySerializedFrame frame(framer_->SerializeFrame(data));
582 EXPECT_CALL(*connection_, 581 EXPECT_CALL(*connection_,
583 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, 582 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA,
584 "SPDY WINDOW_UPDATE frame received.", _)) 583 "SPDY WINDOW_UPDATE frame received.", _))
585 .WillOnce(InvokeWithoutArgs( 584 .WillOnce(InvokeWithoutArgs(
586 this, &QuicHeadersStreamTest::TearDownLocalConnectionState)); 585 this, &QuicHeadersStreamTest::TearDownLocalConnectionState));
587 stream_frame_.frame_buffer = frame->data(); 586 stream_frame_.frame_buffer = frame.data();
588 stream_frame_.frame_length = frame->size(); 587 stream_frame_.frame_length = frame.size();
589 headers_stream_->OnStreamFrame(stream_frame_); 588 headers_stream_->OnStreamFrame(stream_frame_);
590 } 589 }
591 590
592 TEST_P(QuicHeadersStreamTest, NoConnectionLevelFlowControl) { 591 TEST_P(QuicHeadersStreamTest, NoConnectionLevelFlowControl) {
593 EXPECT_FALSE(ReliableQuicStreamPeer::StreamContributesToConnectionFlowControl( 592 EXPECT_FALSE(ReliableQuicStreamPeer::StreamContributesToConnectionFlowControl(
594 headers_stream_)); 593 headers_stream_));
595 } 594 }
596 595
597 } // namespace 596 } // namespace
598 } // namespace test 597 } // namespace test
599 } // namespace net 598 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_headers_stream.cc ('k') | net/quic/spdy_utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698