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

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: test 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
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_);
81 loop_->Quit(); 83 loop_->Quit();
84 is_ready_ = true;
xunjieli 2016/06/17 18:05:42 nit: maybe set |is_ready_| before exiting the |loo
Ryan Hamilton 2016/06/17 18:20:35 Done.
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 }
91 94
(...skipping 95 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 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
708 BidirectionalStreamRequestInfo request; 720 BidirectionalStreamRequestInfo request;
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());
xunjieli 2016/06/17 18:05:42 Does QuicStreamRequest always finish synchronously
Ryan Hamilton 2016/06/17 18:20:35 No, it's not guaranteed to complete synchronously.
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();
1009 delegate->WaitUntilNextCallback(); // OnStreamReady 1026 delegate->WaitUntilNextCallback(); // OnStreamReady
1010 1027
1011 // Send a DATA frame. 1028 // Send a DATA frame.
1012 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData)); 1029 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData));
1013 1030
1014 delegate->SendData(buf, buf->size(), true); 1031 delegate->SendData(buf, buf->size(), true);
1015 delegate->WaitUntilNextCallback(); // OnDataSent 1032 delegate->WaitUntilNextCallback(); // OnDataSent
1016 1033
1017 // Server acks the request. 1034 // Server acks the request.
1018 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); 1035 ProcessPacket(ConstructServerAckPacket(1, 0, 0));
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1077 BidirectionalStreamRequestInfo request; 1094 BidirectionalStreamRequestInfo request;
1078 request.method = "POST"; 1095 request.method = "POST";
1079 request.url = GURL("http://www.google.com/"); 1096 request.url = GURL("http://www.google.com/");
1080 request.end_stream_on_headers = false; 1097 request.end_stream_on_headers = false;
1081 request.priority = DEFAULT_PRIORITY; 1098 request.priority = DEFAULT_PRIORITY;
1082 1099
1083 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1100 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1084 std::unique_ptr<TestDelegateBase> delegate( 1101 std::unique_ptr<TestDelegateBase> delegate(
1085 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1102 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1086 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 1103 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
1104 ConfirmHandshake();
1087 delegate->WaitUntilNextCallback(); // OnStreamReady 1105 delegate->WaitUntilNextCallback(); // OnStreamReady
1088 1106
1089 // Server acks the request. 1107 // Server acks the request.
1090 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); 1108 ProcessPacket(ConstructServerAckPacket(1, 0, 0));
1091 1109
1092 // Server sends the response headers. 1110 // Server sends the response headers.
1093 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1111 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1094 size_t spdy_response_headers_frame_length; 1112 size_t spdy_response_headers_frame_length;
1095 ProcessPacket(ConstructResponseHeadersPacket( 1113 ProcessPacket(ConstructResponseHeadersPacket(
1096 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); 1114 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"; 1174 request.method = "GET";
1157 request.url = GURL("http://www.google.com/"); 1175 request.url = GURL("http://www.google.com/");
1158 request.end_stream_on_headers = true; 1176 request.end_stream_on_headers = true;
1159 request.priority = DEFAULT_PRIORITY; 1177 request.priority = DEFAULT_PRIORITY;
1160 1178
1161 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1179 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1162 std::unique_ptr<TestDelegateBase> delegate( 1180 std::unique_ptr<TestDelegateBase> delegate(
1163 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1181 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1164 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 1182 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
1165 delegate->WaitUntilNextCallback(); // OnStreamReady 1183 delegate->WaitUntilNextCallback(); // OnStreamReady
1184 ConfirmHandshake();
1166 1185
1167 // Server sends a Rst. 1186 // Server sends a Rst.
1168 ProcessPacket(ConstructServerRstStreamPacket(1)); 1187 ProcessPacket(ConstructServerRstStreamPacket(1));
1169 1188
1170 delegate->WaitUntilNextCallback(); // OnFailed 1189 delegate->WaitUntilNextCallback(); // OnFailed
1171 TestCompletionCallback cb; 1190 TestCompletionCallback cb;
1172 EXPECT_EQ(ERR_QUIC_PROTOCOL_ERROR, delegate->ReadData(cb.callback())); 1191 EXPECT_EQ(ERR_QUIC_PROTOCOL_ERROR, delegate->ReadData(cb.callback()));
1173 1192
1174 base::RunLoop().RunUntilIdle(); 1193 base::RunLoop().RunUntilIdle();
1175 1194
(...skipping 19 matching lines...) Expand all
1195 request.method = "GET"; 1214 request.method = "GET";
1196 request.url = GURL("http://www.google.com/"); 1215 request.url = GURL("http://www.google.com/");
1197 request.end_stream_on_headers = true; 1216 request.end_stream_on_headers = true;
1198 request.priority = DEFAULT_PRIORITY; 1217 request.priority = DEFAULT_PRIORITY;
1199 1218
1200 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1219 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1201 std::unique_ptr<TestDelegateBase> delegate( 1220 std::unique_ptr<TestDelegateBase> delegate(
1202 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1221 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1203 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 1222 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
1204 delegate->WaitUntilNextCallback(); // OnStreamReady 1223 delegate->WaitUntilNextCallback(); // OnStreamReady
1224 ConfirmHandshake();
1205 1225
1206 // Server acks the request. 1226 // Server acks the request.
1207 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); 1227 ProcessPacket(ConstructServerAckPacket(1, 0, 0));
1208 1228
1209 // Server sends the response headers. 1229 // Server sends the response headers.
1210 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1230 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1211 1231
1212 size_t spdy_response_headers_frame_length; 1232 size_t spdy_response_headers_frame_length;
1213 QuicStreamOffset offset = 0; 1233 QuicStreamOffset offset = 0;
1214 ProcessPacket(ConstructResponseHeadersPacket( 1234 ProcessPacket(ConstructResponseHeadersPacket(
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1252 BidirectionalStreamRequestInfo request; 1272 BidirectionalStreamRequestInfo request;
1253 request.method = "POST"; 1273 request.method = "POST";
1254 request.url = GURL("http://www.google.com/"); 1274 request.url = GURL("http://www.google.com/");
1255 request.end_stream_on_headers = false; 1275 request.end_stream_on_headers = false;
1256 request.priority = DEFAULT_PRIORITY; 1276 request.priority = DEFAULT_PRIORITY;
1257 1277
1258 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1278 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1259 std::unique_ptr<TestDelegateBase> delegate( 1279 std::unique_ptr<TestDelegateBase> delegate(
1260 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1280 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1261 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 1281 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
1282 ConfirmHandshake();
1262 delegate->WaitUntilNextCallback(); // OnStreamReady 1283 delegate->WaitUntilNextCallback(); // OnStreamReady
1263 1284
1264 // Server acks the request. 1285 // Server acks the request.
1265 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); 1286 ProcessPacket(ConstructServerAckPacket(1, 0, 0));
1266 1287
1267 // Server sends the response headers. 1288 // Server sends the response headers.
1268 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1289 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1269 size_t spdy_response_headers_frame_length; 1290 size_t spdy_response_headers_frame_length;
1270 ProcessPacket(ConstructResponseHeadersPacket( 1291 ProcessPacket(ConstructResponseHeadersPacket(
1271 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); 1292 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; 1328 BidirectionalStreamRequestInfo request;
1308 request.method = "POST"; 1329 request.method = "POST";
1309 request.url = GURL("http://www.google.com/"); 1330 request.url = GURL("http://www.google.com/");
1310 request.end_stream_on_headers = false; 1331 request.end_stream_on_headers = false;
1311 request.priority = DEFAULT_PRIORITY; 1332 request.priority = DEFAULT_PRIORITY;
1312 1333
1313 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1334 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1314 std::unique_ptr<TestDelegateBase> delegate( 1335 std::unique_ptr<TestDelegateBase> delegate(
1315 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1336 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1316 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 1337 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
1338 ConfirmHandshake();
1317 delegate->WaitUntilNextCallback(); // OnStreamReady 1339 delegate->WaitUntilNextCallback(); // OnStreamReady
1318 1340
1319 // Server acks the request. 1341 // Server acks the request.
1320 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); 1342 ProcessPacket(ConstructServerAckPacket(1, 0, 0));
1321 1343
1322 // Server sends the response headers. 1344 // Server sends the response headers.
1323 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1345 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1324 1346
1325 size_t spdy_response_headers_frame_length; 1347 size_t spdy_response_headers_frame_length;
1326 QuicStreamOffset offset = 0; 1348 QuicStreamOffset offset = 0;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1365 BidirectionalStreamRequestInfo request; 1387 BidirectionalStreamRequestInfo request;
1366 request.method = "POST"; 1388 request.method = "POST";
1367 request.url = GURL("http://www.google.com/"); 1389 request.url = GURL("http://www.google.com/");
1368 request.end_stream_on_headers = false; 1390 request.end_stream_on_headers = false;
1369 request.priority = DEFAULT_PRIORITY; 1391 request.priority = DEFAULT_PRIORITY;
1370 1392
1371 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1393 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1372 std::unique_ptr<TestDelegateBase> delegate( 1394 std::unique_ptr<TestDelegateBase> delegate(
1373 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); 1395 new TestDelegateBase(read_buffer.get(), kReadBufferSize));
1374 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 1396 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
1397 ConfirmHandshake();
1375 delegate->WaitUntilNextCallback(); // OnStreamReady 1398 delegate->WaitUntilNextCallback(); // OnStreamReady
1376 1399
1377 // Server acks the request. 1400 // Server acks the request.
1378 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); 1401 ProcessPacket(ConstructServerAckPacket(1, 0, 0));
1379 1402
1380 // Server sends the response headers. 1403 // Server sends the response headers.
1381 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1404 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1382 size_t spdy_response_headers_frame_length; 1405 size_t spdy_response_headers_frame_length;
1383 ProcessPacket(ConstructResponseHeadersPacket( 1406 ProcessPacket(ConstructResponseHeadersPacket(
1384 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); 1407 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0));
(...skipping 30 matching lines...) Expand all
1415 request.method = "POST"; 1438 request.method = "POST";
1416 request.url = GURL("http://www.google.com/"); 1439 request.url = GURL("http://www.google.com/");
1417 request.end_stream_on_headers = false; 1440 request.end_stream_on_headers = false;
1418 request.priority = DEFAULT_PRIORITY; 1441 request.priority = DEFAULT_PRIORITY;
1419 1442
1420 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1443 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1421 std::unique_ptr<DeleteStreamDelegate> delegate( 1444 std::unique_ptr<DeleteStreamDelegate> delegate(
1422 new DeleteStreamDelegate(read_buffer.get(), kReadBufferSize, 1445 new DeleteStreamDelegate(read_buffer.get(), kReadBufferSize,
1423 DeleteStreamDelegate::ON_HEADERS_RECEIVED)); 1446 DeleteStreamDelegate::ON_HEADERS_RECEIVED));
1424 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 1447 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
1448 ConfirmHandshake();
1425 delegate->WaitUntilNextCallback(); // OnStreamReady 1449 delegate->WaitUntilNextCallback(); // OnStreamReady
1426 1450
1427 // Server acks the request. 1451 // Server acks the request.
1428 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); 1452 ProcessPacket(ConstructServerAckPacket(1, 0, 0));
1429 1453
1430 // Server sends the response headers. 1454 // Server sends the response headers.
1431 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1455 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1432 1456
1433 size_t spdy_response_headers_frame_length; 1457 size_t spdy_response_headers_frame_length;
1434 ProcessPacket(ConstructResponseHeadersPacket( 1458 ProcessPacket(ConstructResponseHeadersPacket(
(...skipping 22 matching lines...) Expand all
1457 BidirectionalStreamRequestInfo request; 1481 BidirectionalStreamRequestInfo request;
1458 request.method = "POST"; 1482 request.method = "POST";
1459 request.url = GURL("http://www.google.com/"); 1483 request.url = GURL("http://www.google.com/");
1460 request.end_stream_on_headers = false; 1484 request.end_stream_on_headers = false;
1461 request.priority = DEFAULT_PRIORITY; 1485 request.priority = DEFAULT_PRIORITY;
1462 1486
1463 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1487 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1464 std::unique_ptr<DeleteStreamDelegate> delegate(new DeleteStreamDelegate( 1488 std::unique_ptr<DeleteStreamDelegate> delegate(new DeleteStreamDelegate(
1465 read_buffer.get(), kReadBufferSize, DeleteStreamDelegate::ON_DATA_READ)); 1489 read_buffer.get(), kReadBufferSize, DeleteStreamDelegate::ON_DATA_READ));
1466 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 1490 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
1491 ConfirmHandshake();
1467 delegate->WaitUntilNextCallback(); // OnStreamReady 1492 delegate->WaitUntilNextCallback(); // OnStreamReady
1468 1493
1469 // Server acks the request. 1494 // Server acks the request.
1470 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); 1495 ProcessPacket(ConstructServerAckPacket(1, 0, 0));
1471 1496
1472 // Server sends the response headers. 1497 // Server sends the response headers.
1473 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1498 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1474 1499
1475 size_t spdy_response_headers_frame_length; 1500 size_t spdy_response_headers_frame_length;
1476 ProcessPacket(ConstructResponseHeadersPacket( 1501 ProcessPacket(ConstructResponseHeadersPacket(
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1510 request.url = GURL("http://www.google.com/"); 1535 request.url = GURL("http://www.google.com/");
1511 request.end_stream_on_headers = true; 1536 request.end_stream_on_headers = true;
1512 request.priority = DEFAULT_PRIORITY; 1537 request.priority = DEFAULT_PRIORITY;
1513 1538
1514 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1539 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1515 std::unique_ptr<DeleteStreamDelegate> delegate( 1540 std::unique_ptr<DeleteStreamDelegate> delegate(
1516 new DeleteStreamDelegate(read_buffer.get(), kReadBufferSize, 1541 new DeleteStreamDelegate(read_buffer.get(), kReadBufferSize,
1517 DeleteStreamDelegate::ON_TRAILERS_RECEIVED)); 1542 DeleteStreamDelegate::ON_TRAILERS_RECEIVED));
1518 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); 1543 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr());
1519 delegate->WaitUntilNextCallback(); // OnStreamReady 1544 delegate->WaitUntilNextCallback(); // OnStreamReady
1545 ConfirmHandshake();
xunjieli 2016/06/17 18:05:43 You have examples here to demonstrate that GET doe
Ryan Hamilton 2016/06/17 18:20:35 Done.
1520 1546
1521 // Server acks the request. 1547 // Server acks the request.
1522 ProcessPacket(ConstructServerAckPacket(1, 0, 0)); 1548 ProcessPacket(ConstructServerAckPacket(1, 0, 0));
1523 1549
1524 // Server sends the response headers. 1550 // Server sends the response headers.
1525 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); 1551 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200");
1526 1552
1527 QuicStreamOffset offset = 0; 1553 QuicStreamOffset offset = 0;
1528 size_t spdy_response_headers_frame_length; 1554 size_t spdy_response_headers_frame_length;
1529 ProcessPacket(ConstructResponseHeadersPacket( 1555 ProcessPacket(ConstructResponseHeadersPacket(
(...skipping 29 matching lines...) Expand all
1559 1585
1560 base::RunLoop().RunUntilIdle(); 1586 base::RunLoop().RunUntilIdle();
1561 1587
1562 EXPECT_EQ(1, delegate->on_data_read_count()); 1588 EXPECT_EQ(1, delegate->on_data_read_count());
1563 EXPECT_EQ(0, delegate->on_data_sent_count()); 1589 EXPECT_EQ(0, delegate->on_data_sent_count());
1564 } 1590 }
1565 1591
1566 } // namespace test 1592 } // namespace test
1567 1593
1568 } // namespace net 1594 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698