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

Side by Side Diff: net/http/http_network_transaction_unittest.cc

Issue 2895263003: Revert CLs landed in HttpStreamFactoryImpl to track down a crasher (Closed)
Patch Set: Revert "Fix SpdySessionKey for HTTP/2 alternative Jobs." Created 3 years, 7 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/http/http_network_transaction.h" 5 #include "net/http/http_network_transaction.h"
6 6
7 #include <math.h> // ceil 7 #include <math.h> // ceil
8 #include <stdarg.h> 8 #include <stdarg.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 #include "net/log/net_log.h" 65 #include "net/log/net_log.h"
66 #include "net/log/net_log_event_type.h" 66 #include "net/log/net_log_event_type.h"
67 #include "net/log/net_log_source.h" 67 #include "net/log/net_log_source.h"
68 #include "net/log/test_net_log.h" 68 #include "net/log/test_net_log.h"
69 #include "net/log/test_net_log_entry.h" 69 #include "net/log/test_net_log_entry.h"
70 #include "net/log/test_net_log_util.h" 70 #include "net/log/test_net_log_util.h"
71 #include "net/proxy/mock_proxy_resolver.h" 71 #include "net/proxy/mock_proxy_resolver.h"
72 #include "net/proxy/proxy_config_service_fixed.h" 72 #include "net/proxy/proxy_config_service_fixed.h"
73 #include "net/proxy/proxy_info.h" 73 #include "net/proxy/proxy_info.h"
74 #include "net/proxy/proxy_resolver.h" 74 #include "net/proxy/proxy_resolver.h"
75 #include "net/proxy/proxy_resolver_factory.h"
76 #include "net/proxy/proxy_server.h" 75 #include "net/proxy/proxy_server.h"
77 #include "net/proxy/proxy_service.h" 76 #include "net/proxy/proxy_service.h"
78 #include "net/socket/client_socket_factory.h" 77 #include "net/socket/client_socket_factory.h"
79 #include "net/socket/client_socket_pool.h" 78 #include "net/socket/client_socket_pool.h"
80 #include "net/socket/client_socket_pool_manager.h" 79 #include "net/socket/client_socket_pool_manager.h"
81 #include "net/socket/connection_attempts.h" 80 #include "net/socket/connection_attempts.h"
82 #include "net/socket/mock_client_socket_pool_manager.h" 81 #include "net/socket/mock_client_socket_pool_manager.h"
83 #include "net/socket/next_proto.h" 82 #include "net/socket/next_proto.h"
84 #include "net/socket/socket_test_util.h" 83 #include "net/socket/socket_test_util.h"
85 #include "net/socket/ssl_client_socket.h" 84 #include "net/socket/ssl_client_socket.h"
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 std::unique_ptr<TestNetworkStreamThrottler> owned_throttler( 371 std::unique_ptr<TestNetworkStreamThrottler> owned_throttler(
373 new TestNetworkStreamThrottler); 372 new TestNetworkStreamThrottler);
374 *throttler = owned_throttler.get(); 373 *throttler = owned_throttler.get();
375 374
376 HttpNetworkSessionPeer peer(session.get()); 375 HttpNetworkSessionPeer peer(session.get());
377 peer.SetNetworkStreamThrottler(std::move(owned_throttler)); 376 peer.SetNetworkStreamThrottler(std::move(owned_throttler));
378 377
379 return session; 378 return session;
380 } 379 }
381 380
382 class FailingProxyResolverFactory : public ProxyResolverFactory {
383 public:
384 FailingProxyResolverFactory() : ProxyResolverFactory(false) {}
385
386 // ProxyResolverFactory override.
387 int CreateProxyResolver(
388 const scoped_refptr<ProxyResolverScriptData>& script_data,
389 std::unique_ptr<ProxyResolver>* result,
390 const CompletionCallback& callback,
391 std::unique_ptr<Request>* request) override {
392 return ERR_PAC_SCRIPT_FAILED;
393 }
394 };
395
396 } // namespace 381 } // namespace
397 382
398 class HttpNetworkTransactionTest : public PlatformTest { 383 class HttpNetworkTransactionTest : public PlatformTest {
399 public: 384 public:
400 ~HttpNetworkTransactionTest() override { 385 ~HttpNetworkTransactionTest() override {
401 // Important to restore the per-pool limit first, since the pool limit must 386 // Important to restore the per-pool limit first, since the pool limit must
402 // always be greater than group limit, and the tests reduce both limits. 387 // always be greater than group limit, and the tests reduce both limits.
403 ClientSocketPoolManager::set_max_sockets_per_pool( 388 ClientSocketPoolManager::set_max_sockets_per_pool(
404 HttpNetworkSession::NORMAL_SOCKET_POOL, old_max_pool_sockets_); 389 HttpNetworkSession::NORMAL_SOCKET_POOL, old_max_pool_sockets_);
405 ClientSocketPoolManager::set_max_sockets_per_group( 390 ClientSocketPoolManager::set_max_sockets_per_group(
(...skipping 14811 matching lines...) Expand 10 before | Expand all | Expand 10 after
15217 public: 15202 public:
15218 FakeStreamFactory() {} 15203 FakeStreamFactory() {}
15219 ~FakeStreamFactory() override {} 15204 ~FakeStreamFactory() override {}
15220 15205
15221 // Returns a WeakPtr<> to the last HttpStreamRequest returned by 15206 // Returns a WeakPtr<> to the last HttpStreamRequest returned by
15222 // RequestStream() (which may be NULL if it was destroyed already). 15207 // RequestStream() (which may be NULL if it was destroyed already).
15223 base::WeakPtr<FakeStreamRequest> last_stream_request() { 15208 base::WeakPtr<FakeStreamRequest> last_stream_request() {
15224 return last_stream_request_; 15209 return last_stream_request_;
15225 } 15210 }
15226 15211
15227 std::unique_ptr<HttpStreamRequest> RequestStream( 15212 HttpStreamRequest* RequestStream(const HttpRequestInfo& info,
15213 RequestPriority priority,
15214 const SSLConfig& server_ssl_config,
15215 const SSLConfig& proxy_ssl_config,
15216 HttpStreamRequest::Delegate* delegate,
15217 bool enable_ip_based_pooling,
15218 bool enable_alternative_services,
15219 const NetLogWithSource& net_log) override {
15220 FakeStreamRequest* fake_request = new FakeStreamRequest(priority, delegate);
15221 last_stream_request_ = fake_request->AsWeakPtr();
15222 return fake_request;
15223 }
15224
15225 HttpStreamRequest* RequestBidirectionalStreamImpl(
15228 const HttpRequestInfo& info, 15226 const HttpRequestInfo& info,
15229 RequestPriority priority, 15227 RequestPriority priority,
15230 const SSLConfig& server_ssl_config, 15228 const SSLConfig& server_ssl_config,
15231 const SSLConfig& proxy_ssl_config,
15232 HttpStreamRequest::Delegate* delegate,
15233 bool enable_ip_based_pooling,
15234 bool enable_alternative_services,
15235 const NetLogWithSource& net_log) override {
15236 auto fake_request = base::MakeUnique<FakeStreamRequest>(priority, delegate);
15237 last_stream_request_ = fake_request->AsWeakPtr();
15238 return std::move(fake_request);
15239 }
15240
15241 std::unique_ptr<HttpStreamRequest> RequestBidirectionalStreamImpl(
15242 const HttpRequestInfo& info,
15243 RequestPriority priority,
15244 const SSLConfig& server_ssl_config,
15245 const SSLConfig& proxy_ssl_config, 15229 const SSLConfig& proxy_ssl_config,
15246 HttpStreamRequest::Delegate* delegate, 15230 HttpStreamRequest::Delegate* delegate,
15247 bool enable_ip_based_pooling, 15231 bool enable_ip_based_pooling,
15248 bool enable_alternative_services, 15232 bool enable_alternative_services,
15249 const NetLogWithSource& net_log) override { 15233 const NetLogWithSource& net_log) override {
15250 NOTREACHED(); 15234 NOTREACHED();
15251 return nullptr; 15235 return nullptr;
15252 } 15236 }
15253 15237
15254 std::unique_ptr<HttpStreamRequest> RequestWebSocketHandshakeStream( 15238 HttpStreamRequest* RequestWebSocketHandshakeStream(
15255 const HttpRequestInfo& info, 15239 const HttpRequestInfo& info,
15256 RequestPriority priority, 15240 RequestPriority priority,
15257 const SSLConfig& server_ssl_config, 15241 const SSLConfig& server_ssl_config,
15258 const SSLConfig& proxy_ssl_config, 15242 const SSLConfig& proxy_ssl_config,
15259 HttpStreamRequest::Delegate* delegate, 15243 HttpStreamRequest::Delegate* delegate,
15260 WebSocketHandshakeStreamBase::CreateHelper* create_helper, 15244 WebSocketHandshakeStreamBase::CreateHelper* create_helper,
15261 bool enable_ip_based_pooling, 15245 bool enable_ip_based_pooling,
15262 bool enable_alternative_services, 15246 bool enable_alternative_services,
15263 const NetLogWithSource& net_log) override { 15247 const NetLogWithSource& net_log) override {
15264 auto fake_request = 15248 FakeStreamRequest* fake_request =
15265 base::MakeUnique<FakeStreamRequest>(priority, delegate, create_helper); 15249 new FakeStreamRequest(priority, delegate, create_helper);
15266 last_stream_request_ = fake_request->AsWeakPtr(); 15250 last_stream_request_ = fake_request->AsWeakPtr();
15267 return std::move(fake_request); 15251 return fake_request;
15268 } 15252 }
15269 15253
15270 void PreconnectStreams(int num_streams, 15254 void PreconnectStreams(int num_streams,
15271 const HttpRequestInfo& info) override { 15255 const HttpRequestInfo& info) override {
15272 ADD_FAILURE(); 15256 ADD_FAILURE();
15273 } 15257 }
15274 15258
15275 const HostMappingRules* GetHostMappingRules() const override { 15259 const HostMappingRules* GetHostMappingRules() const override {
15276 ADD_FAILURE(); 15260 ADD_FAILURE();
15277 return NULL; 15261 return NULL;
(...skipping 1592 matching lines...) Expand 10 before | Expand all | Expand 10 after
16870 TEST_F(HttpNetworkTransactionTest, MatchContentEncoding3) { 16854 TEST_F(HttpNetworkTransactionTest, MatchContentEncoding3) {
16871 CheckContentEncodingMatching(&session_deps_, "identity;q=1, *;q=0", "gzip", 16855 CheckContentEncodingMatching(&session_deps_, "identity;q=1, *;q=0", "gzip",
16872 "", false); 16856 "", false);
16873 } 16857 }
16874 16858
16875 TEST_F(HttpNetworkTransactionTest, MatchContentEncoding4) { 16859 TEST_F(HttpNetworkTransactionTest, MatchContentEncoding4) {
16876 CheckContentEncodingMatching(&session_deps_, "identity;q=1, *;q=0", "gzip", 16860 CheckContentEncodingMatching(&session_deps_, "identity;q=1, *;q=0", "gzip",
16877 "www.foo.com/other", true); 16861 "www.foo.com/other", true);
16878 } 16862 }
16879 16863
16880 TEST_F(HttpNetworkTransactionTest, ProxyResolutionFailsSync) {
16881 ProxyConfig proxy_config;
16882 proxy_config.set_pac_url(GURL("http://fooproxyurl"));
16883 proxy_config.set_pac_mandatory(true);
16884 MockAsyncProxyResolver resolver;
16885 session_deps_.proxy_service.reset(new ProxyService(
16886 base::MakeUnique<ProxyConfigServiceFixed>(proxy_config),
16887 base::WrapUnique(new FailingProxyResolverFactory), nullptr));
16888
16889 HttpRequestInfo request;
16890 request.method = "GET";
16891 request.url = GURL("http://www.example.org/");
16892
16893 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
16894 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
16895
16896 TestCompletionCallback callback;
16897
16898 int rv = trans.Start(&request, callback.callback(), NetLogWithSource());
16899 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
16900 EXPECT_THAT(callback.WaitForResult(),
16901 IsError(ERR_MANDATORY_PROXY_CONFIGURATION_FAILED));
16902 }
16903
16904 TEST_F(HttpNetworkTransactionTest, ProxyResolutionFailsAsync) {
16905 ProxyConfig proxy_config;
16906 proxy_config.set_pac_url(GURL("http://fooproxyurl"));
16907 proxy_config.set_pac_mandatory(true);
16908 MockAsyncProxyResolverFactory* proxy_resolver_factory =
16909 new MockAsyncProxyResolverFactory(false);
16910 MockAsyncProxyResolver resolver;
16911 session_deps_.proxy_service.reset(
16912 new ProxyService(base::MakeUnique<ProxyConfigServiceFixed>(proxy_config),
16913 base::WrapUnique(proxy_resolver_factory), nullptr));
16914 HttpRequestInfo request;
16915 request.method = "GET";
16916 request.url = GURL("http://www.example.org/");
16917
16918 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
16919 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
16920
16921 TestCompletionCallback callback;
16922 int rv = trans.Start(&request, callback.callback(), NetLogWithSource());
16923 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
16924
16925 proxy_resolver_factory->pending_requests()[0]->CompleteNowWithForwarder(
16926 ERR_FAILED, &resolver);
16927 EXPECT_THAT(callback.WaitForResult(),
16928 IsError(ERR_MANDATORY_PROXY_CONFIGURATION_FAILED));
16929 }
16930
16931 TEST_F(HttpNetworkTransactionTest, NoSupportedProxies) {
16932 session_deps_.proxy_service =
16933 ProxyService::CreateFixedFromPacResult("QUIC myproxy.org:443");
16934 session_deps_.enable_quic = false;
16935 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
16936
16937 HttpRequestInfo request;
16938 request.method = "GET";
16939 request.url = GURL("http://www.example.org/");
16940
16941 TestCompletionCallback callback;
16942 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
16943 int rv = trans.Start(&request, callback.callback(), NetLogWithSource());
16944 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
16945
16946 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_NO_SUPPORTED_PROXIES));
16947 }
16948
16949 } // namespace net 16864 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698