OLD | NEW |
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/quic/quic_http_stream.h" | 5 #include "net/quic/quic_http_stream.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 | 53 |
54 using testing::_; | 54 using testing::_; |
55 using testing::AnyNumber; | 55 using testing::AnyNumber; |
56 using testing::Return; | 56 using testing::Return; |
57 | 57 |
58 namespace net { | 58 namespace net { |
59 namespace test { | 59 namespace test { |
60 namespace { | 60 namespace { |
61 | 61 |
62 const char kUploadData[] = "Really nifty data!"; | 62 const char kUploadData[] = "Really nifty data!"; |
63 const char kDefaultServerHostName[] = "www.google.com"; | 63 const char kDefaultServerHostName[] = "www.example.org"; |
64 const uint16_t kDefaultServerPort = 80; | 64 const uint16_t kDefaultServerPort = 80; |
65 | 65 |
66 class TestQuicConnection : public QuicConnection { | 66 class TestQuicConnection : public QuicConnection { |
67 public: | 67 public: |
68 TestQuicConnection(const QuicVersionVector& versions, | 68 TestQuicConnection(const QuicVersionVector& versions, |
69 QuicConnectionId connection_id, | 69 QuicConnectionId connection_id, |
70 IPEndPoint address, | 70 IPEndPoint address, |
71 QuicChromiumConnectionHelper* helper, | 71 QuicChromiumConnectionHelper* helper, |
72 QuicPacketWriter* writer) | 72 QuicPacketWriter* writer) |
73 : QuicConnection(connection_id, | 73 : QuicConnection(connection_id, |
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
372 } | 372 } |
373 | 373 |
374 TEST_P(QuicHttpStreamTest, GetRequest) { | 374 TEST_P(QuicHttpStreamTest, GetRequest) { |
375 SetRequest("GET", "/", DEFAULT_PRIORITY); | 375 SetRequest("GET", "/", DEFAULT_PRIORITY); |
376 size_t spdy_request_header_frame_length; | 376 size_t spdy_request_header_frame_length; |
377 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, | 377 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, |
378 &spdy_request_header_frame_length)); | 378 &spdy_request_header_frame_length)); |
379 Initialize(); | 379 Initialize(); |
380 | 380 |
381 request_.method = "GET"; | 381 request_.method = "GET"; |
382 request_.url = GURL("http://www.google.com/"); | 382 request_.url = GURL("http://www.example.org/"); |
383 | 383 |
384 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 384 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
385 callback_.callback())); | 385 callback_.callback())); |
386 EXPECT_EQ(OK, | 386 EXPECT_EQ(OK, |
387 stream_->SendRequest(headers_, &response_, callback_.callback())); | 387 stream_->SendRequest(headers_, &response_, callback_.callback())); |
388 | 388 |
389 // Ack the request. | 389 // Ack the request. |
390 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 390 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
391 | 391 |
392 EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); | 392 EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); |
(...skipping 28 matching lines...) Expand all Loading... |
421 | 421 |
422 // Regression test for http://crbug.com/288128 | 422 // Regression test for http://crbug.com/288128 |
423 TEST_P(QuicHttpStreamTest, GetRequestLargeResponse) { | 423 TEST_P(QuicHttpStreamTest, GetRequestLargeResponse) { |
424 SetRequest("GET", "/", DEFAULT_PRIORITY); | 424 SetRequest("GET", "/", DEFAULT_PRIORITY); |
425 size_t spdy_request_headers_frame_length; | 425 size_t spdy_request_headers_frame_length; |
426 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, | 426 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, |
427 &spdy_request_headers_frame_length)); | 427 &spdy_request_headers_frame_length)); |
428 Initialize(); | 428 Initialize(); |
429 | 429 |
430 request_.method = "GET"; | 430 request_.method = "GET"; |
431 request_.url = GURL("http://www.google.com/"); | 431 request_.url = GURL("http://www.example.org/"); |
432 | 432 |
433 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 433 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
434 callback_.callback())); | 434 callback_.callback())); |
435 EXPECT_EQ(OK, | 435 EXPECT_EQ(OK, |
436 stream_->SendRequest(headers_, &response_, callback_.callback())); | 436 stream_->SendRequest(headers_, &response_, callback_.callback())); |
437 | 437 |
438 // Ack the request. | 438 // Ack the request. |
439 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 439 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
440 | 440 |
441 EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); | 441 EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); |
(...skipping 29 matching lines...) Expand all Loading... |
471 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length), | 471 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length), |
472 stream_->GetTotalReceivedBytes()); | 472 stream_->GetTotalReceivedBytes()); |
473 } | 473 } |
474 | 474 |
475 // Regression test for http://crbug.com/409101 | 475 // Regression test for http://crbug.com/409101 |
476 TEST_P(QuicHttpStreamTest, SessionClosedBeforeSendRequest) { | 476 TEST_P(QuicHttpStreamTest, SessionClosedBeforeSendRequest) { |
477 SetRequest("GET", "/", DEFAULT_PRIORITY); | 477 SetRequest("GET", "/", DEFAULT_PRIORITY); |
478 Initialize(); | 478 Initialize(); |
479 | 479 |
480 request_.method = "GET"; | 480 request_.method = "GET"; |
481 request_.url = GURL("http://www.google.com/"); | 481 request_.url = GURL("http://www.example.org/"); |
482 | 482 |
483 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 483 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
484 callback_.callback())); | 484 callback_.callback())); |
485 | 485 |
486 session_->connection()->CloseConnection(QUIC_NO_ERROR, true); | 486 session_->connection()->CloseConnection(QUIC_NO_ERROR, true); |
487 | 487 |
488 EXPECT_EQ(ERR_CONNECTION_CLOSED, | 488 EXPECT_EQ(ERR_CONNECTION_CLOSED, |
489 stream_->SendRequest(headers_, &response_, callback_.callback())); | 489 stream_->SendRequest(headers_, &response_, callback_.callback())); |
490 | 490 |
491 EXPECT_EQ(0, stream_->GetTotalSentBytes()); | 491 EXPECT_EQ(0, stream_->GetTotalSentBytes()); |
492 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); | 492 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); |
493 } | 493 } |
494 | 494 |
495 // Regression test for http://crbug.com/584441 | 495 // Regression test for http://crbug.com/584441 |
496 TEST_P(QuicHttpStreamTest, GetSSLInfoAfterSessionClosed) { | 496 TEST_P(QuicHttpStreamTest, GetSSLInfoAfterSessionClosed) { |
497 SetRequest("GET", "/", DEFAULT_PRIORITY); | 497 SetRequest("GET", "/", DEFAULT_PRIORITY); |
498 Initialize(); | 498 Initialize(); |
499 | 499 |
500 request_.method = "GET"; | 500 request_.method = "GET"; |
501 request_.url = GURL("http://www.google.com/"); | 501 request_.url = GURL("http://www.example.org/"); |
502 | 502 |
503 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 503 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
504 callback_.callback())); | 504 callback_.callback())); |
505 | 505 |
506 SSLInfo ssl_info; | 506 SSLInfo ssl_info; |
507 EXPECT_FALSE(ssl_info.is_valid()); | 507 EXPECT_FALSE(ssl_info.is_valid()); |
508 stream_->GetSSLInfo(&ssl_info); | 508 stream_->GetSSLInfo(&ssl_info); |
509 EXPECT_TRUE(ssl_info.is_valid()); | 509 EXPECT_TRUE(ssl_info.is_valid()); |
510 | 510 |
511 session_->connection()->CloseConnection(QUIC_NO_ERROR, true); | 511 session_->connection()->CloseConnection(QUIC_NO_ERROR, true); |
512 | 512 |
513 SSLInfo ssl_info2; | 513 SSLInfo ssl_info2; |
514 stream_->GetSSLInfo(&ssl_info2); | 514 stream_->GetSSLInfo(&ssl_info2); |
515 EXPECT_TRUE(ssl_info2.is_valid()); | 515 EXPECT_TRUE(ssl_info2.is_valid()); |
516 } | 516 } |
517 | 517 |
518 TEST_P(QuicHttpStreamTest, LogGranularQuicConnectionError) { | 518 TEST_P(QuicHttpStreamTest, LogGranularQuicConnectionError) { |
519 SetRequest("GET", "/", DEFAULT_PRIORITY); | 519 SetRequest("GET", "/", DEFAULT_PRIORITY); |
520 size_t spdy_request_headers_frame_length; | 520 size_t spdy_request_headers_frame_length; |
521 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, | 521 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, |
522 &spdy_request_headers_frame_length)); | 522 &spdy_request_headers_frame_length)); |
523 AddWrite(ConstructAckAndRstStreamPacket(2)); | 523 AddWrite(ConstructAckAndRstStreamPacket(2)); |
524 use_closing_stream_ = true; | 524 use_closing_stream_ = true; |
525 Initialize(); | 525 Initialize(); |
526 | 526 |
527 request_.method = "GET"; | 527 request_.method = "GET"; |
528 request_.url = GURL("http://www.google.com/"); | 528 request_.url = GURL("http://www.example.org/"); |
529 | 529 |
530 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 530 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
531 callback_.callback())); | 531 callback_.callback())); |
532 EXPECT_EQ(OK, | 532 EXPECT_EQ(OK, |
533 stream_->SendRequest(headers_, &response_, callback_.callback())); | 533 stream_->SendRequest(headers_, &response_, callback_.callback())); |
534 | 534 |
535 // Ack the request. | 535 // Ack the request. |
536 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 536 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
537 EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); | 537 EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); |
538 | 538 |
539 EXPECT_TRUE(QuicHttpStreamPeer::WasHandshakeConfirmed(stream_.get())); | 539 EXPECT_TRUE(QuicHttpStreamPeer::WasHandshakeConfirmed(stream_.get())); |
540 stream_->OnClose(QUIC_PEER_GOING_AWAY); | 540 stream_->OnClose(QUIC_PEER_GOING_AWAY); |
541 | 541 |
542 NetErrorDetails details; | 542 NetErrorDetails details; |
543 EXPECT_EQ(QUIC_NO_ERROR, details.quic_connection_error); | 543 EXPECT_EQ(QUIC_NO_ERROR, details.quic_connection_error); |
544 stream_->PopulateNetErrorDetails(&details); | 544 stream_->PopulateNetErrorDetails(&details); |
545 EXPECT_EQ(QUIC_PEER_GOING_AWAY, details.quic_connection_error); | 545 EXPECT_EQ(QUIC_PEER_GOING_AWAY, details.quic_connection_error); |
546 } | 546 } |
547 | 547 |
548 TEST_P(QuicHttpStreamTest, DoNotLogGranularQuicErrorIfHandshakeNotConfirmed) { | 548 TEST_P(QuicHttpStreamTest, DoNotLogGranularQuicErrorIfHandshakeNotConfirmed) { |
549 SetRequest("GET", "/", DEFAULT_PRIORITY); | 549 SetRequest("GET", "/", DEFAULT_PRIORITY); |
550 size_t spdy_request_headers_frame_length; | 550 size_t spdy_request_headers_frame_length; |
551 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, | 551 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, |
552 &spdy_request_headers_frame_length)); | 552 &spdy_request_headers_frame_length)); |
553 AddWrite(ConstructAckAndRstStreamPacket(2)); | 553 AddWrite(ConstructAckAndRstStreamPacket(2)); |
554 use_closing_stream_ = true; | 554 use_closing_stream_ = true; |
555 Initialize(); | 555 Initialize(); |
556 | 556 |
557 request_.method = "GET"; | 557 request_.method = "GET"; |
558 request_.url = GURL("http://www.google.com/"); | 558 request_.url = GURL("http://www.example.org/"); |
559 | 559 |
560 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 560 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
561 callback_.callback())); | 561 callback_.callback())); |
562 EXPECT_EQ(OK, | 562 EXPECT_EQ(OK, |
563 stream_->SendRequest(headers_, &response_, callback_.callback())); | 563 stream_->SendRequest(headers_, &response_, callback_.callback())); |
564 | 564 |
565 // Ack the request. | 565 // Ack the request. |
566 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 566 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
567 EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); | 567 EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); |
568 | 568 |
(...skipping 13 matching lines...) Expand all Loading... |
582 | 582 |
583 // Regression test for http://crbug.com/409871 | 583 // Regression test for http://crbug.com/409871 |
584 TEST_P(QuicHttpStreamTest, SessionClosedBeforeReadResponseHeaders) { | 584 TEST_P(QuicHttpStreamTest, SessionClosedBeforeReadResponseHeaders) { |
585 SetRequest("GET", "/", DEFAULT_PRIORITY); | 585 SetRequest("GET", "/", DEFAULT_PRIORITY); |
586 size_t spdy_request_headers_frame_length; | 586 size_t spdy_request_headers_frame_length; |
587 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, | 587 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, |
588 &spdy_request_headers_frame_length)); | 588 &spdy_request_headers_frame_length)); |
589 Initialize(); | 589 Initialize(); |
590 | 590 |
591 request_.method = "GET"; | 591 request_.method = "GET"; |
592 request_.url = GURL("http://www.google.com/"); | 592 request_.url = GURL("http://www.example.org/"); |
593 | 593 |
594 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 594 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
595 callback_.callback())); | 595 callback_.callback())); |
596 | 596 |
597 EXPECT_EQ(OK, | 597 EXPECT_EQ(OK, |
598 stream_->SendRequest(headers_, &response_, callback_.callback())); | 598 stream_->SendRequest(headers_, &response_, callback_.callback())); |
599 | 599 |
600 session_->connection()->CloseConnection(QUIC_NO_ERROR, true); | 600 session_->connection()->CloseConnection(QUIC_NO_ERROR, true); |
601 | 601 |
602 EXPECT_NE(OK, stream_->ReadResponseHeaders(callback_.callback())); | 602 EXPECT_NE(OK, stream_->ReadResponseHeaders(callback_.callback())); |
(...skipping 13 matching lines...) Expand all Loading... |
616 AddWrite(ConstructDataPacket(2, kIncludeVersion, kFin, 0, kUploadData)); | 616 AddWrite(ConstructDataPacket(2, kIncludeVersion, kFin, 0, kUploadData)); |
617 AddWrite(ConstructAckPacket(3, 3, 1)); | 617 AddWrite(ConstructAckPacket(3, 3, 1)); |
618 | 618 |
619 Initialize(); | 619 Initialize(); |
620 | 620 |
621 std::vector<scoped_ptr<UploadElementReader>> element_readers; | 621 std::vector<scoped_ptr<UploadElementReader>> element_readers; |
622 element_readers.push_back(make_scoped_ptr( | 622 element_readers.push_back(make_scoped_ptr( |
623 new UploadBytesElementReader(kUploadData, strlen(kUploadData)))); | 623 new UploadBytesElementReader(kUploadData, strlen(kUploadData)))); |
624 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 0); | 624 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 0); |
625 request_.method = "POST"; | 625 request_.method = "POST"; |
626 request_.url = GURL("http://www.google.com/"); | 626 request_.url = GURL("http://www.example.org/"); |
627 request_.upload_data_stream = &upload_data_stream; | 627 request_.upload_data_stream = &upload_data_stream; |
628 ASSERT_EQ(OK, request_.upload_data_stream->Init(CompletionCallback())); | 628 ASSERT_EQ(OK, request_.upload_data_stream->Init(CompletionCallback())); |
629 | 629 |
630 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 630 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
631 callback_.callback())); | 631 callback_.callback())); |
632 EXPECT_EQ(OK, | 632 EXPECT_EQ(OK, |
633 stream_->SendRequest(headers_, &response_, callback_.callback())); | 633 stream_->SendRequest(headers_, &response_, callback_.callback())); |
634 | 634 |
635 // Ack both packets in the request. | 635 // Ack both packets in the request. |
636 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 636 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
678 AddWrite(ConstructDataPacket(2, kIncludeVersion, !kFin, 0, kUploadData)); | 678 AddWrite(ConstructDataPacket(2, kIncludeVersion, !kFin, 0, kUploadData)); |
679 AddWrite( | 679 AddWrite( |
680 ConstructDataPacket(3, kIncludeVersion, kFin, chunk_size, kUploadData)); | 680 ConstructDataPacket(3, kIncludeVersion, kFin, chunk_size, kUploadData)); |
681 AddWrite(ConstructAckPacket(4, 3, 1)); | 681 AddWrite(ConstructAckPacket(4, 3, 1)); |
682 Initialize(); | 682 Initialize(); |
683 | 683 |
684 ChunkedUploadDataStream upload_data_stream(0); | 684 ChunkedUploadDataStream upload_data_stream(0); |
685 upload_data_stream.AppendData(kUploadData, chunk_size, false); | 685 upload_data_stream.AppendData(kUploadData, chunk_size, false); |
686 | 686 |
687 request_.method = "POST"; | 687 request_.method = "POST"; |
688 request_.url = GURL("http://www.google.com/"); | 688 request_.url = GURL("http://www.example.org/"); |
689 request_.upload_data_stream = &upload_data_stream; | 689 request_.upload_data_stream = &upload_data_stream; |
690 ASSERT_EQ(OK, request_.upload_data_stream->Init( | 690 ASSERT_EQ(OK, request_.upload_data_stream->Init( |
691 TestCompletionCallback().callback())); | 691 TestCompletionCallback().callback())); |
692 | 692 |
693 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 693 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
694 callback_.callback())); | 694 callback_.callback())); |
695 ASSERT_EQ(ERR_IO_PENDING, | 695 ASSERT_EQ(ERR_IO_PENDING, |
696 stream_->SendRequest(headers_, &response_, callback_.callback())); | 696 stream_->SendRequest(headers_, &response_, callback_.callback())); |
697 | 697 |
698 upload_data_stream.AppendData(kUploadData, chunk_size, true); | 698 upload_data_stream.AppendData(kUploadData, chunk_size, true); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
745 &spdy_request_headers_frame_length)); | 745 &spdy_request_headers_frame_length)); |
746 AddWrite(ConstructDataPacket(2, kIncludeVersion, !kFin, 0, kUploadData)); | 746 AddWrite(ConstructDataPacket(2, kIncludeVersion, !kFin, 0, kUploadData)); |
747 AddWrite(ConstructDataPacket(3, kIncludeVersion, kFin, chunk_size, "")); | 747 AddWrite(ConstructDataPacket(3, kIncludeVersion, kFin, chunk_size, "")); |
748 AddWrite(ConstructAckPacket(4, 3, 1)); | 748 AddWrite(ConstructAckPacket(4, 3, 1)); |
749 Initialize(); | 749 Initialize(); |
750 | 750 |
751 ChunkedUploadDataStream upload_data_stream(0); | 751 ChunkedUploadDataStream upload_data_stream(0); |
752 upload_data_stream.AppendData(kUploadData, chunk_size, false); | 752 upload_data_stream.AppendData(kUploadData, chunk_size, false); |
753 | 753 |
754 request_.method = "POST"; | 754 request_.method = "POST"; |
755 request_.url = GURL("http://www.google.com/"); | 755 request_.url = GURL("http://www.example.org/"); |
756 request_.upload_data_stream = &upload_data_stream; | 756 request_.upload_data_stream = &upload_data_stream; |
757 ASSERT_EQ(OK, request_.upload_data_stream->Init( | 757 ASSERT_EQ(OK, request_.upload_data_stream->Init( |
758 TestCompletionCallback().callback())); | 758 TestCompletionCallback().callback())); |
759 | 759 |
760 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 760 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
761 callback_.callback())); | 761 callback_.callback())); |
762 ASSERT_EQ(ERR_IO_PENDING, | 762 ASSERT_EQ(ERR_IO_PENDING, |
763 stream_->SendRequest(headers_, &response_, callback_.callback())); | 763 stream_->SendRequest(headers_, &response_, callback_.callback())); |
764 | 764 |
765 upload_data_stream.AppendData(nullptr, 0, true); | 765 upload_data_stream.AppendData(nullptr, 0, true); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
807 size_t spdy_request_headers_frame_length; | 807 size_t spdy_request_headers_frame_length; |
808 AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY, | 808 AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY, |
809 &spdy_request_headers_frame_length)); | 809 &spdy_request_headers_frame_length)); |
810 AddWrite(ConstructDataPacket(2, kIncludeVersion, kFin, 0, "")); | 810 AddWrite(ConstructDataPacket(2, kIncludeVersion, kFin, 0, "")); |
811 AddWrite(ConstructAckPacket(3, 3, 1)); | 811 AddWrite(ConstructAckPacket(3, 3, 1)); |
812 Initialize(); | 812 Initialize(); |
813 | 813 |
814 ChunkedUploadDataStream upload_data_stream(0); | 814 ChunkedUploadDataStream upload_data_stream(0); |
815 | 815 |
816 request_.method = "POST"; | 816 request_.method = "POST"; |
817 request_.url = GURL("http://www.google.com/"); | 817 request_.url = GURL("http://www.example.org/"); |
818 request_.upload_data_stream = &upload_data_stream; | 818 request_.upload_data_stream = &upload_data_stream; |
819 ASSERT_EQ(OK, request_.upload_data_stream->Init( | 819 ASSERT_EQ(OK, request_.upload_data_stream->Init( |
820 TestCompletionCallback().callback())); | 820 TestCompletionCallback().callback())); |
821 | 821 |
822 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 822 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
823 callback_.callback())); | 823 callback_.callback())); |
824 ASSERT_EQ(ERR_IO_PENDING, | 824 ASSERT_EQ(ERR_IO_PENDING, |
825 stream_->SendRequest(headers_, &response_, callback_.callback())); | 825 stream_->SendRequest(headers_, &response_, callback_.callback())); |
826 | 826 |
827 upload_data_stream.AppendData(nullptr, 0, true); | 827 upload_data_stream.AppendData(nullptr, 0, true); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
867 TEST_P(QuicHttpStreamTest, DestroyedEarly) { | 867 TEST_P(QuicHttpStreamTest, DestroyedEarly) { |
868 SetRequest("GET", "/", DEFAULT_PRIORITY); | 868 SetRequest("GET", "/", DEFAULT_PRIORITY); |
869 size_t spdy_request_headers_frame_length; | 869 size_t spdy_request_headers_frame_length; |
870 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, | 870 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY, |
871 &spdy_request_headers_frame_length)); | 871 &spdy_request_headers_frame_length)); |
872 AddWrite(ConstructAckAndRstStreamPacket(2)); | 872 AddWrite(ConstructAckAndRstStreamPacket(2)); |
873 use_closing_stream_ = true; | 873 use_closing_stream_ = true; |
874 Initialize(); | 874 Initialize(); |
875 | 875 |
876 request_.method = "GET"; | 876 request_.method = "GET"; |
877 request_.url = GURL("http://www.google.com/"); | 877 request_.url = GURL("http://www.example.org/"); |
878 | 878 |
879 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 879 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
880 callback_.callback())); | 880 callback_.callback())); |
881 EXPECT_EQ(OK, | 881 EXPECT_EQ(OK, |
882 stream_->SendRequest(headers_, &response_, callback_.callback())); | 882 stream_->SendRequest(headers_, &response_, callback_.callback())); |
883 | 883 |
884 // Ack the request. | 884 // Ack the request. |
885 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 885 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
886 EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); | 886 EXPECT_EQ(ERR_IO_PENDING, stream_->ReadResponseHeaders(callback_.callback())); |
887 | 887 |
(...skipping 17 matching lines...) Expand all Loading... |
905 TEST_P(QuicHttpStreamTest, Priority) { | 905 TEST_P(QuicHttpStreamTest, Priority) { |
906 SetRequest("GET", "/", MEDIUM); | 906 SetRequest("GET", "/", MEDIUM); |
907 size_t spdy_request_headers_frame_length; | 907 size_t spdy_request_headers_frame_length; |
908 AddWrite(ConstructRequestHeadersPacket(1, kFin, MEDIUM, | 908 AddWrite(ConstructRequestHeadersPacket(1, kFin, MEDIUM, |
909 &spdy_request_headers_frame_length)); | 909 &spdy_request_headers_frame_length)); |
910 AddWrite(ConstructAckAndRstStreamPacket(2)); | 910 AddWrite(ConstructAckAndRstStreamPacket(2)); |
911 use_closing_stream_ = true; | 911 use_closing_stream_ = true; |
912 Initialize(); | 912 Initialize(); |
913 | 913 |
914 request_.method = "GET"; | 914 request_.method = "GET"; |
915 request_.url = GURL("http://www.google.com/"); | 915 request_.url = GURL("http://www.example.org/"); |
916 | 916 |
917 EXPECT_EQ(OK, stream_->InitializeStream(&request_, MEDIUM, net_log_, | 917 EXPECT_EQ(OK, stream_->InitializeStream(&request_, MEDIUM, net_log_, |
918 callback_.callback())); | 918 callback_.callback())); |
919 | 919 |
920 // Check that priority is highest. | 920 // Check that priority is highest. |
921 QuicChromiumClientStream* reliable_stream = | 921 QuicChromiumClientStream* reliable_stream = |
922 QuicHttpStreamPeer::GetQuicChromiumClientStream(stream_.get()); | 922 QuicHttpStreamPeer::GetQuicChromiumClientStream(stream_.get()); |
923 DCHECK(reliable_stream); | 923 DCHECK(reliable_stream); |
924 DCHECK_EQ(kV3HighestPriority, reliable_stream->Priority()); | 924 DCHECK_EQ(kV3HighestPriority, reliable_stream->Priority()); |
925 | 925 |
(...skipping 28 matching lines...) Expand all Loading... |
954 // Regression test for http://crbug.com/294870 | 954 // Regression test for http://crbug.com/294870 |
955 TEST_P(QuicHttpStreamTest, CheckPriorityWithNoDelegate) { | 955 TEST_P(QuicHttpStreamTest, CheckPriorityWithNoDelegate) { |
956 SetRequest("GET", "/", MEDIUM); | 956 SetRequest("GET", "/", MEDIUM); |
957 use_closing_stream_ = true; | 957 use_closing_stream_ = true; |
958 | 958 |
959 AddWrite(ConstructRstStreamPacket(1)); | 959 AddWrite(ConstructRstStreamPacket(1)); |
960 | 960 |
961 Initialize(); | 961 Initialize(); |
962 | 962 |
963 request_.method = "GET"; | 963 request_.method = "GET"; |
964 request_.url = GURL("http://www.google.com/"); | 964 request_.url = GURL("http://www.example.org/"); |
965 | 965 |
966 EXPECT_EQ(OK, stream_->InitializeStream(&request_, MEDIUM, net_log_, | 966 EXPECT_EQ(OK, stream_->InitializeStream(&request_, MEDIUM, net_log_, |
967 callback_.callback())); | 967 callback_.callback())); |
968 | 968 |
969 // Check that priority is highest. | 969 // Check that priority is highest. |
970 QuicChromiumClientStream* reliable_stream = | 970 QuicChromiumClientStream* reliable_stream = |
971 QuicHttpStreamPeer::GetQuicChromiumClientStream(stream_.get()); | 971 QuicHttpStreamPeer::GetQuicChromiumClientStream(stream_.get()); |
972 DCHECK(reliable_stream); | 972 DCHECK(reliable_stream); |
973 QuicChromiumClientStream::Delegate* delegate = reliable_stream->GetDelegate(); | 973 QuicChromiumClientStream::Delegate* delegate = reliable_stream->GetDelegate(); |
974 DCHECK(delegate); | 974 DCHECK(delegate); |
(...skipping 10 matching lines...) Expand all Loading... |
985 } | 985 } |
986 | 986 |
987 TEST_P(QuicHttpStreamTest, SessionClosedBeforeSendHeadersComplete) { | 987 TEST_P(QuicHttpStreamTest, SessionClosedBeforeSendHeadersComplete) { |
988 SetRequest("POST", "/", DEFAULT_PRIORITY); | 988 SetRequest("POST", "/", DEFAULT_PRIORITY); |
989 AddWrite(SYNCHRONOUS, ERR_FAILED); | 989 AddWrite(SYNCHRONOUS, ERR_FAILED); |
990 Initialize(); | 990 Initialize(); |
991 | 991 |
992 ChunkedUploadDataStream upload_data_stream(0); | 992 ChunkedUploadDataStream upload_data_stream(0); |
993 | 993 |
994 request_.method = "POST"; | 994 request_.method = "POST"; |
995 request_.url = GURL("http://www.google.com/"); | 995 request_.url = GURL("http://www.example.org/"); |
996 request_.upload_data_stream = &upload_data_stream; | 996 request_.upload_data_stream = &upload_data_stream; |
997 ASSERT_EQ(OK, request_.upload_data_stream->Init( | 997 ASSERT_EQ(OK, request_.upload_data_stream->Init( |
998 TestCompletionCallback().callback())); | 998 TestCompletionCallback().callback())); |
999 | 999 |
1000 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 1000 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
1001 callback_.callback())); | 1001 callback_.callback())); |
1002 ASSERT_EQ(ERR_QUIC_PROTOCOL_ERROR, | 1002 ASSERT_EQ(ERR_QUIC_PROTOCOL_ERROR, |
1003 stream_->SendRequest(headers_, &response_, callback_.callback())); | 1003 stream_->SendRequest(headers_, &response_, callback_.callback())); |
1004 } | 1004 } |
1005 | 1005 |
1006 TEST_P(QuicHttpStreamTest, SessionClosedBeforeSendBodyComplete) { | 1006 TEST_P(QuicHttpStreamTest, SessionClosedBeforeSendBodyComplete) { |
1007 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1007 SetRequest("POST", "/", DEFAULT_PRIORITY); |
1008 size_t spdy_request_headers_frame_length; | 1008 size_t spdy_request_headers_frame_length; |
1009 AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY, | 1009 AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY, |
1010 &spdy_request_headers_frame_length)); | 1010 &spdy_request_headers_frame_length)); |
1011 AddWrite(SYNCHRONOUS, ERR_FAILED); | 1011 AddWrite(SYNCHRONOUS, ERR_FAILED); |
1012 Initialize(); | 1012 Initialize(); |
1013 | 1013 |
1014 ChunkedUploadDataStream upload_data_stream(0); | 1014 ChunkedUploadDataStream upload_data_stream(0); |
1015 size_t chunk_size = strlen(kUploadData); | 1015 size_t chunk_size = strlen(kUploadData); |
1016 upload_data_stream.AppendData(kUploadData, chunk_size, false); | 1016 upload_data_stream.AppendData(kUploadData, chunk_size, false); |
1017 | 1017 |
1018 request_.method = "POST"; | 1018 request_.method = "POST"; |
1019 request_.url = GURL("http://www.google.com/"); | 1019 request_.url = GURL("http://www.example.org/"); |
1020 request_.upload_data_stream = &upload_data_stream; | 1020 request_.upload_data_stream = &upload_data_stream; |
1021 ASSERT_EQ(OK, request_.upload_data_stream->Init( | 1021 ASSERT_EQ(OK, request_.upload_data_stream->Init( |
1022 TestCompletionCallback().callback())); | 1022 TestCompletionCallback().callback())); |
1023 | 1023 |
1024 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, | 1024 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_, |
1025 callback_.callback())); | 1025 callback_.callback())); |
1026 ASSERT_EQ(ERR_QUIC_PROTOCOL_ERROR, | 1026 ASSERT_EQ(ERR_QUIC_PROTOCOL_ERROR, |
1027 stream_->SendRequest(headers_, &response_, callback_.callback())); | 1027 stream_->SendRequest(headers_, &response_, callback_.callback())); |
1028 } | 1028 } |
1029 | 1029 |
1030 } // namespace test | 1030 } // namespace test |
1031 } // namespace net | 1031 } // namespace net |
OLD | NEW |