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

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

Powered by Google App Engine
This is Rietveld 408576698