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

Side by Side Diff: net/url_request/url_request_throttler_unittest.cc

Issue 10440119: Introduce a delegate to avoid hardcoding "chrome-extension" in net/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Respond to review requests. Created 8 years, 6 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/url_request/url_request_throttler_manager.h" 5 #include "net/url_request/url_request_throttler_manager.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/metrics/histogram.h" 8 #include "base/metrics/histogram.h"
9 #include "base/pickle.h" 9 #include "base/pickle.h"
10 #include "base/stringprintf.h" 10 #include "base/stringprintf.h"
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 original_samples_.clear(); 227 original_samples_.clear();
228 } 228 }
229 229
230 std::ostream& operator<<(std::ostream& out, const base::TimeTicks& time) { 230 std::ostream& operator<<(std::ostream& out, const base::TimeTicks& time) {
231 return out << time.ToInternalValue(); 231 return out << time.ToInternalValue();
232 } 232 }
233 233
234 TEST_F(URLRequestThrottlerEntryTest, InterfaceDuringExponentialBackoff) { 234 TEST_F(URLRequestThrottlerEntryTest, InterfaceDuringExponentialBackoff) {
235 entry_->set_exponential_backoff_release_time( 235 entry_->set_exponential_backoff_release_time(
236 entry_->fake_time_now_ + TimeDelta::FromMilliseconds(1)); 236 entry_->fake_time_now_ + TimeDelta::FromMilliseconds(1));
237 EXPECT_TRUE(entry_->ShouldRejectRequest(0)); 237 EXPECT_TRUE(entry_->ShouldRejectRequest(NULL, 0));
238 238
239 // Also end-to-end test the load flags exceptions. 239 // Also end-to-end test the load flags exceptions.
240 EXPECT_FALSE(entry_->ShouldRejectRequest(LOAD_MAYBE_USER_GESTURE)); 240 EXPECT_FALSE(entry_->ShouldRejectRequest(NULL, LOAD_MAYBE_USER_GESTURE));
241 241
242 CalculateHistogramDeltas(); 242 CalculateHistogramDeltas();
243 ASSERT_EQ(1, samples_["Throttling.RequestThrottled"].counts(0)); 243 ASSERT_EQ(1, samples_["Throttling.RequestThrottled"].counts(0));
244 ASSERT_EQ(1, samples_["Throttling.RequestThrottled"].counts(1)); 244 ASSERT_EQ(1, samples_["Throttling.RequestThrottled"].counts(1));
245 } 245 }
246 246
247 TEST_F(URLRequestThrottlerEntryTest, InterfaceNotDuringExponentialBackoff) { 247 TEST_F(URLRequestThrottlerEntryTest, InterfaceNotDuringExponentialBackoff) {
248 entry_->set_exponential_backoff_release_time(entry_->fake_time_now_); 248 entry_->set_exponential_backoff_release_time(entry_->fake_time_now_);
249 EXPECT_FALSE(entry_->ShouldRejectRequest(0)); 249 EXPECT_FALSE(entry_->ShouldRejectRequest(NULL, 0));
250 entry_->set_exponential_backoff_release_time( 250 entry_->set_exponential_backoff_release_time(
251 entry_->fake_time_now_ - TimeDelta::FromMilliseconds(1)); 251 entry_->fake_time_now_ - TimeDelta::FromMilliseconds(1));
252 EXPECT_FALSE(entry_->ShouldRejectRequest(0)); 252 EXPECT_FALSE(entry_->ShouldRejectRequest(NULL, 0));
253 253
254 CalculateHistogramDeltas(); 254 CalculateHistogramDeltas();
255 ASSERT_EQ(2, samples_["Throttling.RequestThrottled"].counts(0)); 255 ASSERT_EQ(2, samples_["Throttling.RequestThrottled"].counts(0));
256 ASSERT_EQ(0, samples_["Throttling.RequestThrottled"].counts(1)); 256 ASSERT_EQ(0, samples_["Throttling.RequestThrottled"].counts(1));
257 } 257 }
258 258
259 TEST_F(URLRequestThrottlerEntryTest, InterfaceUpdateFailure) { 259 TEST_F(URLRequestThrottlerEntryTest, InterfaceUpdateFailure) {
260 MockURLRequestThrottlerHeaderAdapter failure_response(503); 260 MockURLRequestThrottlerHeaderAdapter failure_response(503);
261 entry_->UpdateWithResponse("", &failure_response); 261 entry_->UpdateWithResponse("", &failure_response);
262 EXPECT_GT(entry_->GetExponentialBackoffReleaseTime(), entry_->fake_time_now_) 262 EXPECT_GT(entry_->GetExponentialBackoffReleaseTime(), entry_->fake_time_now_)
263 << "A failure should increase the release_time"; 263 << "A failure should increase the release_time";
264 } 264 }
265 265
266 TEST_F(URLRequestThrottlerEntryTest, InterfaceUpdateSuccess) { 266 TEST_F(URLRequestThrottlerEntryTest, InterfaceUpdateSuccess) {
267 MockURLRequestThrottlerHeaderAdapter success_response(200); 267 MockURLRequestThrottlerHeaderAdapter success_response(200);
268 entry_->UpdateWithResponse("", &success_response); 268 entry_->UpdateWithResponse("", &success_response);
269 EXPECT_EQ(entry_->GetExponentialBackoffReleaseTime(), entry_->fake_time_now_) 269 EXPECT_EQ(entry_->GetExponentialBackoffReleaseTime(), entry_->fake_time_now_)
270 << "A success should not add any delay"; 270 << "A success should not add any delay";
271 } 271 }
272 272
273 TEST_F(URLRequestThrottlerEntryTest, InterfaceUpdateSuccessThenFailure) { 273 TEST_F(URLRequestThrottlerEntryTest, InterfaceUpdateSuccessThenFailure) {
274 MockURLRequestThrottlerHeaderAdapter failure_response(503); 274 MockURLRequestThrottlerHeaderAdapter failure_response(503);
275 MockURLRequestThrottlerHeaderAdapter success_response(200); 275 MockURLRequestThrottlerHeaderAdapter success_response(200);
276 entry_->UpdateWithResponse("", &success_response); 276 entry_->UpdateWithResponse("", &success_response);
277 entry_->UpdateWithResponse("", &failure_response); 277 entry_->UpdateWithResponse("", &failure_response);
278 EXPECT_GT(entry_->GetExponentialBackoffReleaseTime(), entry_->fake_time_now_) 278 EXPECT_GT(entry_->GetExponentialBackoffReleaseTime(), entry_->fake_time_now_)
279 << "This scenario should add delay"; 279 << "This scenario should add delay";
280 entry_->UpdateWithResponse("", &success_response); 280 entry_->UpdateWithResponse("", &success_response);
281
282 CalculateHistogramDeltas();
283 ASSERT_EQ(1, samples_["Throttling.FailureCountAtSuccess"].counts(1));
284 ASSERT_EQ(1, samples_["Throttling.PerceivedDowntime"].TotalCount());
285 } 281 }
286 282
287 TEST_F(URLRequestThrottlerEntryTest, IsEntryReallyOutdated) { 283 TEST_F(URLRequestThrottlerEntryTest, IsEntryReallyOutdated) {
288 TimeDelta lifetime = TimeDelta::FromMilliseconds( 284 TimeDelta lifetime = TimeDelta::FromMilliseconds(
289 MockURLRequestThrottlerEntry::kDefaultEntryLifetimeMs); 285 MockURLRequestThrottlerEntry::kDefaultEntryLifetimeMs);
290 const TimeDelta kFiveMs = TimeDelta::FromMilliseconds(5); 286 const TimeDelta kFiveMs = TimeDelta::FromMilliseconds(5);
291 287
292 TimeAndBool test_values[] = { 288 TimeAndBool test_values[] = {
293 TimeAndBool(now_, false, __LINE__), 289 TimeAndBool(now_, false, __LINE__),
294 TimeAndBool(now_ - kFiveMs, false, __LINE__), 290 TimeAndBool(now_ - kFiveMs, false, __LINE__),
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 manager.RegisterRequestUrl(GURL("http://www.google.com/index/0")); 427 manager.RegisterRequestUrl(GURL("http://www.google.com/index/0"));
432 manager.RegisterRequestUrl(GURL("http://www.google.com/index/0?code=1")); 428 manager.RegisterRequestUrl(GURL("http://www.google.com/index/0?code=1"));
433 manager.RegisterRequestUrl(GURL("http://www.google.com/index/0#lolsaure")); 429 manager.RegisterRequestUrl(GURL("http://www.google.com/index/0#lolsaure"));
434 430
435 EXPECT_EQ(3, manager.GetNumberOfEntries()); 431 EXPECT_EQ(3, manager.GetNumberOfEntries());
436 } 432 }
437 433
438 void ExpectEntryAllowsAllOnErrorIfOptedOut( 434 void ExpectEntryAllowsAllOnErrorIfOptedOut(
439 net::URLRequestThrottlerEntryInterface* entry, 435 net::URLRequestThrottlerEntryInterface* entry,
440 bool opted_out) { 436 bool opted_out) {
441 EXPECT_FALSE(entry->ShouldRejectRequest(0)); 437 EXPECT_FALSE(entry->ShouldRejectRequest(NULL, 0));
442 MockURLRequestThrottlerHeaderAdapter failure_adapter(503); 438 MockURLRequestThrottlerHeaderAdapter failure_adapter(503);
443 for (int i = 0; i < 10; ++i) { 439 for (int i = 0; i < 10; ++i) {
444 // Host doesn't really matter in this scenario so we skip it. 440 // Host doesn't really matter in this scenario so we skip it.
445 entry->UpdateWithResponse("", &failure_adapter); 441 entry->UpdateWithResponse("", &failure_adapter);
446 } 442 }
447 EXPECT_NE(opted_out, entry->ShouldRejectRequest(0)); 443 EXPECT_NE(opted_out, entry->ShouldRejectRequest(NULL, 0));
448 444
449 if (opted_out) { 445 if (opted_out) {
450 // We're not mocking out GetTimeNow() in this scenario 446 // We're not mocking out GetTimeNow() in this scenario
451 // so add a 100 ms buffer to avoid flakiness (that should always 447 // so add a 100 ms buffer to avoid flakiness (that should always
452 // give enough time to get from the TimeTicks::Now() call here 448 // give enough time to get from the TimeTicks::Now() call here
453 // to the TimeTicks::Now() call in the entry class). 449 // to the TimeTicks::Now() call in the entry class).
454 EXPECT_GT(TimeTicks::Now() + TimeDelta::FromMilliseconds(100), 450 EXPECT_GT(TimeTicks::Now() + TimeDelta::FromMilliseconds(100),
455 entry->GetExponentialBackoffReleaseTime()); 451 entry->GetExponentialBackoffReleaseTime());
456 } else { 452 } else {
457 // As above, add 100 ms. 453 // As above, add 100 ms.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 TEST(URLRequestThrottlerManager, ClearOnNetworkChange) { 493 TEST(URLRequestThrottlerManager, ClearOnNetworkChange) {
498 for (int i = 0; i < 3; ++i) { 494 for (int i = 0; i < 3; ++i) {
499 MockURLRequestThrottlerManager manager; 495 MockURLRequestThrottlerManager manager;
500 scoped_refptr<net::URLRequestThrottlerEntryInterface> entry_before = 496 scoped_refptr<net::URLRequestThrottlerEntryInterface> entry_before =
501 manager.RegisterRequestUrl(GURL("http://www.example.com/")); 497 manager.RegisterRequestUrl(GURL("http://www.example.com/"));
502 MockURLRequestThrottlerHeaderAdapter failure_adapter(503); 498 MockURLRequestThrottlerHeaderAdapter failure_adapter(503);
503 for (int j = 0; j < 10; ++j) { 499 for (int j = 0; j < 10; ++j) {
504 // Host doesn't really matter in this scenario so we skip it. 500 // Host doesn't really matter in this scenario so we skip it.
505 entry_before->UpdateWithResponse("", &failure_adapter); 501 entry_before->UpdateWithResponse("", &failure_adapter);
506 } 502 }
507 EXPECT_TRUE(entry_before->ShouldRejectRequest(0)); 503 EXPECT_TRUE(entry_before->ShouldRejectRequest(NULL, 0));
508 504
509 switch (i) { 505 switch (i) {
510 case 0: 506 case 0:
511 manager.OnIPAddressChanged(); 507 manager.OnIPAddressChanged();
512 break; 508 break;
513 case 1: 509 case 1:
514 manager.OnConnectionTypeChanged( 510 manager.OnConnectionTypeChanged(
515 net::NetworkChangeNotifier::CONNECTION_UNKNOWN); 511 net::NetworkChangeNotifier::CONNECTION_UNKNOWN);
516 break; 512 break;
517 case 2: 513 case 2:
518 manager.OnConnectionTypeChanged( 514 manager.OnConnectionTypeChanged(
519 net::NetworkChangeNotifier::CONNECTION_NONE); 515 net::NetworkChangeNotifier::CONNECTION_NONE);
520 break; 516 break;
521 default: 517 default:
522 FAIL(); 518 FAIL();
523 } 519 }
524 520
525 scoped_refptr<net::URLRequestThrottlerEntryInterface> entry_after = 521 scoped_refptr<net::URLRequestThrottlerEntryInterface> entry_after =
526 manager.RegisterRequestUrl(GURL("http://www.example.com/")); 522 manager.RegisterRequestUrl(GURL("http://www.example.com/"));
527 EXPECT_FALSE(entry_after->ShouldRejectRequest(0)); 523 EXPECT_FALSE(entry_after->ShouldRejectRequest(NULL, 0));
528 } 524 }
529 } 525 }
530 526
531 } // namespace net 527 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698