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

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

Issue 8770035: Save pipelining capabilities for the most used hosts between sessions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merged Created 9 years 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_pipelined_host_impl.cc ('k') | net/http/http_pipelined_host_pool.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) 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_pipelined_host_impl.h" 5 #include "net/http/http_pipelined_host_impl.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "net/base/ssl_config_service.h" 8 #include "net/base/ssl_config_service.h"
9 #include "net/http/http_pipelined_connection.h" 9 #include "net/http/http_pipelined_connection.h"
10 #include "net/proxy/proxy_info.h" 10 #include "net/proxy/proxy_info.h"
(...skipping 14 matching lines...) Expand all
25 reinterpret_cast<ClientSocketHandle*>(84); 25 reinterpret_cast<ClientSocketHandle*>(84);
26 HttpPipelinedStream* kDummyStream = 26 HttpPipelinedStream* kDummyStream =
27 reinterpret_cast<HttpPipelinedStream*>(42); 27 reinterpret_cast<HttpPipelinedStream*>(42);
28 28
29 class MockHostDelegate : public HttpPipelinedHost::Delegate { 29 class MockHostDelegate : public HttpPipelinedHost::Delegate {
30 public: 30 public:
31 MOCK_METHOD1(OnHostIdle, void(HttpPipelinedHost* host)); 31 MOCK_METHOD1(OnHostIdle, void(HttpPipelinedHost* host));
32 MOCK_METHOD1(OnHostHasAdditionalCapacity, void(HttpPipelinedHost* host)); 32 MOCK_METHOD1(OnHostHasAdditionalCapacity, void(HttpPipelinedHost* host));
33 MOCK_METHOD2(OnHostDeterminedCapability, 33 MOCK_METHOD2(OnHostDeterminedCapability,
34 void(HttpPipelinedHost* host, 34 void(HttpPipelinedHost* host,
35 HttpPipelinedHost::Capability capability)); 35 HttpPipelinedHostCapability capability));
36 }; 36 };
37 37
38 class MockPipelineFactory : public HttpPipelinedConnection::Factory { 38 class MockPipelineFactory : public HttpPipelinedConnection::Factory {
39 public: 39 public:
40 MOCK_METHOD6(CreateNewPipeline, HttpPipelinedConnection*( 40 MOCK_METHOD6(CreateNewPipeline, HttpPipelinedConnection*(
41 ClientSocketHandle* connection, 41 ClientSocketHandle* connection,
42 HttpPipelinedConnection::Delegate* delegate, 42 HttpPipelinedConnection::Delegate* delegate,
43 const SSLConfig& used_ssl_config, 43 const SSLConfig& used_ssl_config,
44 const ProxyInfo& used_proxy_info, 44 const ProxyInfo& used_proxy_info,
45 const BoundNetLog& net_log, 45 const BoundNetLog& net_log,
(...skipping 30 matching lines...) Expand all
76 bool usable_; 76 bool usable_;
77 bool active_; 77 bool active_;
78 }; 78 };
79 79
80 class HttpPipelinedHostImplTest : public testing::Test { 80 class HttpPipelinedHostImplTest : public testing::Test {
81 public: 81 public:
82 HttpPipelinedHostImplTest() 82 HttpPipelinedHostImplTest()
83 : origin_("host", 123), 83 : origin_("host", 123),
84 factory_(new MockPipelineFactory), // Owned by host_. 84 factory_(new MockPipelineFactory), // Owned by host_.
85 host_(new HttpPipelinedHostImpl(&delegate_, origin_, factory_, 85 host_(new HttpPipelinedHostImpl(&delegate_, origin_, factory_,
86 HttpPipelinedHost::CAPABLE)) { 86 PIPELINE_CAPABLE)) {
87 } 87 }
88 88
89 void SetCapability(HttpPipelinedHost::Capability capability) { 89 void SetCapability(HttpPipelinedHostCapability capability) {
90 factory_ = new MockPipelineFactory; 90 factory_ = new MockPipelineFactory;
91 host_.reset(new HttpPipelinedHostImpl( 91 host_.reset(new HttpPipelinedHostImpl(
92 &delegate_, origin_, factory_, capability)); 92 &delegate_, origin_, factory_, capability));
93 } 93 }
94 94
95 MockPipeline* AddTestPipeline(int depth, bool usable, bool active) { 95 MockPipeline* AddTestPipeline(int depth, bool usable, bool active) {
96 MockPipeline* pipeline = new MockPipeline(depth, usable, active); 96 MockPipeline* pipeline = new MockPipeline(depth, usable, active);
97 EXPECT_CALL(*factory_, CreateNewPipeline(kDummyConnection, host_.get(), 97 EXPECT_CALL(*factory_, CreateNewPipeline(kDummyConnection, host_.get(),
98 Ref(ssl_config_), Ref(proxy_info_), 98 Ref(ssl_config_), Ref(proxy_info_),
99 Ref(net_log_), true)) 99 Ref(net_log_), true))
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 .Times(1) 193 .Times(1)
194 .WillOnce(ReturnNull()); 194 .WillOnce(ReturnNull());
195 EXPECT_EQ(NULL, host_->CreateStreamOnExistingPipeline()); 195 EXPECT_EQ(NULL, host_->CreateStreamOnExistingPipeline());
196 196
197 ClearTestPipeline(full_pipeline); 197 ClearTestPipeline(full_pipeline);
198 ClearTestPipeline(usable_pipeline); 198 ClearTestPipeline(usable_pipeline);
199 ClearTestPipeline(empty_pipeline); 199 ClearTestPipeline(empty_pipeline);
200 } 200 }
201 201
202 TEST_F(HttpPipelinedHostImplTest, OpensUpOnPipelineSuccess) { 202 TEST_F(HttpPipelinedHostImplTest, OpensUpOnPipelineSuccess) {
203 SetCapability(HttpPipelinedHost::UNKNOWN); 203 SetCapability(PIPELINE_UNKNOWN);
204 MockPipeline* pipeline = AddTestPipeline(1, true, true); 204 MockPipeline* pipeline = AddTestPipeline(1, true, true);
205 205
206 EXPECT_EQ(NULL, host_->CreateStreamOnExistingPipeline()); 206 EXPECT_EQ(NULL, host_->CreateStreamOnExistingPipeline());
207 EXPECT_CALL(delegate_, OnHostHasAdditionalCapacity(host_.get())) 207 EXPECT_CALL(delegate_, OnHostHasAdditionalCapacity(host_.get()))
208 .Times(1); 208 .Times(1);
209 host_->OnPipelineFeedback(pipeline, HttpPipelinedConnection::OK); 209 host_->OnPipelineFeedback(pipeline, HttpPipelinedConnection::OK);
210 210
211 EXPECT_CALL(*pipeline, CreateNewStream()) 211 EXPECT_CALL(*pipeline, CreateNewStream())
212 .Times(1) 212 .Times(1)
213 .WillOnce(Return(kDummyStream)); 213 .WillOnce(Return(kDummyStream));
214 EXPECT_EQ(kDummyStream, host_->CreateStreamOnExistingPipeline()); 214 EXPECT_EQ(kDummyStream, host_->CreateStreamOnExistingPipeline());
215 215
216 EXPECT_CALL(delegate_, OnHostHasAdditionalCapacity(host_.get())) 216 EXPECT_CALL(delegate_, OnHostHasAdditionalCapacity(host_.get()))
217 .Times(1); 217 .Times(1);
218 ClearTestPipeline(pipeline); 218 ClearTestPipeline(pipeline);
219 } 219 }
220 220
221 TEST_F(HttpPipelinedHostImplTest, OpensAllPipelinesOnPipelineSuccess) { 221 TEST_F(HttpPipelinedHostImplTest, OpensAllPipelinesOnPipelineSuccess) {
222 SetCapability(HttpPipelinedHost::UNKNOWN); 222 SetCapability(PIPELINE_UNKNOWN);
223 MockPipeline* pipeline1 = AddTestPipeline(1, false, true); 223 MockPipeline* pipeline1 = AddTestPipeline(1, false, true);
224 MockPipeline* pipeline2 = AddTestPipeline(1, true, true); 224 MockPipeline* pipeline2 = AddTestPipeline(1, true, true);
225 225
226 EXPECT_EQ(NULL, host_->CreateStreamOnExistingPipeline()); 226 EXPECT_EQ(NULL, host_->CreateStreamOnExistingPipeline());
227 EXPECT_CALL(delegate_, OnHostHasAdditionalCapacity(host_.get())) 227 EXPECT_CALL(delegate_, OnHostHasAdditionalCapacity(host_.get()))
228 .Times(1); 228 .Times(1);
229 host_->OnPipelineFeedback(pipeline1, HttpPipelinedConnection::OK); 229 host_->OnPipelineFeedback(pipeline1, HttpPipelinedConnection::OK);
230 230
231 EXPECT_CALL(*pipeline2, CreateNewStream()) 231 EXPECT_CALL(*pipeline2, CreateNewStream())
232 .Times(1) 232 .Times(1)
233 .WillOnce(Return(kDummyStream)); 233 .WillOnce(Return(kDummyStream));
234 EXPECT_EQ(kDummyStream, host_->CreateStreamOnExistingPipeline()); 234 EXPECT_EQ(kDummyStream, host_->CreateStreamOnExistingPipeline());
235 235
236 EXPECT_CALL(delegate_, OnHostHasAdditionalCapacity(host_.get())) 236 EXPECT_CALL(delegate_, OnHostHasAdditionalCapacity(host_.get()))
237 .Times(2); 237 .Times(2);
238 ClearTestPipeline(pipeline1); 238 ClearTestPipeline(pipeline1);
239 ClearTestPipeline(pipeline2); 239 ClearTestPipeline(pipeline2);
240 } 240 }
241 241
242 TEST_F(HttpPipelinedHostImplTest, ShutsDownOnOldVersion) { 242 TEST_F(HttpPipelinedHostImplTest, ShutsDownOnOldVersion) {
243 SetCapability(HttpPipelinedHost::UNKNOWN); 243 SetCapability(PIPELINE_UNKNOWN);
244 MockPipeline* pipeline = AddTestPipeline(1, true, true); 244 MockPipeline* pipeline = AddTestPipeline(1, true, true);
245 245
246 EXPECT_EQ(NULL, host_->CreateStreamOnExistingPipeline()); 246 EXPECT_EQ(NULL, host_->CreateStreamOnExistingPipeline());
247 EXPECT_CALL(delegate_, OnHostHasAdditionalCapacity(host_.get())) 247 EXPECT_CALL(delegate_, OnHostHasAdditionalCapacity(host_.get()))
248 .Times(0); 248 .Times(0);
249 EXPECT_CALL(delegate_, 249 EXPECT_CALL(delegate_,
250 OnHostDeterminedCapability(host_.get(), 250 OnHostDeterminedCapability(host_.get(), PIPELINE_INCAPABLE))
251 HttpPipelinedHost::INCAPABLE))
252 .Times(1); 251 .Times(1);
253 host_->OnPipelineFeedback(pipeline, 252 host_->OnPipelineFeedback(pipeline,
254 HttpPipelinedConnection::OLD_HTTP_VERSION); 253 HttpPipelinedConnection::OLD_HTTP_VERSION);
255 254
256 ClearTestPipeline(pipeline); 255 ClearTestPipeline(pipeline);
257 EXPECT_EQ(NULL, host_->CreateStreamOnNewPipeline( 256 EXPECT_EQ(NULL, host_->CreateStreamOnNewPipeline(
258 kDummyConnection, ssl_config_, proxy_info_, net_log_, true)); 257 kDummyConnection, ssl_config_, proxy_info_, net_log_, true));
259 } 258 }
260 259
261 TEST_F(HttpPipelinedHostImplTest, ConnectionCloseHasNoEffect) { 260 TEST_F(HttpPipelinedHostImplTest, ConnectionCloseHasNoEffect) {
262 SetCapability(HttpPipelinedHost::UNKNOWN); 261 SetCapability(PIPELINE_UNKNOWN);
263 MockPipeline* pipeline = AddTestPipeline(1, true, true); 262 MockPipeline* pipeline = AddTestPipeline(1, true, true);
264 263
265 EXPECT_CALL(delegate_, OnHostHasAdditionalCapacity(host_.get())) 264 EXPECT_CALL(delegate_, OnHostHasAdditionalCapacity(host_.get()))
266 .Times(0); 265 .Times(0);
267 EXPECT_CALL(delegate_, OnHostDeterminedCapability(host_.get(), _)) 266 EXPECT_CALL(delegate_, OnHostDeterminedCapability(host_.get(), _))
268 .Times(0); 267 .Times(0);
269 host_->OnPipelineFeedback(pipeline, 268 host_->OnPipelineFeedback(pipeline,
270 HttpPipelinedConnection::MUST_CLOSE_CONNECTION); 269 HttpPipelinedConnection::MUST_CLOSE_CONNECTION);
271 EXPECT_EQ(NULL, host_->CreateStreamOnExistingPipeline()); 270 EXPECT_EQ(NULL, host_->CreateStreamOnExistingPipeline());
272 271
273 EXPECT_CALL(delegate_, OnHostHasAdditionalCapacity(host_.get())) 272 EXPECT_CALL(delegate_, OnHostHasAdditionalCapacity(host_.get()))
274 .Times(1); 273 .Times(1);
275 ClearTestPipeline(pipeline); 274 ClearTestPipeline(pipeline);
276 } 275 }
277 276
278 TEST_F(HttpPipelinedHostImplTest, SuccessesLeadToCapable) { 277 TEST_F(HttpPipelinedHostImplTest, SuccessesLeadToCapable) {
279 SetCapability(HttpPipelinedHost::UNKNOWN); 278 SetCapability(PIPELINE_UNKNOWN);
280 MockPipeline* pipeline = AddTestPipeline(1, true, true); 279 MockPipeline* pipeline = AddTestPipeline(1, true, true);
281 280
282 EXPECT_CALL(delegate_, OnHostHasAdditionalCapacity(host_.get())) 281 EXPECT_CALL(delegate_, OnHostHasAdditionalCapacity(host_.get()))
283 .Times(1); 282 .Times(1);
284 EXPECT_CALL(delegate_, 283 EXPECT_CALL(delegate_,
285 OnHostDeterminedCapability(host_.get(), 284 OnHostDeterminedCapability(host_.get(), PIPELINE_CAPABLE))
286 HttpPipelinedHost::CAPABLE))
287 .Times(1); 285 .Times(1);
288 host_->OnPipelineFeedback(pipeline, HttpPipelinedConnection::OK); 286 host_->OnPipelineFeedback(pipeline, HttpPipelinedConnection::OK);
289 287
290 pipeline->SetState(3, true, true); 288 pipeline->SetState(3, true, true);
291 host_->OnPipelineFeedback(pipeline, HttpPipelinedConnection::OK); 289 host_->OnPipelineFeedback(pipeline, HttpPipelinedConnection::OK);
292 host_->OnPipelineFeedback(pipeline, HttpPipelinedConnection::OK); 290 host_->OnPipelineFeedback(pipeline, HttpPipelinedConnection::OK);
293 291
294 EXPECT_CALL(delegate_, OnHostHasAdditionalCapacity(host_.get())) 292 EXPECT_CALL(delegate_, OnHostHasAdditionalCapacity(host_.get()))
295 .Times(1); 293 .Times(1);
296 ClearTestPipeline(pipeline); 294 ClearTestPipeline(pipeline);
297 } 295 }
298 296
299 } // anonymous namespace 297 } // anonymous namespace
300 298
301 } // namespace net 299 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_pipelined_host_impl.cc ('k') | net/http/http_pipelined_host_pool.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698