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

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

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