Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 8684 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8695 | 8695 |
| 8696 // Now that the new handshake has failed, ensure that the client | 8696 // Now that the new handshake has failed, ensure that the client |
| 8697 // certificate was removed from the client auth cache. | 8697 // certificate was removed from the client auth cache. |
| 8698 ASSERT_FALSE(session->ssl_client_auth_cache()->Lookup("proxy:70", | 8698 ASSERT_FALSE(session->ssl_client_auth_cache()->Lookup("proxy:70", |
| 8699 &client_cert)); | 8699 &client_cert)); |
| 8700 ASSERT_FALSE(session->ssl_client_auth_cache()->Lookup("www.example.com:443", | 8700 ASSERT_FALSE(session->ssl_client_auth_cache()->Lookup("www.example.com:443", |
| 8701 &client_cert)); | 8701 &client_cert)); |
| 8702 } | 8702 } |
| 8703 } | 8703 } |
| 8704 | 8704 |
| 8705 void IPPoolingPreloadHostCache(MockCachingHostResolver* host_resolver, | |
| 8706 SpdySessionPoolPeer* pool_peer) { | |
| 8707 const int kTestPort = 443; | |
| 8708 struct TestHosts { | |
| 8709 std::string name; | |
| 8710 std::string iplist; | |
| 8711 } test_hosts[] = { | |
| 8712 { "www.google.com", "127.0.0.1"}, | |
| 8713 }; | |
|
wtc
2011/07/19 22:12:36
The need to preload this entry, with the magic hos
ramant (doing other things)
2011/07/25 23:36:06
Done.
| |
| 8714 | |
| 8715 // Preload cache entries into HostCache. | |
| 8716 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_hosts); i++) { | |
| 8717 host_resolver->rules()->AddIPLiteralRule(test_hosts[i].name, | |
| 8718 test_hosts[i].iplist, ""); | |
|
wtc
2011/07/19 22:12:36
Align this line with the argument on the previous
ramant (doing other things)
2011/07/25 23:36:06
Done.
| |
| 8719 | |
| 8720 AddressList addresses; | |
| 8721 // This test requires that the HostResolver cache be populated. Normal | |
|
wtc
2011/07/19 22:12:36
By "This test", which test are you referring to?
ramant (doing other things)
2011/07/25 23:36:06
Done.
| |
| 8722 // code would have done this already, but we do it manually. | |
| 8723 HostResolver::RequestInfo info(HostPortPair(test_hosts[i].name, kTestPort)); | |
| 8724 host_resolver->Resolve( | |
| 8725 info, &addresses, NULL, NULL, BoundNetLog()); | |
| 8726 | |
| 8727 // Setup a HostPortProxyPair | |
| 8728 HostPortProxyPair pair = HostPortProxyPair( | |
| 8729 HostPortPair(test_hosts[i].name, kTestPort), ProxyServer::Direct()); | |
| 8730 | |
| 8731 const addrinfo* address = addresses.head(); | |
| 8732 pool_peer->AddAlias(address, pair); | |
| 8733 } | |
| 8734 } | |
| 8735 | |
| 8705 TEST_F(HttpNetworkTransactionTest, UseIPConnectionPooling) { | 8736 TEST_F(HttpNetworkTransactionTest, UseIPConnectionPooling) { |
| 8706 HttpStreamFactory::set_use_alternate_protocols(true); | 8737 HttpStreamFactory::set_use_alternate_protocols(true); |
| 8707 HttpStreamFactory::set_next_protos(kExpectedNPNString); | 8738 HttpStreamFactory::set_next_protos(kExpectedNPNString); |
| 8708 | 8739 |
| 8709 // Set up a special HttpNetworkSession with a MockCachingHostResolver. | 8740 // Set up a special HttpNetworkSession with a MockCachingHostResolver. |
| 8710 SessionDependencies session_deps; | 8741 SessionDependencies session_deps; |
| 8711 MockCachingHostResolver host_resolver; | 8742 MockCachingHostResolver host_resolver; |
| 8712 net::HttpNetworkSession::Params params; | 8743 net::HttpNetworkSession::Params params; |
| 8713 params.client_socket_factory = &session_deps.socket_factory; | 8744 params.client_socket_factory = &session_deps.socket_factory; |
| 8714 params.host_resolver = &host_resolver; | 8745 params.host_resolver = &host_resolver; |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8773 std::string response_data; | 8804 std::string response_data; |
| 8774 ASSERT_EQ(OK, ReadTransaction(&trans1, &response_data)); | 8805 ASSERT_EQ(OK, ReadTransaction(&trans1, &response_data)); |
| 8775 EXPECT_EQ("hello!", response_data); | 8806 EXPECT_EQ("hello!", response_data); |
| 8776 | 8807 |
| 8777 // Preload www.gmail.com into HostCache. | 8808 // Preload www.gmail.com into HostCache. |
| 8778 HostPortPair host_port("www.gmail.com", 443); | 8809 HostPortPair host_port("www.gmail.com", 443); |
| 8779 HostResolver::RequestInfo resolve_info(host_port); | 8810 HostResolver::RequestInfo resolve_info(host_port); |
| 8780 AddressList ignored; | 8811 AddressList ignored; |
| 8781 host_resolver.Resolve(resolve_info, &ignored, NULL, NULL, BoundNetLog()); | 8812 host_resolver.Resolve(resolve_info, &ignored, NULL, NULL, BoundNetLog()); |
| 8782 | 8813 |
| 8814 IPPoolingPreloadHostCache(&host_resolver, &pool_peer); | |
| 8815 | |
| 8783 HttpRequestInfo request2; | 8816 HttpRequestInfo request2; |
| 8784 request2.method = "GET"; | 8817 request2.method = "GET"; |
| 8785 request2.url = GURL("https://www.gmail.com/"); | 8818 request2.url = GURL("https://www.gmail.com/"); |
| 8786 request2.load_flags = 0; | 8819 request2.load_flags = 0; |
| 8787 HttpNetworkTransaction trans2(session); | 8820 HttpNetworkTransaction trans2(session); |
| 8788 | 8821 |
| 8789 rv = trans2.Start(&request2, &callback, BoundNetLog()); | 8822 rv = trans2.Start(&request2, &callback, BoundNetLog()); |
| 8790 EXPECT_EQ(ERR_IO_PENDING, rv); | 8823 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 8791 EXPECT_EQ(OK, callback.WaitForResult()); | 8824 EXPECT_EQ(OK, callback.WaitForResult()); |
| 8792 | 8825 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8832 } | 8865 } |
| 8833 | 8866 |
| 8834 virtual void AddObserver(Observer* observer) { | 8867 virtual void AddObserver(Observer* observer) { |
| 8835 return host_resolver_.AddObserver(observer); | 8868 return host_resolver_.AddObserver(observer); |
| 8836 } | 8869 } |
| 8837 | 8870 |
| 8838 virtual void RemoveObserver(Observer* observer) { | 8871 virtual void RemoveObserver(Observer* observer) { |
| 8839 return host_resolver_.RemoveObserver(observer); | 8872 return host_resolver_.RemoveObserver(observer); |
| 8840 } | 8873 } |
| 8841 | 8874 |
| 8875 MockCachingHostResolver* GetMockHostResolver() { | |
| 8876 return &host_resolver_; | |
| 8877 } | |
| 8878 | |
| 8842 private: | 8879 private: |
| 8843 MockCachingHostResolver host_resolver_; | 8880 MockCachingHostResolver host_resolver_; |
| 8844 const HostPortPair host_port_; | 8881 const HostPortPair host_port_; |
| 8845 }; | 8882 }; |
| 8846 | 8883 |
| 8847 TEST_F(HttpNetworkTransactionTest, | 8884 TEST_F(HttpNetworkTransactionTest, |
| 8848 UseIPConnectionPoolingWithHostCacheExpiration) { | 8885 UseIPConnectionPoolingWithHostCacheExpiration) { |
| 8849 HttpStreamFactory::set_use_alternate_protocols(true); | 8886 HttpStreamFactory::set_use_alternate_protocols(true); |
| 8850 HttpStreamFactory::set_next_protos(kExpectedNPNString); | 8887 HttpStreamFactory::set_next_protos(kExpectedNPNString); |
| 8851 | 8888 |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8921 HostResolver::RequestInfo resolve_info(HostPortPair("www.gmail.com", 443)); | 8958 HostResolver::RequestInfo resolve_info(HostPortPair("www.gmail.com", 443)); |
| 8922 AddressList ignored; | 8959 AddressList ignored; |
| 8923 host_resolver.Resolve(resolve_info, &ignored, NULL, NULL, BoundNetLog()); | 8960 host_resolver.Resolve(resolve_info, &ignored, NULL, NULL, BoundNetLog()); |
| 8924 | 8961 |
| 8925 HttpRequestInfo request2; | 8962 HttpRequestInfo request2; |
| 8926 request2.method = "GET"; | 8963 request2.method = "GET"; |
| 8927 request2.url = GURL("https://www.gmail.com/"); | 8964 request2.url = GURL("https://www.gmail.com/"); |
| 8928 request2.load_flags = 0; | 8965 request2.load_flags = 0; |
| 8929 HttpNetworkTransaction trans2(session); | 8966 HttpNetworkTransaction trans2(session); |
| 8930 | 8967 |
| 8968 IPPoolingPreloadHostCache(host_resolver.GetMockHostResolver(), &pool_peer); | |
| 8969 | |
| 8931 rv = trans2.Start(&request2, &callback, BoundNetLog()); | 8970 rv = trans2.Start(&request2, &callback, BoundNetLog()); |
| 8932 EXPECT_EQ(ERR_IO_PENDING, rv); | 8971 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 8933 EXPECT_EQ(OK, callback.WaitForResult()); | 8972 EXPECT_EQ(OK, callback.WaitForResult()); |
| 8934 | 8973 |
| 8935 response = trans2.GetResponseInfo(); | 8974 response = trans2.GetResponseInfo(); |
| 8936 ASSERT_TRUE(response != NULL); | 8975 ASSERT_TRUE(response != NULL); |
| 8937 ASSERT_TRUE(response->headers != NULL); | 8976 ASSERT_TRUE(response->headers != NULL); |
| 8938 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 8977 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 8939 EXPECT_TRUE(response->was_fetched_via_spdy); | 8978 EXPECT_TRUE(response->was_fetched_via_spdy); |
| 8940 EXPECT_TRUE(response->was_npn_negotiated); | 8979 EXPECT_TRUE(response->was_npn_negotiated); |
| 8941 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); | 8980 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); |
| 8942 EXPECT_EQ("hello!", response_data); | 8981 EXPECT_EQ("hello!", response_data); |
| 8943 | 8982 |
| 8944 HttpStreamFactory::set_next_protos(""); | 8983 HttpStreamFactory::set_next_protos(""); |
| 8945 HttpStreamFactory::set_use_alternate_protocols(false); | 8984 HttpStreamFactory::set_use_alternate_protocols(false); |
| 8946 } | 8985 } |
| 8947 | 8986 |
| 8948 } // namespace net | 8987 } // namespace net |
| OLD | NEW |