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

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

Issue 9516009: SPDY - disable spdy/2.1 (flow control) by default (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « net/http/http_network_layer.cc ('k') | net/http/http_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 "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 <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 6476 matching lines...) Expand 10 before | Expand all | Expand 10 after
6487 AuthCredentials(kFirst, kBar), callback4.callback()); 6487 AuthCredentials(kFirst, kBar), callback4.callback());
6488 EXPECT_EQ(ERR_IO_PENDING, rv); 6488 EXPECT_EQ(ERR_IO_PENDING, rv);
6489 rv = callback4.WaitForResult(); 6489 rv = callback4.WaitForResult();
6490 EXPECT_EQ(OK, rv); 6490 EXPECT_EQ(OK, rv);
6491 response = trans->GetResponseInfo(); 6491 response = trans->GetResponseInfo();
6492 ASSERT_TRUE(response != NULL); 6492 ASSERT_TRUE(response != NULL);
6493 EXPECT_TRUE(response->auth_challenge.get() == NULL); 6493 EXPECT_TRUE(response->auth_challenge.get() == NULL);
6494 } 6494 }
6495 6495
6496 TEST_F(HttpNetworkTransactionTest, HonorAlternateProtocolHeader) { 6496 TEST_F(HttpNetworkTransactionTest, HonorAlternateProtocolHeader) {
6497 HttpStreamFactory::set_next_protos(MakeNextProtos("foo", "bar", NULL));
6498 HttpStreamFactory::set_use_alternate_protocols(true); 6497 HttpStreamFactory::set_use_alternate_protocols(true);
6498 HttpStreamFactory::SetNextProtos(SpdyNextProtos());
6499 6499
6500 SessionDependencies session_deps; 6500 SessionDependencies session_deps;
6501 6501
6502 MockRead data_reads[] = { 6502 MockRead data_reads[] = {
6503 MockRead("HTTP/1.1 200 OK\r\n"), 6503 MockRead("HTTP/1.1 200 OK\r\n"),
6504 MockRead(kAlternateProtocolHttpHeader), 6504 MockRead(kAlternateProtocolHttpHeader),
6505 MockRead("hello world"), 6505 MockRead("hello world"),
6506 MockRead(SYNCHRONOUS, OK), 6506 MockRead(SYNCHRONOUS, OK),
6507 }; 6507 };
6508 6508
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
6544 6544
6545 ASSERT_TRUE(http_server_properties.HasAlternateProtocol(http_host_port_pair)); 6545 ASSERT_TRUE(http_server_properties.HasAlternateProtocol(http_host_port_pair));
6546 const PortAlternateProtocolPair alternate = 6546 const PortAlternateProtocolPair alternate =
6547 http_server_properties.GetAlternateProtocol(http_host_port_pair); 6547 http_server_properties.GetAlternateProtocol(http_host_port_pair);
6548 PortAlternateProtocolPair expected_alternate; 6548 PortAlternateProtocolPair expected_alternate;
6549 expected_alternate.port = 443; 6549 expected_alternate.port = 443;
6550 expected_alternate.protocol = NPN_SPDY_21; 6550 expected_alternate.protocol = NPN_SPDY_21;
6551 EXPECT_TRUE(expected_alternate.Equals(alternate)); 6551 EXPECT_TRUE(expected_alternate.Equals(alternate));
6552 6552
6553 HttpStreamFactory::set_use_alternate_protocols(false); 6553 HttpStreamFactory::set_use_alternate_protocols(false);
6554 HttpStreamFactory::set_next_protos(std::vector<std::string>()); 6554 HttpStreamFactory::SetNextProtos(std::vector<std::string>());
6555 } 6555 }
6556 6556
6557 TEST_F(HttpNetworkTransactionTest, MarkBrokenAlternateProtocolAndFallback) { 6557 TEST_F(HttpNetworkTransactionTest, MarkBrokenAlternateProtocolAndFallback) {
6558 HttpStreamFactory::set_use_alternate_protocols(true); 6558 HttpStreamFactory::set_use_alternate_protocols(true);
6559 SessionDependencies session_deps; 6559 SessionDependencies session_deps;
6560 6560
6561 HttpRequestInfo request; 6561 HttpRequestInfo request;
6562 request.method = "GET"; 6562 request.method = "GET";
6563 request.url = GURL("http://www.google.com/"); 6563 request.url = GURL("http://www.google.com/");
6564 request.load_flags = 0; 6564 request.load_flags = 0;
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
6858 ASSERT_TRUE(response->headers != NULL); 6858 ASSERT_TRUE(response->headers != NULL);
6859 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 6859 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
6860 6860
6861 std::string response_data; 6861 std::string response_data;
6862 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); 6862 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data));
6863 EXPECT_EQ("hello world", response_data); 6863 EXPECT_EQ("hello world", response_data);
6864 } 6864 }
6865 6865
6866 TEST_F(HttpNetworkTransactionTest, UseAlternateProtocolForNpnSpdy) { 6866 TEST_F(HttpNetworkTransactionTest, UseAlternateProtocolForNpnSpdy) {
6867 HttpStreamFactory::set_use_alternate_protocols(true); 6867 HttpStreamFactory::set_use_alternate_protocols(true);
6868 HttpStreamFactory::set_next_protos(SpdyNextProtos()); 6868 HttpStreamFactory::SetNextProtos(SpdyNextProtos());
6869 SessionDependencies session_deps; 6869 SessionDependencies session_deps;
6870 6870
6871 HttpRequestInfo request; 6871 HttpRequestInfo request;
6872 request.method = "GET"; 6872 request.method = "GET";
6873 request.url = GURL("http://www.google.com/"); 6873 request.url = GURL("http://www.google.com/");
6874 request.load_flags = 0; 6874 request.load_flags = 0;
6875 6875
6876 MockRead data_reads[] = { 6876 MockRead data_reads[] = {
6877 MockRead("HTTP/1.1 200 OK\r\n"), 6877 MockRead("HTTP/1.1 200 OK\r\n"),
6878 MockRead(kAlternateProtocolHttpHeader), 6878 MockRead(kAlternateProtocolHttpHeader),
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
6941 response = trans->GetResponseInfo(); 6941 response = trans->GetResponseInfo();
6942 ASSERT_TRUE(response != NULL); 6942 ASSERT_TRUE(response != NULL);
6943 ASSERT_TRUE(response->headers != NULL); 6943 ASSERT_TRUE(response->headers != NULL);
6944 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 6944 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
6945 EXPECT_TRUE(response->was_fetched_via_spdy); 6945 EXPECT_TRUE(response->was_fetched_via_spdy);
6946 EXPECT_TRUE(response->was_npn_negotiated); 6946 EXPECT_TRUE(response->was_npn_negotiated);
6947 6947
6948 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); 6948 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data));
6949 EXPECT_EQ("hello!", response_data); 6949 EXPECT_EQ("hello!", response_data);
6950 6950
6951 HttpStreamFactory::set_next_protos(std::vector<std::string>()); 6951 HttpStreamFactory::SetNextProtos(std::vector<std::string>());
6952 HttpStreamFactory::set_use_alternate_protocols(false); 6952 HttpStreamFactory::set_use_alternate_protocols(false);
6953 } 6953 }
6954 6954
6955 TEST_F(HttpNetworkTransactionTest, AlternateProtocolWithSpdyLateBinding) { 6955 TEST_F(HttpNetworkTransactionTest, AlternateProtocolWithSpdyLateBinding) {
6956 HttpStreamFactory::set_use_alternate_protocols(true); 6956 HttpStreamFactory::set_use_alternate_protocols(true);
6957 HttpStreamFactory::set_next_protos(SpdyNextProtos()); 6957 HttpStreamFactory::SetNextProtos(SpdyNextProtos());
6958 SessionDependencies session_deps; 6958 SessionDependencies session_deps;
6959 6959
6960 HttpRequestInfo request; 6960 HttpRequestInfo request;
6961 request.method = "GET"; 6961 request.method = "GET";
6962 request.url = GURL("http://www.google.com/"); 6962 request.url = GURL("http://www.google.com/");
6963 request.load_flags = 0; 6963 request.load_flags = 0;
6964 6964
6965 MockRead data_reads[] = { 6965 MockRead data_reads[] = {
6966 MockRead("HTTP/1.1 200 OK\r\n"), 6966 MockRead("HTTP/1.1 200 OK\r\n"),
6967 MockRead(kAlternateProtocolHttpHeader), 6967 MockRead(kAlternateProtocolHttpHeader),
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
7057 7057
7058 response = trans3.GetResponseInfo(); 7058 response = trans3.GetResponseInfo();
7059 ASSERT_TRUE(response != NULL); 7059 ASSERT_TRUE(response != NULL);
7060 ASSERT_TRUE(response->headers != NULL); 7060 ASSERT_TRUE(response->headers != NULL);
7061 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 7061 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
7062 EXPECT_TRUE(response->was_fetched_via_spdy); 7062 EXPECT_TRUE(response->was_fetched_via_spdy);
7063 EXPECT_TRUE(response->was_npn_negotiated); 7063 EXPECT_TRUE(response->was_npn_negotiated);
7064 ASSERT_EQ(OK, ReadTransaction(&trans3, &response_data)); 7064 ASSERT_EQ(OK, ReadTransaction(&trans3, &response_data));
7065 EXPECT_EQ("hello!", response_data); 7065 EXPECT_EQ("hello!", response_data);
7066 7066
7067 HttpStreamFactory::set_next_protos(std::vector<std::string>()); 7067 HttpStreamFactory::SetNextProtos(std::vector<std::string>());
7068 HttpStreamFactory::set_use_alternate_protocols(false); 7068 HttpStreamFactory::set_use_alternate_protocols(false);
7069 } 7069 }
7070 7070
7071 TEST_F(HttpNetworkTransactionTest, StallAlternateProtocolForNpnSpdy) { 7071 TEST_F(HttpNetworkTransactionTest, StallAlternateProtocolForNpnSpdy) {
7072 HttpStreamFactory::set_use_alternate_protocols(true); 7072 HttpStreamFactory::set_use_alternate_protocols(true);
7073 HttpStreamFactory::set_next_protos(SpdyNextProtos()); 7073 HttpStreamFactory::SetNextProtos(SpdyNextProtos());
7074 SessionDependencies session_deps; 7074 SessionDependencies session_deps;
7075 7075
7076 HttpRequestInfo request; 7076 HttpRequestInfo request;
7077 request.method = "GET"; 7077 request.method = "GET";
7078 request.url = GURL("http://www.google.com/"); 7078 request.url = GURL("http://www.google.com/");
7079 request.load_flags = 0; 7079 request.load_flags = 0;
7080 7080
7081 MockRead data_reads[] = { 7081 MockRead data_reads[] = {
7082 MockRead("HTTP/1.1 200 OK\r\n"), 7082 MockRead("HTTP/1.1 200 OK\r\n"),
7083 MockRead(kAlternateProtocolHttpHeader), 7083 MockRead(kAlternateProtocolHttpHeader),
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
7131 response = trans->GetResponseInfo(); 7131 response = trans->GetResponseInfo();
7132 ASSERT_TRUE(response != NULL); 7132 ASSERT_TRUE(response != NULL);
7133 ASSERT_TRUE(response->headers != NULL); 7133 ASSERT_TRUE(response->headers != NULL);
7134 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 7134 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
7135 EXPECT_FALSE(response->was_fetched_via_spdy); 7135 EXPECT_FALSE(response->was_fetched_via_spdy);
7136 EXPECT_FALSE(response->was_npn_negotiated); 7136 EXPECT_FALSE(response->was_npn_negotiated);
7137 7137
7138 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); 7138 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data));
7139 EXPECT_EQ("hello world", response_data); 7139 EXPECT_EQ("hello world", response_data);
7140 7140
7141 HttpStreamFactory::set_next_protos(std::vector<std::string>()); 7141 HttpStreamFactory::SetNextProtos(std::vector<std::string>());
7142 HttpStreamFactory::set_use_alternate_protocols(false); 7142 HttpStreamFactory::set_use_alternate_protocols(false);
7143 } 7143 }
7144 7144
7145 class CapturingProxyResolver : public ProxyResolver { 7145 class CapturingProxyResolver : public ProxyResolver {
7146 public: 7146 public:
7147 CapturingProxyResolver() : ProxyResolver(false /* expects_pac_bytes */) {} 7147 CapturingProxyResolver() : ProxyResolver(false /* expects_pac_bytes */) {}
7148 virtual ~CapturingProxyResolver() {} 7148 virtual ~CapturingProxyResolver() {}
7149 7149
7150 virtual int GetProxyForURL(const GURL& url, 7150 virtual int GetProxyForURL(const GURL& url,
7151 ProxyInfo* results, 7151 ProxyInfo* results,
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
7186 const std::vector<GURL>& resolved() const { return resolved_; } 7186 const std::vector<GURL>& resolved() const { return resolved_; }
7187 7187
7188 private: 7188 private:
7189 std::vector<GURL> resolved_; 7189 std::vector<GURL> resolved_;
7190 7190
7191 DISALLOW_COPY_AND_ASSIGN(CapturingProxyResolver); 7191 DISALLOW_COPY_AND_ASSIGN(CapturingProxyResolver);
7192 }; 7192 };
7193 7193
7194 TEST_F(HttpNetworkTransactionTest, UseAlternateProtocolForTunneledNpnSpdy) { 7194 TEST_F(HttpNetworkTransactionTest, UseAlternateProtocolForTunneledNpnSpdy) {
7195 HttpStreamFactory::set_use_alternate_protocols(true); 7195 HttpStreamFactory::set_use_alternate_protocols(true);
7196 HttpStreamFactory::set_next_protos(SpdyNextProtos()); 7196 HttpStreamFactory::SetNextProtos(SpdyNextProtos());
7197 7197
7198 ProxyConfig proxy_config; 7198 ProxyConfig proxy_config;
7199 proxy_config.set_auto_detect(true); 7199 proxy_config.set_auto_detect(true);
7200 proxy_config.set_pac_url(GURL("http://fooproxyurl")); 7200 proxy_config.set_pac_url(GURL("http://fooproxyurl"));
7201 7201
7202 CapturingProxyResolver* capturing_proxy_resolver = 7202 CapturingProxyResolver* capturing_proxy_resolver =
7203 new CapturingProxyResolver(); 7203 new CapturingProxyResolver();
7204 SessionDependencies session_deps(new ProxyService( 7204 SessionDependencies session_deps(new ProxyService(
7205 new ProxyConfigServiceFixed(proxy_config), capturing_proxy_resolver, 7205 new ProxyConfigServiceFixed(proxy_config), capturing_proxy_resolver,
7206 NULL)); 7206 NULL));
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
7292 EXPECT_TRUE(response->was_npn_negotiated); 7292 EXPECT_TRUE(response->was_npn_negotiated);
7293 7293
7294 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); 7294 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data));
7295 EXPECT_EQ("hello!", response_data); 7295 EXPECT_EQ("hello!", response_data);
7296 ASSERT_EQ(3u, capturing_proxy_resolver->resolved().size()); 7296 ASSERT_EQ(3u, capturing_proxy_resolver->resolved().size());
7297 EXPECT_EQ("http://www.google.com/", 7297 EXPECT_EQ("http://www.google.com/",
7298 capturing_proxy_resolver->resolved()[0].spec()); 7298 capturing_proxy_resolver->resolved()[0].spec());
7299 EXPECT_EQ("https://www.google.com/", 7299 EXPECT_EQ("https://www.google.com/",
7300 capturing_proxy_resolver->resolved()[1].spec()); 7300 capturing_proxy_resolver->resolved()[1].spec());
7301 7301
7302 HttpStreamFactory::set_next_protos(std::vector<std::string>()); 7302 HttpStreamFactory::SetNextProtos(std::vector<std::string>());
7303 HttpStreamFactory::set_use_alternate_protocols(false); 7303 HttpStreamFactory::set_use_alternate_protocols(false);
7304 } 7304 }
7305 7305
7306 TEST_F(HttpNetworkTransactionTest, 7306 TEST_F(HttpNetworkTransactionTest,
7307 UseAlternateProtocolForNpnSpdyWithExistingSpdySession) { 7307 UseAlternateProtocolForNpnSpdyWithExistingSpdySession) {
7308 HttpStreamFactory::set_use_alternate_protocols(true); 7308 HttpStreamFactory::set_use_alternate_protocols(true);
7309 HttpStreamFactory::set_next_protos(SpdyNextProtos()); 7309 HttpStreamFactory::SetNextProtos(SpdyNextProtos());
7310 SessionDependencies session_deps; 7310 SessionDependencies session_deps;
7311 7311
7312 HttpRequestInfo request; 7312 HttpRequestInfo request;
7313 request.method = "GET"; 7313 request.method = "GET";
7314 request.url = GURL("http://www.google.com/"); 7314 request.url = GURL("http://www.google.com/");
7315 request.load_flags = 0; 7315 request.load_flags = 0;
7316 7316
7317 MockRead data_reads[] = { 7317 MockRead data_reads[] = {
7318 MockRead("HTTP/1.1 200 OK\r\n"), 7318 MockRead("HTTP/1.1 200 OK\r\n"),
7319 MockRead(kAlternateProtocolHttpHeader), 7319 MockRead(kAlternateProtocolHttpHeader),
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
7410 response = trans->GetResponseInfo(); 7410 response = trans->GetResponseInfo();
7411 ASSERT_TRUE(response != NULL); 7411 ASSERT_TRUE(response != NULL);
7412 ASSERT_TRUE(response->headers != NULL); 7412 ASSERT_TRUE(response->headers != NULL);
7413 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 7413 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
7414 EXPECT_TRUE(response->was_fetched_via_spdy); 7414 EXPECT_TRUE(response->was_fetched_via_spdy);
7415 EXPECT_TRUE(response->was_npn_negotiated); 7415 EXPECT_TRUE(response->was_npn_negotiated);
7416 7416
7417 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); 7417 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data));
7418 EXPECT_EQ("hello!", response_data); 7418 EXPECT_EQ("hello!", response_data);
7419 7419
7420 HttpStreamFactory::set_next_protos(std::vector<std::string>()); 7420 HttpStreamFactory::SetNextProtos(std::vector<std::string>());
7421 HttpStreamFactory::set_use_alternate_protocols(false); 7421 HttpStreamFactory::set_use_alternate_protocols(false);
7422 } 7422 }
7423 7423
7424 // GenerateAuthToken is a mighty big test. 7424 // GenerateAuthToken is a mighty big test.
7425 // It tests all permutation of GenerateAuthToken behavior: 7425 // It tests all permutation of GenerateAuthToken behavior:
7426 // - Synchronous and Asynchronous completion. 7426 // - Synchronous and Asynchronous completion.
7427 // - OK or error on completion. 7427 // - OK or error on completion.
7428 // - Direct connection, non-authenticating proxy, and authenticating proxy. 7428 // - Direct connection, non-authenticating proxy, and authenticating proxy.
7429 // - HTTP or HTTPS backend (to include proxy tunneling). 7429 // - HTTP or HTTPS backend (to include proxy tunneling).
7430 // - Non-authenticating and authenticating backend. 7430 // - Non-authenticating and authenticating backend.
(...skipping 700 matching lines...) Expand 10 before | Expand all | Expand 10 after
8131 8131
8132 std::string response_data; 8132 std::string response_data;
8133 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); 8133 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data));
8134 EXPECT_EQ("ok.", response_data); 8134 EXPECT_EQ("ok.", response_data);
8135 } 8135 }
8136 8136
8137 // This tests the case that a request is issued via http instead of spdy after 8137 // This tests the case that a request is issued via http instead of spdy after
8138 // npn is negotiated. 8138 // npn is negotiated.
8139 TEST_F(HttpNetworkTransactionTest, NpnWithHttpOverSSL) { 8139 TEST_F(HttpNetworkTransactionTest, NpnWithHttpOverSSL) {
8140 HttpStreamFactory::set_use_alternate_protocols(true); 8140 HttpStreamFactory::set_use_alternate_protocols(true);
8141 HttpStreamFactory::set_next_protos( 8141 HttpStreamFactory::SetNextProtos(
8142 MakeNextProtos("http/1.1", "http1.1", NULL)); 8142 MakeNextProtos("http/1.1", "http1.1", NULL));
8143 SessionDependencies session_deps; 8143 SessionDependencies session_deps;
8144 HttpRequestInfo request; 8144 HttpRequestInfo request;
8145 request.method = "GET"; 8145 request.method = "GET";
8146 request.url = GURL("https://www.google.com/"); 8146 request.url = GURL("https://www.google.com/");
8147 request.load_flags = 0; 8147 request.load_flags = 0;
8148 8148
8149 MockWrite data_writes[] = { 8149 MockWrite data_writes[] = {
8150 MockWrite("GET / HTTP/1.1\r\n" 8150 MockWrite("GET / HTTP/1.1\r\n"
8151 "Host: www.google.com\r\n" 8151 "Host: www.google.com\r\n"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
8185 ASSERT_TRUE(response->headers != NULL); 8185 ASSERT_TRUE(response->headers != NULL);
8186 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 8186 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
8187 8187
8188 std::string response_data; 8188 std::string response_data;
8189 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); 8189 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data));
8190 EXPECT_EQ("hello world", response_data); 8190 EXPECT_EQ("hello world", response_data);
8191 8191
8192 EXPECT_FALSE(response->was_fetched_via_spdy); 8192 EXPECT_FALSE(response->was_fetched_via_spdy);
8193 EXPECT_TRUE(response->was_npn_negotiated); 8193 EXPECT_TRUE(response->was_npn_negotiated);
8194 8194
8195 HttpStreamFactory::set_next_protos(std::vector<std::string>()); 8195 HttpStreamFactory::SetNextProtos(std::vector<std::string>());
8196 HttpStreamFactory::set_use_alternate_protocols(false); 8196 HttpStreamFactory::set_use_alternate_protocols(false);
8197 } 8197 }
8198 8198
8199 TEST_F(HttpNetworkTransactionTest, SpdyPostNPNServerHangup) { 8199 TEST_F(HttpNetworkTransactionTest, SpdyPostNPNServerHangup) {
8200 // Simulate the SSL handshake completing with an NPN negotiation 8200 // Simulate the SSL handshake completing with an NPN negotiation
8201 // followed by an immediate server closing of the socket. 8201 // followed by an immediate server closing of the socket.
8202 // Fix crash: http://crbug.com/46369 8202 // Fix crash: http://crbug.com/46369
8203 HttpStreamFactory::set_use_alternate_protocols(true); 8203 HttpStreamFactory::set_use_alternate_protocols(true);
8204 HttpStreamFactory::set_next_protos(SpdyNextProtos()); 8204 HttpStreamFactory::SetNextProtos(SpdyNextProtos());
8205 SessionDependencies session_deps; 8205 SessionDependencies session_deps;
8206 8206
8207 HttpRequestInfo request; 8207 HttpRequestInfo request;
8208 request.method = "GET"; 8208 request.method = "GET";
8209 request.url = GURL("https://www.google.com/"); 8209 request.url = GURL("https://www.google.com/");
8210 request.load_flags = 0; 8210 request.load_flags = 0;
8211 8211
8212 SSLSocketDataProvider ssl(ASYNC, OK); 8212 SSLSocketDataProvider ssl(ASYNC, OK);
8213 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); 8213 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21);
8214 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 8214 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
(...skipping 14 matching lines...) Expand all
8229 8229
8230 TestCompletionCallback callback; 8230 TestCompletionCallback callback;
8231 8231
8232 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 8232 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
8233 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); 8233 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session));
8234 8234
8235 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 8235 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
8236 EXPECT_EQ(ERR_IO_PENDING, rv); 8236 EXPECT_EQ(ERR_IO_PENDING, rv);
8237 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult()); 8237 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult());
8238 8238
8239 HttpStreamFactory::set_next_protos(std::vector<std::string>()); 8239 HttpStreamFactory::SetNextProtos(std::vector<std::string>());
8240 HttpStreamFactory::set_use_alternate_protocols(false); 8240 HttpStreamFactory::set_use_alternate_protocols(false);
8241 } 8241 }
8242 8242
8243 TEST_F(HttpNetworkTransactionTest, SpdyAlternateProtocolThroughProxy) { 8243 TEST_F(HttpNetworkTransactionTest, SpdyAlternateProtocolThroughProxy) {
8244 // This test ensures that the URL passed into the proxy is upgraded 8244 // This test ensures that the URL passed into the proxy is upgraded
8245 // to https when doing an Alternate Protocol upgrade. 8245 // to https when doing an Alternate Protocol upgrade.
8246 HttpStreamFactory::set_use_alternate_protocols(true); 8246 HttpStreamFactory::set_use_alternate_protocols(true);
8247 HttpStreamFactory::set_next_protos( 8247 HttpStreamFactory::SetNextProtos(
8248 MakeNextProtos( 8248 MakeNextProtos(
8249 "http/1.1", "http1.1", "spdy/2.1", "spdy/2", "spdy", NULL)); 8249 "http/1.1", "http1.1", "spdy/2.1", "spdy/2", "spdy", NULL));
8250 8250
8251 SessionDependencies session_deps(ProxyService::CreateFixed("myproxy:70")); 8251 SessionDependencies session_deps(ProxyService::CreateFixed("myproxy:70"));
8252 HttpAuthHandlerMock::Factory* auth_factory = 8252 HttpAuthHandlerMock::Factory* auth_factory =
8253 new HttpAuthHandlerMock::Factory(); 8253 new HttpAuthHandlerMock::Factory();
8254 HttpAuthHandlerMock* auth_handler = new HttpAuthHandlerMock(); 8254 HttpAuthHandlerMock* auth_handler = new HttpAuthHandlerMock();
8255 auth_factory->AddMockHandler(auth_handler, HttpAuth::AUTH_PROXY); 8255 auth_factory->AddMockHandler(auth_handler, HttpAuth::AUTH_PROXY);
8256 auth_factory->set_do_init_from_challenge(true); 8256 auth_factory->set_do_init_from_challenge(true);
8257 session_deps.http_auth_handler_factory.reset(auth_factory); 8257 session_deps.http_auth_handler_factory.reset(auth_factory);
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
8382 AuthCredentials(kFoo, kBar), callback_3.callback()); 8382 AuthCredentials(kFoo, kBar), callback_3.callback());
8383 EXPECT_EQ(ERR_IO_PENDING, rv); 8383 EXPECT_EQ(ERR_IO_PENDING, rv);
8384 EXPECT_EQ(OK, callback_3.WaitForResult()); 8384 EXPECT_EQ(OK, callback_3.WaitForResult());
8385 8385
8386 // After all that work, these two lines (or actually, just the scheme) are 8386 // After all that work, these two lines (or actually, just the scheme) are
8387 // what this test is all about. Make sure it happens correctly. 8387 // what this test is all about. Make sure it happens correctly.
8388 const GURL& request_url = auth_handler->request_url(); 8388 const GURL& request_url = auth_handler->request_url();
8389 EXPECT_EQ("https", request_url.scheme()); 8389 EXPECT_EQ("https", request_url.scheme());
8390 EXPECT_EQ("www.google.com", request_url.host()); 8390 EXPECT_EQ("www.google.com", request_url.host());
8391 8391
8392 HttpStreamFactory::set_next_protos(std::vector<std::string>()); 8392 HttpStreamFactory::SetNextProtos(std::vector<std::string>());
8393 HttpStreamFactory::set_use_alternate_protocols(false); 8393 HttpStreamFactory::set_use_alternate_protocols(false);
8394 } 8394 }
8395 8395
8396 // Test that if we cancel the transaction as the connection is completing, that 8396 // Test that if we cancel the transaction as the connection is completing, that
8397 // everything tears down correctly. 8397 // everything tears down correctly.
8398 TEST_F(HttpNetworkTransactionTest, SimpleCancel) { 8398 TEST_F(HttpNetworkTransactionTest, SimpleCancel) {
8399 // Setup everything about the connection to complete synchronously, so that 8399 // Setup everything about the connection to complete synchronously, so that
8400 // after calling HttpNetworkTransaction::Start, the only thing we're waiting 8400 // after calling HttpNetworkTransaction::Start, the only thing we're waiting
8401 // for is the callback from the HttpStreamRequest. 8401 // for is the callback from the HttpStreamRequest.
8402 // Then cancel the transaction. 8402 // Then cancel the transaction.
(...skipping 625 matching lines...) Expand 10 before | Expand all | Expand 10 after
9028 // MockClientSocket::GetPeerAddress but that returns 192.0.2.33 whereas 9028 // MockClientSocket::GetPeerAddress but that returns 192.0.2.33 whereas
9029 // MockHostResolver returns 127.0.0.1 (MockHostResolverBase::Reset). So we use 9029 // MockHostResolver returns 127.0.0.1 (MockHostResolverBase::Reset). So we use
9030 // the first address (127.0.0.1) returned by MockHostResolver as an alias for 9030 // the first address (127.0.0.1) returned by MockHostResolver as an alias for
9031 // the |pair|. 9031 // the |pair|.
9032 const addrinfo* address = addresses.head(); 9032 const addrinfo* address = addresses.head();
9033 pool_peer->AddAlias(address, pair); 9033 pool_peer->AddAlias(address, pair);
9034 } 9034 }
9035 9035
9036 TEST_F(HttpNetworkTransactionTest, UseIPConnectionPooling) { 9036 TEST_F(HttpNetworkTransactionTest, UseIPConnectionPooling) {
9037 HttpStreamFactory::set_use_alternate_protocols(true); 9037 HttpStreamFactory::set_use_alternate_protocols(true);
9038 HttpStreamFactory::set_next_protos(SpdyNextProtos()); 9038 HttpStreamFactory::SetNextProtos(SpdyNextProtos());
9039 9039
9040 // Set up a special HttpNetworkSession with a MockCachingHostResolver. 9040 // Set up a special HttpNetworkSession with a MockCachingHostResolver.
9041 SessionDependencies session_deps; 9041 SessionDependencies session_deps;
9042 MockCachingHostResolver host_resolver; 9042 MockCachingHostResolver host_resolver;
9043 net::HttpNetworkSession::Params params; 9043 net::HttpNetworkSession::Params params;
9044 params.client_socket_factory = &session_deps.socket_factory; 9044 params.client_socket_factory = &session_deps.socket_factory;
9045 params.host_resolver = &host_resolver; 9045 params.host_resolver = &host_resolver;
9046 params.cert_verifier = session_deps.cert_verifier.get(); 9046 params.cert_verifier = session_deps.cert_verifier.get();
9047 params.proxy_service = session_deps.proxy_service.get(); 9047 params.proxy_service = session_deps.proxy_service.get();
9048 params.ssl_config_service = session_deps.ssl_config_service; 9048 params.ssl_config_service = session_deps.ssl_config_service;
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
9135 9135
9136 response = trans2.GetResponseInfo(); 9136 response = trans2.GetResponseInfo();
9137 ASSERT_TRUE(response != NULL); 9137 ASSERT_TRUE(response != NULL);
9138 ASSERT_TRUE(response->headers != NULL); 9138 ASSERT_TRUE(response->headers != NULL);
9139 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 9139 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
9140 EXPECT_TRUE(response->was_fetched_via_spdy); 9140 EXPECT_TRUE(response->was_fetched_via_spdy);
9141 EXPECT_TRUE(response->was_npn_negotiated); 9141 EXPECT_TRUE(response->was_npn_negotiated);
9142 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); 9142 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data));
9143 EXPECT_EQ("hello!", response_data); 9143 EXPECT_EQ("hello!", response_data);
9144 9144
9145 HttpStreamFactory::set_next_protos(std::vector<std::string>()); 9145 HttpStreamFactory::SetNextProtos(std::vector<std::string>());
9146 HttpStreamFactory::set_use_alternate_protocols(false); 9146 HttpStreamFactory::set_use_alternate_protocols(false);
9147 } 9147 }
9148 9148
9149 class OneTimeCachingHostResolver : public net::HostResolver { 9149 class OneTimeCachingHostResolver : public net::HostResolver {
9150 public: 9150 public:
9151 explicit OneTimeCachingHostResolver(const HostPortPair& host_port) 9151 explicit OneTimeCachingHostResolver(const HostPortPair& host_port)
9152 : host_port_(host_port) {} 9152 : host_port_(host_port) {}
9153 virtual ~OneTimeCachingHostResolver() {} 9153 virtual ~OneTimeCachingHostResolver() {}
9154 9154
9155 RuleBasedHostResolverProc* rules() { return host_resolver_.rules(); } 9155 RuleBasedHostResolverProc* rules() { return host_resolver_.rules(); }
(...skipping 26 matching lines...) Expand all
9182 } 9182 }
9183 9183
9184 private: 9184 private:
9185 MockCachingHostResolver host_resolver_; 9185 MockCachingHostResolver host_resolver_;
9186 const HostPortPair host_port_; 9186 const HostPortPair host_port_;
9187 }; 9187 };
9188 9188
9189 TEST_F(HttpNetworkTransactionTest, 9189 TEST_F(HttpNetworkTransactionTest,
9190 UseIPConnectionPoolingWithHostCacheExpiration) { 9190 UseIPConnectionPoolingWithHostCacheExpiration) {
9191 HttpStreamFactory::set_use_alternate_protocols(true); 9191 HttpStreamFactory::set_use_alternate_protocols(true);
9192 HttpStreamFactory::set_next_protos(SpdyNextProtos()); 9192 HttpStreamFactory::SetNextProtos(SpdyNextProtos());
9193 9193
9194 // Set up a special HttpNetworkSession with a OneTimeCachingHostResolver. 9194 // Set up a special HttpNetworkSession with a OneTimeCachingHostResolver.
9195 SessionDependencies session_deps; 9195 SessionDependencies session_deps;
9196 OneTimeCachingHostResolver host_resolver(HostPortPair("www.gmail.com", 443)); 9196 OneTimeCachingHostResolver host_resolver(HostPortPair("www.gmail.com", 443));
9197 net::HttpNetworkSession::Params params; 9197 net::HttpNetworkSession::Params params;
9198 params.client_socket_factory = &session_deps.socket_factory; 9198 params.client_socket_factory = &session_deps.socket_factory;
9199 params.host_resolver = &host_resolver; 9199 params.host_resolver = &host_resolver;
9200 params.cert_verifier = session_deps.cert_verifier.get(); 9200 params.cert_verifier = session_deps.cert_verifier.get();
9201 params.proxy_service = session_deps.proxy_service.get(); 9201 params.proxy_service = session_deps.proxy_service.get();
9202 params.ssl_config_service = session_deps.ssl_config_service; 9202 params.ssl_config_service = session_deps.ssl_config_service;
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
9288 9288
9289 response = trans2.GetResponseInfo(); 9289 response = trans2.GetResponseInfo();
9290 ASSERT_TRUE(response != NULL); 9290 ASSERT_TRUE(response != NULL);
9291 ASSERT_TRUE(response->headers != NULL); 9291 ASSERT_TRUE(response->headers != NULL);
9292 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 9292 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
9293 EXPECT_TRUE(response->was_fetched_via_spdy); 9293 EXPECT_TRUE(response->was_fetched_via_spdy);
9294 EXPECT_TRUE(response->was_npn_negotiated); 9294 EXPECT_TRUE(response->was_npn_negotiated);
9295 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); 9295 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data));
9296 EXPECT_EQ("hello!", response_data); 9296 EXPECT_EQ("hello!", response_data);
9297 9297
9298 HttpStreamFactory::set_next_protos(std::vector<std::string>()); 9298 HttpStreamFactory::SetNextProtos(std::vector<std::string>());
9299 HttpStreamFactory::set_use_alternate_protocols(false); 9299 HttpStreamFactory::set_use_alternate_protocols(false);
9300 } 9300 }
9301 9301
9302 TEST_F(HttpNetworkTransactionTest, ReadPipelineEvictionFallback) { 9302 TEST_F(HttpNetworkTransactionTest, ReadPipelineEvictionFallback) {
9303 MockRead data_reads1[] = { 9303 MockRead data_reads1[] = {
9304 MockRead(SYNCHRONOUS, ERR_PIPELINE_EVICTION), 9304 MockRead(SYNCHRONOUS, ERR_PIPELINE_EVICTION),
9305 }; 9305 };
9306 MockRead data_reads2[] = { 9306 MockRead data_reads2[] = {
9307 MockRead("HTTP/1.0 200 OK\r\n\r\n"), 9307 MockRead("HTTP/1.0 200 OK\r\n\r\n"),
9308 MockRead("hello world"), 9308 MockRead("hello world"),
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
9340 StaticSocketDataProvider* data[] = { &data1, &data2 }; 9340 StaticSocketDataProvider* data[] = { &data1, &data2 };
9341 9341
9342 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); 9342 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data));
9343 9343
9344 EXPECT_EQ(OK, out.rv); 9344 EXPECT_EQ(OK, out.rv);
9345 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); 9345 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line);
9346 EXPECT_EQ("hello world", out.response_data); 9346 EXPECT_EQ("hello world", out.response_data);
9347 } 9347 }
9348 9348
9349 } // namespace net 9349 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_network_layer.cc ('k') | net/http/http_stream_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698