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 <stdarg.h> | 8 #include <stdarg.h> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 5795 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5806 SessionDependencies session_deps; | 5806 SessionDependencies session_deps; |
5807 | 5807 |
5808 // Select a host resolver that does caching. | 5808 // Select a host resolver that does caching. |
5809 session_deps.host_resolver.reset(new MockCachingHostResolver); | 5809 session_deps.host_resolver.reset(new MockCachingHostResolver); |
5810 | 5810 |
5811 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction( | 5811 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction( |
5812 CreateSession(&session_deps))); | 5812 CreateSession(&session_deps))); |
5813 | 5813 |
5814 // Warm up the host cache so it has an entry for "www.google.com". | 5814 // Warm up the host cache so it has an entry for "www.google.com". |
5815 AddressList addrlist; | 5815 AddressList addrlist; |
5816 TestOldCompletionCallback callback; | 5816 TestCompletionCallback callback; |
| 5817 TestOldCompletionCallback old_callback; |
5817 int rv = session_deps.host_resolver->Resolve( | 5818 int rv = session_deps.host_resolver->Resolve( |
5818 HostResolver::RequestInfo(HostPortPair("www.google.com", 80)), &addrlist, | 5819 HostResolver::RequestInfo(HostPortPair("www.google.com", 80)), &addrlist, |
5819 &callback, NULL, BoundNetLog()); | 5820 callback.callback(), NULL, BoundNetLog()); |
5820 EXPECT_EQ(ERR_IO_PENDING, rv); | 5821 EXPECT_EQ(ERR_IO_PENDING, rv); |
5821 rv = callback.WaitForResult(); | 5822 rv = callback.WaitForResult(); |
5822 EXPECT_EQ(OK, rv); | 5823 EXPECT_EQ(OK, rv); |
5823 | 5824 |
5824 // Verify that it was added to host cache, by doing a subsequent async lookup | 5825 // Verify that it was added to host cache, by doing a subsequent async lookup |
5825 // and confirming it completes synchronously. | 5826 // and confirming it completes synchronously. |
5826 rv = session_deps.host_resolver->Resolve( | 5827 rv = session_deps.host_resolver->Resolve( |
5827 HostResolver::RequestInfo(HostPortPair("www.google.com", 80)), &addrlist, | 5828 HostResolver::RequestInfo(HostPortPair("www.google.com", 80)), &addrlist, |
5828 &callback, NULL, BoundNetLog()); | 5829 callback.callback(), NULL, BoundNetLog()); |
5829 ASSERT_EQ(OK, rv); | 5830 ASSERT_EQ(OK, rv); |
5830 | 5831 |
5831 // Inject a failure the next time that "www.google.com" is resolved. This way | 5832 // Inject a failure the next time that "www.google.com" is resolved. This way |
5832 // we can tell if the next lookup hit the cache, or the "network". | 5833 // we can tell if the next lookup hit the cache, or the "network". |
5833 // (cache --> success, "network" --> failure). | 5834 // (cache --> success, "network" --> failure). |
5834 session_deps.host_resolver->rules()->AddSimulatedFailure("www.google.com"); | 5835 session_deps.host_resolver->rules()->AddSimulatedFailure("www.google.com"); |
5835 | 5836 |
5836 // Connect up a mock socket which will fail with ERR_UNEXPECTED during the | 5837 // Connect up a mock socket which will fail with ERR_UNEXPECTED during the |
5837 // first read -- this won't be reached as the host resolution will fail first. | 5838 // first read -- this won't be reached as the host resolution will fail first. |
5838 MockRead data_reads[] = { MockRead(false, ERR_UNEXPECTED) }; | 5839 MockRead data_reads[] = { MockRead(false, ERR_UNEXPECTED) }; |
5839 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 5840 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
5840 session_deps.socket_factory.AddSocketDataProvider(&data); | 5841 session_deps.socket_factory.AddSocketDataProvider(&data); |
5841 | 5842 |
5842 // Run the request. | 5843 // Run the request. |
5843 rv = trans->Start(&request, &callback, BoundNetLog()); | 5844 rv = trans->Start(&request, &old_callback, BoundNetLog()); |
5844 ASSERT_EQ(ERR_IO_PENDING, rv); | 5845 ASSERT_EQ(ERR_IO_PENDING, rv); |
5845 rv = callback.WaitForResult(); | 5846 rv = old_callback.WaitForResult(); |
5846 | 5847 |
5847 // If we bypassed the cache, we would have gotten a failure while resolving | 5848 // If we bypassed the cache, we would have gotten a failure while resolving |
5848 // "www.google.com". | 5849 // "www.google.com". |
5849 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, rv); | 5850 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, rv); |
5850 } | 5851 } |
5851 | 5852 |
5852 // There are multiple load flags that should trigger the host cache bypass. | 5853 // There are multiple load flags that should trigger the host cache bypass. |
5853 // Test each in isolation: | 5854 // Test each in isolation: |
5854 TEST_F(HttpNetworkTransactionTest, BypassHostCacheOnRefresh1) { | 5855 TEST_F(HttpNetworkTransactionTest, BypassHostCacheOnRefresh1) { |
5855 BypassHostCacheOnRefreshHelper(LOAD_BYPASS_CACHE); | 5856 BypassHostCacheOnRefreshHelper(LOAD_BYPASS_CACHE); |
(...skipping 3038 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8894 host_resolver->rules()->AddIPLiteralRule(host, iplist, ""); | 8895 host_resolver->rules()->AddIPLiteralRule(host, iplist, ""); |
8895 | 8896 |
8896 // Setup a HostPortProxyPair. | 8897 // Setup a HostPortProxyPair. |
8897 HostPortPair host_port_pair(host, port); | 8898 HostPortPair host_port_pair(host, port); |
8898 HostPortProxyPair pair = HostPortProxyPair(host_port_pair, | 8899 HostPortProxyPair pair = HostPortProxyPair(host_port_pair, |
8899 ProxyServer::Direct()); | 8900 ProxyServer::Direct()); |
8900 | 8901 |
8901 // Resolve the host and port. | 8902 // Resolve the host and port. |
8902 AddressList addresses; | 8903 AddressList addresses; |
8903 HostResolver::RequestInfo info(host_port_pair); | 8904 HostResolver::RequestInfo info(host_port_pair); |
8904 TestOldCompletionCallback callback; | 8905 TestCompletionCallback callback; |
8905 int rv = host_resolver->Resolve(info, &addresses, &callback, NULL, | 8906 int rv = host_resolver->Resolve(info, &addresses, callback.callback(), NULL, |
8906 BoundNetLog()); | 8907 BoundNetLog()); |
8907 if (rv == ERR_IO_PENDING) | 8908 if (rv == ERR_IO_PENDING) |
8908 rv = callback.WaitForResult(); | 8909 rv = callback.WaitForResult(); |
8909 DCHECK_EQ(OK, rv); | 8910 DCHECK_EQ(OK, rv); |
8910 | 8911 |
8911 // Add the first address as an alias. It would have been better to call | 8912 // Add the first address as an alias. It would have been better to call |
8912 // MockClientSocket::GetPeerAddress but that returns 192.0.2.33 whereas | 8913 // MockClientSocket::GetPeerAddress but that returns 192.0.2.33 whereas |
8913 // MockHostResolver returns 127.0.0.1 (MockHostResolverBase::Reset). So we use | 8914 // MockHostResolver returns 127.0.0.1 (MockHostResolverBase::Reset). So we use |
8914 // the first address (127.0.0.1) returned by MockHostResolver as an alias for | 8915 // the first address (127.0.0.1) returned by MockHostResolver as an alias for |
8915 // the |pair|. | 8916 // the |pair|. |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8963 CreateMockRead(*host2_resp_body, 6), | 8964 CreateMockRead(*host2_resp_body, 6), |
8964 MockRead(true, 0, 7), | 8965 MockRead(true, 0, 7), |
8965 }; | 8966 }; |
8966 | 8967 |
8967 scoped_refptr<OrderedSocketData> spdy_data( | 8968 scoped_refptr<OrderedSocketData> spdy_data( |
8968 new OrderedSocketData( | 8969 new OrderedSocketData( |
8969 spdy_reads, arraysize(spdy_reads), | 8970 spdy_reads, arraysize(spdy_reads), |
8970 spdy_writes, arraysize(spdy_writes))); | 8971 spdy_writes, arraysize(spdy_writes))); |
8971 session_deps.socket_factory.AddSocketDataProvider(spdy_data); | 8972 session_deps.socket_factory.AddSocketDataProvider(spdy_data); |
8972 | 8973 |
8973 TestOldCompletionCallback callback; | 8974 TestCompletionCallback callback; |
| 8975 TestOldCompletionCallback old_callback; |
8974 HttpRequestInfo request1; | 8976 HttpRequestInfo request1; |
8975 request1.method = "GET"; | 8977 request1.method = "GET"; |
8976 request1.url = GURL("https://www.google.com/"); | 8978 request1.url = GURL("https://www.google.com/"); |
8977 request1.load_flags = 0; | 8979 request1.load_flags = 0; |
8978 HttpNetworkTransaction trans1(session); | 8980 HttpNetworkTransaction trans1(session); |
8979 | 8981 |
8980 int rv = trans1.Start(&request1, &callback, BoundNetLog()); | 8982 int rv = trans1.Start(&request1, &old_callback, BoundNetLog()); |
8981 EXPECT_EQ(ERR_IO_PENDING, rv); | 8983 EXPECT_EQ(ERR_IO_PENDING, rv); |
8982 EXPECT_EQ(OK, callback.WaitForResult()); | 8984 EXPECT_EQ(OK, old_callback.WaitForResult()); |
8983 | 8985 |
8984 const HttpResponseInfo* response = trans1.GetResponseInfo(); | 8986 const HttpResponseInfo* response = trans1.GetResponseInfo(); |
8985 ASSERT_TRUE(response != NULL); | 8987 ASSERT_TRUE(response != NULL); |
8986 ASSERT_TRUE(response->headers != NULL); | 8988 ASSERT_TRUE(response->headers != NULL); |
8987 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 8989 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
8988 | 8990 |
8989 std::string response_data; | 8991 std::string response_data; |
8990 ASSERT_EQ(OK, ReadTransaction(&trans1, &response_data)); | 8992 ASSERT_EQ(OK, ReadTransaction(&trans1, &response_data)); |
8991 EXPECT_EQ("hello!", response_data); | 8993 EXPECT_EQ("hello!", response_data); |
8992 | 8994 |
8993 // Preload www.gmail.com into HostCache. | 8995 // Preload www.gmail.com into HostCache. |
8994 HostPortPair host_port("www.gmail.com", 443); | 8996 HostPortPair host_port("www.gmail.com", 443); |
8995 HostResolver::RequestInfo resolve_info(host_port); | 8997 HostResolver::RequestInfo resolve_info(host_port); |
8996 AddressList ignored; | 8998 AddressList ignored; |
8997 rv = host_resolver.Resolve(resolve_info, &ignored, &callback, NULL, | 8999 rv = host_resolver.Resolve(resolve_info, &ignored, callback.callback(), NULL, |
8998 BoundNetLog()); | 9000 BoundNetLog()); |
8999 EXPECT_EQ(ERR_IO_PENDING, rv); | 9001 EXPECT_EQ(ERR_IO_PENDING, rv); |
9000 rv = callback.WaitForResult(); | 9002 rv = callback.WaitForResult(); |
9001 EXPECT_EQ(OK, rv); | 9003 EXPECT_EQ(OK, rv); |
9002 | 9004 |
9003 // MockHostResolver returns 127.0.0.1, port 443 for https://www.google.com/ | 9005 // MockHostResolver returns 127.0.0.1, port 443 for https://www.google.com/ |
9004 // and https://www.gmail.com/. Add 127.0.0.1 as alias for host_port_pair: | 9006 // and https://www.gmail.com/. Add 127.0.0.1 as alias for host_port_pair: |
9005 // (www.google.com, 443). | 9007 // (www.google.com, 443). |
9006 IPPoolingAddAlias(&host_resolver, &pool_peer, "www.google.com", 443, | 9008 IPPoolingAddAlias(&host_resolver, &pool_peer, "www.google.com", 443, |
9007 "127.0.0.1"); | 9009 "127.0.0.1"); |
9008 | 9010 |
9009 HttpRequestInfo request2; | 9011 HttpRequestInfo request2; |
9010 request2.method = "GET"; | 9012 request2.method = "GET"; |
9011 request2.url = GURL("https://www.gmail.com/"); | 9013 request2.url = GURL("https://www.gmail.com/"); |
9012 request2.load_flags = 0; | 9014 request2.load_flags = 0; |
9013 HttpNetworkTransaction trans2(session); | 9015 HttpNetworkTransaction trans2(session); |
9014 | 9016 |
9015 rv = trans2.Start(&request2, &callback, BoundNetLog()); | 9017 rv = trans2.Start(&request2, &old_callback, BoundNetLog()); |
9016 EXPECT_EQ(ERR_IO_PENDING, rv); | 9018 EXPECT_EQ(ERR_IO_PENDING, rv); |
9017 EXPECT_EQ(OK, callback.WaitForResult()); | 9019 EXPECT_EQ(OK, old_callback.WaitForResult()); |
9018 | 9020 |
9019 response = trans2.GetResponseInfo(); | 9021 response = trans2.GetResponseInfo(); |
9020 ASSERT_TRUE(response != NULL); | 9022 ASSERT_TRUE(response != NULL); |
9021 ASSERT_TRUE(response->headers != NULL); | 9023 ASSERT_TRUE(response->headers != NULL); |
9022 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 9024 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
9023 EXPECT_TRUE(response->was_fetched_via_spdy); | 9025 EXPECT_TRUE(response->was_fetched_via_spdy); |
9024 EXPECT_TRUE(response->was_npn_negotiated); | 9026 EXPECT_TRUE(response->was_npn_negotiated); |
9025 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); | 9027 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); |
9026 EXPECT_EQ("hello!", response_data); | 9028 EXPECT_EQ("hello!", response_data); |
9027 | 9029 |
9028 HttpStreamFactory::set_next_protos(std::vector<std::string>()); | 9030 HttpStreamFactory::set_next_protos(std::vector<std::string>()); |
9029 HttpStreamFactory::set_use_alternate_protocols(false); | 9031 HttpStreamFactory::set_use_alternate_protocols(false); |
9030 } | 9032 } |
9031 | 9033 |
9032 class OneTimeCachingHostResolver : public net::HostResolver { | 9034 class OneTimeCachingHostResolver : public net::HostResolver { |
9033 public: | 9035 public: |
9034 explicit OneTimeCachingHostResolver(const HostPortPair& host_port) | 9036 explicit OneTimeCachingHostResolver(const HostPortPair& host_port) |
9035 : host_port_(host_port) {} | 9037 : host_port_(host_port) {} |
9036 virtual ~OneTimeCachingHostResolver() {} | 9038 virtual ~OneTimeCachingHostResolver() {} |
9037 | 9039 |
9038 RuleBasedHostResolverProc* rules() { return host_resolver_.rules(); } | 9040 RuleBasedHostResolverProc* rules() { return host_resolver_.rules(); } |
9039 | 9041 |
9040 // HostResolver methods: | 9042 // HostResolver methods: |
9041 virtual int Resolve(const RequestInfo& info, | 9043 virtual int Resolve(const RequestInfo& info, |
9042 AddressList* addresses, | 9044 AddressList* addresses, |
9043 OldCompletionCallback* callback, | 9045 const CompletionCallback& callback, |
9044 RequestHandle* out_req, | 9046 RequestHandle* out_req, |
9045 const BoundNetLog& net_log) OVERRIDE { | 9047 const BoundNetLog& net_log) OVERRIDE { |
9046 return host_resolver_.Resolve( | 9048 return host_resolver_.Resolve( |
9047 info, addresses, callback, out_req, net_log); | 9049 info, addresses, callback, out_req, net_log); |
9048 } | 9050 } |
9049 | 9051 |
9050 virtual int ResolveFromCache(const RequestInfo& info, | 9052 virtual int ResolveFromCache(const RequestInfo& info, |
9051 AddressList* addresses, | 9053 AddressList* addresses, |
9052 const BoundNetLog& net_log) OVERRIDE { | 9054 const BoundNetLog& net_log) OVERRIDE { |
9053 int rv = host_resolver_.ResolveFromCache(info, addresses, net_log); | 9055 int rv = host_resolver_.ResolveFromCache(info, addresses, net_log); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9116 CreateMockRead(*host2_resp_body, 6), | 9118 CreateMockRead(*host2_resp_body, 6), |
9117 MockRead(true, 0, 7), | 9119 MockRead(true, 0, 7), |
9118 }; | 9120 }; |
9119 | 9121 |
9120 scoped_refptr<OrderedSocketData> spdy_data( | 9122 scoped_refptr<OrderedSocketData> spdy_data( |
9121 new OrderedSocketData( | 9123 new OrderedSocketData( |
9122 spdy_reads, arraysize(spdy_reads), | 9124 spdy_reads, arraysize(spdy_reads), |
9123 spdy_writes, arraysize(spdy_writes))); | 9125 spdy_writes, arraysize(spdy_writes))); |
9124 session_deps.socket_factory.AddSocketDataProvider(spdy_data); | 9126 session_deps.socket_factory.AddSocketDataProvider(spdy_data); |
9125 | 9127 |
9126 TestOldCompletionCallback callback; | 9128 TestCompletionCallback callback; |
9127 HttpRequestInfo request1; | 9129 HttpRequestInfo request1; |
9128 request1.method = "GET"; | 9130 request1.method = "GET"; |
9129 request1.url = GURL("https://www.google.com/"); | 9131 request1.url = GURL("https://www.google.com/"); |
9130 request1.load_flags = 0; | 9132 request1.load_flags = 0; |
9131 HttpNetworkTransaction trans1(session); | 9133 HttpNetworkTransaction trans1(session); |
9132 | 9134 |
9133 int rv = trans1.Start(&request1, &callback, BoundNetLog()); | 9135 TestOldCompletionCallback old_callback; |
| 9136 int rv = trans1.Start(&request1, &old_callback, BoundNetLog()); |
9134 EXPECT_EQ(ERR_IO_PENDING, rv); | 9137 EXPECT_EQ(ERR_IO_PENDING, rv); |
9135 EXPECT_EQ(OK, callback.WaitForResult()); | 9138 EXPECT_EQ(OK, old_callback.WaitForResult()); |
9136 | 9139 |
9137 const HttpResponseInfo* response = trans1.GetResponseInfo(); | 9140 const HttpResponseInfo* response = trans1.GetResponseInfo(); |
9138 ASSERT_TRUE(response != NULL); | 9141 ASSERT_TRUE(response != NULL); |
9139 ASSERT_TRUE(response->headers != NULL); | 9142 ASSERT_TRUE(response->headers != NULL); |
9140 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 9143 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
9141 | 9144 |
9142 std::string response_data; | 9145 std::string response_data; |
9143 ASSERT_EQ(OK, ReadTransaction(&trans1, &response_data)); | 9146 ASSERT_EQ(OK, ReadTransaction(&trans1, &response_data)); |
9144 EXPECT_EQ("hello!", response_data); | 9147 EXPECT_EQ("hello!", response_data); |
9145 | 9148 |
9146 // Preload cache entries into HostCache. | 9149 // Preload cache entries into HostCache. |
9147 HostResolver::RequestInfo resolve_info(HostPortPair("www.gmail.com", 443)); | 9150 HostResolver::RequestInfo resolve_info(HostPortPair("www.gmail.com", 443)); |
9148 AddressList ignored; | 9151 AddressList ignored; |
9149 rv = host_resolver.Resolve(resolve_info, &ignored, &callback, NULL, | 9152 rv = host_resolver.Resolve(resolve_info, &ignored, callback.callback(), NULL, |
9150 BoundNetLog()); | 9153 BoundNetLog()); |
9151 EXPECT_EQ(ERR_IO_PENDING, rv); | 9154 EXPECT_EQ(ERR_IO_PENDING, rv); |
9152 rv = callback.WaitForResult(); | 9155 rv = callback.WaitForResult(); |
9153 EXPECT_EQ(OK, rv); | 9156 EXPECT_EQ(OK, rv); |
9154 | 9157 |
9155 HttpRequestInfo request2; | 9158 HttpRequestInfo request2; |
9156 request2.method = "GET"; | 9159 request2.method = "GET"; |
9157 request2.url = GURL("https://www.gmail.com/"); | 9160 request2.url = GURL("https://www.gmail.com/"); |
9158 request2.load_flags = 0; | 9161 request2.load_flags = 0; |
9159 HttpNetworkTransaction trans2(session); | 9162 HttpNetworkTransaction trans2(session); |
9160 | 9163 |
9161 // MockHostResolver returns 127.0.0.1, port 443 for https://www.google.com/ | 9164 // MockHostResolver returns 127.0.0.1, port 443 for https://www.google.com/ |
9162 // and https://www.gmail.com/. Add 127.0.0.1 as alias for host_port_pair: | 9165 // and https://www.gmail.com/. Add 127.0.0.1 as alias for host_port_pair: |
9163 // (www.google.com, 443). | 9166 // (www.google.com, 443). |
9164 IPPoolingAddAlias(host_resolver.GetMockHostResolver(), &pool_peer, | 9167 IPPoolingAddAlias(host_resolver.GetMockHostResolver(), &pool_peer, |
9165 "www.google.com", 443, "127.0.0.1"); | 9168 "www.google.com", 443, "127.0.0.1"); |
9166 | 9169 |
9167 rv = trans2.Start(&request2, &callback, BoundNetLog()); | 9170 rv = trans2.Start(&request2, &old_callback, BoundNetLog()); |
9168 EXPECT_EQ(ERR_IO_PENDING, rv); | 9171 EXPECT_EQ(ERR_IO_PENDING, rv); |
9169 EXPECT_EQ(OK, callback.WaitForResult()); | 9172 EXPECT_EQ(OK, old_callback.WaitForResult()); |
9170 | 9173 |
9171 response = trans2.GetResponseInfo(); | 9174 response = trans2.GetResponseInfo(); |
9172 ASSERT_TRUE(response != NULL); | 9175 ASSERT_TRUE(response != NULL); |
9173 ASSERT_TRUE(response->headers != NULL); | 9176 ASSERT_TRUE(response->headers != NULL); |
9174 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 9177 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
9175 EXPECT_TRUE(response->was_fetched_via_spdy); | 9178 EXPECT_TRUE(response->was_fetched_via_spdy); |
9176 EXPECT_TRUE(response->was_npn_negotiated); | 9179 EXPECT_TRUE(response->was_npn_negotiated); |
9177 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); | 9180 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); |
9178 EXPECT_EQ("hello!", response_data); | 9181 EXPECT_EQ("hello!", response_data); |
9179 | 9182 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9222 StaticSocketDataProvider* data[] = { &data1, &data2 }; | 9225 StaticSocketDataProvider* data[] = { &data1, &data2 }; |
9223 | 9226 |
9224 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); | 9227 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); |
9225 | 9228 |
9226 EXPECT_EQ(OK, out.rv); | 9229 EXPECT_EQ(OK, out.rv); |
9227 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); | 9230 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); |
9228 EXPECT_EQ("hello world", out.response_data); | 9231 EXPECT_EQ("hello world", out.response_data); |
9229 } | 9232 } |
9230 | 9233 |
9231 } // namespace net | 9234 } // namespace net |
OLD | NEW |