OLD | NEW |
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 <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 727 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
738 arraysize(data_reads)); | 738 arraysize(data_reads)); |
739 EXPECT_EQ(OK, out.rv); | 739 EXPECT_EQ(OK, out.rv); |
740 EXPECT_EQ("HTTP/1.1 204 No Content", out.status_line); | 740 EXPECT_EQ("HTTP/1.1 204 No Content", out.status_line); |
741 EXPECT_EQ("", out.response_data); | 741 EXPECT_EQ("", out.response_data); |
742 int64 reads_size = ReadsSize(data_reads, arraysize(data_reads)); | 742 int64 reads_size = ReadsSize(data_reads, arraysize(data_reads)); |
743 int64 response_size = reads_size - strlen(junk); | 743 int64 response_size = reads_size - strlen(junk); |
744 EXPECT_EQ(response_size, out.totalReceivedBytes); | 744 EXPECT_EQ(response_size, out.totalReceivedBytes); |
745 } | 745 } |
746 | 746 |
747 // A simple request using chunked encoding with some extra data after. | 747 // A simple request using chunked encoding with some extra data after. |
748 // (Like might be seen in a pipelined response.) | |
749 TEST_P(HttpNetworkTransactionTest, ChunkedEncoding) { | 748 TEST_P(HttpNetworkTransactionTest, ChunkedEncoding) { |
750 std::string final_chunk = "0\r\n\r\n"; | 749 std::string final_chunk = "0\r\n\r\n"; |
751 std::string extra_data = "HTTP/1.1 200 OK\r\n"; | 750 std::string extra_data = "HTTP/1.1 200 OK\r\n"; |
752 std::string last_read = final_chunk + extra_data; | 751 std::string last_read = final_chunk + extra_data; |
753 MockRead data_reads[] = { | 752 MockRead data_reads[] = { |
754 MockRead("HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n"), | 753 MockRead("HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n"), |
755 MockRead("5\r\nHello\r\n"), | 754 MockRead("5\r\nHello\r\n"), |
756 MockRead("1\r\n"), | 755 MockRead("1\r\n"), |
757 MockRead(" \r\n"), | 756 MockRead(" \r\n"), |
758 MockRead("5\r\nworld\r\n"), | 757 MockRead("5\r\nworld\r\n"), |
(...skipping 10419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11178 ASSERT_TRUE(response->headers.get() != NULL); | 11177 ASSERT_TRUE(response->headers.get() != NULL); |
11179 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 11178 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
11180 EXPECT_TRUE(response->was_fetched_via_spdy); | 11179 EXPECT_TRUE(response->was_fetched_via_spdy); |
11181 EXPECT_TRUE(response->was_npn_negotiated); | 11180 EXPECT_TRUE(response->was_npn_negotiated); |
11182 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); | 11181 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); |
11183 EXPECT_EQ("hello!", response_data); | 11182 EXPECT_EQ("hello!", response_data); |
11184 #endif | 11183 #endif |
11185 } | 11184 } |
11186 #undef MAYBE_UseIPConnectionPoolingWithHostCacheExpiration | 11185 #undef MAYBE_UseIPConnectionPoolingWithHostCacheExpiration |
11187 | 11186 |
11188 TEST_P(HttpNetworkTransactionTest, ReadPipelineEvictionFallback) { | |
11189 MockRead data_reads1[] = { | |
11190 MockRead(SYNCHRONOUS, ERR_PIPELINE_EVICTION), | |
11191 }; | |
11192 MockRead data_reads2[] = { | |
11193 MockRead("HTTP/1.0 200 OK\r\n\r\n"), | |
11194 MockRead("hello world"), | |
11195 MockRead(SYNCHRONOUS, OK), | |
11196 }; | |
11197 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), NULL, 0); | |
11198 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), NULL, 0); | |
11199 StaticSocketDataProvider* data[] = { &data1, &data2 }; | |
11200 | |
11201 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); | |
11202 | |
11203 EXPECT_EQ(OK, out.rv); | |
11204 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); | |
11205 EXPECT_EQ("hello world", out.response_data); | |
11206 } | |
11207 | |
11208 TEST_P(HttpNetworkTransactionTest, SendPipelineEvictionFallback) { | |
11209 MockWrite data_writes1[] = { | |
11210 MockWrite(SYNCHRONOUS, ERR_PIPELINE_EVICTION), | |
11211 }; | |
11212 MockWrite data_writes2[] = { | |
11213 MockWrite("GET / HTTP/1.1\r\n" | |
11214 "Host: www.google.com\r\n" | |
11215 "Connection: keep-alive\r\n\r\n"), | |
11216 }; | |
11217 MockRead data_reads2[] = { | |
11218 MockRead("HTTP/1.0 200 OK\r\n\r\n"), | |
11219 MockRead("hello world"), | |
11220 MockRead(SYNCHRONOUS, OK), | |
11221 }; | |
11222 StaticSocketDataProvider data1(NULL, 0, | |
11223 data_writes1, arraysize(data_writes1)); | |
11224 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | |
11225 data_writes2, arraysize(data_writes2)); | |
11226 StaticSocketDataProvider* data[] = { &data1, &data2 }; | |
11227 | |
11228 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); | |
11229 | |
11230 EXPECT_EQ(OK, out.rv); | |
11231 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); | |
11232 EXPECT_EQ("hello world", out.response_data); | |
11233 } | |
11234 | |
11235 TEST_P(HttpNetworkTransactionTest, DoNotUseSpdySessionForHttp) { | 11187 TEST_P(HttpNetworkTransactionTest, DoNotUseSpdySessionForHttp) { |
11236 const std::string https_url = "https://www.google.com/"; | 11188 const std::string https_url = "https://www.google.com/"; |
11237 const std::string http_url = "http://www.google.com:443/"; | 11189 const std::string http_url = "http://www.google.com:443/"; |
11238 | 11190 |
11239 // SPDY GET for HTTPS URL | 11191 // SPDY GET for HTTPS URL |
11240 scoped_ptr<SpdyFrame> req1( | 11192 scoped_ptr<SpdyFrame> req1( |
11241 spdy_util_.ConstructSpdyGet(https_url.c_str(), false, 1, LOWEST)); | 11193 spdy_util_.ConstructSpdyGet(https_url.c_str(), false, 1, LOWEST)); |
11242 | 11194 |
11243 MockWrite writes1[] = { | 11195 MockWrite writes1[] = { |
11244 CreateMockWrite(*req1, 0), | 11196 CreateMockWrite(*req1, 0), |
(...skipping 1091 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12336 } | 12288 } |
12337 | 12289 |
12338 virtual void PreconnectStreams(int num_streams, | 12290 virtual void PreconnectStreams(int num_streams, |
12339 const HttpRequestInfo& info, | 12291 const HttpRequestInfo& info, |
12340 RequestPriority priority, | 12292 RequestPriority priority, |
12341 const SSLConfig& server_ssl_config, | 12293 const SSLConfig& server_ssl_config, |
12342 const SSLConfig& proxy_ssl_config) OVERRIDE { | 12294 const SSLConfig& proxy_ssl_config) OVERRIDE { |
12343 ADD_FAILURE(); | 12295 ADD_FAILURE(); |
12344 } | 12296 } |
12345 | 12297 |
12346 virtual base::Value* PipelineInfoToValue() const OVERRIDE { | |
12347 ADD_FAILURE(); | |
12348 return NULL; | |
12349 } | |
12350 | |
12351 virtual const HostMappingRules* GetHostMappingRules() const OVERRIDE { | 12298 virtual const HostMappingRules* GetHostMappingRules() const OVERRIDE { |
12352 ADD_FAILURE(); | 12299 ADD_FAILURE(); |
12353 return NULL; | 12300 return NULL; |
12354 } | 12301 } |
12355 | 12302 |
12356 private: | 12303 private: |
12357 base::WeakPtr<FakeStreamRequest> last_stream_request_; | 12304 base::WeakPtr<FakeStreamRequest> last_stream_request_; |
12358 | 12305 |
12359 DISALLOW_COPY_AND_ASSIGN(FakeStreamFactory); | 12306 DISALLOW_COPY_AND_ASSIGN(FakeStreamFactory); |
12360 }; | 12307 }; |
(...skipping 775 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13136 EXPECT_EQ(ERR_IO_PENDING, rv); | 13083 EXPECT_EQ(ERR_IO_PENDING, rv); |
13137 | 13084 |
13138 rv = callback.WaitForResult(); | 13085 rv = callback.WaitForResult(); |
13139 EXPECT_EQ(ERR_CONNECTION_RESET, rv); | 13086 EXPECT_EQ(ERR_CONNECTION_RESET, rv); |
13140 | 13087 |
13141 const HttpResponseInfo* response = trans->GetResponseInfo(); | 13088 const HttpResponseInfo* response = trans->GetResponseInfo(); |
13142 EXPECT_TRUE(response == NULL); | 13089 EXPECT_TRUE(response == NULL); |
13143 } | 13090 } |
13144 | 13091 |
13145 } // namespace net | 13092 } // namespace net |
OLD | NEW |