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

Side by Side Diff: net/tools/quic/test_tools/quic_test_client.cc

Issue 341083007: Land Recent QUIC Changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Compile fix Created 6 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 | Annotate | Revision Log
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/tools/quic/test_tools/quic_test_client.h" 5 #include "net/tools/quic/test_tools/quic_test_client.h"
6 6
7 #include "base/time/time.h" 7 #include "base/time/time.h"
8 #include "net/base/completion_callback.h" 8 #include "net/base/completion_callback.h"
9 #include "net/base/net_errors.h" 9 #include "net/base/net_errors.h"
10 #include "net/cert/cert_verify_result.h" 10 #include "net/cert/cert_verify_result.h"
(...skipping 10 matching lines...) Expand all
21 #include "net/tools/quic/quic_spdy_client_stream.h" 21 #include "net/tools/quic/quic_spdy_client_stream.h"
22 #include "net/tools/quic/test_tools/http_message.h" 22 #include "net/tools/quic/test_tools/http_message.h"
23 #include "net/tools/quic/test_tools/quic_client_peer.h" 23 #include "net/tools/quic/test_tools/quic_client_peer.h"
24 #include "url/gurl.h" 24 #include "url/gurl.h"
25 25
26 using base::StringPiece; 26 using base::StringPiece;
27 using net::QuicServerId; 27 using net::QuicServerId;
28 using net::test::QuicConnectionPeer; 28 using net::test::QuicConnectionPeer;
29 using net::test::QuicSessionPeer; 29 using net::test::QuicSessionPeer;
30 using net::test::ReliableQuicStreamPeer; 30 using net::test::ReliableQuicStreamPeer;
31 using net::test::kInitialFlowControlWindowForTest;
32 using std::string; 31 using std::string;
33 using std::vector; 32 using std::vector;
34 33
35 namespace net { 34 namespace net {
36 namespace tools { 35 namespace tools {
37 namespace test { 36 namespace test {
38 namespace { 37 namespace {
39 38
40 // RecordingProofVerifier accepts any certificate chain and records the common 39 // RecordingProofVerifier accepts any certificate chain and records the common
41 // name of the leaf. 40 // name of the leaf.
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 "http://www.google.com"; 96 "http://www.google.com";
98 full_uri.append(uri.as_string()); 97 full_uri.append(uri.as_string());
99 headers->SetRequestUri(full_uri); 98 headers->SetRequestUri(full_uri);
100 } 99 }
101 return headers; 100 return headers;
102 } 101 }
103 102
104 MockableQuicClient::MockableQuicClient( 103 MockableQuicClient::MockableQuicClient(
105 IPEndPoint server_address, 104 IPEndPoint server_address,
106 const QuicServerId& server_id, 105 const QuicServerId& server_id,
107 const QuicVersionVector& supported_versions) 106 const QuicVersionVector& supported_versions,
107 EpollServer* epoll_server)
108 : QuicClient(server_address, 108 : QuicClient(server_address,
109 server_id, 109 server_id,
110 supported_versions, 110 supported_versions,
111 false), 111 false,
112 epoll_server),
112 override_connection_id_(0), 113 override_connection_id_(0),
113 test_writer_(NULL) {} 114 test_writer_(NULL) {}
114 115
115 MockableQuicClient::MockableQuicClient( 116 MockableQuicClient::MockableQuicClient(
116 IPEndPoint server_address, 117 IPEndPoint server_address,
117 const QuicServerId& server_id, 118 const QuicServerId& server_id,
118 const QuicConfig& config, 119 const QuicConfig& config,
119 const QuicVersionVector& supported_versions) 120 const QuicVersionVector& supported_versions,
121 EpollServer* epoll_server)
120 : QuicClient(server_address, 122 : QuicClient(server_address,
121 server_id, 123 server_id,
122 supported_versions, 124 supported_versions,
123 false, 125 false,
124 config), 126 config,
127 epoll_server),
125 override_connection_id_(0), 128 override_connection_id_(0),
126 test_writer_(NULL) {} 129 test_writer_(NULL) {}
127 130
128 MockableQuicClient::~MockableQuicClient() { 131 MockableQuicClient::~MockableQuicClient() {
129 if (connected()) { 132 if (connected()) {
130 Disconnect(); 133 Disconnect();
131 } 134 }
132 } 135 }
133 136
134 QuicPacketWriter* MockableQuicClient::CreateQuicPacketWriter() { 137 QuicPacketWriter* MockableQuicClient::CreateQuicPacketWriter() {
(...skipping 21 matching lines...) Expand all
156 } 159 }
157 160
158 QuicTestClient::QuicTestClient(IPEndPoint server_address, 161 QuicTestClient::QuicTestClient(IPEndPoint server_address,
159 const string& server_hostname, 162 const string& server_hostname,
160 const QuicVersionVector& supported_versions) 163 const QuicVersionVector& supported_versions)
161 : client_(new MockableQuicClient(server_address, 164 : client_(new MockableQuicClient(server_address,
162 QuicServerId(server_hostname, 165 QuicServerId(server_hostname,
163 server_address.port(), 166 server_address.port(),
164 false, 167 false,
165 PRIVACY_MODE_DISABLED), 168 PRIVACY_MODE_DISABLED),
166 supported_versions)) { 169 supported_versions,
170 &epoll_server_)) {
167 Initialize(true); 171 Initialize(true);
168 } 172 }
169 173
170 QuicTestClient::QuicTestClient(IPEndPoint server_address, 174 QuicTestClient::QuicTestClient(IPEndPoint server_address,
171 const string& server_hostname, 175 const string& server_hostname,
172 bool secure, 176 bool secure,
173 const QuicVersionVector& supported_versions) 177 const QuicVersionVector& supported_versions)
174 : client_(new MockableQuicClient(server_address, 178 : client_(new MockableQuicClient(server_address,
175 QuicServerId(server_hostname, 179 QuicServerId(server_hostname,
176 server_address.port(), 180 server_address.port(),
177 secure, 181 secure,
178 PRIVACY_MODE_DISABLED), 182 PRIVACY_MODE_DISABLED),
179 supported_versions)) { 183 supported_versions,
184 &epoll_server_)) {
180 Initialize(secure); 185 Initialize(secure);
181 } 186 }
182 187
183 QuicTestClient::QuicTestClient( 188 QuicTestClient::QuicTestClient(
184 IPEndPoint server_address, 189 IPEndPoint server_address,
185 const string& server_hostname, 190 const string& server_hostname,
186 bool secure, 191 bool secure,
187 const QuicConfig& config, 192 const QuicConfig& config,
188 const QuicVersionVector& supported_versions) 193 const QuicVersionVector& supported_versions)
189 : client_( 194 : client_(
190 new MockableQuicClient(server_address, 195 new MockableQuicClient(server_address,
191 QuicServerId(server_hostname, 196 QuicServerId(server_hostname,
192 server_address.port(), 197 server_address.port(),
193 secure, 198 secure,
194 PRIVACY_MODE_DISABLED), 199 PRIVACY_MODE_DISABLED),
195 config, 200 config,
196 supported_versions)) { 201 supported_versions,
202 &epoll_server_)) {
197 Initialize(secure); 203 Initialize(secure);
198 } 204 }
199 205
200 QuicTestClient::QuicTestClient() { 206 QuicTestClient::QuicTestClient() {
201 } 207 }
202 208
203 QuicTestClient::~QuicTestClient() { 209 QuicTestClient::~QuicTestClient() {
204 if (stream_) { 210 if (stream_) {
205 stream_->set_visitor(NULL); 211 stream_->set_visitor(NULL);
206 } 212 }
(...skipping 14 matching lines...) Expand all
221 void QuicTestClient::ExpectCertificates(bool on) { 227 void QuicTestClient::ExpectCertificates(bool on) {
222 if (on) { 228 if (on) {
223 proof_verifier_ = new RecordingProofVerifier; 229 proof_verifier_ = new RecordingProofVerifier;
224 client_->SetProofVerifier(proof_verifier_); 230 client_->SetProofVerifier(proof_verifier_);
225 } else { 231 } else {
226 proof_verifier_ = NULL; 232 proof_verifier_ = NULL;
227 client_->SetProofVerifier(NULL); 233 client_->SetProofVerifier(NULL);
228 } 234 }
229 } 235 }
230 236
237 void QuicTestClient::SetUserAgentID(const string& user_agent_id) {
238 client_->SetUserAgentID(user_agent_id);
239 }
240
231 ssize_t QuicTestClient::SendRequest(const string& uri) { 241 ssize_t QuicTestClient::SendRequest(const string& uri) {
232 HTTPMessage message(HttpConstants::HTTP_1_1, 242 HTTPMessage message(HttpConstants::HTTP_1_1,
233 HttpConstants::GET, 243 HttpConstants::GET,
234 uri); 244 uri);
235 return SendMessage(message); 245 return SendMessage(message);
236 } 246 }
237 247
238 ssize_t QuicTestClient::SendMessage(const HTTPMessage& message) { 248 ssize_t QuicTestClient::SendMessage(const HTTPMessage& message) {
239 stream_ = NULL; // Always force creation of a stream for SendMessage. 249 stream_ = NULL; // Always force creation of a stream for SendMessage.
240 250
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 response_headers_complete_ = false; 407 response_headers_complete_ = false;
398 headers_.Clear(); 408 headers_.Clear();
399 bytes_read_ = 0; 409 bytes_read_ = 0;
400 bytes_written_ = 0; 410 bytes_written_ = 0;
401 response_header_size_ = 0; 411 response_header_size_ = 0;
402 response_body_size_ = 0; 412 response_body_size_ = 0;
403 } 413 }
404 414
405 void QuicTestClient::WaitForResponseForMs(int timeout_ms) { 415 void QuicTestClient::WaitForResponseForMs(int timeout_ms) {
406 int64 timeout_us = timeout_ms * base::Time::kMicrosecondsPerMillisecond; 416 int64 timeout_us = timeout_ms * base::Time::kMicrosecondsPerMillisecond;
407 int64 old_timeout_us = client()->epoll_server()->timeout_in_us(); 417 int64 old_timeout_us = epoll_server()->timeout_in_us();
408 if (timeout_us > 0) { 418 if (timeout_us > 0) {
409 client()->epoll_server()->set_timeout_in_us(timeout_us); 419 epoll_server()->set_timeout_in_us(timeout_us);
410 } 420 }
411 const QuicClock* clock = 421 const QuicClock* clock =
412 QuicConnectionPeer::GetHelper(client()->session()->connection())-> 422 QuicConnectionPeer::GetHelper(client()->session()->connection())->
413 GetClock(); 423 GetClock();
414 QuicTime end_waiting_time = clock->Now().Add( 424 QuicTime end_waiting_time = clock->Now().Add(
415 QuicTime::Delta::FromMicroseconds(timeout_us)); 425 QuicTime::Delta::FromMicroseconds(timeout_us));
416 while (stream_ != NULL && 426 while (stream_ != NULL &&
417 !client_->session()->IsClosedStream(stream_->id()) && 427 !client_->session()->IsClosedStream(stream_->id()) &&
418 (timeout_us < 0 || clock->Now() < end_waiting_time)) { 428 (timeout_us < 0 || clock->Now() < end_waiting_time)) {
419 client_->WaitForEvents(); 429 client_->WaitForEvents();
420 } 430 }
421 if (timeout_us > 0) { 431 if (timeout_us > 0) {
422 client()->epoll_server()->set_timeout_in_us(old_timeout_us); 432 epoll_server()->set_timeout_in_us(old_timeout_us);
423 } 433 }
424 } 434 }
425 435
426 void QuicTestClient::WaitForInitialResponseForMs(int timeout_ms) { 436 void QuicTestClient::WaitForInitialResponseForMs(int timeout_ms) {
427 int64 timeout_us = timeout_ms * base::Time::kMicrosecondsPerMillisecond; 437 int64 timeout_us = timeout_ms * base::Time::kMicrosecondsPerMillisecond;
428 int64 old_timeout_us = client()->epoll_server()->timeout_in_us(); 438 int64 old_timeout_us = epoll_server()->timeout_in_us();
429 if (timeout_us > 0) { 439 if (timeout_us > 0) {
430 client()->epoll_server()->set_timeout_in_us(timeout_us); 440 epoll_server()->set_timeout_in_us(timeout_us);
431 } 441 }
432 const QuicClock* clock = 442 const QuicClock* clock =
433 QuicConnectionPeer::GetHelper(client()->session()->connection())-> 443 QuicConnectionPeer::GetHelper(client()->session()->connection())->
434 GetClock(); 444 GetClock();
435 QuicTime end_waiting_time = clock->Now().Add( 445 QuicTime end_waiting_time = clock->Now().Add(
436 QuicTime::Delta::FromMicroseconds(timeout_us)); 446 QuicTime::Delta::FromMicroseconds(timeout_us));
437 while (stream_ != NULL && 447 while (stream_ != NULL &&
438 !client_->session()->IsClosedStream(stream_->id()) && 448 !client_->session()->IsClosedStream(stream_->id()) &&
439 stream_->stream_bytes_read() == 0 && 449 stream_->stream_bytes_read() == 0 &&
440 (timeout_us < 0 || clock->Now() < end_waiting_time)) { 450 (timeout_us < 0 || clock->Now() < end_waiting_time)) {
441 client_->WaitForEvents(); 451 client_->WaitForEvents();
442 } 452 }
443 if (timeout_us > 0) { 453 if (timeout_us > 0) {
444 client()->epoll_server()->set_timeout_in_us(old_timeout_us); 454 epoll_server()->set_timeout_in_us(old_timeout_us);
445 } 455 }
446 } 456 }
447 457
448 ssize_t QuicTestClient::Send(const void *buffer, size_t size) { 458 ssize_t QuicTestClient::Send(const void *buffer, size_t size) {
449 return SendData(string(static_cast<const char*>(buffer), size), false); 459 return SendData(string(static_cast<const char*>(buffer), size), false);
450 } 460 }
451 461
452 bool QuicTestClient::response_headers_complete() const { 462 bool QuicTestClient::response_headers_complete() const {
453 if (stream_ != NULL) { 463 if (stream_ != NULL) {
454 return stream_->headers_decompressed(); 464 return stream_->headers_decompressed();
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 // Set policy for headers and crypto streams. 560 // Set policy for headers and crypto streams.
551 ReliableQuicStreamPeer::SetFecPolicy( 561 ReliableQuicStreamPeer::SetFecPolicy(
552 QuicSessionPeer::GetHeadersStream(client()->session()), fec_policy); 562 QuicSessionPeer::GetHeadersStream(client()->session()), fec_policy);
553 ReliableQuicStreamPeer::SetFecPolicy(client()->session()->GetCryptoStream(), 563 ReliableQuicStreamPeer::SetFecPolicy(client()->session()->GetCryptoStream(),
554 fec_policy); 564 fec_policy);
555 } 565 }
556 566
557 } // namespace test 567 } // namespace test
558 } // namespace tools 568 } // namespace tools
559 } // namespace net 569 } // namespace net
OLDNEW
« no previous file with comments | « net/tools/quic/test_tools/quic_test_client.h ('k') | net/tools/quic/test_tools/quic_test_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698