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

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

Issue 1305293004: Notfiy NQE of QUIC RTT (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed a test Created 5 years, 3 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/quic_http_stream_test.cc ('k') | net/quic/quic_stream_factory.h » ('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"
11 #include "net/base/network_quality_estimator.h"
12 #include "net/base/socket_performance_watcher.h"
11 #include "net/base/test_completion_callback.h" 13 #include "net/base/test_completion_callback.h"
12 #include "net/base/test_data_directory.h" 14 #include "net/base/test_data_directory.h"
13 #include "net/cert/mock_cert_verifier.h" 15 #include "net/cert/mock_cert_verifier.h"
14 #include "net/dns/mock_host_resolver.h" 16 #include "net/dns/mock_host_resolver.h"
15 #include "net/http/http_auth_handler_factory.h" 17 #include "net/http/http_auth_handler_factory.h"
16 #include "net/http/http_network_session.h" 18 #include "net/http/http_network_session.h"
17 #include "net/http/http_network_transaction.h" 19 #include "net/http/http_network_transaction.h"
18 #include "net/http/http_server_properties_impl.h" 20 #include "net/http/http_server_properties_impl.h"
19 #include "net/http/http_stream.h" 21 #include "net/http/http_stream.h"
20 #include "net/http/http_stream_factory.h" 22 #include "net/http/http_stream_factory.h"
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 134
133 void OnBeforeProxyHeadersSent(const ProxyInfo& proxy_info, 135 void OnBeforeProxyHeadersSent(const ProxyInfo& proxy_info,
134 HttpRequestHeaders* request_headers) { 136 HttpRequestHeaders* request_headers) {
135 was_called_ = true; 137 was_called_ = true;
136 } 138 }
137 139
138 private: 140 private:
139 bool was_called_; 141 bool was_called_;
140 }; 142 };
141 143
144 class TestSocketPerformanceWatcher : public SocketPerformanceWatcher {
145 public:
146 TestSocketPerformanceWatcher()
147 : received_updated_rtt_available_notification_(false) {}
148
149 ~TestSocketPerformanceWatcher() override {}
150
151 void OnUpdatedRTTAvailable(const base::TimeDelta& rtt) override {
152 received_updated_rtt_available_notification_ = true;
153 }
154
155 bool received_updated_rtt_available_notification() const {
156 return received_updated_rtt_available_notification_;
157 }
158
159 private:
160 bool received_updated_rtt_available_notification_;
161 DISALLOW_COPY_AND_ASSIGN(TestSocketPerformanceWatcher);
162 };
163
164 class TestNetworkQualityEstimator : public NetworkQualityEstimator {
165 public:
166 TestNetworkQualityEstimator()
167 : NetworkQualityEstimator(scoped_ptr<net::ExternalEstimateProvider>(),
168 std::map<std::string, std::string>()) {}
169
170 ~TestNetworkQualityEstimator() override {}
171
172 scoped_ptr<SocketPerformanceWatcher> CreateUDPSocketPerformanceWatcher()
173 const override {
174 TestSocketPerformanceWatcher* watcher = new TestSocketPerformanceWatcher();
175 watchers_.push_back(watcher);
176 return scoped_ptr<TestSocketPerformanceWatcher>(watcher);
177 }
178
179 scoped_ptr<SocketPerformanceWatcher> CreateTCPSocketPerformanceWatcher()
180 const override {
181 NOTIMPLEMENTED();
182 return nullptr;
183 }
184
185 bool IsRTTAvailableNotificationReceived() const {
186 for (const auto& watcher : watchers_)
187 if (watcher->received_updated_rtt_available_notification())
188 return true;
189 return false;
190 }
191
192 size_t GetWatchersCreated() const { return watchers_.size(); }
193
194 private:
195 mutable std::vector<TestSocketPerformanceWatcher*> watchers_;
196 DISALLOW_COPY_AND_ASSIGN(TestNetworkQualityEstimator);
197 };
198
142 class QuicNetworkTransactionTest 199 class QuicNetworkTransactionTest
143 : public PlatformTest, 200 : public PlatformTest,
144 public ::testing::WithParamInterface<QuicVersion> { 201 public ::testing::WithParamInterface<QuicVersion> {
145 protected: 202 protected:
146 QuicNetworkTransactionTest() 203 QuicNetworkTransactionTest()
147 : clock_(new MockClock), 204 : clock_(new MockClock),
148 maker_(GetParam(), 0, clock_, kDefaultServerHostName), 205 maker_(GetParam(), 0, clock_, kDefaultServerHostName),
206 test_network_quality_estimator_(new TestNetworkQualityEstimator()),
149 ssl_config_service_(new SSLConfigServiceDefaults), 207 ssl_config_service_(new SSLConfigServiceDefaults),
150 proxy_service_(ProxyService::CreateDirect()), 208 proxy_service_(ProxyService::CreateDirect()),
151 auth_handler_factory_( 209 auth_handler_factory_(
152 HttpAuthHandlerFactory::CreateDefault(&host_resolver_)), 210 HttpAuthHandlerFactory::CreateDefault(&host_resolver_)),
153 random_generator_(0), 211 random_generator_(0),
154 hanging_data_(nullptr, 0, nullptr, 0) { 212 hanging_data_(nullptr, 0, nullptr, 0) {
155 request_.method = "GET"; 213 request_.method = "GET";
156 std::string url("http://"); 214 std::string url("http://");
157 url.append(kDefaultServerHostName); 215 url.append(kDefaultServerHostName);
158 request_.url = GURL(url); 216 request_.url = GURL(url);
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 void CreateSessionWithFactory(ClientSocketFactory* socket_factory, 299 void CreateSessionWithFactory(ClientSocketFactory* socket_factory,
242 bool use_next_protos) { 300 bool use_next_protos) {
243 params_.enable_quic = true; 301 params_.enable_quic = true;
244 params_.quic_clock = clock_; 302 params_.quic_clock = clock_;
245 params_.quic_random = &random_generator_; 303 params_.quic_random = &random_generator_;
246 params_.client_socket_factory = socket_factory; 304 params_.client_socket_factory = socket_factory;
247 params_.quic_crypto_client_stream_factory = &crypto_client_stream_factory_; 305 params_.quic_crypto_client_stream_factory = &crypto_client_stream_factory_;
248 params_.host_resolver = &host_resolver_; 306 params_.host_resolver = &host_resolver_;
249 params_.cert_verifier = &cert_verifier_; 307 params_.cert_verifier = &cert_verifier_;
250 params_.transport_security_state = &transport_security_state_; 308 params_.transport_security_state = &transport_security_state_;
309 params_.socket_performance_watcher_factory =
310 test_network_quality_estimator_.get();
251 params_.proxy_service = proxy_service_.get(); 311 params_.proxy_service = proxy_service_.get();
252 params_.ssl_config_service = ssl_config_service_.get(); 312 params_.ssl_config_service = ssl_config_service_.get();
253 params_.http_auth_handler_factory = auth_handler_factory_.get(); 313 params_.http_auth_handler_factory = auth_handler_factory_.get();
254 params_.http_server_properties = http_server_properties_.GetWeakPtr(); 314 params_.http_server_properties = http_server_properties_.GetWeakPtr();
255 params_.quic_supported_versions = SupportedVersions(GetParam()); 315 params_.quic_supported_versions = SupportedVersions(GetParam());
256 316
257 if (use_next_protos) { 317 if (use_next_protos) {
258 params_.use_alternative_services = true; 318 params_.use_alternative_services = true;
259 params_.next_protos = NextProtosWithSpdyAndQuic(true, true); 319 params_.next_protos = NextProtosWithSpdyAndQuic(true, true);
260 } 320 }
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 } 425 }
366 426
367 MockClock* clock_; // Owned by QuicStreamFactory after CreateSession. 427 MockClock* clock_; // Owned by QuicStreamFactory after CreateSession.
368 QuicTestPacketMaker maker_; 428 QuicTestPacketMaker maker_;
369 scoped_refptr<HttpNetworkSession> session_; 429 scoped_refptr<HttpNetworkSession> session_;
370 MockClientSocketFactory socket_factory_; 430 MockClientSocketFactory socket_factory_;
371 MockCryptoClientStreamFactory crypto_client_stream_factory_; 431 MockCryptoClientStreamFactory crypto_client_stream_factory_;
372 MockHostResolver host_resolver_; 432 MockHostResolver host_resolver_;
373 MockCertVerifier cert_verifier_; 433 MockCertVerifier cert_verifier_;
374 TransportSecurityState transport_security_state_; 434 TransportSecurityState transport_security_state_;
435 scoped_ptr<TestNetworkQualityEstimator> test_network_quality_estimator_;
375 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service_; 436 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service_;
376 scoped_ptr<ProxyService> proxy_service_; 437 scoped_ptr<ProxyService> proxy_service_;
377 scoped_ptr<HttpAuthHandlerFactory> auth_handler_factory_; 438 scoped_ptr<HttpAuthHandlerFactory> auth_handler_factory_;
378 MockRandom random_generator_; 439 MockRandom random_generator_;
379 HttpServerPropertiesImpl http_server_properties_; 440 HttpServerPropertiesImpl http_server_properties_;
380 HttpNetworkSession::Params params_; 441 HttpNetworkSession::Params params_;
381 HttpRequestInfo request_; 442 HttpRequestInfo request_;
382 BoundTestNetLog net_log_; 443 BoundTestNetLog net_log_;
383 StaticSocketDataProvider hanging_data_; 444 StaticSocketDataProvider hanging_data_;
384 445
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read 484 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read
424 485
425 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 486 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
426 487
427 // The non-alternate protocol job needs to hang in order to guarantee that 488 // The non-alternate protocol job needs to hang in order to guarantee that
428 // the alternate-protocol job will "win". 489 // the alternate-protocol job will "win".
429 AddHangingNonAlternateProtocolSocketData(); 490 AddHangingNonAlternateProtocolSocketData();
430 491
431 CreateSession(); 492 CreateSession();
432 493
494 EXPECT_FALSE(
495 test_network_quality_estimator_->IsRTTAvailableNotificationReceived());
433 SendRequestAndExpectQuicResponse("hello!"); 496 SendRequestAndExpectQuicResponse("hello!");
497 EXPECT_TRUE(
498 test_network_quality_estimator_->IsRTTAvailableNotificationReceived());
434 499
435 // Check that the NetLog was filled reasonably. 500 // Check that the NetLog was filled reasonably.
436 TestNetLogEntry::List entries; 501 TestNetLogEntry::List entries;
437 net_log_.GetEntries(&entries); 502 net_log_.GetEntries(&entries);
438 EXPECT_LT(0u, entries.size()); 503 EXPECT_LT(0u, entries.size());
439 504
440 // Check that we logged a QUIC_SESSION_PACKET_RECEIVED. 505 // Check that we logged a QUIC_SESSION_PACKET_RECEIVED.
441 int pos = ExpectLogContainsSomewhere( 506 int pos = ExpectLogContainsSomewhere(
442 entries, 0, NetLog::TYPE_QUIC_SESSION_PACKET_RECEIVED, 507 entries, 0, NetLog::TYPE_QUIC_SESSION_PACKET_RECEIVED,
443 NetLog::PHASE_NONE); 508 NetLog::PHASE_NONE);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 ConstructResponseHeadersPacket(1, kClientDataStreamId1, false, false, 549 ConstructResponseHeadersPacket(1, kClientDataStreamId1, false, false,
485 GetResponseHeaders("200 OK"))); 550 GetResponseHeaders("200 OK")));
486 mock_quic_data.AddRead( 551 mock_quic_data.AddRead(
487 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!")); 552 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!"));
488 mock_quic_data.AddWrite(ConstructAckPacket(2, 1)); 553 mock_quic_data.AddWrite(ConstructAckPacket(2, 1));
489 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read 554 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read
490 mock_quic_data.AddRead(SYNCHRONOUS, 0); // EOF 555 mock_quic_data.AddRead(SYNCHRONOUS, 0); // EOF
491 556
492 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 557 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
493 558
559 EXPECT_FALSE(
560 test_network_quality_estimator_->IsRTTAvailableNotificationReceived());
494 // There is no need to set up an alternate protocol job, because 561 // There is no need to set up an alternate protocol job, because
495 // no attempt will be made to speak to the proxy over TCP. 562 // no attempt will be made to speak to the proxy over TCP.
496 563
497 CreateSession(); 564 CreateSession();
498 565
499 SendRequestAndExpectQuicResponseFromProxyOnPort("hello!", 70); 566 SendRequestAndExpectQuicResponseFromProxyOnPort("hello!", 70);
567 EXPECT_TRUE(
568 test_network_quality_estimator_->IsRTTAvailableNotificationReceived());
500 } 569 }
501 570
502 // Regression test for https://crbug.com/492458. Test that for an HTTP 571 // Regression test for https://crbug.com/492458. Test that for an HTTP
503 // connection through a QUIC proxy, the certificate exhibited by the proxy is 572 // connection through a QUIC proxy, the certificate exhibited by the proxy is
504 // checked against the proxy hostname, not the origin hostname. 573 // checked against the proxy hostname, not the origin hostname.
505 TEST_P(QuicNetworkTransactionTest, QuicProxyWithCert) { 574 TEST_P(QuicNetworkTransactionTest, QuicProxyWithCert) {
506 const std::string origin_host = "news.example.com"; 575 const std::string origin_host = "news.example.com";
507 const std::string proxy_host = "www.example.org"; 576 const std::string proxy_host = "www.example.org";
508 577
509 params_.enable_insecure_quic = true; 578 params_.enable_insecure_quic = true;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 CreateSessionWithNextProtos(); 610 CreateSessionWithNextProtos();
542 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE); 611 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE);
543 SendRequestAndExpectQuicResponseFromProxyOnPort("hello!", 70); 612 SendRequestAndExpectQuicResponseFromProxyOnPort("hello!", 70);
544 } 613 }
545 614
546 TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) { 615 TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) {
547 params_.enable_insecure_quic = true; 616 params_.enable_insecure_quic = true;
548 params_.origin_to_force_quic_on = 617 params_.origin_to_force_quic_on =
549 HostPortPair::FromString("www.google.com:80"); 618 HostPortPair::FromString("www.google.com:80");
550 619
551 MockQuicData mock_quic_data; 620 MockQuicData mock_quic_data1;
552 mock_quic_data.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); 621 mock_quic_data1.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED);
553 622
554 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 623 MockQuicData mock_quic_data2;
624 mock_quic_data2.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED);
625
626 mock_quic_data1.AddSocketDataToFactory(&socket_factory_);
627 mock_quic_data2.AddSocketDataToFactory(&socket_factory_);
555 628
556 CreateSession(); 629 CreateSession();
557 630
558 scoped_ptr<HttpNetworkTransaction> trans( 631 EXPECT_EQ(0U, test_network_quality_estimator_->GetWatchersCreated());
559 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); 632 for (size_t i = 0; i < 2; ++i) {
560 TestCompletionCallback callback; 633 scoped_ptr<HttpNetworkTransaction> trans(
561 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); 634 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get()));
562 EXPECT_EQ(ERR_IO_PENDING, rv); 635 TestCompletionCallback callback;
563 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult()); 636 int rv = trans->Start(&request_, callback.callback(), net_log_.bound());
637 EXPECT_EQ(ERR_IO_PENDING, rv);
638 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult());
639 EXPECT_EQ(1 + i, test_network_quality_estimator_->GetWatchersCreated());
640 }
564 } 641 }
565 642
566 TEST_P(QuicNetworkTransactionTest, DoNotForceQuicForHttps) { 643 TEST_P(QuicNetworkTransactionTest, DoNotForceQuicForHttps) {
567 // Attempt to "force" quic on 443, which will not be honored. 644 // Attempt to "force" quic on 443, which will not be honored.
568 params_.origin_to_force_quic_on = 645 params_.origin_to_force_quic_on =
569 HostPortPair::FromString("www.google.com:443"); 646 HostPortPair::FromString("www.google.com:443");
570 647
571 MockRead http_reads[] = { 648 MockRead http_reads[] = {
572 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 649 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
573 MockRead("hello world"), 650 MockRead("hello world"),
574 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 651 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
575 MockRead(ASYNC, OK) 652 MockRead(ASYNC, OK)
576 }; 653 };
577 654
578 StaticSocketDataProvider data(http_reads, arraysize(http_reads), nullptr, 0); 655 StaticSocketDataProvider data(http_reads, arraysize(http_reads), nullptr, 0);
579 socket_factory_.AddSocketDataProvider(&data); 656 socket_factory_.AddSocketDataProvider(&data);
580 SSLSocketDataProvider ssl(ASYNC, OK); 657 SSLSocketDataProvider ssl(ASYNC, OK);
581 socket_factory_.AddSSLSocketDataProvider(&ssl); 658 socket_factory_.AddSSLSocketDataProvider(&ssl);
582 659
583 CreateSession(); 660 CreateSession();
584 661
585 SendRequestAndExpectHttpResponse("hello world"); 662 SendRequestAndExpectHttpResponse("hello world");
663 EXPECT_EQ(0U, test_network_quality_estimator_->GetWatchersCreated());
586 } 664 }
587 665
588 TEST_P(QuicNetworkTransactionTest, UseAlternativeServiceForQuic) { 666 TEST_P(QuicNetworkTransactionTest, UseAlternativeServiceForQuic) {
589 params_.enable_insecure_quic = true; 667 params_.enable_insecure_quic = true;
590 668
591 MockRead http_reads[] = { 669 MockRead http_reads[] = {
592 MockRead("HTTP/1.1 200 OK\r\n"), 670 MockRead("HTTP/1.1 200 OK\r\n"),
593 MockRead(kQuicAlternativeServiceHttpHeader), MockRead("hello world"), 671 MockRead(kQuicAlternativeServiceHttpHeader), MockRead("hello world"),
594 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 672 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
595 MockRead(ASYNC, OK)}; 673 MockRead(ASYNC, OK)};
(...skipping 1118 matching lines...) Expand 10 before | Expand all | Expand 10 after
1714 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); 1792 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get()));
1715 TestCompletionCallback callback; 1793 TestCompletionCallback callback;
1716 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); 1794 int rv = trans->Start(&request_, callback.callback(), net_log_.bound());
1717 EXPECT_EQ(ERR_REQUEST_FOR_SECURE_RESOURCE_OVER_INSECURE_QUIC, 1795 EXPECT_EQ(ERR_REQUEST_FOR_SECURE_RESOURCE_OVER_INSECURE_QUIC,
1718 callback.GetResult(rv)); 1796 callback.GetResult(rv));
1719 } 1797 }
1720 1798
1721 TEST_P(QuicNetworkTransactionTest, SecureResourceOverSecureQuic) { 1799 TEST_P(QuicNetworkTransactionTest, SecureResourceOverSecureQuic) {
1722 params_.enable_insecure_quic = true; 1800 params_.enable_insecure_quic = true;
1723 maker_.set_hostname("www.example.org"); 1801 maker_.set_hostname("www.example.org");
1802 EXPECT_FALSE(
1803 test_network_quality_estimator_->IsRTTAvailableNotificationReceived());
1724 MockQuicData mock_quic_data; 1804 MockQuicData mock_quic_data;
1725 mock_quic_data.AddWrite( 1805 mock_quic_data.AddWrite(
1726 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, 1806 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true,
1727 GetRequestHeaders("GET", "https", "/"))); 1807 GetRequestHeaders("GET", "https", "/")));
1728 mock_quic_data.AddRead(ConstructResponseHeadersPacket( 1808 mock_quic_data.AddRead(ConstructResponseHeadersPacket(
1729 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 1809 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
1730 mock_quic_data.AddRead( 1810 mock_quic_data.AddRead(
1731 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!")); 1811 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!"));
1732 mock_quic_data.AddWrite(ConstructAckPacket(2, 1)); 1812 mock_quic_data.AddWrite(ConstructAckPacket(2, 1));
1733 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more read data. 1813 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more read data.
1734 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 1814 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
1735 1815
1736 scoped_refptr<X509Certificate> cert( 1816 scoped_refptr<X509Certificate> cert(
1737 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem")); 1817 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"));
1738 ASSERT_TRUE(cert.get()); 1818 ASSERT_TRUE(cert.get());
1739 bool common_name_fallback_used; 1819 bool common_name_fallback_used;
1740 EXPECT_TRUE( 1820 EXPECT_TRUE(
1741 cert->VerifyNameMatch("www.example.org", &common_name_fallback_used)); 1821 cert->VerifyNameMatch("www.example.org", &common_name_fallback_used));
1742 ProofVerifyDetailsChromium verify_details; 1822 ProofVerifyDetailsChromium verify_details;
1743 verify_details.cert_verify_result.verified_cert = cert; 1823 verify_details.cert_verify_result.verified_cert = cert;
1744 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1824 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1745 1825
1746 request_.url = GURL("https://www.example.org:443"); 1826 request_.url = GURL("https://www.example.org:443");
1747 AddHangingNonAlternateProtocolSocketData(); 1827 AddHangingNonAlternateProtocolSocketData();
1748 CreateSessionWithNextProtos(); 1828 CreateSessionWithNextProtos();
1749 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE); 1829 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE);
1750 SendRequestAndExpectQuicResponse("hello!"); 1830 SendRequestAndExpectQuicResponse("hello!");
1831 EXPECT_TRUE(
1832 test_network_quality_estimator_->IsRTTAvailableNotificationReceived());
1751 } 1833 }
1752 1834
1753 } // namespace test 1835 } // namespace test
1754 } // namespace net 1836 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_http_stream_test.cc ('k') | net/quic/quic_stream_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698