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

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

Issue 612323013: QUIC - (no behavior change) s/NULL/nullptr/g in .../quic/... (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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/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 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 private: 75 private:
76 string common_name_; 76 string common_name_;
77 }; 77 };
78 78
79 } // anonymous namespace 79 } // anonymous namespace
80 80
81 BalsaHeaders* MungeHeaders(const BalsaHeaders* const_headers, 81 BalsaHeaders* MungeHeaders(const BalsaHeaders* const_headers,
82 bool secure) { 82 bool secure) {
83 StringPiece uri = const_headers->request_uri(); 83 StringPiece uri = const_headers->request_uri();
84 if (uri.empty()) { 84 if (uri.empty()) {
85 return NULL; 85 return nullptr;
86 } 86 }
87 if (const_headers->request_method() == "CONNECT") { 87 if (const_headers->request_method() == "CONNECT") {
88 return NULL; 88 return nullptr;
89 } 89 }
90 BalsaHeaders* headers = new BalsaHeaders; 90 BalsaHeaders* headers = new BalsaHeaders;
91 headers->CopyFrom(*const_headers); 91 headers->CopyFrom(*const_headers);
92 if (!uri.starts_with("https://") && 92 if (!uri.starts_with("https://") &&
93 !uri.starts_with("http://")) { 93 !uri.starts_with("http://")) {
94 // If we have a relative URL, set some defaults. 94 // If we have a relative URL, set some defaults.
95 string full_uri = secure ? "https://www.google.com" : 95 string full_uri = secure ? "https://www.google.com" :
96 "http://www.google.com"; 96 "http://www.google.com";
97 full_uri.append(uri.as_string()); 97 full_uri.append(uri.as_string());
98 headers->SetRequestUri(full_uri); 98 headers->SetRequestUri(full_uri);
99 } 99 }
100 return headers; 100 return headers;
101 } 101 }
102 102
103 MockableQuicClient::MockableQuicClient( 103 MockableQuicClient::MockableQuicClient(
104 IPEndPoint server_address, 104 IPEndPoint server_address,
105 const QuicServerId& server_id, 105 const QuicServerId& server_id,
106 const QuicVersionVector& supported_versions, 106 const QuicVersionVector& supported_versions,
107 EpollServer* epoll_server) 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 epoll_server),
113 override_connection_id_(0), 113 override_connection_id_(0),
114 test_writer_(NULL) {} 114 test_writer_(nullptr) {}
115 115
116 MockableQuicClient::MockableQuicClient( 116 MockableQuicClient::MockableQuicClient(
117 IPEndPoint server_address, 117 IPEndPoint server_address,
118 const QuicServerId& server_id, 118 const QuicServerId& server_id,
119 const QuicConfig& config, 119 const QuicConfig& config,
120 const QuicVersionVector& supported_versions, 120 const QuicVersionVector& supported_versions,
121 EpollServer* epoll_server) 121 EpollServer* epoll_server)
122 : QuicClient(server_address, 122 : QuicClient(server_address,
123 server_id, 123 server_id,
124 supported_versions, 124 supported_versions,
125 false, 125 false,
126 config, 126 config,
127 epoll_server), 127 epoll_server),
128 override_connection_id_(0), 128 override_connection_id_(0),
129 test_writer_(NULL) {} 129 test_writer_(nullptr) {}
130 130
131 MockableQuicClient::~MockableQuicClient() { 131 MockableQuicClient::~MockableQuicClient() {
132 if (connected()) { 132 if (connected()) {
133 Disconnect(); 133 Disconnect();
134 } 134 }
135 } 135 }
136 136
137 QuicPacketWriter* MockableQuicClient::CreateQuicPacketWriter() { 137 QuicPacketWriter* MockableQuicClient::CreateQuicPacketWriter() {
138 QuicPacketWriter* writer = QuicClient::CreateQuicPacketWriter(); 138 QuicPacketWriter* writer = QuicClient::CreateQuicPacketWriter();
139 if (!test_writer_) { 139 if (!test_writer_) {
140 return writer; 140 return writer;
141 } 141 }
142 test_writer_->set_writer(writer); 142 test_writer_->set_writer(writer);
143 return test_writer_; 143 return test_writer_;
144 } 144 }
145 145
146 QuicConnectionId MockableQuicClient::GenerateConnectionId() { 146 QuicConnectionId MockableQuicClient::GenerateConnectionId() {
147 return override_connection_id_ ? override_connection_id_ 147 return override_connection_id_ ? override_connection_id_
148 : QuicClient::GenerateConnectionId(); 148 : QuicClient::GenerateConnectionId();
149 } 149 }
150 150
151 // Takes ownership of writer. 151 // Takes ownership of writer.
152 void MockableQuicClient::UseWriter(QuicPacketWriterWrapper* writer) { 152 void MockableQuicClient::UseWriter(QuicPacketWriterWrapper* writer) {
153 CHECK(test_writer_ == NULL); 153 CHECK(test_writer_ == nullptr);
154 test_writer_ = writer; 154 test_writer_ = writer;
155 } 155 }
156 156
157 void MockableQuicClient::UseConnectionId(QuicConnectionId connection_id) { 157 void MockableQuicClient::UseConnectionId(QuicConnectionId connection_id) {
158 override_connection_id_ = connection_id; 158 override_connection_id_ = connection_id;
159 } 159 }
160 160
161 QuicTestClient::QuicTestClient(IPEndPoint server_address, 161 QuicTestClient::QuicTestClient(IPEndPoint server_address,
162 const string& server_hostname, 162 const string& server_hostname,
163 const QuicVersionVector& supported_versions) 163 const QuicVersionVector& supported_versions)
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 supported_versions, 201 supported_versions,
202 &epoll_server_)) { 202 &epoll_server_)) {
203 Initialize(secure); 203 Initialize(secure);
204 } 204 }
205 205
206 QuicTestClient::QuicTestClient() { 206 QuicTestClient::QuicTestClient() {
207 } 207 }
208 208
209 QuicTestClient::~QuicTestClient() { 209 QuicTestClient::~QuicTestClient() {
210 if (stream_) { 210 if (stream_) {
211 stream_->set_visitor(NULL); 211 stream_->set_visitor(nullptr);
212 } 212 }
213 } 213 }
214 214
215 void QuicTestClient::Initialize(bool secure) { 215 void QuicTestClient::Initialize(bool secure) {
216 priority_ = 3; 216 priority_ = 3;
217 connect_attempted_ = false; 217 connect_attempted_ = false;
218 secure_ = secure; 218 secure_ = secure;
219 auto_reconnect_ = false; 219 auto_reconnect_ = false;
220 buffer_body_ = true; 220 buffer_body_ = true;
221 fec_policy_ = FEC_PROTECT_OPTIONAL; 221 fec_policy_ = FEC_PROTECT_OPTIONAL;
222 proof_verifier_ = NULL; 222 proof_verifier_ = nullptr;
223 ClearPerRequestState(); 223 ClearPerRequestState();
224 ExpectCertificates(secure_); 224 ExpectCertificates(secure_);
225 } 225 }
226 226
227 void QuicTestClient::ExpectCertificates(bool on) { 227 void QuicTestClient::ExpectCertificates(bool on) {
228 if (on) { 228 if (on) {
229 proof_verifier_ = new RecordingProofVerifier; 229 proof_verifier_ = new RecordingProofVerifier;
230 client_->SetProofVerifier(proof_verifier_); 230 client_->SetProofVerifier(proof_verifier_);
231 } else { 231 } else {
232 proof_verifier_ = NULL; 232 proof_verifier_ = nullptr;
233 client_->SetProofVerifier(NULL); 233 client_->SetProofVerifier(nullptr);
234 } 234 }
235 } 235 }
236 236
237 void QuicTestClient::SetUserAgentID(const string& user_agent_id) { 237 void QuicTestClient::SetUserAgentID(const string& user_agent_id) {
238 client_->SetUserAgentID(user_agent_id); 238 client_->SetUserAgentID(user_agent_id);
239 } 239 }
240 240
241 ssize_t QuicTestClient::SendRequest(const string& uri) { 241 ssize_t QuicTestClient::SendRequest(const string& uri) {
242 HTTPMessage message(HttpConstants::HTTP_1_1, 242 HTTPMessage message(HttpConstants::HTTP_1_1,
243 HttpConstants::GET, 243 HttpConstants::GET,
244 uri); 244 uri);
245 return SendMessage(message); 245 return SendMessage(message);
246 } 246 }
247 247
248 ssize_t QuicTestClient::SendMessage(const HTTPMessage& message) { 248 ssize_t QuicTestClient::SendMessage(const HTTPMessage& message) {
249 stream_ = NULL; // Always force creation of a stream for SendMessage. 249 stream_ = nullptr; // Always force creation of a stream for SendMessage.
250 250
251 // If we're not connected, try to find an sni hostname. 251 // If we're not connected, try to find an sni hostname.
252 if (!connected()) { 252 if (!connected()) {
253 GURL url(message.headers()->request_uri().as_string()); 253 GURL url(message.headers()->request_uri().as_string());
254 if (!url.host().empty()) { 254 if (!url.host().empty()) {
255 client_->set_server_id( 255 client_->set_server_id(
256 QuicServerId(url.host(), 256 QuicServerId(url.host(),
257 url.EffectiveIntPort(), 257 url.EffectiveIntPort(),
258 url.SchemeIs("https"), 258 url.SchemeIs("https"),
259 PRIVACY_MODE_DISABLED)); 259 PRIVACY_MODE_DISABLED));
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 WaitForResponse(); 324 WaitForResponse();
325 return response_; 325 return response_;
326 } 326 }
327 327
328 QuicSpdyClientStream* QuicTestClient::GetOrCreateStream() { 328 QuicSpdyClientStream* QuicTestClient::GetOrCreateStream() {
329 if (!connect_attempted_ || auto_reconnect_) { 329 if (!connect_attempted_ || auto_reconnect_) {
330 if (!connected()) { 330 if (!connected()) {
331 Connect(); 331 Connect();
332 } 332 }
333 if (!connected()) { 333 if (!connected()) {
334 return NULL; 334 return nullptr;
335 } 335 }
336 } 336 }
337 if (!stream_) { 337 if (!stream_) {
338 stream_ = client_->CreateReliableClientStream(); 338 stream_ = client_->CreateReliableClientStream();
339 if (stream_ == NULL) { 339 if (stream_ == nullptr) {
340 return NULL; 340 return nullptr;
341 } 341 }
342 stream_->set_visitor(this); 342 stream_->set_visitor(this);
343 reinterpret_cast<QuicSpdyClientStream*>(stream_)->set_priority(priority_); 343 reinterpret_cast<QuicSpdyClientStream*>(stream_)->set_priority(priority_);
344 // Set FEC policy on stream. 344 // Set FEC policy on stream.
345 ReliableQuicStreamPeer::SetFecPolicy(stream_, fec_policy_); 345 ReliableQuicStreamPeer::SetFecPolicy(stream_, fec_policy_);
346 } 346 }
347 347
348 return stream_; 348 return stream_;
349 } 349 }
350 350
351 QuicErrorCode QuicTestClient::connection_error() { 351 QuicErrorCode QuicTestClient::connection_error() {
352 return client()->session()->error(); 352 return client()->session()->error();
353 } 353 }
354 354
355 MockableQuicClient* QuicTestClient::client() { return client_.get(); } 355 MockableQuicClient* QuicTestClient::client() { return client_.get(); }
356 356
357 const string& QuicTestClient::cert_common_name() const { 357 const string& QuicTestClient::cert_common_name() const {
358 return reinterpret_cast<RecordingProofVerifier*>(proof_verifier_) 358 return reinterpret_cast<RecordingProofVerifier*>(proof_verifier_)
359 ->common_name(); 359 ->common_name();
360 } 360 }
361 361
362 QuicTagValueMap QuicTestClient::GetServerConfig() const { 362 QuicTagValueMap QuicTestClient::GetServerConfig() const {
363 QuicCryptoClientConfig* config = 363 QuicCryptoClientConfig* config =
364 QuicClientPeer::GetCryptoConfig(client_.get()); 364 QuicClientPeer::GetCryptoConfig(client_.get());
365 QuicCryptoClientConfig::CachedState* state = 365 QuicCryptoClientConfig::CachedState* state =
366 config->LookupOrCreate(client_->server_id()); 366 config->LookupOrCreate(client_->server_id());
367 const CryptoHandshakeMessage* handshake_msg = state->GetServerConfig(); 367 const CryptoHandshakeMessage* handshake_msg = state->GetServerConfig();
368 if (handshake_msg != NULL) { 368 if (handshake_msg != nullptr) {
369 return handshake_msg->tag_value_map(); 369 return handshake_msg->tag_value_map();
370 } else { 370 } else {
371 return QuicTagValueMap(); 371 return QuicTagValueMap();
372 } 372 }
373 } 373 }
374 374
375 bool QuicTestClient::connected() const { 375 bool QuicTestClient::connected() const {
376 return client_->connected(); 376 return client_->connected();
377 } 377 }
378 378
(...skipping 15 matching lines...) Expand all
394 client_->Disconnect(); 394 client_->Disconnect();
395 connect_attempted_ = false; 395 connect_attempted_ = false;
396 } 396 }
397 397
398 IPEndPoint QuicTestClient::LocalSocketAddress() const { 398 IPEndPoint QuicTestClient::LocalSocketAddress() const {
399 return client_->client_address(); 399 return client_->client_address();
400 } 400 }
401 401
402 void QuicTestClient::ClearPerRequestState() { 402 void QuicTestClient::ClearPerRequestState() {
403 stream_error_ = QUIC_STREAM_NO_ERROR; 403 stream_error_ = QUIC_STREAM_NO_ERROR;
404 stream_ = NULL; 404 stream_ = nullptr;
405 response_ = ""; 405 response_ = "";
406 response_complete_ = false; 406 response_complete_ = false;
407 response_headers_complete_ = false; 407 response_headers_complete_ = false;
408 headers_.Clear(); 408 headers_.Clear();
409 bytes_read_ = 0; 409 bytes_read_ = 0;
410 bytes_written_ = 0; 410 bytes_written_ = 0;
411 response_header_size_ = 0; 411 response_header_size_ = 0;
412 response_body_size_ = 0; 412 response_body_size_ = 0;
413 } 413 }
414 414
415 void QuicTestClient::WaitForResponseForMs(int timeout_ms) { 415 void QuicTestClient::WaitForResponseForMs(int timeout_ms) {
416 int64 timeout_us = timeout_ms * base::Time::kMicrosecondsPerMillisecond; 416 int64 timeout_us = timeout_ms * base::Time::kMicrosecondsPerMillisecond;
417 int64 old_timeout_us = epoll_server()->timeout_in_us(); 417 int64 old_timeout_us = epoll_server()->timeout_in_us();
418 if (timeout_us > 0) { 418 if (timeout_us > 0) {
419 epoll_server()->set_timeout_in_us(timeout_us); 419 epoll_server()->set_timeout_in_us(timeout_us);
420 } 420 }
421 const QuicClock* clock = 421 const QuicClock* clock =
422 QuicConnectionPeer::GetHelper(client()->session()->connection())-> 422 QuicConnectionPeer::GetHelper(client()->session()->connection())->
423 GetClock(); 423 GetClock();
424 QuicTime end_waiting_time = clock->Now().Add( 424 QuicTime end_waiting_time = clock->Now().Add(
425 QuicTime::Delta::FromMicroseconds(timeout_us)); 425 QuicTime::Delta::FromMicroseconds(timeout_us));
426 while (stream_ != NULL && 426 while (stream_ != nullptr &&
427 !client_->session()->IsClosedStream(stream_->id()) && 427 !client_->session()->IsClosedStream(stream_->id()) &&
428 (timeout_us < 0 || clock->Now() < end_waiting_time)) { 428 (timeout_us < 0 || clock->Now() < end_waiting_time)) {
429 client_->WaitForEvents(); 429 client_->WaitForEvents();
430 } 430 }
431 if (timeout_us > 0) { 431 if (timeout_us > 0) {
432 epoll_server()->set_timeout_in_us(old_timeout_us); 432 epoll_server()->set_timeout_in_us(old_timeout_us);
433 } 433 }
434 } 434 }
435 435
436 void QuicTestClient::WaitForInitialResponseForMs(int timeout_ms) { 436 void QuicTestClient::WaitForInitialResponseForMs(int timeout_ms) {
437 int64 timeout_us = timeout_ms * base::Time::kMicrosecondsPerMillisecond; 437 int64 timeout_us = timeout_ms * base::Time::kMicrosecondsPerMillisecond;
438 int64 old_timeout_us = epoll_server()->timeout_in_us(); 438 int64 old_timeout_us = epoll_server()->timeout_in_us();
439 if (timeout_us > 0) { 439 if (timeout_us > 0) {
440 epoll_server()->set_timeout_in_us(timeout_us); 440 epoll_server()->set_timeout_in_us(timeout_us);
441 } 441 }
442 const QuicClock* clock = 442 const QuicClock* clock =
443 QuicConnectionPeer::GetHelper(client()->session()->connection())-> 443 QuicConnectionPeer::GetHelper(client()->session()->connection())->
444 GetClock(); 444 GetClock();
445 QuicTime end_waiting_time = clock->Now().Add( 445 QuicTime end_waiting_time = clock->Now().Add(
446 QuicTime::Delta::FromMicroseconds(timeout_us)); 446 QuicTime::Delta::FromMicroseconds(timeout_us));
447 while (stream_ != NULL && 447 while (stream_ != nullptr &&
448 !client_->session()->IsClosedStream(stream_->id()) && 448 !client_->session()->IsClosedStream(stream_->id()) &&
449 stream_->stream_bytes_read() == 0 && 449 stream_->stream_bytes_read() == 0 &&
450 (timeout_us < 0 || clock->Now() < end_waiting_time)) { 450 (timeout_us < 0 || clock->Now() < end_waiting_time)) {
451 client_->WaitForEvents(); 451 client_->WaitForEvents();
452 } 452 }
453 if (timeout_us > 0) { 453 if (timeout_us > 0) {
454 epoll_server()->set_timeout_in_us(old_timeout_us); 454 epoll_server()->set_timeout_in_us(old_timeout_us);
455 } 455 }
456 } 456 }
457 457
458 ssize_t QuicTestClient::Send(const void *buffer, size_t size) { 458 ssize_t QuicTestClient::Send(const void *buffer, size_t size) {
459 return SendData(string(static_cast<const char*>(buffer), size), false); 459 return SendData(string(static_cast<const char*>(buffer), size), false);
460 } 460 }
461 461
462 bool QuicTestClient::response_headers_complete() const { 462 bool QuicTestClient::response_headers_complete() const {
463 if (stream_ != NULL) { 463 if (stream_ != nullptr) {
464 return stream_->headers_decompressed(); 464 return stream_->headers_decompressed();
465 } else { 465 } else {
466 return response_headers_complete_; 466 return response_headers_complete_;
467 } 467 }
468 } 468 }
469 469
470 const BalsaHeaders* QuicTestClient::response_headers() const { 470 const BalsaHeaders* QuicTestClient::response_headers() const {
471 if (stream_ != NULL) { 471 if (stream_ != nullptr) {
472 return &stream_->headers(); 472 return &stream_->headers();
473 } else { 473 } else {
474 return &headers_; 474 return &headers_;
475 } 475 }
476 } 476 }
477 477
478 int64 QuicTestClient::response_size() const { 478 int64 QuicTestClient::response_size() const {
479 return bytes_read_; 479 return bytes_read_;
480 } 480 }
481 481
(...skipping 15 matching lines...) Expand all
497 } 497 }
498 response_complete_ = true; 498 response_complete_ = true;
499 response_headers_complete_ = stream_->headers_decompressed(); 499 response_headers_complete_ = stream_->headers_decompressed();
500 headers_.CopyFrom(stream_->headers()); 500 headers_.CopyFrom(stream_->headers());
501 stream_error_ = stream_->stream_error(); 501 stream_error_ = stream_->stream_error();
502 bytes_read_ = stream_->stream_bytes_read() + stream_->header_bytes_read(); 502 bytes_read_ = stream_->stream_bytes_read() + stream_->header_bytes_read();
503 bytes_written_ = 503 bytes_written_ =
504 stream_->stream_bytes_written() + stream_->header_bytes_written(); 504 stream_->stream_bytes_written() + stream_->header_bytes_written();
505 response_header_size_ = headers_.GetSizeForWriteBuffer(); 505 response_header_size_ = headers_.GetSizeForWriteBuffer();
506 response_body_size_ = stream_->data().size(); 506 response_body_size_ = stream_->data().size();
507 stream_ = NULL; 507 stream_ = nullptr;
508 } 508 }
509 509
510 void QuicTestClient::UseWriter(QuicPacketWriterWrapper* writer) { 510 void QuicTestClient::UseWriter(QuicPacketWriterWrapper* writer) {
511 client_->UseWriter(writer); 511 client_->UseWriter(writer);
512 } 512 }
513 513
514 void QuicTestClient::UseConnectionId(QuicConnectionId connection_id) { 514 void QuicTestClient::UseConnectionId(QuicConnectionId connection_id) {
515 DCHECK(!connected()); 515 DCHECK(!connected());
516 client_->UseConnectionId(connection_id); 516 client_->UseConnectionId(connection_id);
517 } 517 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 // Set policy for headers and crypto streams. 560 // Set policy for headers and crypto streams.
561 ReliableQuicStreamPeer::SetFecPolicy( 561 ReliableQuicStreamPeer::SetFecPolicy(
562 QuicSessionPeer::GetHeadersStream(client()->session()), fec_policy); 562 QuicSessionPeer::GetHeadersStream(client()->session()), fec_policy);
563 ReliableQuicStreamPeer::SetFecPolicy(client()->session()->GetCryptoStream(), 563 ReliableQuicStreamPeer::SetFecPolicy(client()->session()->GetCryptoStream(),
564 fec_policy); 564 fec_policy);
565 } 565 }
566 566
567 } // namespace test 567 } // namespace test
568 } // namespace tools 568 } // namespace tools
569 } // 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.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698