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

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

Issue 903273002: Update from https://crrev.com/315085 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 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/proxy/proxy_service.cc ('k') | net/quic/quic_stream_factory.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 (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 <vector> 5 #include <vector>
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 } 95 }
96 96
97 private: 97 private:
98 std::vector<QuicEncryptedPacket*> packets_; 98 std::vector<QuicEncryptedPacket*> packets_;
99 std::vector<MockWrite> writes_; 99 std::vector<MockWrite> writes_;
100 std::vector<MockRead> reads_; 100 std::vector<MockRead> reads_;
101 size_t sequence_number_; 101 size_t sequence_number_;
102 scoped_ptr<SocketDataProvider> socket_data_; 102 scoped_ptr<SocketDataProvider> socket_data_;
103 }; 103 };
104 104
105 class ProxyHeadersHandler {
106 public:
107 ProxyHeadersHandler() : was_called_(false) {}
108
109 bool was_called() { return was_called_; }
110
111 void OnBeforeProxyHeadersSent(const ProxyInfo& proxy_info,
112 HttpRequestHeaders* request_headers) {
113 was_called_ = true;
114 }
115
116 private:
117 bool was_called_;
118 };
119
105 class QuicNetworkTransactionTest 120 class QuicNetworkTransactionTest
106 : public PlatformTest, 121 : public PlatformTest,
107 public ::testing::WithParamInterface<QuicVersion> { 122 public ::testing::WithParamInterface<QuicVersion> {
108 protected: 123 protected:
109 QuicNetworkTransactionTest() 124 QuicNetworkTransactionTest()
110 : clock_(new MockClock), 125 : clock_(new MockClock),
111 maker_(GetParam(), 0, clock_), 126 maker_(GetParam(), 0, clock_),
112 ssl_config_service_(new SSLConfigServiceDefaults), 127 ssl_config_service_(new SSLConfigServiceDefaults),
113 proxy_service_(ProxyService::CreateDirect()), 128 proxy_service_(ProxyService::CreateDirect()),
114 auth_handler_factory_( 129 auth_handler_factory_(
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 277
263 void SendRequestAndExpectHttpResponse(const std::string& expected) { 278 void SendRequestAndExpectHttpResponse(const std::string& expected) {
264 scoped_ptr<HttpNetworkTransaction> trans( 279 scoped_ptr<HttpNetworkTransaction> trans(
265 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); 280 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get()));
266 RunTransaction(trans.get()); 281 RunTransaction(trans.get());
267 CheckWasHttpResponse(trans); 282 CheckWasHttpResponse(trans);
268 CheckResponseData(trans.get(), expected); 283 CheckResponseData(trans.get(), expected);
269 } 284 }
270 285
271 void SendRequestAndExpectQuicResponse(const std::string& expected) { 286 void SendRequestAndExpectQuicResponse(const std::string& expected) {
272 scoped_ptr<HttpNetworkTransaction> trans( 287 SendRequestAndExpectQuicResponseMaybeFromProxy(expected, false);
273 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); 288 }
274 RunTransaction(trans.get()); 289
275 CheckWasQuicResponse(trans); 290 void SendRequestAndExpectQuicResponseFromProxy(const std::string& expected) {
276 CheckResponseData(trans.get(), expected); 291 SendRequestAndExpectQuicResponseMaybeFromProxy(expected, true);
277 } 292 }
278 293
279 void AddQuicAlternateProtocolMapping( 294 void AddQuicAlternateProtocolMapping(
280 MockCryptoClientStream::HandshakeMode handshake_mode) { 295 MockCryptoClientStream::HandshakeMode handshake_mode) {
281 crypto_client_stream_factory_.set_handshake_mode(handshake_mode); 296 crypto_client_stream_factory_.set_handshake_mode(handshake_mode);
282 session_->http_server_properties()->SetAlternateProtocol( 297 session_->http_server_properties()->SetAlternateProtocol(
283 HostPortPair::FromURL(request_.url), 80, QUIC, 1); 298 HostPortPair::FromURL(request_.url), 80, QUIC, 1);
284 } 299 }
285 300
286 void ExpectBrokenAlternateProtocolMapping() { 301 void ExpectBrokenAlternateProtocolMapping() {
287 ASSERT_TRUE(session_->http_server_properties()->HasAlternateProtocol(
288 HostPortPair::FromURL(request_.url)));
289 const AlternateProtocolInfo alternate = 302 const AlternateProtocolInfo alternate =
290 session_->http_server_properties()->GetAlternateProtocol( 303 session_->http_server_properties()->GetAlternateProtocol(
291 HostPortPair::FromURL(request_.url)); 304 HostPortPair::FromURL(request_.url));
305 EXPECT_NE(UNINITIALIZED_ALTERNATE_PROTOCOL, alternate.protocol);
292 EXPECT_TRUE(alternate.is_broken); 306 EXPECT_TRUE(alternate.is_broken);
293 } 307 }
294 308
295 void ExpectQuicAlternateProtocolMapping() { 309 void ExpectQuicAlternateProtocolMapping() {
296 ASSERT_TRUE(session_->http_server_properties()->HasAlternateProtocol(
297 HostPortPair::FromURL(request_.url)));
298 const AlternateProtocolInfo alternate = 310 const AlternateProtocolInfo alternate =
299 session_->http_server_properties()->GetAlternateProtocol( 311 session_->http_server_properties()->GetAlternateProtocol(
300 HostPortPair::FromURL(request_.url)); 312 HostPortPair::FromURL(request_.url));
301 EXPECT_EQ(QUIC, alternate.protocol); 313 EXPECT_EQ(QUIC, alternate.protocol);
302 } 314 }
303 315
304 void AddHangingNonAlternateProtocolSocketData() { 316 void AddHangingNonAlternateProtocolSocketData() {
305 MockConnect hanging_connect(SYNCHRONOUS, ERR_IO_PENDING); 317 MockConnect hanging_connect(SYNCHRONOUS, ERR_IO_PENDING);
306 hanging_data_.set_connect_data(hanging_connect); 318 hanging_data_.set_connect_data(hanging_connect);
307 socket_factory_.AddSocketDataProvider(&hanging_data_); 319 socket_factory_.AddSocketDataProvider(&hanging_data_);
308 } 320 }
309 321
310 MockClock* clock_; // Owned by QuicStreamFactory after CreateSession. 322 MockClock* clock_; // Owned by QuicStreamFactory after CreateSession.
311 QuicTestPacketMaker maker_; 323 QuicTestPacketMaker maker_;
312 scoped_refptr<HttpNetworkSession> session_; 324 scoped_refptr<HttpNetworkSession> session_;
313 MockClientSocketFactory socket_factory_; 325 MockClientSocketFactory socket_factory_;
314 MockCryptoClientStreamFactory crypto_client_stream_factory_; 326 MockCryptoClientStreamFactory crypto_client_stream_factory_;
315 MockHostResolver host_resolver_; 327 MockHostResolver host_resolver_;
316 MockCertVerifier cert_verifier_; 328 MockCertVerifier cert_verifier_;
317 TransportSecurityState transport_security_state_; 329 TransportSecurityState transport_security_state_;
318 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service_; 330 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service_;
319 scoped_ptr<ProxyService> proxy_service_; 331 scoped_ptr<ProxyService> proxy_service_;
320 scoped_ptr<HttpAuthHandlerFactory> auth_handler_factory_; 332 scoped_ptr<HttpAuthHandlerFactory> auth_handler_factory_;
321 MockRandom random_generator_; 333 MockRandom random_generator_;
322 HttpServerPropertiesImpl http_server_properties; 334 HttpServerPropertiesImpl http_server_properties;
323 HttpNetworkSession::Params params_; 335 HttpNetworkSession::Params params_;
324 HttpRequestInfo request_; 336 HttpRequestInfo request_;
325 CapturingBoundNetLog net_log_; 337 CapturingBoundNetLog net_log_;
326 StaticSocketDataProvider hanging_data_; 338 StaticSocketDataProvider hanging_data_;
339
340 private:
341 void SendRequestAndExpectQuicResponseMaybeFromProxy(
342 const std::string& expected,
343 bool used_proxy) {
344 scoped_ptr<HttpNetworkTransaction> trans(
345 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get()));
346 ProxyHeadersHandler proxy_headers_handler;
347 trans->SetBeforeProxyHeadersSentCallback(
348 base::Bind(&ProxyHeadersHandler::OnBeforeProxyHeadersSent,
349 base::Unretained(&proxy_headers_handler)));
350 RunTransaction(trans.get());
351 CheckWasQuicResponse(trans);
352 CheckResponseData(trans.get(), expected);
353 EXPECT_EQ(used_proxy, proxy_headers_handler.was_called());
354 }
327 }; 355 };
328 356
329 INSTANTIATE_TEST_CASE_P(Version, QuicNetworkTransactionTest, 357 INSTANTIATE_TEST_CASE_P(Version, QuicNetworkTransactionTest,
330 ::testing::ValuesIn(QuicSupportedVersions())); 358 ::testing::ValuesIn(QuicSupportedVersions()));
331 359
332 TEST_P(QuicNetworkTransactionTest, ForceQuic) { 360 TEST_P(QuicNetworkTransactionTest, ForceQuic) {
333 params_.origin_to_force_quic_on = 361 params_.origin_to_force_quic_on =
334 HostPortPair::FromString("www.google.com:80"); 362 HostPortPair::FromString("www.google.com:80");
335 363
336 MockQuicData mock_quic_data; 364 MockQuicData mock_quic_data;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 mock_quic_data.AddWrite(ConstructAckPacket(2, 1)); 435 mock_quic_data.AddWrite(ConstructAckPacket(2, 1));
408 mock_quic_data.AddRead(SYNCHRONOUS, 0); // EOF 436 mock_quic_data.AddRead(SYNCHRONOUS, 0); // EOF
409 437
410 mock_quic_data.AddDelayedSocketDataToFactory(&socket_factory_, 1); 438 mock_quic_data.AddDelayedSocketDataToFactory(&socket_factory_, 1);
411 439
412 // There is no need to set up an alternate protocol job, because 440 // There is no need to set up an alternate protocol job, because
413 // no attempt will be made to speak to the proxy over TCP. 441 // no attempt will be made to speak to the proxy over TCP.
414 442
415 CreateSession(); 443 CreateSession();
416 444
417 SendRequestAndExpectQuicResponse("hello!"); 445 SendRequestAndExpectQuicResponseFromProxy("hello!");
418 } 446 }
419 447
420 TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) { 448 TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) {
421 params_.origin_to_force_quic_on = 449 params_.origin_to_force_quic_on =
422 HostPortPair::FromString("www.google.com:80"); 450 HostPortPair::FromString("www.google.com:80");
423 451
424 MockQuicData mock_quic_data; 452 MockQuicData mock_quic_data;
425 mock_quic_data.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); 453 mock_quic_data.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED);
426 454
427 mock_quic_data.AddDelayedSocketDataToFactory(&socket_factory_, 0); 455 mock_quic_data.AddDelayedSocketDataToFactory(&socket_factory_, 0);
(...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after
1035 nullptr, 1063 nullptr,
1036 net_log_.bound()); 1064 net_log_.bound());
1037 1065
1038 CreateSessionWithNextProtos(); 1066 CreateSessionWithNextProtos();
1039 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT); 1067 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT);
1040 SendRequestAndExpectHttpResponse("hello world"); 1068 SendRequestAndExpectHttpResponse("hello world");
1041 } 1069 }
1042 1070
1043 } // namespace test 1071 } // namespace test
1044 } // namespace net 1072 } // namespace net
OLDNEW
« no previous file with comments | « net/proxy/proxy_service.cc ('k') | net/quic/quic_stream_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698