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

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

Issue 1831383002: Add SocketWatcherFactory as a helper class to NQE (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased, removed cyclic dependency between SPWF and SPW Created 4 years, 8 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
« net/base/socket_performance_watcher.h ('K') | « net/net.gypi ('k') | no next file » | 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/bind.h"
7 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
8 #include "base/macros.h" 9 #include "base/macros.h"
9 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/memory/weak_ptr.h"
10 #include "base/run_loop.h" 12 #include "base/run_loop.h"
11 #include "base/stl_util.h" 13 #include "base/stl_util.h"
12 #include "base/strings/stringprintf.h" 14 #include "base/strings/stringprintf.h"
13 #include "net/base/chunked_upload_data_stream.h" 15 #include "net/base/chunked_upload_data_stream.h"
14 #include "net/base/network_quality_estimator.h"
15 #include "net/base/socket_performance_watcher.h" 16 #include "net/base/socket_performance_watcher.h"
17 #include "net/base/socket_performance_watcher_factory.h"
16 #include "net/base/test_completion_callback.h" 18 #include "net/base/test_completion_callback.h"
17 #include "net/base/test_data_directory.h" 19 #include "net/base/test_data_directory.h"
18 #include "net/cert/mock_cert_verifier.h" 20 #include "net/cert/mock_cert_verifier.h"
19 #include "net/cert/multi_log_ct_verifier.h" 21 #include "net/cert/multi_log_ct_verifier.h"
20 #include "net/dns/mock_host_resolver.h" 22 #include "net/dns/mock_host_resolver.h"
21 #include "net/http/http_auth_handler_factory.h" 23 #include "net/http/http_auth_handler_factory.h"
22 #include "net/http/http_network_session.h" 24 #include "net/http/http_network_session.h"
23 #include "net/http/http_network_transaction.h" 25 #include "net/http/http_network_transaction.h"
24 #include "net/http/http_server_properties_impl.h" 26 #include "net/http/http_server_properties_impl.h"
25 #include "net/http/http_stream.h" 27 #include "net/http/http_stream.h"
(...skipping 106 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
142 class TestNetworkQualityEstimator : public NetworkQualityEstimator { 144 class TestSocketPerformanceWatcherFactory
145 : public SocketPerformanceWatcherFactory {
143 public: 146 public:
144 TestNetworkQualityEstimator() 147 TestSocketPerformanceWatcherFactory()
145 : NetworkQualityEstimator(scoped_ptr<net::ExternalEstimateProvider>(), 148 : watcher_count_(0u),
146 std::map<std::string, std::string>()), 149 rtt_notification_received_(false),
147 watcher_count_(0) {} 150 weak_ptr_factory_(this) {}
151 ~TestSocketPerformanceWatcherFactory() override {}
148 152
149 ~TestNetworkQualityEstimator() override {} 153 // SocketPerformanceWatcherFactory implementation:
150
151 scoped_ptr<SocketPerformanceWatcher> CreateSocketPerformanceWatcher( 154 scoped_ptr<SocketPerformanceWatcher> CreateSocketPerformanceWatcher(
152 const Protocol protocol) override { 155 const Protocol protocol) override {
153 if (protocol != PROTOCOL_QUIC) { 156 if (protocol != PROTOCOL_QUIC) {
154 NOTIMPLEMENTED(); 157 return nullptr;
155 } 158 }
156 ++watcher_count_; 159 ++watcher_count_;
157 return NetworkQualityEstimator::CreateSocketPerformanceWatcher(protocol); 160 return scoped_ptr<SocketPerformanceWatcher>(new SocketPerformanceWatcher(
161 protocol,
162 base::Bind(&TestSocketPerformanceWatcherFactory::OnUpdatedRTTAvailable,
163 weak_ptr_factory_.GetWeakPtr()),
164 base::Bind(&TestSocketPerformanceWatcherFactory::OnWatcherReset,
165 weak_ptr_factory_.GetWeakPtr())));
158 } 166 }
167 void OnUpdatedRTTAvailable(const Protocol protocol,
168 const base::TimeDelta& rtt) override {
169 rtt_notification_received_ = true;
170 }
171 void OnWatcherReset() override {}
159 172
160 size_t watcher_count() const { return watcher_count_; } 173 size_t watcher_count() const { return watcher_count_; }
161 174
175 bool rtt_notification_received() const { return rtt_notification_received_; }
176
162 private: 177 private:
163 size_t watcher_count_; 178 size_t watcher_count_;
164 DISALLOW_COPY_AND_ASSIGN(TestNetworkQualityEstimator); 179 bool rtt_notification_received_;
165 };
166 180
167 class TestRTTObserver : public NetworkQualityEstimator::RTTObserver { 181 base::WeakPtrFactory<TestSocketPerformanceWatcherFactory> weak_ptr_factory_;
168 public:
169 TestRTTObserver() : rtt_notification_received_(false) {}
170 182
171 bool rtt_notification_received() const { return rtt_notification_received_; } 183 DISALLOW_COPY_AND_ASSIGN(TestSocketPerformanceWatcherFactory);
172
173 // NetworkQualityEstimator::RttObserver implementation:
174 void OnRTTObservation(
175 int32_t rtt_ms,
176 const base::TimeTicks& timestamp,
177 net::NetworkQualityEstimator::ObservationSource source) override {
178 rtt_notification_received_ = true;
179 }
180
181 private:
182 bool rtt_notification_received_;
183 }; 184 };
184 185
185 class QuicNetworkTransactionTest 186 class QuicNetworkTransactionTest
186 : public PlatformTest, 187 : public PlatformTest,
187 public ::testing::WithParamInterface<QuicVersion> { 188 public ::testing::WithParamInterface<QuicVersion> {
188 protected: 189 protected:
189 QuicNetworkTransactionTest() 190 QuicNetworkTransactionTest()
190 : clock_(new MockClock), 191 : clock_(new MockClock),
191 maker_(GetParam(), 0, clock_, kDefaultServerHostName), 192 maker_(GetParam(), 0, clock_, kDefaultServerHostName),
192 cert_transparency_verifier_(new MultiLogCTVerifier()), 193 cert_transparency_verifier_(new MultiLogCTVerifier()),
193 test_network_quality_estimator_(new TestNetworkQualityEstimator()),
194 ssl_config_service_(new SSLConfigServiceDefaults), 194 ssl_config_service_(new SSLConfigServiceDefaults),
195 proxy_service_(ProxyService::CreateDirect()), 195 proxy_service_(ProxyService::CreateDirect()),
196 auth_handler_factory_( 196 auth_handler_factory_(
197 HttpAuthHandlerFactory::CreateDefault(&host_resolver_)), 197 HttpAuthHandlerFactory::CreateDefault(&host_resolver_)),
198 random_generator_(0), 198 random_generator_(0),
199 ssl_data_(ASYNC, OK) { 199 ssl_data_(ASYNC, OK) {
200 request_.method = "GET"; 200 request_.method = "GET";
201 std::string url("https://"); 201 std::string url("https://");
202 url.append(kDefaultServerHostName); 202 url.append(kDefaultServerHostName);
203 request_.url = GURL(url); 203 request_.url = GURL(url);
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 params_.enable_quic = true; 435 params_.enable_quic = true;
436 params_.quic_clock = clock_; 436 params_.quic_clock = clock_;
437 params_.quic_random = &random_generator_; 437 params_.quic_random = &random_generator_;
438 params_.client_socket_factory = socket_factory; 438 params_.client_socket_factory = socket_factory;
439 params_.quic_crypto_client_stream_factory = &crypto_client_stream_factory_; 439 params_.quic_crypto_client_stream_factory = &crypto_client_stream_factory_;
440 params_.host_resolver = &host_resolver_; 440 params_.host_resolver = &host_resolver_;
441 params_.cert_verifier = &cert_verifier_; 441 params_.cert_verifier = &cert_verifier_;
442 params_.transport_security_state = &transport_security_state_; 442 params_.transport_security_state = &transport_security_state_;
443 params_.cert_transparency_verifier = cert_transparency_verifier_.get(); 443 params_.cert_transparency_verifier = cert_transparency_verifier_.get();
444 params_.socket_performance_watcher_factory = 444 params_.socket_performance_watcher_factory =
445 test_network_quality_estimator_.get(); 445 &test_socket_performance_watcher_factory_;
446 params_.proxy_service = proxy_service_.get(); 446 params_.proxy_service = proxy_service_.get();
447 params_.ssl_config_service = ssl_config_service_.get(); 447 params_.ssl_config_service = ssl_config_service_.get();
448 params_.http_auth_handler_factory = auth_handler_factory_.get(); 448 params_.http_auth_handler_factory = auth_handler_factory_.get();
449 params_.http_server_properties = http_server_properties_.GetWeakPtr(); 449 params_.http_server_properties = http_server_properties_.GetWeakPtr();
450 params_.quic_supported_versions = SupportedVersions(GetParam()); 450 params_.quic_supported_versions = SupportedVersions(GetParam());
451 for (const char* host : 451 for (const char* host :
452 {kDefaultServerHostName, "www.example.org", "news.example.org", 452 {kDefaultServerHostName, "www.example.org", "news.example.org",
453 "bar.example.org", "foo.example.org", "invalid.example.org", 453 "bar.example.org", "foo.example.org", "invalid.example.org",
454 "mail.example.com"}) { 454 "mail.example.com"}) {
455 params_.quic_host_whitelist.insert(host); 455 params_.quic_host_whitelist.insert(host);
456 } 456 }
457 457
458 test_network_quality_estimator_->AddRTTObserver(&rtt_observer_);
459
460 session_.reset(new HttpNetworkSession(params_)); 458 session_.reset(new HttpNetworkSession(params_));
461 session_->quic_stream_factory()->set_require_confirmation(false); 459 session_->quic_stream_factory()->set_require_confirmation(false);
462 ASSERT_EQ(params_.quic_socket_receive_buffer_size, 460 ASSERT_EQ(params_.quic_socket_receive_buffer_size,
463 session_->quic_stream_factory()->socket_receive_buffer_size()); 461 session_->quic_stream_factory()->socket_receive_buffer_size());
464 } 462 }
465 463
466 void CheckWasQuicResponse(const scoped_ptr<HttpNetworkTransaction>& trans) { 464 void CheckWasQuicResponse(const scoped_ptr<HttpNetworkTransaction>& trans) {
467 const HttpResponseInfo* response = trans->GetResponseInfo(); 465 const HttpResponseInfo* response = trans->GetResponseInfo();
468 ASSERT_TRUE(response != nullptr); 466 ASSERT_TRUE(response != nullptr);
469 ASSERT_TRUE(response->headers.get() != nullptr); 467 ASSERT_TRUE(response->headers.get() != nullptr);
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 MockClock* clock_; // Owned by QuicStreamFactory after CreateSession. 579 MockClock* clock_; // Owned by QuicStreamFactory after CreateSession.
582 QuicTestPacketMaker maker_; 580 QuicTestPacketMaker maker_;
583 scoped_ptr<HttpNetworkSession> session_; 581 scoped_ptr<HttpNetworkSession> session_;
584 MockClientSocketFactory socket_factory_; 582 MockClientSocketFactory socket_factory_;
585 ProofVerifyDetailsChromium verify_details_; 583 ProofVerifyDetailsChromium verify_details_;
586 MockCryptoClientStreamFactory crypto_client_stream_factory_; 584 MockCryptoClientStreamFactory crypto_client_stream_factory_;
587 MockHostResolver host_resolver_; 585 MockHostResolver host_resolver_;
588 MockCertVerifier cert_verifier_; 586 MockCertVerifier cert_verifier_;
589 TransportSecurityState transport_security_state_; 587 TransportSecurityState transport_security_state_;
590 scoped_ptr<CTVerifier> cert_transparency_verifier_; 588 scoped_ptr<CTVerifier> cert_transparency_verifier_;
591 scoped_ptr<TestNetworkQualityEstimator> test_network_quality_estimator_; 589 TestSocketPerformanceWatcherFactory test_socket_performance_watcher_factory_;
592 TestRTTObserver rtt_observer_;
593 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service_; 590 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service_;
594 scoped_ptr<ProxyService> proxy_service_; 591 scoped_ptr<ProxyService> proxy_service_;
595 scoped_ptr<HttpAuthHandlerFactory> auth_handler_factory_; 592 scoped_ptr<HttpAuthHandlerFactory> auth_handler_factory_;
596 MockRandom random_generator_; 593 MockRandom random_generator_;
597 HttpServerPropertiesImpl http_server_properties_; 594 HttpServerPropertiesImpl http_server_properties_;
598 HttpNetworkSession::Params params_; 595 HttpNetworkSession::Params params_;
599 HttpRequestInfo request_; 596 HttpRequestInfo request_;
600 BoundTestNetLog net_log_; 597 BoundTestNetLog net_log_;
601 std::vector<scoped_ptr<StaticSocketDataProvider>> hanging_data_; 598 std::vector<scoped_ptr<StaticSocketDataProvider>> hanging_data_;
602 SSLSocketDataProvider ssl_data_; 599 SSLSocketDataProvider ssl_data_;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 639 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
643 640
644 // The non-alternate protocol job needs to hang in order to guarantee that 641 // The non-alternate protocol job needs to hang in order to guarantee that
645 // the alternate-protocol job will "win". 642 // the alternate-protocol job will "win".
646 AddHangingNonAlternateProtocolSocketData(); 643 AddHangingNonAlternateProtocolSocketData();
647 644
648 params_.parse_alternative_services = false; 645 params_.parse_alternative_services = false;
649 params_.enable_alternative_service_with_different_host = false; 646 params_.enable_alternative_service_with_different_host = false;
650 CreateSession(); 647 CreateSession();
651 648
652 EXPECT_FALSE(rtt_observer_.rtt_notification_received()); 649 EXPECT_FALSE(
650 test_socket_performance_watcher_factory_.rtt_notification_received());
653 SendRequestAndExpectQuicResponse("hello!"); 651 SendRequestAndExpectQuicResponse("hello!");
654 EXPECT_TRUE(rtt_observer_.rtt_notification_received()); 652 EXPECT_TRUE(
653 test_socket_performance_watcher_factory_.rtt_notification_received());
655 654
656 // Check that the NetLog was filled reasonably. 655 // Check that the NetLog was filled reasonably.
657 TestNetLogEntry::List entries; 656 TestNetLogEntry::List entries;
658 net_log_.GetEntries(&entries); 657 net_log_.GetEntries(&entries);
659 EXPECT_LT(0u, entries.size()); 658 EXPECT_LT(0u, entries.size());
660 659
661 // Check that we logged a QUIC_SESSION_PACKET_RECEIVED. 660 // Check that we logged a QUIC_SESSION_PACKET_RECEIVED.
662 int pos = ExpectLogContainsSomewhere( 661 int pos = ExpectLogContainsSomewhere(
663 entries, 0, NetLog::TYPE_QUIC_SESSION_PACKET_RECEIVED, 662 entries, 0, NetLog::TYPE_QUIC_SESSION_PACKET_RECEIVED,
664 NetLog::PHASE_NONE); 663 NetLog::PHASE_NONE);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
704 mock_quic_data.AddRead(ConstructResponseHeadersPacket( 703 mock_quic_data.AddRead(ConstructResponseHeadersPacket(
705 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 704 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
706 mock_quic_data.AddRead( 705 mock_quic_data.AddRead(
707 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!")); 706 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!"));
708 mock_quic_data.AddWrite(ConstructAckPacket(2, 1)); 707 mock_quic_data.AddWrite(ConstructAckPacket(2, 1));
709 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read 708 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read
710 mock_quic_data.AddRead(ASYNC, 0); // EOF 709 mock_quic_data.AddRead(ASYNC, 0); // EOF
711 710
712 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 711 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
713 712
714 EXPECT_FALSE(rtt_observer_.rtt_notification_received()); 713 EXPECT_FALSE(
714 test_socket_performance_watcher_factory_.rtt_notification_received());
715 // There is no need to set up an alternate protocol job, because 715 // There is no need to set up an alternate protocol job, because
716 // no attempt will be made to speak to the proxy over TCP. 716 // no attempt will be made to speak to the proxy over TCP.
717 717
718 request_.url = GURL("http://mail.example.org/"); 718 request_.url = GURL("http://mail.example.org/");
719 params_.parse_alternative_services = false; 719 params_.parse_alternative_services = false;
720 params_.enable_alternative_service_with_different_host = false; 720 params_.enable_alternative_service_with_different_host = false;
721 CreateSession(); 721 CreateSession();
722 722
723 SendRequestAndExpectQuicResponseFromProxyOnPort("hello!", 70); 723 SendRequestAndExpectQuicResponseFromProxyOnPort("hello!", 70);
724 EXPECT_TRUE(rtt_observer_.rtt_notification_received()); 724 EXPECT_TRUE(
725 test_socket_performance_watcher_factory_.rtt_notification_received());
725 } 726 }
726 727
727 // Regression test for https://crbug.com/492458. Test that for an HTTP 728 // Regression test for https://crbug.com/492458. Test that for an HTTP
728 // connection through a QUIC proxy, the certificate exhibited by the proxy is 729 // connection through a QUIC proxy, the certificate exhibited by the proxy is
729 // checked against the proxy hostname, not the origin hostname. 730 // checked against the proxy hostname, not the origin hostname.
730 TEST_P(QuicNetworkTransactionTest, QuicProxyWithCert) { 731 TEST_P(QuicNetworkTransactionTest, QuicProxyWithCert) {
731 const std::string origin_host = "mail.example.com"; 732 const std::string origin_host = "mail.example.com";
732 const std::string proxy_host = "www.example.org"; 733 const std::string proxy_host = "www.example.org";
733 734
734 params_.enable_quic_for_proxies = true; 735 params_.enable_quic_for_proxies = true;
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 mock_quic_data2.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); 825 mock_quic_data2.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED);
825 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); 826 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_);
826 827
827 mock_quic_data1.AddSocketDataToFactory(&socket_factory_); 828 mock_quic_data1.AddSocketDataToFactory(&socket_factory_);
828 mock_quic_data2.AddSocketDataToFactory(&socket_factory_); 829 mock_quic_data2.AddSocketDataToFactory(&socket_factory_);
829 830
830 params_.parse_alternative_services = false; 831 params_.parse_alternative_services = false;
831 params_.enable_alternative_service_with_different_host = false; 832 params_.enable_alternative_service_with_different_host = false;
832 CreateSession(); 833 CreateSession();
833 834
834 EXPECT_EQ(0U, test_network_quality_estimator_->watcher_count()); 835 EXPECT_EQ(0U, test_socket_performance_watcher_factory_.watcher_count());
835 for (size_t i = 0; i < 2; ++i) { 836 for (size_t i = 0; i < 2; ++i) {
836 scoped_ptr<HttpNetworkTransaction> trans( 837 scoped_ptr<HttpNetworkTransaction> trans(
837 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); 838 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get()));
838 TestCompletionCallback callback; 839 TestCompletionCallback callback;
839 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); 840 int rv = trans->Start(&request_, callback.callback(), net_log_.bound());
840 EXPECT_EQ(ERR_IO_PENDING, rv); 841 EXPECT_EQ(ERR_IO_PENDING, rv);
841 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult()); 842 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult());
842 EXPECT_EQ(1 + i, test_network_quality_estimator_->watcher_count()); 843 EXPECT_EQ(1 + i, test_socket_performance_watcher_factory_.watcher_count());
843 } 844 }
844 } 845 }
845 846
846 TEST_P(QuicNetworkTransactionTest, DoNotForceQuicForHttps) { 847 TEST_P(QuicNetworkTransactionTest, DoNotForceQuicForHttps) {
847 // Attempt to "force" quic on 443, which will not be honored. 848 // Attempt to "force" quic on 443, which will not be honored.
848 params_.origins_to_force_quic_on.insert( 849 params_.origins_to_force_quic_on.insert(
849 HostPortPair::FromString("www.google.com:443")); 850 HostPortPair::FromString("www.google.com:443"));
850 851
851 MockRead http_reads[] = { 852 MockRead http_reads[] = {
852 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), 853 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"),
853 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 854 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
854 MockRead(ASYNC, OK)}; 855 MockRead(ASYNC, OK)};
855 856
856 StaticSocketDataProvider data(http_reads, arraysize(http_reads), nullptr, 0); 857 StaticSocketDataProvider data(http_reads, arraysize(http_reads), nullptr, 0);
857 socket_factory_.AddSocketDataProvider(&data); 858 socket_factory_.AddSocketDataProvider(&data);
858 SSLSocketDataProvider ssl(ASYNC, OK); 859 SSLSocketDataProvider ssl(ASYNC, OK);
859 socket_factory_.AddSSLSocketDataProvider(&ssl); 860 socket_factory_.AddSSLSocketDataProvider(&ssl);
860 861
861 params_.parse_alternative_services = false; 862 params_.parse_alternative_services = false;
862 params_.enable_alternative_service_with_different_host = false; 863 params_.enable_alternative_service_with_different_host = false;
863 CreateSession(); 864 CreateSession();
864 865
865 SendRequestAndExpectHttpResponse("hello world"); 866 SendRequestAndExpectHttpResponse("hello world");
866 EXPECT_EQ(0U, test_network_quality_estimator_->watcher_count()); 867 EXPECT_EQ(0U, test_socket_performance_watcher_factory_.watcher_count());
867 } 868 }
868 869
869 TEST_P(QuicNetworkTransactionTest, UseAlternativeServiceForQuic) { 870 TEST_P(QuicNetworkTransactionTest, UseAlternativeServiceForQuic) {
870 MockRead http_reads[] = { 871 MockRead http_reads[] = {
871 MockRead("HTTP/1.1 200 OK\r\n"), MockRead(kQuicAlternativeServiceHeader), 872 MockRead("HTTP/1.1 200 OK\r\n"), MockRead(kQuicAlternativeServiceHeader),
872 MockRead("hello world"), 873 MockRead("hello world"),
873 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 874 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
874 MockRead(ASYNC, OK)}; 875 MockRead(ASYNC, OK)};
875 876
876 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, 877 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr,
(...skipping 1408 matching lines...) Expand 10 before | Expand all | Expand 10 after
2285 host_resolver_.Resolve(info, DEFAULT_PRIORITY, &address, CompletionCallback(), 2286 host_resolver_.Resolve(info, DEFAULT_PRIORITY, &address, CompletionCallback(),
2286 nullptr, net_log_.bound()); 2287 nullptr, net_log_.bound());
2287 2288
2288 CreateSession(); 2289 CreateSession();
2289 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT); 2290 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT);
2290 SendRequestAndExpectHttpResponse("hello world"); 2291 SendRequestAndExpectHttpResponse("hello world");
2291 } 2292 }
2292 2293
2293 TEST_P(QuicNetworkTransactionTest, SecureResourceOverSecureQuic) { 2294 TEST_P(QuicNetworkTransactionTest, SecureResourceOverSecureQuic) {
2294 maker_.set_hostname("www.example.org"); 2295 maker_.set_hostname("www.example.org");
2295 EXPECT_FALSE(rtt_observer_.rtt_notification_received()); 2296 EXPECT_FALSE(
2297 test_socket_performance_watcher_factory_.rtt_notification_received());
2296 MockQuicData mock_quic_data; 2298 MockQuicData mock_quic_data;
2297 mock_quic_data.AddWrite( 2299 mock_quic_data.AddWrite(
2298 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, 2300 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true,
2299 GetRequestHeaders("GET", "https", "/"))); 2301 GetRequestHeaders("GET", "https", "/")));
2300 mock_quic_data.AddRead(ConstructResponseHeadersPacket( 2302 mock_quic_data.AddRead(ConstructResponseHeadersPacket(
2301 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 2303 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
2302 mock_quic_data.AddRead( 2304 mock_quic_data.AddRead(
2303 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!")); 2305 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!"));
2304 mock_quic_data.AddWrite(ConstructAckPacket(2, 1)); 2306 mock_quic_data.AddWrite(ConstructAckPacket(2, 1));
2305 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more read data. 2307 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more read data.
2306 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 2308 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
2307 2309
2308 request_.url = GURL("https://www.example.org:443"); 2310 request_.url = GURL("https://www.example.org:443");
2309 AddHangingNonAlternateProtocolSocketData(); 2311 AddHangingNonAlternateProtocolSocketData();
2310 CreateSession(); 2312 CreateSession();
2311 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE); 2313 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE);
2312 SendRequestAndExpectQuicResponse("hello!"); 2314 SendRequestAndExpectQuicResponse("hello!");
2313 EXPECT_TRUE(rtt_observer_.rtt_notification_received()); 2315 EXPECT_TRUE(
2316 test_socket_performance_watcher_factory_.rtt_notification_received());
2314 } 2317 }
2315 2318
2316 TEST_P(QuicNetworkTransactionTest, QuicUpload) { 2319 TEST_P(QuicNetworkTransactionTest, QuicUpload) {
2317 params_.origins_to_force_quic_on.insert( 2320 params_.origins_to_force_quic_on.insert(
2318 HostPortPair::FromString("mail.example.org:443")); 2321 HostPortPair::FromString("mail.example.org:443"));
2319 2322
2320 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 2323 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
2321 MockWrite writes[] = {MockWrite(SYNCHRONOUS, ERR_FAILED, 1)}; 2324 MockWrite writes[] = {MockWrite(SYNCHRONOUS, ERR_FAILED, 1)};
2322 SequencedSocketData socket_data(reads, arraysize(reads), writes, 2325 SequencedSocketData socket_data(reads, arraysize(reads), writes,
2323 arraysize(writes)); 2326 arraysize(writes));
(...skipping 15 matching lines...) Expand all
2339 scoped_ptr<HttpNetworkTransaction> trans( 2342 scoped_ptr<HttpNetworkTransaction> trans(
2340 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); 2343 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get()));
2341 TestCompletionCallback callback; 2344 TestCompletionCallback callback;
2342 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); 2345 int rv = trans->Start(&request_, callback.callback(), net_log_.bound());
2343 EXPECT_EQ(ERR_IO_PENDING, rv); 2346 EXPECT_EQ(ERR_IO_PENDING, rv);
2344 EXPECT_NE(OK, callback.WaitForResult()); 2347 EXPECT_NE(OK, callback.WaitForResult());
2345 } 2348 }
2346 2349
2347 } // namespace test 2350 } // namespace test
2348 } // namespace net 2351 } // namespace net
OLDNEW
« net/base/socket_performance_watcher.h ('K') | « net/net.gypi ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698