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

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

Issue 2077683002: Move the logic for delaying 0-RTT QUIC POST from the QuicStreamFactory (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@QuicHttpStream
Patch Set: tweak Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/bidirectional_stream_quic_impl.cc ('k') | net/quic/quic_chromium_client_stream.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/bidirectional_stream_quic_impl.h" 5 #include "net/quic/bidirectional_stream_quic_impl.h"
6 6
7 #include "base/callback_helpers.h" 7 #include "base/callback_helpers.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 std::unique_ptr<base::Timer> timer) 61 std::unique_ptr<base::Timer> timer)
62 : read_buf_(read_buf), 62 : read_buf_(read_buf),
63 read_buf_len_(read_buf_len), 63 read_buf_len_(read_buf_len),
64 timer_(std::move(timer)), 64 timer_(std::move(timer)),
65 loop_(nullptr), 65 loop_(nullptr),
66 error_(OK), 66 error_(OK),
67 on_data_read_count_(0), 67 on_data_read_count_(0),
68 on_data_sent_count_(0), 68 on_data_sent_count_(0),
69 not_expect_callback_(false), 69 not_expect_callback_(false),
70 on_failed_called_(false), 70 on_failed_called_(false),
71 send_request_headers_automatically_(true) { 71 send_request_headers_automatically_(true),
72 is_ready_(false) {
72 loop_.reset(new base::RunLoop); 73 loop_.reset(new base::RunLoop);
73 } 74 }
74 75
75 ~TestDelegateBase() override {} 76 ~TestDelegateBase() override {}
76 77
77 void OnStreamReady(bool request_headers_sent) override { 78 void OnStreamReady(bool request_headers_sent) override {
79 CHECK(!is_ready_);
78 CHECK(!on_failed_called_); 80 CHECK(!on_failed_called_);
79 EXPECT_EQ(send_request_headers_automatically_, request_headers_sent); 81 EXPECT_EQ(send_request_headers_automatically_, request_headers_sent);
80 CHECK(!not_expect_callback_); 82 CHECK(!not_expect_callback_);
83 is_ready_ = true;
81 loop_->Quit(); 84 loop_->Quit();
82 } 85 }
83 86
84 void OnHeadersReceived(const SpdyHeaderBlock& response_headers) override { 87 void OnHeadersReceived(const SpdyHeaderBlock& response_headers) override {
85 CHECK(!on_failed_called_); 88 CHECK(!on_failed_called_);
86 CHECK(!not_expect_callback_); 89 CHECK(!not_expect_callback_);
87 90
88 response_headers_ = response_headers; 91 response_headers_ = response_headers;
89 loop_->Quit(); 92 loop_->Quit();
90 } 93 }
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 } 190 }
188 191
189 // Const getters for internal states. 192 // Const getters for internal states.
190 const std::string& data_received() const { return data_received_; } 193 const std::string& data_received() const { return data_received_; }
191 int error() const { return error_; } 194 int error() const { return error_; }
192 const SpdyHeaderBlock& response_headers() const { return response_headers_; } 195 const SpdyHeaderBlock& response_headers() const { return response_headers_; }
193 const SpdyHeaderBlock& trailers() const { return trailers_; } 196 const SpdyHeaderBlock& trailers() const { return trailers_; }
194 int on_data_read_count() const { return on_data_read_count_; } 197 int on_data_read_count() const { return on_data_read_count_; }
195 int on_data_sent_count() const { return on_data_sent_count_; } 198 int on_data_sent_count() const { return on_data_sent_count_; }
196 bool on_failed_called() const { return on_failed_called_; } 199 bool on_failed_called() const { return on_failed_called_; }
200 bool is_ready() const { return is_ready_; }
197 201
198 protected: 202 protected:
199 // Quits |loop_|. 203 // Quits |loop_|.
200 void QuitLoop() { loop_->Quit(); } 204 void QuitLoop() { loop_->Quit(); }
201 205
202 // Deletes |stream_|. 206 // Deletes |stream_|.
203 void DeleteStream() { stream_.reset(); } 207 void DeleteStream() { stream_.reset(); }
204 208
205 private: 209 private:
206 std::unique_ptr<BidirectionalStreamQuicImpl> stream_; 210 std::unique_ptr<BidirectionalStreamQuicImpl> stream_;
207 scoped_refptr<IOBuffer> read_buf_; 211 scoped_refptr<IOBuffer> read_buf_;
208 int read_buf_len_; 212 int read_buf_len_;
209 std::unique_ptr<base::Timer> timer_; 213 std::unique_ptr<base::Timer> timer_;
210 std::string data_received_; 214 std::string data_received_;
211 std::unique_ptr<base::RunLoop> loop_; 215 std::unique_ptr<base::RunLoop> loop_;
212 SpdyHeaderBlock response_headers_; 216 SpdyHeaderBlock response_headers_;
213 SpdyHeaderBlock trailers_; 217 SpdyHeaderBlock trailers_;
214 int error_; 218 int error_;
215 int on_data_read_count_; 219 int on_data_read_count_;
216 int on_data_sent_count_; 220 int on_data_sent_count_;
217 // This is to ensure that delegate callback is not invoked synchronously when 221 // This is to ensure that delegate callback is not invoked synchronously when
218 // calling into |stream_|. 222 // calling into |stream_|.
219 bool not_expect_callback_; 223 bool not_expect_callback_;
220 bool on_failed_called_; 224 bool on_failed_called_;
221 CompletionCallback callback_; 225 CompletionCallback callback_;
222 bool send_request_headers_automatically_; 226 bool send_request_headers_automatically_;
227 bool is_ready_;
223 228
224 DISALLOW_COPY_AND_ASSIGN(TestDelegateBase); 229 DISALLOW_COPY_AND_ASSIGN(TestDelegateBase);
225 }; 230 };
226 231
227 // A delegate that deletes the stream in a particular callback. 232 // A delegate that deletes the stream in a particular callback.
228 class DeleteStreamDelegate : public TestDelegateBase { 233 class DeleteStreamDelegate : public TestDelegateBase {
229 public: 234 public:
230 // Specifies in which callback the stream can be deleted. 235 // Specifies in which callback the stream can be deleted.
231 enum Phase { 236 enum Phase {
232 ON_HEADERS_RECEIVED, 237 ON_HEADERS_RECEIVED,
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 void AddWrite(std::unique_ptr<QuicReceivedPacket> packet) { 340 void AddWrite(std::unique_ptr<QuicReceivedPacket> packet) {
336 writes_.push_back(PacketToWrite(SYNCHRONOUS, packet.release())); 341 writes_.push_back(PacketToWrite(SYNCHRONOUS, packet.release()));
337 } 342 }
338 343
339 void ProcessPacket(std::unique_ptr<QuicReceivedPacket> packet) { 344 void ProcessPacket(std::unique_ptr<QuicReceivedPacket> packet) {
340 connection_->ProcessUdpPacket(self_addr_, peer_addr_, *packet); 345 connection_->ProcessUdpPacket(self_addr_, peer_addr_, *packet);
341 } 346 }
342 347
343 // Configures the test fixture to use the list of expected writes. 348 // Configures the test fixture to use the list of expected writes.
344 void Initialize() { 349 void Initialize() {
350 crypto_client_stream_factory_.set_handshake_mode(
351 MockCryptoClientStream::ZERO_RTT);
345 mock_writes_.reset(new MockWrite[writes_.size()]); 352 mock_writes_.reset(new MockWrite[writes_.size()]);
346 for (size_t i = 0; i < writes_.size(); i++) { 353 for (size_t i = 0; i < writes_.size(); i++) {
347 if (writes_[i].packet == nullptr) { 354 if (writes_[i].packet == nullptr) {
348 mock_writes_[i] = MockWrite(writes_[i].mode, writes_[i].rv, i); 355 mock_writes_[i] = MockWrite(writes_[i].mode, writes_[i].rv, i);
349 } else { 356 } else {
350 mock_writes_[i] = MockWrite(writes_[i].mode, writes_[i].packet->data(), 357 mock_writes_[i] = MockWrite(writes_[i].mode, writes_[i].packet->data(),
351 writes_[i].packet->length()); 358 writes_[i].packet->length());
352 } 359 }
353 } 360 }
354 361
(...skipping 20 matching lines...) Expand all
375 QuicServerId(kDefaultServerHostName, kDefaultServerPort, 382 QuicServerId(kDefaultServerHostName, kDefaultServerPort,
376 PRIVACY_MODE_DISABLED), 383 PRIVACY_MODE_DISABLED),
377 kQuicYieldAfterPacketsRead, 384 kQuicYieldAfterPacketsRead,
378 QuicTime::Delta::FromMilliseconds(kQuicYieldAfterDurationMilliseconds), 385 QuicTime::Delta::FromMilliseconds(kQuicYieldAfterDurationMilliseconds),
379 /*cert_verify_flags=*/0, DefaultQuicConfig(), &crypto_config_, 386 /*cert_verify_flags=*/0, DefaultQuicConfig(), &crypto_config_,
380 "CONNECTION_UNKNOWN", base::TimeTicks::Now(), &push_promise_index_, 387 "CONNECTION_UNKNOWN", base::TimeTicks::Now(), &push_promise_index_,
381 base::ThreadTaskRunnerHandle::Get().get(), 388 base::ThreadTaskRunnerHandle::Get().get(),
382 /*socket_performance_watcher=*/nullptr, net_log().bound().net_log())); 389 /*socket_performance_watcher=*/nullptr, net_log().bound().net_log()));
383 session_->Initialize(); 390 session_->Initialize();
384 session_->GetCryptoStream()->CryptoConnect(); 391 session_->GetCryptoStream()->CryptoConnect();
385 EXPECT_TRUE(session_->IsCryptoHandshakeConfirmed()); 392 EXPECT_TRUE(session_->IsEncryptionEstablished());
393 }
394
395 void ConfirmHandshake() {
396 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent(
397 QuicSession::HANDSHAKE_CONFIRMED);
386 } 398 }
387 399
388 void SetRequest(const std::string& method, 400 void SetRequest(const std::string& method,
389 const std::string& path, 401 const std::string& path,
390 RequestPriority priority) { 402 RequestPriority priority) {
391 request_headers_ = client_maker_.GetRequestHeaders(method, "http", path); 403 request_headers_ = client_maker_.GetRequestHeaders(method, "http", path);
392 } 404 }
393 405
394 SpdyHeaderBlock ConstructResponseHeaders(const std::string& response_code) { 406 SpdyHeaderBlock ConstructResponseHeaders(const std::string& response_code) {
395 return server_maker_.GetResponseHeaders(response_code); 407 return server_maker_.GetResponseHeaders(response_code);
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
709 request.method = "POST"; 721 request.method = "POST";
710 request.url = GURL("http://www.google.com/"); 722 request.url = GURL("http://www.google.com/");
711 request.end_stream_on_headers = false; 723 request.end_stream_on_headers = false;
712 request.priority = DEFAULT_PRIORITY; 724 request.priority = DEFAULT_PRIORITY;
713 725
714 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 726 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
715 std::unique_ptr<TestDelegateBase> delegate( 727 std::unique_ptr<TestDelegateBase> delegate(
716 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 728 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
717 delegate->DoNotSendRequestHeadersAutomatically(); 729 delegate->DoNotSendRequestHeadersAutomatically();
718 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 730 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
731 EXPECT_FALSE(delegate->is_ready());
732 ConfirmHandshake();
719 delegate->WaitUntilNextCallback(); // OnStreamReady 733 delegate->WaitUntilNextCallback(); // OnStreamReady
720 734
721 // Sends request headers separately, which causes them to be sent in a 735 // Sends request headers separately, which causes them to be sent in a
722 // separate packet. 736 // separate packet.
723 delegate->SendRequestHeaders(); 737 delegate->SendRequestHeaders();
724 // Send a Data packet. 738 // Send a Data packet.
725 scoped_refptr<StringIOBuffer> buf1(new StringIOBuffer(kBody1)); 739 scoped_refptr<StringIOBuffer> buf1(new StringIOBuffer(kBody1));
726 scoped_refptr<StringIOBuffer> buf2(new StringIOBuffer(kBody2)); 740 scoped_refptr<StringIOBuffer> buf2(new StringIOBuffer(kBody2));
727 741
728 std::vector<int> lengths = {buf1->size(), buf2->size()}; 742 std::vector<int> lengths = {buf1->size(), buf2->size()};
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 request.method = "POST"; 826 request.method = "POST";
813 request.url = GURL("http://www.google.com/"); 827 request.url = GURL("http://www.google.com/");
814 request.end_stream_on_headers = false; 828 request.end_stream_on_headers = false;
815 request.priority = DEFAULT_PRIORITY; 829 request.priority = DEFAULT_PRIORITY;
816 830
817 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 831 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
818 std::unique_ptr<TestDelegateBase> delegate( 832 std::unique_ptr<TestDelegateBase> delegate(
819 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 833 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
820 delegate->DoNotSendRequestHeadersAutomatically(); 834 delegate->DoNotSendRequestHeadersAutomatically();
821 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 835 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
836 ConfirmHandshake();
822 delegate->WaitUntilNextCallback(); // OnStreamReady 837 delegate->WaitUntilNextCallback(); // OnStreamReady
823 838
824 // Send a Data packet. 839 // Send a Data packet.
825 scoped_refptr<StringIOBuffer> buf1(new StringIOBuffer(kBody1)); 840 scoped_refptr<StringIOBuffer> buf1(new StringIOBuffer(kBody1));
826 841
827 delegate->SendData(buf1, buf1->size(), false); 842 delegate->SendData(buf1, buf1->size(), false);
828 delegate->WaitUntilNextCallback(); // OnDataSent 843 delegate->WaitUntilNextCallback(); // OnDataSent
829 844
830 // Server acks the request. 845 // Server acks the request.
831 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); 846 ProcessPacket(ConstructServerAckPacket(1, 0, 0));
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
909 request.method = "POST"; 924 request.method = "POST";
910 request.url = GURL("http://www.google.com/"); 925 request.url = GURL("http://www.google.com/");
911 request.end_stream_on_headers = false; 926 request.end_stream_on_headers = false;
912 request.priority = DEFAULT_PRIORITY; 927 request.priority = DEFAULT_PRIORITY;
913 928
914 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 929 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
915 std::unique_ptr<TestDelegateBase> delegate( 930 std::unique_ptr<TestDelegateBase> delegate(
916 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 931 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
917 delegate->DoNotSendRequestHeadersAutomatically(); 932 delegate->DoNotSendRequestHeadersAutomatically();
918 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 933 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
934 ConfirmHandshake();
919 delegate->WaitUntilNextCallback(); // OnStreamReady 935 delegate->WaitUntilNextCallback(); // OnStreamReady
920 936
921 // Send a Data packet. 937 // Send a Data packet.
922 scoped_refptr<StringIOBuffer> buf1(new StringIOBuffer(kBody1)); 938 scoped_refptr<StringIOBuffer> buf1(new StringIOBuffer(kBody1));
923 scoped_refptr<StringIOBuffer> buf2(new StringIOBuffer(kBody2)); 939 scoped_refptr<StringIOBuffer> buf2(new StringIOBuffer(kBody2));
924 940
925 std::vector<int> lengths = {buf1->size(), buf2->size()}; 941 std::vector<int> lengths = {buf1->size(), buf2->size()};
926 delegate->SendvData({buf1, buf2}, lengths, !kFin); 942 delegate->SendvData({buf1, buf2}, lengths, !kFin);
927 delegate->WaitUntilNextCallback(); // OnDataSent 943 delegate->WaitUntilNextCallback(); // OnDataSent
928 944
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
999 BidirectionalStreamRequestInfo request; 1015 BidirectionalStreamRequestInfo request;
1000 request.method = "POST"; 1016 request.method = "POST";
1001 request.url = GURL("http://www.google.com/"); 1017 request.url = GURL("http://www.google.com/");
1002 request.end_stream_on_headers = false; 1018 request.end_stream_on_headers = false;
1003 request.priority = DEFAULT_PRIORITY; 1019 request.priority = DEFAULT_PRIORITY;
1004 1020
1005 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1021 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1006 std::unique_ptr<TestDelegateBase> delegate( 1022 std::unique_ptr<TestDelegateBase> delegate(
1007 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1023 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1008 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 1024 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
1025 ConfirmHandshake();
1026 delegate->WaitUntilNextCallback(); // OnStreamReady
1027
1028 // Send a DATA frame.
1029 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData));
1030
1031 delegate->SendData(buf, buf->size(), true);
1032 delegate->WaitUntilNextCallback(); // OnDataSent
1033
1034 // Server acks the request.
1035 ProcessPacket(ConstructServerAckPacket(1, 0, 0));
1036
1037 // Server sends the response headers.
1038 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1039 size_t spdy_response_headers_frame_length;
1040 QuicStreamOffset offset = 0;
1041 ProcessPacket(ConstructResponseHeadersPacket(
1042 2, !kFin, response_headers, &spdy_response_headers_frame_length,
1043 &offset));
1044
1045 delegate->WaitUntilNextCallback(); // OnHeadersReceived
1046 TestCompletionCallback cb;
1047 int rv = delegate->ReadData(cb.callback());
1048 EXPECT_EQ(ERR_IO_PENDING, rv);
1049 EXPECT_EQ("200", delegate->response_headers().find(":status")->second);
1050 const char kResponseBody[] = "Hello world!";
1051 // Server sends data.
1052 ProcessPacket(
1053 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody));
1054
1055 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult());
1056
1057 size_t spdy_trailers_frame_length;
1058 SpdyHeaderBlock trailers;
1059 trailers["foo"] = "bar";
1060 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody));
1061 // Server sends trailers.
1062 ProcessPacket(ConstructResponseTrailersPacket(
1063 4, kFin, trailers, &spdy_trailers_frame_length, &offset));
1064
1065 delegate->WaitUntilNextCallback(); // OnTrailersReceived
1066 trailers.erase(kFinalOffsetHeaderKey);
1067 EXPECT_EQ(trailers, delegate->trailers());
1068 EXPECT_EQ(OK, delegate->ReadData(cb.callback()));
1069
1070 EXPECT_EQ(1, delegate->on_data_read_count());
1071 EXPECT_EQ(1, delegate->on_data_sent_count());
1072 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol());
1073 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length +
1074 strlen(kUploadData)),
1075 delegate->GetTotalSentBytes());
1076 EXPECT_EQ(
1077 static_cast<int64_t>(spdy_response_headers_frame_length +
1078 strlen(kResponseBody) + spdy_trailers_frame_length),
1079 delegate->GetTotalReceivedBytes());
1080 }
1081
1082 TEST_P(BidirectionalStreamQuicImplTest, PutRequest) {
1083 SetRequest("PUT", "/", DEFAULT_PRIORITY);
1084 size_t spdy_request_headers_frame_length;
1085 AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY,
1086 &spdy_request_headers_frame_length));
1087 AddWrite(ConstructDataPacket(2, kIncludeVersion, kFin, 0, kUploadData,
1088 &client_maker_));
1089 AddWrite(ConstructClientAckPacket(3, 3, 1));
1090
1091 Initialize();
1092
1093 BidirectionalStreamRequestInfo request;
1094 request.method = "PUT";
1095 request.url = GURL("http://www.google.com/");
1096 request.end_stream_on_headers = false;
1097 request.priority = DEFAULT_PRIORITY;
1098
1099 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1100 std::unique_ptr<TestDelegateBase> delegate(
1101 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1102 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
1009 delegate->WaitUntilNextCallback(); // OnStreamReady 1103 delegate->WaitUntilNextCallback(); // OnStreamReady
1010 1104
1011 // Send a DATA frame. 1105 // Send a DATA frame.
1012 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData)); 1106 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData));
1013 1107
1014 delegate->SendData(buf, buf->size(), true); 1108 delegate->SendData(buf, buf->size(), true);
1015 delegate->WaitUntilNextCallback(); // OnDataSent 1109 delegate->WaitUntilNextCallback(); // OnDataSent
1016 1110
1017 // Server acks the request. 1111 // Server acks the request.
1018 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); 1112 ProcessPacket(ConstructServerAckPacket(1, 0, 0));
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1077 BidirectionalStreamRequestInfo request; 1171 BidirectionalStreamRequestInfo request;
1078 request.method = "POST"; 1172 request.method = "POST";
1079 request.url = GURL("http://www.google.com/"); 1173 request.url = GURL("http://www.google.com/");
1080 request.end_stream_on_headers = false; 1174 request.end_stream_on_headers = false;
1081 request.priority = DEFAULT_PRIORITY; 1175 request.priority = DEFAULT_PRIORITY;
1082 1176
1083 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1177 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1084 std::unique_ptr<TestDelegateBase> delegate( 1178 std::unique_ptr<TestDelegateBase> delegate(
1085 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1179 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1086 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 1180 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
1181 ConfirmHandshake();
1087 delegate->WaitUntilNextCallback(); // OnStreamReady 1182 delegate->WaitUntilNextCallback(); // OnStreamReady
1088 1183
1089 // Server acks the request. 1184 // Server acks the request.
1090 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); 1185 ProcessPacket(ConstructServerAckPacket(1, 0, 0));
1091 1186
1092 // Server sends the response headers. 1187 // Server sends the response headers.
1093 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1188 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1094 size_t spdy_response_headers_frame_length; 1189 size_t spdy_response_headers_frame_length;
1095 ProcessPacket(ConstructResponseHeadersPacket( 1190 ProcessPacket(ConstructResponseHeadersPacket(
1096 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); 1191 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0));
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1156 request.method = "GET"; 1251 request.method = "GET";
1157 request.url = GURL("http://www.google.com/"); 1252 request.url = GURL("http://www.google.com/");
1158 request.end_stream_on_headers = true; 1253 request.end_stream_on_headers = true;
1159 request.priority = DEFAULT_PRIORITY; 1254 request.priority = DEFAULT_PRIORITY;
1160 1255
1161 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1256 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1162 std::unique_ptr<TestDelegateBase> delegate( 1257 std::unique_ptr<TestDelegateBase> delegate(
1163 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1258 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1164 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 1259 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
1165 delegate->WaitUntilNextCallback(); // OnStreamReady 1260 delegate->WaitUntilNextCallback(); // OnStreamReady
1261 ConfirmHandshake();
1166 1262
1167 // Server sends a Rst. 1263 // Server sends a Rst.
1168 ProcessPacket(ConstructServerRstStreamPacket(1)); 1264 ProcessPacket(ConstructServerRstStreamPacket(1));
1169 1265
1170 delegate->WaitUntilNextCallback(); // OnFailed 1266 delegate->WaitUntilNextCallback(); // OnFailed
1171 TestCompletionCallback cb; 1267 TestCompletionCallback cb;
1172 EXPECT_EQ(ERR_QUIC_PROTOCOL_ERROR, delegate->ReadData(cb.callback())); 1268 EXPECT_EQ(ERR_QUIC_PROTOCOL_ERROR, delegate->ReadData(cb.callback()));
1173 1269
1174 base::RunLoop().RunUntilIdle(); 1270 base::RunLoop().RunUntilIdle();
1175 1271
(...skipping 19 matching lines...) Expand all
1195 request.method = "GET"; 1291 request.method = "GET";
1196 request.url = GURL("http://www.google.com/"); 1292 request.url = GURL("http://www.google.com/");
1197 request.end_stream_on_headers = true; 1293 request.end_stream_on_headers = true;
1198 request.priority = DEFAULT_PRIORITY; 1294 request.priority = DEFAULT_PRIORITY;
1199 1295
1200 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1296 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1201 std::unique_ptr<TestDelegateBase> delegate( 1297 std::unique_ptr<TestDelegateBase> delegate(
1202 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1298 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1203 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 1299 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
1204 delegate->WaitUntilNextCallback(); // OnStreamReady 1300 delegate->WaitUntilNextCallback(); // OnStreamReady
1301 ConfirmHandshake();
1205 1302
1206 // Server acks the request. 1303 // Server acks the request.
1207 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); 1304 ProcessPacket(ConstructServerAckPacket(1, 0, 0));
1208 1305
1209 // Server sends the response headers. 1306 // Server sends the response headers.
1210 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1307 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1211 1308
1212 size_t spdy_response_headers_frame_length; 1309 size_t spdy_response_headers_frame_length;
1213 QuicStreamOffset offset = 0; 1310 QuicStreamOffset offset = 0;
1214 ProcessPacket(ConstructResponseHeadersPacket( 1311 ProcessPacket(ConstructResponseHeadersPacket(
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1252 BidirectionalStreamRequestInfo request; 1349 BidirectionalStreamRequestInfo request;
1253 request.method = "POST"; 1350 request.method = "POST";
1254 request.url = GURL("http://www.google.com/"); 1351 request.url = GURL("http://www.google.com/");
1255 request.end_stream_on_headers = false; 1352 request.end_stream_on_headers = false;
1256 request.priority = DEFAULT_PRIORITY; 1353 request.priority = DEFAULT_PRIORITY;
1257 1354
1258 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1355 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1259 std::unique_ptr<TestDelegateBase> delegate( 1356 std::unique_ptr<TestDelegateBase> delegate(
1260 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1357 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1261 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 1358 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
1359 ConfirmHandshake();
1262 delegate->WaitUntilNextCallback(); // OnStreamReady 1360 delegate->WaitUntilNextCallback(); // OnStreamReady
1263 1361
1264 // Server acks the request. 1362 // Server acks the request.
1265 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); 1363 ProcessPacket(ConstructServerAckPacket(1, 0, 0));
1266 1364
1267 // Server sends the response headers. 1365 // Server sends the response headers.
1268 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1366 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1269 size_t spdy_response_headers_frame_length; 1367 size_t spdy_response_headers_frame_length;
1270 ProcessPacket(ConstructResponseHeadersPacket( 1368 ProcessPacket(ConstructResponseHeadersPacket(
1271 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); 1369 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0));
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1307 BidirectionalStreamRequestInfo request; 1405 BidirectionalStreamRequestInfo request;
1308 request.method = "POST"; 1406 request.method = "POST";
1309 request.url = GURL("http://www.google.com/"); 1407 request.url = GURL("http://www.google.com/");
1310 request.end_stream_on_headers = false; 1408 request.end_stream_on_headers = false;
1311 request.priority = DEFAULT_PRIORITY; 1409 request.priority = DEFAULT_PRIORITY;
1312 1410
1313 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1411 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1314 std::unique_ptr<TestDelegateBase> delegate( 1412 std::unique_ptr<TestDelegateBase> delegate(
1315 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1413 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1316 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 1414 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
1415 ConfirmHandshake();
1317 delegate->WaitUntilNextCallback(); // OnStreamReady 1416 delegate->WaitUntilNextCallback(); // OnStreamReady
1318 1417
1319 // Server acks the request. 1418 // Server acks the request.
1320 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); 1419 ProcessPacket(ConstructServerAckPacket(1, 0, 0));
1321 1420
1322 // Server sends the response headers. 1421 // Server sends the response headers.
1323 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1422 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1324 1423
1325 size_t spdy_response_headers_frame_length; 1424 size_t spdy_response_headers_frame_length;
1326 QuicStreamOffset offset = 0; 1425 QuicStreamOffset offset = 0;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1365 BidirectionalStreamRequestInfo request; 1464 BidirectionalStreamRequestInfo request;
1366 request.method = "POST"; 1465 request.method = "POST";
1367 request.url = GURL("http://www.google.com/"); 1466 request.url = GURL("http://www.google.com/");
1368 request.end_stream_on_headers = false; 1467 request.end_stream_on_headers = false;
1369 request.priority = DEFAULT_PRIORITY; 1468 request.priority = DEFAULT_PRIORITY;
1370 1469
1371 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1470 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1372 std::unique_ptr<TestDelegateBase> delegate( 1471 std::unique_ptr<TestDelegateBase> delegate(
1373 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1472 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1374 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 1473 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
1474 ConfirmHandshake();
1375 delegate->WaitUntilNextCallback(); // OnStreamReady 1475 delegate->WaitUntilNextCallback(); // OnStreamReady
1376 1476
1377 // Server acks the request. 1477 // Server acks the request.
1378 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); 1478 ProcessPacket(ConstructServerAckPacket(1, 0, 0));
1379 1479
1380 // Server sends the response headers. 1480 // Server sends the response headers.
1381 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1481 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1382 size_t spdy_response_headers_frame_length; 1482 size_t spdy_response_headers_frame_length;
1383 ProcessPacket(ConstructResponseHeadersPacket( 1483 ProcessPacket(ConstructResponseHeadersPacket(
1384 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); 1484 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0));
(...skipping 30 matching lines...) Expand all
1415 request.method = "POST"; 1515 request.method = "POST";
1416 request.url = GURL("http://www.google.com/"); 1516 request.url = GURL("http://www.google.com/");
1417 request.end_stream_on_headers = false; 1517 request.end_stream_on_headers = false;
1418 request.priority = DEFAULT_PRIORITY; 1518 request.priority = DEFAULT_PRIORITY;
1419 1519
1420 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1520 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1421 std::unique_ptr<DeleteStreamDelegate> delegate( 1521 std::unique_ptr<DeleteStreamDelegate> delegate(
1422 new DeleteStreamDelegate(read_buffer.get(), kReadBufferSize, 1522 new DeleteStreamDelegate(read_buffer.get(), kReadBufferSize,
1423 DeleteStreamDelegate::ON_HEADERS_RECEIVED)); 1523 DeleteStreamDelegate::ON_HEADERS_RECEIVED));
1424 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 1524 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
1525 ConfirmHandshake();
1425 delegate->WaitUntilNextCallback(); // OnStreamReady 1526 delegate->WaitUntilNextCallback(); // OnStreamReady
1426 1527
1427 // Server acks the request. 1528 // Server acks the request.
1428 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); 1529 ProcessPacket(ConstructServerAckPacket(1, 0, 0));
1429 1530
1430 // Server sends the response headers. 1531 // Server sends the response headers.
1431 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1532 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1432 1533
1433 size_t spdy_response_headers_frame_length; 1534 size_t spdy_response_headers_frame_length;
1434 ProcessPacket(ConstructResponseHeadersPacket( 1535 ProcessPacket(ConstructResponseHeadersPacket(
(...skipping 22 matching lines...) Expand all
1457 BidirectionalStreamRequestInfo request; 1558 BidirectionalStreamRequestInfo request;
1458 request.method = "POST"; 1559 request.method = "POST";
1459 request.url = GURL("http://www.google.com/"); 1560 request.url = GURL("http://www.google.com/");
1460 request.end_stream_on_headers = false; 1561 request.end_stream_on_headers = false;
1461 request.priority = DEFAULT_PRIORITY; 1562 request.priority = DEFAULT_PRIORITY;
1462 1563
1463 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1564 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1464 std::unique_ptr<DeleteStreamDelegate> delegate(new DeleteStreamDelegate( 1565 std::unique_ptr<DeleteStreamDelegate> delegate(new DeleteStreamDelegate(
1465 read_buffer.get(), kReadBufferSize, DeleteStreamDelegate::ON_DATA_READ)); 1566 read_buffer.get(), kReadBufferSize, DeleteStreamDelegate::ON_DATA_READ));
1466 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 1567 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
1568 ConfirmHandshake();
1467 delegate->WaitUntilNextCallback(); // OnStreamReady 1569 delegate->WaitUntilNextCallback(); // OnStreamReady
1468 1570
1469 // Server acks the request. 1571 // Server acks the request.
1470 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); 1572 ProcessPacket(ConstructServerAckPacket(1, 0, 0));
1471 1573
1472 // Server sends the response headers. 1574 // Server sends the response headers.
1473 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1575 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1474 1576
1475 size_t spdy_response_headers_frame_length; 1577 size_t spdy_response_headers_frame_length;
1476 ProcessPacket(ConstructResponseHeadersPacket( 1578 ProcessPacket(ConstructResponseHeadersPacket(
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
1559 1661
1560 base::RunLoop().RunUntilIdle(); 1662 base::RunLoop().RunUntilIdle();
1561 1663
1562 EXPECT_EQ(1, delegate->on_data_read_count()); 1664 EXPECT_EQ(1, delegate->on_data_read_count());
1563 EXPECT_EQ(0, delegate->on_data_sent_count()); 1665 EXPECT_EQ(0, delegate->on_data_sent_count());
1564 } 1666 }
1565 1667
1566 } // namespace test 1668 } // namespace test
1567 1669
1568 } // namespace net 1670 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/bidirectional_stream_quic_impl.cc ('k') | net/quic/quic_chromium_client_stream.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698