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

Side by Side Diff: net/quic/chromium/quic_http_stream_test.cc

Issue 2856243003: Revert of Landing Recent QUIC changes until Sat Apr 29 00:22:04 2017 +0000 (Closed)
Patch Set: 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/quic/chromium/quic_http_stream.h" 5 #include "net/quic/chromium/quic_http_stream.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 #include "net/quic/core/crypto/quic_decrypter.h" 42 #include "net/quic/core/crypto/quic_decrypter.h"
43 #include "net/quic/core/crypto/quic_encrypter.h" 43 #include "net/quic/core/crypto/quic_encrypter.h"
44 #include "net/quic/core/quic_connection.h" 44 #include "net/quic/core/quic_connection.h"
45 #include "net/quic/core/quic_write_blocked_list.h" 45 #include "net/quic/core/quic_write_blocked_list.h"
46 #include "net/quic/core/spdy_utils.h" 46 #include "net/quic/core/spdy_utils.h"
47 #include "net/quic/platform/api/quic_string_piece.h" 47 #include "net/quic/platform/api/quic_string_piece.h"
48 #include "net/quic/test_tools/crypto_test_utils.h" 48 #include "net/quic/test_tools/crypto_test_utils.h"
49 #include "net/quic/test_tools/mock_clock.h" 49 #include "net/quic/test_tools/mock_clock.h"
50 #include "net/quic/test_tools/mock_random.h" 50 #include "net/quic/test_tools/mock_random.h"
51 #include "net/quic/test_tools/quic_connection_peer.h" 51 #include "net/quic/test_tools/quic_connection_peer.h"
52 #include "net/quic/test_tools/quic_spdy_session_peer.h"
53 #include "net/quic/test_tools/quic_test_utils.h" 52 #include "net/quic/test_tools/quic_test_utils.h"
54 #include "net/socket/socket_performance_watcher.h" 53 #include "net/socket/socket_performance_watcher.h"
55 #include "net/socket/socket_test_util.h" 54 #include "net/socket/socket_test_util.h"
56 #include "net/spdy/chromium/spdy_http_utils.h" 55 #include "net/spdy/chromium/spdy_http_utils.h"
57 #include "net/spdy/core/spdy_frame_builder.h" 56 #include "net/spdy/core/spdy_frame_builder.h"
58 #include "net/spdy/core/spdy_framer.h" 57 #include "net/spdy/core/spdy_framer.h"
59 #include "net/spdy/core/spdy_protocol.h" 58 #include "net/spdy/core/spdy_protocol.h"
60 #include "net/test/cert_test_util.h" 59 #include "net/test/cert_test_util.h"
61 #include "net/test/gtest_util.h" 60 #include "net/test/gtest_util.h"
62 #include "net/test/test_data_directory.h" 61 #include "net/test/test_data_directory.h"
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 PacketToWrite(IoMode mode, int rv) : mode(mode), packet(nullptr), rv(rv) {} 192 PacketToWrite(IoMode mode, int rv) : mode(mode), packet(nullptr), rv(rv) {}
194 IoMode mode; 193 IoMode mode;
195 QuicReceivedPacket* packet; 194 QuicReceivedPacket* packet;
196 int rv; 195 int rv;
197 }; 196 };
198 197
199 QuicHttpStreamTest() 198 QuicHttpStreamTest()
200 : use_closing_stream_(false), 199 : use_closing_stream_(false),
201 crypto_config_(crypto_test_utils::ProofVerifierForTesting()), 200 crypto_config_(crypto_test_utils::ProofVerifierForTesting()),
202 read_buffer_(new IOBufferWithSize(4096)), 201 read_buffer_(new IOBufferWithSize(4096)),
203 promise_id_(GetNthServerInitiatedStreamId(0)), 202 promise_id_(kServerDataStreamId1),
204 stream_id_(GetNthClientInitiatedStreamId(0)), 203 stream_id_(kClientDataStreamId1),
205 connection_id_(2), 204 connection_id_(2),
206 client_maker_(GetParam(), 205 client_maker_(GetParam(),
207 connection_id_, 206 connection_id_,
208 &clock_, 207 &clock_,
209 kDefaultServerHostName, 208 kDefaultServerHostName,
210 Perspective::IS_CLIENT), 209 Perspective::IS_CLIENT),
211 server_maker_(GetParam(), 210 server_maker_(GetParam(),
212 connection_id_, 211 connection_id_,
213 &clock_, 212 &clock_,
214 kDefaultServerHostName, 213 kDefaultServerHostName,
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 if (session_reused) { 541 if (session_reused) {
543 ExpectConnectTimingHasNoTimes(load_timing_info.connect_timing); 542 ExpectConnectTimingHasNoTimes(load_timing_info.connect_timing);
544 } else { 543 } else {
545 ExpectConnectTimingHasTimes( 544 ExpectConnectTimingHasTimes(
546 load_timing_info.connect_timing, 545 load_timing_info.connect_timing,
547 CONNECT_TIMING_HAS_SSL_TIMES | CONNECT_TIMING_HAS_DNS_TIMES); 546 CONNECT_TIMING_HAS_SSL_TIMES | CONNECT_TIMING_HAS_DNS_TIMES);
548 } 547 }
549 ExpectLoadTimingHasOnlyConnectionTimes(load_timing_info); 548 ExpectLoadTimingHasOnlyConnectionTimes(load_timing_info);
550 } 549 }
551 550
552 QuicStreamId GetNthClientInitiatedStreamId(int n) {
553 return QuicSpdySessionPeer::GetNthClientInitiatedStreamId(*session_, n);
554 }
555
556 QuicStreamId GetNthServerInitiatedStreamId(int n) {
557 return QuicSpdySessionPeer::GetNthServerInitiatedStreamId(*session_, n);
558 }
559
560 BoundTestNetLog net_log_; 551 BoundTestNetLog net_log_;
561 bool use_closing_stream_; 552 bool use_closing_stream_;
562 MockSendAlgorithm* send_algorithm_; 553 MockSendAlgorithm* send_algorithm_;
563 scoped_refptr<TestTaskRunner> runner_; 554 scoped_refptr<TestTaskRunner> runner_;
564 std::unique_ptr<MockWrite[]> mock_writes_; 555 std::unique_ptr<MockWrite[]> mock_writes_;
565 MockClock clock_; 556 MockClock clock_;
566 HttpServerPropertiesImpl http_server_properties_; 557 HttpServerPropertiesImpl http_server_properties_;
567 TestQuicConnection* connection_; 558 TestQuicConnection* connection_;
568 std::unique_ptr<QuicChromiumConnectionHelper> helper_; 559 std::unique_ptr<QuicChromiumConnectionHelper> helper_;
569 std::unique_ptr<QuicChromiumAlarmFactory> alarm_factory_; 560 std::unique_ptr<QuicChromiumAlarmFactory> alarm_factory_;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
629 QuicHttpStreamPeer::GetQuicChromiumClientStream(stream_.get()); 620 QuicHttpStreamPeer::GetQuicChromiumClientStream(stream_.get());
630 EXPECT_FALSE(client_stream->can_migrate()); 621 EXPECT_FALSE(client_stream->can_migrate());
631 } 622 }
632 623
633 TEST_P(QuicHttpStreamTest, GetRequest) { 624 TEST_P(QuicHttpStreamTest, GetRequest) {
634 SetRequest("GET", "/", DEFAULT_PRIORITY); 625 SetRequest("GET", "/", DEFAULT_PRIORITY);
635 size_t spdy_request_header_frame_length; 626 size_t spdy_request_header_frame_length;
636 QuicStreamOffset header_stream_offset = 0; 627 QuicStreamOffset header_stream_offset = 0;
637 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); 628 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset));
638 AddWrite(InnerConstructRequestHeadersPacket( 629 AddWrite(InnerConstructRequestHeadersPacket(
639 2, GetNthClientInitiatedStreamId(0), kIncludeVersion, kFin, 630 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY,
640 DEFAULT_PRIORITY, &spdy_request_header_frame_length, 631 &spdy_request_header_frame_length, &header_stream_offset));
641 &header_stream_offset));
642 632
643 Initialize(); 633 Initialize();
644 634
645 request_.method = "GET"; 635 request_.method = "GET";
646 request_.url = GURL("https://www.example.org/"); 636 request_.url = GURL("https://www.example.org/");
647 637
648 // Make sure getting load timing from the stream early does not crash. 638 // Make sure getting load timing from the stream early does not crash.
649 LoadTimingInfo load_timing_info; 639 LoadTimingInfo load_timing_info;
650 EXPECT_TRUE(stream_->GetLoadTimingInfo(&load_timing_info)); 640 EXPECT_TRUE(stream_->GetLoadTimingInfo(&load_timing_info));
651 641
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 stream_->GetTotalReceivedBytes()); 682 stream_->GetTotalReceivedBytes());
693 } 683 }
694 684
695 TEST_P(QuicHttpStreamTest, LoadTimingTwoRequests) { 685 TEST_P(QuicHttpStreamTest, LoadTimingTwoRequests) {
696 SetRequest("GET", "/", DEFAULT_PRIORITY); 686 SetRequest("GET", "/", DEFAULT_PRIORITY);
697 size_t spdy_request_header_frame_length; 687 size_t spdy_request_header_frame_length;
698 688
699 QuicStreamOffset offset = 0; 689 QuicStreamOffset offset = 0;
700 AddWrite(ConstructInitialSettingsPacket(&offset)); 690 AddWrite(ConstructInitialSettingsPacket(&offset));
701 AddWrite(InnerConstructRequestHeadersPacket( 691 AddWrite(InnerConstructRequestHeadersPacket(
702 2, GetNthClientInitiatedStreamId(0), kIncludeVersion, kFin, 692 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY,
703 DEFAULT_PRIORITY, &spdy_request_header_frame_length, &offset)); 693 &spdy_request_header_frame_length, &offset));
704 694
705 // SetRequest() again for second request as |request_headers_| was moved. 695 // SetRequest() again for second request as |request_headers_| was moved.
706 SetRequest("GET", "/", DEFAULT_PRIORITY); 696 SetRequest("GET", "/", DEFAULT_PRIORITY);
707 AddWrite(InnerConstructRequestHeadersPacket( 697 AddWrite(InnerConstructRequestHeadersPacket(
708 3, GetNthClientInitiatedStreamId(1), kIncludeVersion, kFin, 698 3, kClientDataStreamId2, kIncludeVersion, kFin, DEFAULT_PRIORITY,
709 DEFAULT_PRIORITY, &spdy_request_header_frame_length, &offset)); 699 &spdy_request_header_frame_length, &offset));
710 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); // Ack the responses. 700 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); // Ack the responses.
711 701
712 Initialize(); 702 Initialize();
713 703
714 request_.method = "GET"; 704 request_.method = "GET";
715 request_.url = GURL("https://www.example.org/"); 705 request_.url = GURL("https://www.example.org/");
716 // Start first request. 706 // Start first request.
717 EXPECT_EQ(OK, 707 EXPECT_EQ(OK,
718 stream_->InitializeStream(&request_, DEFAULT_PRIORITY, 708 stream_->InitializeStream(&request_, DEFAULT_PRIORITY,
719 net_log_.bound(), callback_.callback())); 709 net_log_.bound(), callback_.callback()));
(...skipping 10 matching lines...) Expand all
730 stream2.SendRequest(headers_, &response_, callback2.callback())); 720 stream2.SendRequest(headers_, &response_, callback2.callback()));
731 721
732 // Ack both requests. 722 // Ack both requests.
733 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0)); 723 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0));
734 724
735 EXPECT_THAT(stream_->ReadResponseHeaders(callback_.callback()), 725 EXPECT_THAT(stream_->ReadResponseHeaders(callback_.callback()),
736 IsError(ERR_IO_PENDING)); 726 IsError(ERR_IO_PENDING));
737 size_t spdy_response_header_frame_length; 727 size_t spdy_response_header_frame_length;
738 SetResponse("200 OK", string()); 728 SetResponse("200 OK", string());
739 ProcessPacket(InnerConstructResponseHeadersPacket( 729 ProcessPacket(InnerConstructResponseHeadersPacket(
740 2, GetNthClientInitiatedStreamId(0), kFin, 730 2, kClientDataStreamId1, kFin, &spdy_response_header_frame_length));
741 &spdy_response_header_frame_length));
742 731
743 // Now that the headers have been processed, the callback will return. 732 // Now that the headers have been processed, the callback will return.
744 EXPECT_THAT(callback_.WaitForResult(), IsOk()); 733 EXPECT_THAT(callback_.WaitForResult(), IsOk());
745 EXPECT_EQ(200, response_.headers->response_code()); 734 EXPECT_EQ(200, response_.headers->response_code());
746 735
747 // There is no body, so this should return immediately. 736 // There is no body, so this should return immediately.
748 EXPECT_EQ(0, 737 EXPECT_EQ(0,
749 stream_->ReadResponseBody(read_buffer_.get(), read_buffer_->size(), 738 stream_->ReadResponseBody(read_buffer_.get(), read_buffer_->size(),
750 callback_.callback())); 739 callback_.callback()));
751 EXPECT_TRUE(stream_->IsResponseBodyComplete()); 740 EXPECT_TRUE(stream_->IsResponseBodyComplete());
752 741
753 LoadTimingInfo load_timing_info; 742 LoadTimingInfo load_timing_info;
754 EXPECT_TRUE(stream_->GetLoadTimingInfo(&load_timing_info)); 743 EXPECT_TRUE(stream_->GetLoadTimingInfo(&load_timing_info));
755 ExpectLoadTimingValid(load_timing_info, /*session_reused=*/false); 744 ExpectLoadTimingValid(load_timing_info, /*session_reused=*/false);
756 745
757 // SetResponse() again for second request as |response_headers_| was moved. 746 // SetResponse() again for second request as |response_headers_| was moved.
758 SetResponse("200 OK", string()); 747 SetResponse("200 OK", string());
759 EXPECT_THAT(stream2.ReadResponseHeaders(callback2.callback()), 748 EXPECT_THAT(stream2.ReadResponseHeaders(callback2.callback()),
760 IsError(ERR_IO_PENDING)); 749 IsError(ERR_IO_PENDING));
761 750
762 ProcessPacket(InnerConstructResponseHeadersPacket( 751 ProcessPacket(InnerConstructResponseHeadersPacket(
763 3, GetNthClientInitiatedStreamId(1), kFin, 752 3, kClientDataStreamId2, kFin, &spdy_response_header_frame_length));
764 &spdy_response_header_frame_length));
765 753
766 EXPECT_THAT(callback2.WaitForResult(), IsOk()); 754 EXPECT_THAT(callback2.WaitForResult(), IsOk());
767 755
768 // There is no body, so this should return immediately. 756 // There is no body, so this should return immediately.
769 EXPECT_EQ(0, 757 EXPECT_EQ(0,
770 stream2.ReadResponseBody(read_buffer_.get(), read_buffer_->size(), 758 stream2.ReadResponseBody(read_buffer_.get(), read_buffer_->size(),
771 callback2.callback())); 759 callback2.callback()));
772 EXPECT_TRUE(stream2.IsResponseBodyComplete()); 760 EXPECT_TRUE(stream2.IsResponseBodyComplete());
773 761
774 LoadTimingInfo load_timing_info2; 762 LoadTimingInfo load_timing_info2;
775 EXPECT_TRUE(stream2.GetLoadTimingInfo(&load_timing_info2)); 763 EXPECT_TRUE(stream2.GetLoadTimingInfo(&load_timing_info2));
776 ExpectLoadTimingValid(load_timing_info2, /*session_reused=*/true); 764 ExpectLoadTimingValid(load_timing_info2, /*session_reused=*/true);
777 } 765 }
778 766
779 // QuicHttpStream does not currently support trailers. It should ignore 767 // QuicHttpStream does not currently support trailers. It should ignore
780 // trailers upon receiving them. 768 // trailers upon receiving them.
781 TEST_P(QuicHttpStreamTest, GetRequestWithTrailers) { 769 TEST_P(QuicHttpStreamTest, GetRequestWithTrailers) {
782 SetRequest("GET", "/", DEFAULT_PRIORITY); 770 SetRequest("GET", "/", DEFAULT_PRIORITY);
783 size_t spdy_request_header_frame_length; 771 size_t spdy_request_header_frame_length;
784 QuicStreamOffset header_stream_offset = 0; 772 QuicStreamOffset header_stream_offset = 0;
785 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); 773 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset));
786 AddWrite(InnerConstructRequestHeadersPacket( 774 AddWrite(InnerConstructRequestHeadersPacket(
787 2, GetNthClientInitiatedStreamId(0), kIncludeVersion, kFin, 775 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY,
788 DEFAULT_PRIORITY, &spdy_request_header_frame_length, 776 &spdy_request_header_frame_length, &header_stream_offset));
789 &header_stream_offset));
790 AddWrite(ConstructClientAckPacket(3, 3, 1, 1)); // Ack the data packet. 777 AddWrite(ConstructClientAckPacket(3, 3, 1, 1)); // Ack the data packet.
791 778
792 Initialize(); 779 Initialize();
793 780
794 request_.method = "GET"; 781 request_.method = "GET";
795 request_.url = GURL("https://www.example.org/"); 782 request_.url = GURL("https://www.example.org/");
796 783
797 EXPECT_EQ(OK, 784 EXPECT_EQ(OK,
798 stream_->InitializeStream(&request_, DEFAULT_PRIORITY, 785 stream_->InitializeStream(&request_, DEFAULT_PRIORITY,
799 net_log_.bound(), callback_.callback())); 786 net_log_.bound(), callback_.callback()));
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 NetLogEventPhase::NONE); 859 NetLogEventPhase::NONE);
873 } 860 }
874 861
875 // Regression test for http://crbug.com/288128 862 // Regression test for http://crbug.com/288128
876 TEST_P(QuicHttpStreamTest, GetRequestLargeResponse) { 863 TEST_P(QuicHttpStreamTest, GetRequestLargeResponse) {
877 SetRequest("GET", "/", DEFAULT_PRIORITY); 864 SetRequest("GET", "/", DEFAULT_PRIORITY);
878 size_t spdy_request_headers_frame_length; 865 size_t spdy_request_headers_frame_length;
879 QuicStreamOffset header_stream_offset = 0; 866 QuicStreamOffset header_stream_offset = 0;
880 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); 867 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset));
881 AddWrite(InnerConstructRequestHeadersPacket( 868 AddWrite(InnerConstructRequestHeadersPacket(
882 2, GetNthClientInitiatedStreamId(0), kIncludeVersion, kFin, 869 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY,
883 DEFAULT_PRIORITY, &spdy_request_headers_frame_length, 870 &spdy_request_headers_frame_length, &header_stream_offset));
884 &header_stream_offset));
885 Initialize(); 871 Initialize();
886 872
887 request_.method = "GET"; 873 request_.method = "GET";
888 request_.url = GURL("https://www.example.org/"); 874 request_.url = GURL("https://www.example.org/");
889 875
890 EXPECT_EQ(OK, 876 EXPECT_EQ(OK,
891 stream_->InitializeStream(&request_, DEFAULT_PRIORITY, 877 stream_->InitializeStream(&request_, DEFAULT_PRIORITY,
892 net_log_.bound(), callback_.callback())); 878 net_log_.bound(), callback_.callback()));
893 EXPECT_EQ(OK, 879 EXPECT_EQ(OK,
894 stream_->SendRequest(headers_, &response_, callback_.callback())); 880 stream_->SendRequest(headers_, &response_, callback_.callback()));
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
1000 EXPECT_EQ(AlternativeService(kProtoQUIC, "www.example.org", 443), 986 EXPECT_EQ(AlternativeService(kProtoQUIC, "www.example.org", 443),
1001 alternative_service2); 987 alternative_service2);
1002 } 988 }
1003 989
1004 TEST_P(QuicHttpStreamTest, LogGranularQuicConnectionError) { 990 TEST_P(QuicHttpStreamTest, LogGranularQuicConnectionError) {
1005 SetRequest("GET", "/", DEFAULT_PRIORITY); 991 SetRequest("GET", "/", DEFAULT_PRIORITY);
1006 size_t spdy_request_headers_frame_length; 992 size_t spdy_request_headers_frame_length;
1007 QuicStreamOffset header_stream_offset = 0; 993 QuicStreamOffset header_stream_offset = 0;
1008 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); 994 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset));
1009 AddWrite(InnerConstructRequestHeadersPacket( 995 AddWrite(InnerConstructRequestHeadersPacket(
1010 2, GetNthClientInitiatedStreamId(0), kIncludeVersion, kFin, 996 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY,
1011 DEFAULT_PRIORITY, &spdy_request_headers_frame_length, 997 &spdy_request_headers_frame_length, &header_stream_offset));
1012 &header_stream_offset));
1013 AddWrite(ConstructAckAndRstStreamPacket(3)); 998 AddWrite(ConstructAckAndRstStreamPacket(3));
1014 use_closing_stream_ = true; 999 use_closing_stream_ = true;
1015 Initialize(); 1000 Initialize();
1016 1001
1017 request_.method = "GET"; 1002 request_.method = "GET";
1018 request_.url = GURL("https://www.example.org/"); 1003 request_.url = GURL("https://www.example.org/");
1019 1004
1020 EXPECT_EQ(OK, 1005 EXPECT_EQ(OK,
1021 stream_->InitializeStream(&request_, DEFAULT_PRIORITY, 1006 stream_->InitializeStream(&request_, DEFAULT_PRIORITY,
1022 net_log_.bound(), callback_.callback())); 1007 net_log_.bound(), callback_.callback()));
(...skipping 19 matching lines...) Expand all
1042 // By default the test setup defaults handshake to be confirmed. Manually set 1027 // By default the test setup defaults handshake to be confirmed. Manually set
1043 // it to be not confirmed. 1028 // it to be not confirmed.
1044 // Granular errors shouldn't be reported if handshake not confirmed. 1029 // Granular errors shouldn't be reported if handshake not confirmed.
1045 crypto_client_stream_factory_.set_handshake_mode( 1030 crypto_client_stream_factory_.set_handshake_mode(
1046 MockCryptoClientStream::ZERO_RTT); 1031 MockCryptoClientStream::ZERO_RTT);
1047 1032
1048 SetRequest("GET", "/", DEFAULT_PRIORITY); 1033 SetRequest("GET", "/", DEFAULT_PRIORITY);
1049 size_t spdy_request_headers_frame_length; 1034 size_t spdy_request_headers_frame_length;
1050 QuicStreamOffset header_stream_offset = 0; 1035 QuicStreamOffset header_stream_offset = 0;
1051 AddWrite(InnerConstructRequestHeadersPacket( 1036 AddWrite(InnerConstructRequestHeadersPacket(
1052 1, GetNthClientInitiatedStreamId(0), kIncludeVersion, kFin, 1037 1, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY,
1053 DEFAULT_PRIORITY, &spdy_request_headers_frame_length, 1038 &spdy_request_headers_frame_length, &header_stream_offset));
1054 &header_stream_offset));
1055 use_closing_stream_ = true; 1039 use_closing_stream_ = true;
1056 Initialize(); 1040 Initialize();
1057 1041
1058 request_.method = "GET"; 1042 request_.method = "GET";
1059 request_.url = GURL("https://www.example.org/"); 1043 request_.url = GURL("https://www.example.org/");
1060 1044
1061 EXPECT_EQ(OK, 1045 EXPECT_EQ(OK,
1062 stream_->InitializeStream(&request_, DEFAULT_PRIORITY, 1046 stream_->InitializeStream(&request_, DEFAULT_PRIORITY,
1063 net_log_.bound(), callback_.callback())); 1047 net_log_.bound(), callback_.callback()));
1064 EXPECT_EQ(OK, 1048 EXPECT_EQ(OK,
(...skipping 14 matching lines...) Expand all
1079 EXPECT_EQ(QUIC_NO_ERROR, details.quic_connection_error); 1063 EXPECT_EQ(QUIC_NO_ERROR, details.quic_connection_error);
1080 } 1064 }
1081 1065
1082 // Regression test for http://crbug.com/409871 1066 // Regression test for http://crbug.com/409871
1083 TEST_P(QuicHttpStreamTest, SessionClosedBeforeReadResponseHeaders) { 1067 TEST_P(QuicHttpStreamTest, SessionClosedBeforeReadResponseHeaders) {
1084 SetRequest("GET", "/", DEFAULT_PRIORITY); 1068 SetRequest("GET", "/", DEFAULT_PRIORITY);
1085 size_t spdy_request_headers_frame_length; 1069 size_t spdy_request_headers_frame_length;
1086 QuicStreamOffset header_stream_offset = 0; 1070 QuicStreamOffset header_stream_offset = 0;
1087 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); 1071 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset));
1088 AddWrite(InnerConstructRequestHeadersPacket( 1072 AddWrite(InnerConstructRequestHeadersPacket(
1089 2, GetNthClientInitiatedStreamId(0), kIncludeVersion, kFin, 1073 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY,
1090 DEFAULT_PRIORITY, &spdy_request_headers_frame_length, 1074 &spdy_request_headers_frame_length, &header_stream_offset));
1091 &header_stream_offset));
1092 Initialize(); 1075 Initialize();
1093 1076
1094 request_.method = "GET"; 1077 request_.method = "GET";
1095 request_.url = GURL("https://www.example.org/"); 1078 request_.url = GURL("https://www.example.org/");
1096 1079
1097 EXPECT_EQ(OK, 1080 EXPECT_EQ(OK,
1098 stream_->InitializeStream(&request_, DEFAULT_PRIORITY, 1081 stream_->InitializeStream(&request_, DEFAULT_PRIORITY,
1099 net_log_.bound(), callback_.callback())); 1082 net_log_.bound(), callback_.callback()));
1100 1083
1101 EXPECT_EQ(OK, 1084 EXPECT_EQ(OK,
(...skipping 10 matching lines...) Expand all
1112 stream_->GetTotalSentBytes()); 1095 stream_->GetTotalSentBytes());
1113 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); 1096 EXPECT_EQ(0, stream_->GetTotalReceivedBytes());
1114 } 1097 }
1115 1098
1116 TEST_P(QuicHttpStreamTest, SendPostRequest) { 1099 TEST_P(QuicHttpStreamTest, SendPostRequest) {
1117 SetRequest("POST", "/", DEFAULT_PRIORITY); 1100 SetRequest("POST", "/", DEFAULT_PRIORITY);
1118 size_t spdy_request_headers_frame_length; 1101 size_t spdy_request_headers_frame_length;
1119 QuicStreamOffset header_stream_offset = 0; 1102 QuicStreamOffset header_stream_offset = 0;
1120 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); 1103 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset));
1121 AddWrite(InnerConstructRequestHeadersPacket( 1104 AddWrite(InnerConstructRequestHeadersPacket(
1122 2, GetNthClientInitiatedStreamId(0), kIncludeVersion, !kFin, 1105 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY,
1123 DEFAULT_PRIORITY, &spdy_request_headers_frame_length, 1106 &spdy_request_headers_frame_length, &header_stream_offset));
1124 &header_stream_offset));
1125 AddWrite(ConstructClientDataPacket(3, kIncludeVersion, kFin, 0, kUploadData)); 1107 AddWrite(ConstructClientDataPacket(3, kIncludeVersion, kFin, 0, kUploadData));
1126 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); 1108 AddWrite(ConstructClientAckPacket(4, 3, 1, 1));
1127 1109
1128 Initialize(); 1110 Initialize();
1129 1111
1130 std::vector<std::unique_ptr<UploadElementReader>> element_readers; 1112 std::vector<std::unique_ptr<UploadElementReader>> element_readers;
1131 element_readers.push_back(base::MakeUnique<UploadBytesElementReader>( 1113 element_readers.push_back(base::MakeUnique<UploadBytesElementReader>(
1132 kUploadData, strlen(kUploadData))); 1114 kUploadData, strlen(kUploadData)));
1133 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 0); 1115 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 0);
1134 request_.method = "POST"; 1116 request_.method = "POST";
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1182 stream_->GetTotalReceivedBytes()); 1164 stream_->GetTotalReceivedBytes());
1183 } 1165 }
1184 1166
1185 TEST_P(QuicHttpStreamTest, SendChunkedPostRequest) { 1167 TEST_P(QuicHttpStreamTest, SendChunkedPostRequest) {
1186 SetRequest("POST", "/", DEFAULT_PRIORITY); 1168 SetRequest("POST", "/", DEFAULT_PRIORITY);
1187 size_t chunk_size = strlen(kUploadData); 1169 size_t chunk_size = strlen(kUploadData);
1188 size_t spdy_request_headers_frame_length; 1170 size_t spdy_request_headers_frame_length;
1189 QuicStreamOffset header_stream_offset = 0; 1171 QuicStreamOffset header_stream_offset = 0;
1190 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); 1172 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset));
1191 AddWrite(InnerConstructRequestHeadersPacket( 1173 AddWrite(InnerConstructRequestHeadersPacket(
1192 2, GetNthClientInitiatedStreamId(0), kIncludeVersion, !kFin, 1174 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY,
1193 DEFAULT_PRIORITY, &spdy_request_headers_frame_length, 1175 &spdy_request_headers_frame_length, &header_stream_offset));
1194 &header_stream_offset));
1195 AddWrite( 1176 AddWrite(
1196 ConstructClientDataPacket(3, kIncludeVersion, !kFin, 0, kUploadData)); 1177 ConstructClientDataPacket(3, kIncludeVersion, !kFin, 0, kUploadData));
1197 AddWrite(ConstructClientDataPacket(4, kIncludeVersion, kFin, chunk_size, 1178 AddWrite(ConstructClientDataPacket(4, kIncludeVersion, kFin, chunk_size,
1198 kUploadData)); 1179 kUploadData));
1199 AddWrite(ConstructClientAckPacket(5, 3, 1, 1)); 1180 AddWrite(ConstructClientAckPacket(5, 3, 1, 1));
1200 Initialize(); 1181 Initialize();
1201 1182
1202 ChunkedUploadDataStream upload_data_stream(0); 1183 ChunkedUploadDataStream upload_data_stream(0);
1203 upload_data_stream.AppendData(kUploadData, chunk_size, false); 1184 upload_data_stream.AppendData(kUploadData, chunk_size, false);
1204 1185
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1257 stream_->GetTotalReceivedBytes()); 1238 stream_->GetTotalReceivedBytes());
1258 } 1239 }
1259 1240
1260 TEST_P(QuicHttpStreamTest, SendChunkedPostRequestWithFinalEmptyDataPacket) { 1241 TEST_P(QuicHttpStreamTest, SendChunkedPostRequestWithFinalEmptyDataPacket) {
1261 SetRequest("POST", "/", DEFAULT_PRIORITY); 1242 SetRequest("POST", "/", DEFAULT_PRIORITY);
1262 size_t chunk_size = strlen(kUploadData); 1243 size_t chunk_size = strlen(kUploadData);
1263 size_t spdy_request_headers_frame_length; 1244 size_t spdy_request_headers_frame_length;
1264 QuicStreamOffset header_stream_offset = 0; 1245 QuicStreamOffset header_stream_offset = 0;
1265 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); 1246 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset));
1266 AddWrite(InnerConstructRequestHeadersPacket( 1247 AddWrite(InnerConstructRequestHeadersPacket(
1267 2, GetNthClientInitiatedStreamId(0), kIncludeVersion, !kFin, 1248 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY,
1268 DEFAULT_PRIORITY, &spdy_request_headers_frame_length, 1249 &spdy_request_headers_frame_length, &header_stream_offset));
1269 &header_stream_offset));
1270 AddWrite( 1250 AddWrite(
1271 ConstructClientDataPacket(3, kIncludeVersion, !kFin, 0, kUploadData)); 1251 ConstructClientDataPacket(3, kIncludeVersion, !kFin, 0, kUploadData));
1272 AddWrite(ConstructClientDataPacket(4, kIncludeVersion, kFin, chunk_size, "")); 1252 AddWrite(ConstructClientDataPacket(4, kIncludeVersion, kFin, chunk_size, ""));
1273 AddWrite(ConstructClientAckPacket(5, 3, 1, 1)); 1253 AddWrite(ConstructClientAckPacket(5, 3, 1, 1));
1274 Initialize(); 1254 Initialize();
1275 1255
1276 ChunkedUploadDataStream upload_data_stream(0); 1256 ChunkedUploadDataStream upload_data_stream(0);
1277 upload_data_stream.AppendData(kUploadData, chunk_size, false); 1257 upload_data_stream.AppendData(kUploadData, chunk_size, false);
1278 1258
1279 request_.method = "POST"; 1259 request_.method = "POST";
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1328 strlen(kResponseBody)), 1308 strlen(kResponseBody)),
1329 stream_->GetTotalReceivedBytes()); 1309 stream_->GetTotalReceivedBytes());
1330 } 1310 }
1331 1311
1332 TEST_P(QuicHttpStreamTest, SendChunkedPostRequestWithOneEmptyDataPacket) { 1312 TEST_P(QuicHttpStreamTest, SendChunkedPostRequestWithOneEmptyDataPacket) {
1333 SetRequest("POST", "/", DEFAULT_PRIORITY); 1313 SetRequest("POST", "/", DEFAULT_PRIORITY);
1334 size_t spdy_request_headers_frame_length; 1314 size_t spdy_request_headers_frame_length;
1335 QuicStreamOffset header_stream_offset = 0; 1315 QuicStreamOffset header_stream_offset = 0;
1336 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); 1316 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset));
1337 AddWrite(InnerConstructRequestHeadersPacket( 1317 AddWrite(InnerConstructRequestHeadersPacket(
1338 2, GetNthClientInitiatedStreamId(0), kIncludeVersion, !kFin, 1318 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY,
1339 DEFAULT_PRIORITY, &spdy_request_headers_frame_length, 1319 &spdy_request_headers_frame_length, &header_stream_offset));
1340 &header_stream_offset));
1341 AddWrite(ConstructClientDataPacket(3, kIncludeVersion, kFin, 0, "")); 1320 AddWrite(ConstructClientDataPacket(3, kIncludeVersion, kFin, 0, ""));
1342 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); 1321 AddWrite(ConstructClientAckPacket(4, 3, 1, 1));
1343 Initialize(); 1322 Initialize();
1344 1323
1345 ChunkedUploadDataStream upload_data_stream(0); 1324 ChunkedUploadDataStream upload_data_stream(0);
1346 1325
1347 request_.method = "POST"; 1326 request_.method = "POST";
1348 request_.url = GURL("https://www.example.org/"); 1327 request_.url = GURL("https://www.example.org/");
1349 request_.upload_data_stream = &upload_data_stream; 1328 request_.upload_data_stream = &upload_data_stream;
1350 ASSERT_EQ(OK, request_.upload_data_stream->Init( 1329 ASSERT_EQ(OK, request_.upload_data_stream->Init(
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1396 strlen(kResponseBody)), 1375 strlen(kResponseBody)),
1397 stream_->GetTotalReceivedBytes()); 1376 stream_->GetTotalReceivedBytes());
1398 } 1377 }
1399 1378
1400 TEST_P(QuicHttpStreamTest, DestroyedEarly) { 1379 TEST_P(QuicHttpStreamTest, DestroyedEarly) {
1401 SetRequest("GET", "/", DEFAULT_PRIORITY); 1380 SetRequest("GET", "/", DEFAULT_PRIORITY);
1402 size_t spdy_request_headers_frame_length; 1381 size_t spdy_request_headers_frame_length;
1403 QuicStreamOffset header_stream_offset = 0; 1382 QuicStreamOffset header_stream_offset = 0;
1404 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); 1383 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset));
1405 AddWrite(InnerConstructRequestHeadersPacket( 1384 AddWrite(InnerConstructRequestHeadersPacket(
1406 2, GetNthClientInitiatedStreamId(0), kIncludeVersion, kFin, 1385 2, kClientDataStreamId1, kIncludeVersion, kFin, DEFAULT_PRIORITY,
1407 DEFAULT_PRIORITY, &spdy_request_headers_frame_length, 1386 &spdy_request_headers_frame_length, &header_stream_offset));
1408 &header_stream_offset));
1409 AddWrite(ConstructAckAndRstStreamPacket(3)); 1387 AddWrite(ConstructAckAndRstStreamPacket(3));
1410 use_closing_stream_ = true; 1388 use_closing_stream_ = true;
1411 Initialize(); 1389 Initialize();
1412 1390
1413 request_.method = "GET"; 1391 request_.method = "GET";
1414 request_.url = GURL("https://www.example.org/"); 1392 request_.url = GURL("https://www.example.org/");
1415 1393
1416 EXPECT_EQ(OK, 1394 EXPECT_EQ(OK,
1417 stream_->InitializeStream(&request_, DEFAULT_PRIORITY, 1395 stream_->InitializeStream(&request_, DEFAULT_PRIORITY,
1418 net_log_.bound(), callback_.callback())); 1396 net_log_.bound(), callback_.callback()));
(...skipping 21 matching lines...) Expand all
1440 // Zero since the stream is closed before processing the headers. 1418 // Zero since the stream is closed before processing the headers.
1441 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); 1419 EXPECT_EQ(0, stream_->GetTotalReceivedBytes());
1442 } 1420 }
1443 1421
1444 TEST_P(QuicHttpStreamTest, Priority) { 1422 TEST_P(QuicHttpStreamTest, Priority) {
1445 SetRequest("GET", "/", MEDIUM); 1423 SetRequest("GET", "/", MEDIUM);
1446 size_t spdy_request_headers_frame_length; 1424 size_t spdy_request_headers_frame_length;
1447 QuicStreamOffset header_stream_offset = 0; 1425 QuicStreamOffset header_stream_offset = 0;
1448 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); 1426 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset));
1449 AddWrite(InnerConstructRequestHeadersPacket( 1427 AddWrite(InnerConstructRequestHeadersPacket(
1450 2, GetNthClientInitiatedStreamId(0), kIncludeVersion, kFin, MEDIUM, 1428 2, kClientDataStreamId1, kIncludeVersion, kFin, MEDIUM,
1451 &spdy_request_headers_frame_length, &header_stream_offset)); 1429 &spdy_request_headers_frame_length, &header_stream_offset));
1452 AddWrite(ConstructAckAndRstStreamPacket(3)); 1430 AddWrite(ConstructAckAndRstStreamPacket(3));
1453 use_closing_stream_ = true; 1431 use_closing_stream_ = true;
1454 Initialize(); 1432 Initialize();
1455 1433
1456 request_.method = "GET"; 1434 request_.method = "GET";
1457 request_.url = GURL("https://www.example.org/"); 1435 request_.url = GURL("https://www.example.org/");
1458 1436
1459 EXPECT_EQ(OK, stream_->InitializeStream(&request_, MEDIUM, net_log_.bound(), 1437 EXPECT_EQ(OK, stream_->InitializeStream(&request_, MEDIUM, net_log_.bound(),
1460 callback_.callback())); 1438 callback_.callback()));
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1527 EXPECT_EQ(0, stream_->GetTotalSentBytes()); 1505 EXPECT_EQ(0, stream_->GetTotalSentBytes());
1528 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); 1506 EXPECT_EQ(0, stream_->GetTotalReceivedBytes());
1529 } 1507 }
1530 1508
1531 TEST_P(QuicHttpStreamTest, SessionClosedDuringDoLoop) { 1509 TEST_P(QuicHttpStreamTest, SessionClosedDuringDoLoop) {
1532 SetRequest("POST", "/", DEFAULT_PRIORITY); 1510 SetRequest("POST", "/", DEFAULT_PRIORITY);
1533 size_t spdy_request_headers_frame_length; 1511 size_t spdy_request_headers_frame_length;
1534 QuicStreamOffset header_stream_offset = 0; 1512 QuicStreamOffset header_stream_offset = 0;
1535 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); 1513 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset));
1536 AddWrite(InnerConstructRequestHeadersPacket( 1514 AddWrite(InnerConstructRequestHeadersPacket(
1537 2, GetNthClientInitiatedStreamId(0), kIncludeVersion, !kFin, 1515 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY,
1538 DEFAULT_PRIORITY, &spdy_request_headers_frame_length, 1516 &spdy_request_headers_frame_length, &header_stream_offset));
1539 &header_stream_offset));
1540 AddWrite( 1517 AddWrite(
1541 ConstructClientDataPacket(3, kIncludeVersion, !kFin, 0, kUploadData)); 1518 ConstructClientDataPacket(3, kIncludeVersion, !kFin, 0, kUploadData));
1542 // Second data write will result in a synchronous failure which will close 1519 // Second data write will result in a synchronous failure which will close
1543 // the session. 1520 // the session.
1544 AddWrite(SYNCHRONOUS, ERR_FAILED); 1521 AddWrite(SYNCHRONOUS, ERR_FAILED);
1545 Initialize(); 1522 Initialize();
1546 1523
1547 ChunkedUploadDataStream upload_data_stream(0); 1524 ChunkedUploadDataStream upload_data_stream(0);
1548 1525
1549 request_.method = "POST"; 1526 request_.method = "POST";
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1588 ASSERT_EQ(ERR_QUIC_PROTOCOL_ERROR, 1565 ASSERT_EQ(ERR_QUIC_PROTOCOL_ERROR,
1589 stream_->SendRequest(headers_, &response_, callback_.callback())); 1566 stream_->SendRequest(headers_, &response_, callback_.callback()));
1590 } 1567 }
1591 1568
1592 TEST_P(QuicHttpStreamTest, SessionClosedBeforeSendBodyComplete) { 1569 TEST_P(QuicHttpStreamTest, SessionClosedBeforeSendBodyComplete) {
1593 SetRequest("POST", "/", DEFAULT_PRIORITY); 1570 SetRequest("POST", "/", DEFAULT_PRIORITY);
1594 size_t spdy_request_headers_frame_length; 1571 size_t spdy_request_headers_frame_length;
1595 QuicStreamOffset header_stream_offset = 0; 1572 QuicStreamOffset header_stream_offset = 0;
1596 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); 1573 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset));
1597 AddWrite(InnerConstructRequestHeadersPacket( 1574 AddWrite(InnerConstructRequestHeadersPacket(
1598 2, GetNthClientInitiatedStreamId(0), kIncludeVersion, !kFin, 1575 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY,
1599 DEFAULT_PRIORITY, &spdy_request_headers_frame_length, 1576 &spdy_request_headers_frame_length, &header_stream_offset));
1600 &header_stream_offset));
1601 AddWrite(SYNCHRONOUS, ERR_FAILED); 1577 AddWrite(SYNCHRONOUS, ERR_FAILED);
1602 Initialize(); 1578 Initialize();
1603 1579
1604 ChunkedUploadDataStream upload_data_stream(0); 1580 ChunkedUploadDataStream upload_data_stream(0);
1605 size_t chunk_size = strlen(kUploadData); 1581 size_t chunk_size = strlen(kUploadData);
1606 upload_data_stream.AppendData(kUploadData, chunk_size, false); 1582 upload_data_stream.AppendData(kUploadData, chunk_size, false);
1607 1583
1608 request_.method = "POST"; 1584 request_.method = "POST";
1609 request_.url = GURL("https://www.example.org/"); 1585 request_.url = GURL("https://www.example.org/");
1610 request_.upload_data_stream = &upload_data_stream; 1586 request_.upload_data_stream = &upload_data_stream;
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after
2093 EXPECT_EQ(static_cast<int64_t>(spdy_response_header_frame_length), 2069 EXPECT_EQ(static_cast<int64_t>(spdy_response_header_frame_length),
2094 promised_stream_->GetTotalReceivedBytes()); 2070 promised_stream_->GetTotalReceivedBytes());
2095 } 2071 }
2096 2072
2097 TEST_P(QuicHttpStreamTest, DataReadErrorSynchronous) { 2073 TEST_P(QuicHttpStreamTest, DataReadErrorSynchronous) {
2098 SetRequest("POST", "/", DEFAULT_PRIORITY); 2074 SetRequest("POST", "/", DEFAULT_PRIORITY);
2099 size_t spdy_request_headers_frame_length; 2075 size_t spdy_request_headers_frame_length;
2100 QuicStreamOffset header_stream_offset = 0; 2076 QuicStreamOffset header_stream_offset = 0;
2101 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); 2077 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset));
2102 AddWrite(InnerConstructRequestHeadersPacket( 2078 AddWrite(InnerConstructRequestHeadersPacket(
2103 2, GetNthClientInitiatedStreamId(0), kIncludeVersion, !kFin, 2079 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY,
2104 DEFAULT_PRIORITY, &spdy_request_headers_frame_length, 2080 &spdy_request_headers_frame_length, &header_stream_offset));
2105 &header_stream_offset));
2106 AddWrite(ConstructClientRstStreamErrorPacket(3, kIncludeVersion)); 2081 AddWrite(ConstructClientRstStreamErrorPacket(3, kIncludeVersion));
2107 2082
2108 Initialize(); 2083 Initialize();
2109 2084
2110 ReadErrorUploadDataStream upload_data_stream( 2085 ReadErrorUploadDataStream upload_data_stream(
2111 ReadErrorUploadDataStream::FailureMode::SYNC); 2086 ReadErrorUploadDataStream::FailureMode::SYNC);
2112 request_.method = "POST"; 2087 request_.method = "POST";
2113 request_.url = GURL("https://www.example.org/"); 2088 request_.url = GURL("https://www.example.org/");
2114 request_.upload_data_stream = &upload_data_stream; 2089 request_.upload_data_stream = &upload_data_stream;
2115 ASSERT_EQ(OK, request_.upload_data_stream->Init( 2090 ASSERT_EQ(OK, request_.upload_data_stream->Init(
(...skipping 13 matching lines...) Expand all
2129 stream_->GetTotalSentBytes()); 2104 stream_->GetTotalSentBytes());
2130 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); 2105 EXPECT_EQ(0, stream_->GetTotalReceivedBytes());
2131 } 2106 }
2132 2107
2133 TEST_P(QuicHttpStreamTest, DataReadErrorAsynchronous) { 2108 TEST_P(QuicHttpStreamTest, DataReadErrorAsynchronous) {
2134 SetRequest("POST", "/", DEFAULT_PRIORITY); 2109 SetRequest("POST", "/", DEFAULT_PRIORITY);
2135 size_t spdy_request_headers_frame_length; 2110 size_t spdy_request_headers_frame_length;
2136 QuicStreamOffset header_stream_offset = 0; 2111 QuicStreamOffset header_stream_offset = 0;
2137 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); 2112 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset));
2138 AddWrite(InnerConstructRequestHeadersPacket( 2113 AddWrite(InnerConstructRequestHeadersPacket(
2139 2, GetNthClientInitiatedStreamId(0), kIncludeVersion, !kFin, 2114 2, kClientDataStreamId1, kIncludeVersion, !kFin, DEFAULT_PRIORITY,
2140 DEFAULT_PRIORITY, &spdy_request_headers_frame_length, 2115 &spdy_request_headers_frame_length, &header_stream_offset));
2141 &header_stream_offset));
2142 AddWrite(ConstructClientRstStreamErrorPacket(3, !kIncludeVersion)); 2116 AddWrite(ConstructClientRstStreamErrorPacket(3, !kIncludeVersion));
2143 2117
2144 Initialize(); 2118 Initialize();
2145 2119
2146 ReadErrorUploadDataStream upload_data_stream( 2120 ReadErrorUploadDataStream upload_data_stream(
2147 ReadErrorUploadDataStream::FailureMode::ASYNC); 2121 ReadErrorUploadDataStream::FailureMode::ASYNC);
2148 request_.method = "POST"; 2122 request_.method = "POST";
2149 request_.url = GURL("https://www.example.org/"); 2123 request_.url = GURL("https://www.example.org/");
2150 request_.upload_data_stream = &upload_data_stream; 2124 request_.upload_data_stream = &upload_data_stream;
2151 ASSERT_EQ(OK, request_.upload_data_stream->Init( 2125 ASSERT_EQ(OK, request_.upload_data_stream->Init(
(...skipping 14 matching lines...) Expand all
2166 EXPECT_TRUE(AtEof()); 2140 EXPECT_TRUE(AtEof());
2167 2141
2168 // QuicHttpStream::GetTotalSent/ReceivedBytes includes only headers. 2142 // QuicHttpStream::GetTotalSent/ReceivedBytes includes only headers.
2169 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), 2143 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length),
2170 stream_->GetTotalSentBytes()); 2144 stream_->GetTotalSentBytes());
2171 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); 2145 EXPECT_EQ(0, stream_->GetTotalReceivedBytes());
2172 } 2146 }
2173 2147
2174 } // namespace test 2148 } // namespace test
2175 } // namespace net 2149 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/chromium/quic_chromium_client_stream_test.cc ('k') | net/quic/chromium/quic_network_transaction_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698