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

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

Issue 7289006: Basic HTTP pipelining support (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Simplify transaction unit tests Created 9 years, 3 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
OLDNEW
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 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 spdy::SpdyFramer::set_enable_compression_default(true); 136 spdy::SpdyFramer::set_enable_compression_default(true);
137 // Empty the current queue. 137 // Empty the current queue.
138 MessageLoop::current()->RunAllPending(); 138 MessageLoop::current()->RunAllPending();
139 PlatformTest::TearDown(); 139 PlatformTest::TearDown();
140 NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); 140 NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests();
141 MessageLoop::current()->RunAllPending(); 141 MessageLoop::current()->RunAllPending();
142 } 142 }
143 143
144 void KeepAliveConnectionResendRequestTest(const MockRead& read_failure); 144 void KeepAliveConnectionResendRequestTest(const MockRead& read_failure);
145 145
146 SimpleGetHelperResult SimpleGetHelper(MockRead data_reads[], 146 SimpleGetHelperResult SimpleGetHelperForData(StaticSocketDataProvider* data[],
147 size_t reads_count) { 147 size_t data_count) {
148 SimpleGetHelperResult out; 148 SimpleGetHelperResult out;
149 149
150 HttpRequestInfo request; 150 HttpRequestInfo request;
151 request.method = "GET"; 151 request.method = "GET";
152 request.url = GURL("http://www.google.com/"); 152 request.url = GURL("http://www.google.com/");
153 request.load_flags = 0; 153 request.load_flags = 0;
154 154
155 SessionDependencies session_deps; 155 SessionDependencies session_deps;
156 scoped_ptr<HttpTransaction> trans( 156 scoped_ptr<HttpTransaction> trans(
157 new HttpNetworkTransaction(CreateSession(&session_deps))); 157 new HttpNetworkTransaction(CreateSession(&session_deps)));
158 158
159 StaticSocketDataProvider data(data_reads, reads_count, NULL, 0); 159 for (size_t i = 0; i < data_count; ++i) {
160 session_deps.socket_factory.AddSocketDataProvider(&data); 160 session_deps.socket_factory.AddSocketDataProvider(data[i]);
161 }
161 162
162 TestCompletionCallback callback; 163 TestCompletionCallback callback;
163 164
164 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); 165 CapturingBoundNetLog log(CapturingNetLog::kUnbounded);
165 EXPECT_TRUE(log.bound().IsLoggingAllEvents()); 166 EXPECT_TRUE(log.bound().IsLoggingAllEvents());
166 int rv = trans->Start(&request, &callback, log.bound()); 167 int rv = trans->Start(&request, &callback, log.bound());
167 EXPECT_EQ(ERR_IO_PENDING, rv); 168 EXPECT_EQ(ERR_IO_PENDING, rv);
168 169
169 out.rv = callback.WaitForResult(); 170 out.rv = callback.WaitForResult();
170 if (out.rv != OK) 171 if (out.rv != OK)
(...skipping 25 matching lines...) Expand all
196 NetLogHttpRequestParameter* request_params = 197 NetLogHttpRequestParameter* request_params =
197 static_cast<NetLogHttpRequestParameter*>(entry.extra_parameters.get()); 198 static_cast<NetLogHttpRequestParameter*>(entry.extra_parameters.get());
198 EXPECT_EQ("GET / HTTP/1.1\r\n", request_params->GetLine()); 199 EXPECT_EQ("GET / HTTP/1.1\r\n", request_params->GetLine());
199 EXPECT_EQ("Host: www.google.com\r\n" 200 EXPECT_EQ("Host: www.google.com\r\n"
200 "Connection: keep-alive\r\n\r\n", 201 "Connection: keep-alive\r\n\r\n",
201 request_params->GetHeaders().ToString()); 202 request_params->GetHeaders().ToString());
202 203
203 return out; 204 return out;
204 } 205 }
205 206
207 SimpleGetHelperResult SimpleGetHelper(MockRead data_reads[],
208 size_t reads_count) {
209 StaticSocketDataProvider reads(data_reads, reads_count, NULL, 0);
210 StaticSocketDataProvider* data[] = { &reads };
211 return SimpleGetHelperForData(data, 1);
212 }
213
206 void ConnectStatusHelperWithExpectedStatus(const MockRead& status, 214 void ConnectStatusHelperWithExpectedStatus(const MockRead& status,
207 int expected_status); 215 int expected_status);
208 216
209 void ConnectStatusHelper(const MockRead& status); 217 void ConnectStatusHelper(const MockRead& status);
210 }; 218 };
211 219
212 // Fill |str| with a long header list that consumes >= |size| bytes. 220 // Fill |str| with a long header list that consumes >= |size| bytes.
213 void FillLargeHeadersString(std::string* str, int size) { 221 void FillLargeHeadersString(std::string* str, int size) {
214 const char* row = 222 const char* row =
215 "SomeHeaderName: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\n"; 223 "SomeHeaderName: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\n";
(...skipping 8678 matching lines...) Expand 10 before | Expand all | Expand 10 after
8894 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 8902 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
8895 EXPECT_TRUE(response->was_fetched_via_spdy); 8903 EXPECT_TRUE(response->was_fetched_via_spdy);
8896 EXPECT_TRUE(response->was_npn_negotiated); 8904 EXPECT_TRUE(response->was_npn_negotiated);
8897 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); 8905 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data));
8898 EXPECT_EQ("hello!", response_data); 8906 EXPECT_EQ("hello!", response_data);
8899 8907
8900 HttpStreamFactory::set_next_protos(""); 8908 HttpStreamFactory::set_next_protos("");
8901 HttpStreamFactory::set_use_alternate_protocols(false); 8909 HttpStreamFactory::set_use_alternate_protocols(false);
8902 } 8910 }
8903 8911
8912 TEST_F(HttpNetworkTransactionTest, ReadPipelineEvictionFallback) {
8913 MockRead data_reads1[] = {
8914 MockRead(false, ERR_PIPELINE_EVICTION),
8915 };
8916 MockRead data_reads2[] = {
8917 MockRead("HTTP/1.0 200 OK\r\n\r\n"),
8918 MockRead("hello world"),
8919 MockRead(false, OK),
8920 };
8921 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), NULL, 0);
8922 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), NULL, 0);
8923 StaticSocketDataProvider* data[] = { &data1, &data2 };
8924
8925 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data));
8926
8927 EXPECT_EQ(OK, out.rv);
8928 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line);
8929 EXPECT_EQ("hello world", out.response_data);
8930 }
8931
8932 TEST_F(HttpNetworkTransactionTest, SendPipelineEvictionFallback) {
8933 MockWrite data_writes1[] = {
8934 MockWrite(false, ERR_PIPELINE_EVICTION),
8935 };
8936 MockWrite data_writes2[] = {
8937 MockWrite("GET / HTTP/1.1\r\n"
8938 "Host: www.google.com\r\n"
8939 "Connection: keep-alive\r\n\r\n"),
8940 };
8941 MockRead data_reads2[] = {
8942 MockRead("HTTP/1.0 200 OK\r\n\r\n"),
8943 MockRead("hello world"),
8944 MockRead(false, OK),
8945 };
8946 StaticSocketDataProvider data1(NULL, 0,
8947 data_writes1, arraysize(data_writes1));
8948 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
8949 data_writes2, arraysize(data_writes2));
8950 StaticSocketDataProvider* data[] = { &data1, &data2 };
8951
8952 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data));
8953
8954 EXPECT_EQ(OK, out.rv);
8955 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line);
8956 EXPECT_EQ("hello world", out.response_data);
8957 }
8958
8904 } // namespace net 8959 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698