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

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

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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_samples.h" 8 #include "base/metrics/histogram_samples.h"
9 #include "base/pickle.h" 9 #include "base/pickle.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 88
89 void set_exponential_backoff_release_time( 89 void set_exponential_backoff_release_time(
90 const base::TimeTicks& release_time) { 90 const base::TimeTicks& release_time) {
91 GetBackoffEntry()->SetCustomReleaseTime(release_time); 91 GetBackoffEntry()->SetCustomReleaseTime(release_time);
92 } 92 }
93 93
94 base::TimeTicks sliding_window_release_time() const { 94 base::TimeTicks sliding_window_release_time() const {
95 return URLRequestThrottlerEntry::sliding_window_release_time(); 95 return URLRequestThrottlerEntry::sliding_window_release_time();
96 } 96 }
97 97
98 void set_sliding_window_release_time( 98 void set_sliding_window_release_time(const base::TimeTicks& release_time) {
99 const base::TimeTicks& release_time) { 99 URLRequestThrottlerEntry::set_sliding_window_release_time(release_time);
100 URLRequestThrottlerEntry::set_sliding_window_release_time(
101 release_time);
102 } 100 }
103 101
104 TimeTicks fake_time_now_; 102 TimeTicks fake_time_now_;
105 MockBackoffEntry mock_backoff_entry_; 103 MockBackoffEntry mock_backoff_entry_;
106 104
107 protected: 105 protected:
108 virtual ~MockURLRequestThrottlerEntry() {} 106 virtual ~MockURLRequestThrottlerEntry() {}
109 }; 107 };
110 108
111 class MockURLRequestThrottlerManager : public URLRequestThrottlerManager { 109 class MockURLRequestThrottlerManager : public URLRequestThrottlerManager {
(...skipping 12 matching lines...) Expand all
124 122
125 void CreateEntry(bool is_outdated) { 123 void CreateEntry(bool is_outdated) {
126 TimeTicks time = TimeTicks::Now(); 124 TimeTicks time = TimeTicks::Now();
127 if (is_outdated) { 125 if (is_outdated) {
128 time -= TimeDelta::FromMilliseconds( 126 time -= TimeDelta::FromMilliseconds(
129 MockURLRequestThrottlerEntry::kDefaultEntryLifetimeMs + 1000); 127 MockURLRequestThrottlerEntry::kDefaultEntryLifetimeMs + 1000);
130 } 128 }
131 std::string fake_url_string("http://www.fakeurl.com/"); 129 std::string fake_url_string("http://www.fakeurl.com/");
132 fake_url_string.append(base::IntToString(create_entry_index_++)); 130 fake_url_string.append(base::IntToString(create_entry_index_++));
133 GURL fake_url(fake_url_string); 131 GURL fake_url(fake_url_string);
134 OverrideEntryForTests( 132 OverrideEntryForTests(fake_url,
135 fake_url, 133 new MockURLRequestThrottlerEntry(
136 new MockURLRequestThrottlerEntry(this, time, TimeTicks::Now(), 134 this, time, TimeTicks::Now(), TimeTicks::Now()));
137 TimeTicks::Now()));
138 } 135 }
139 136
140 private: 137 private:
141 int create_entry_index_; 138 int create_entry_index_;
142 }; 139 };
143 140
144 struct TimeAndBool { 141 struct TimeAndBool {
145 TimeAndBool(const TimeTicks& time_value, bool expected, int line_num) { 142 TimeAndBool(const TimeTicks& time_value, bool expected, int line_num) {
146 time = time_value; 143 time = time_value;
147 result = expected; 144 result = expected;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 entry_->ResetToBlank(now_); 187 entry_->ResetToBlank(now_);
191 } 188 }
192 189
193 std::ostream& operator<<(std::ostream& out, const base::TimeTicks& time) { 190 std::ostream& operator<<(std::ostream& out, const base::TimeTicks& time) {
194 return out << time.ToInternalValue(); 191 return out << time.ToInternalValue();
195 } 192 }
196 193
197 TEST_F(URLRequestThrottlerEntryTest, CanThrottleRequest) { 194 TEST_F(URLRequestThrottlerEntryTest, CanThrottleRequest) {
198 TestNetworkDelegate d; 195 TestNetworkDelegate d;
199 context_.set_network_delegate(&d); 196 context_.set_network_delegate(&d);
200 entry_->set_exponential_backoff_release_time( 197 entry_->set_exponential_backoff_release_time(entry_->fake_time_now_ +
201 entry_->fake_time_now_ + TimeDelta::FromMilliseconds(1)); 198 TimeDelta::FromMilliseconds(1));
202 199
203 d.set_can_throttle_requests(false); 200 d.set_can_throttle_requests(false);
204 EXPECT_FALSE(entry_->ShouldRejectRequest(request_)); 201 EXPECT_FALSE(entry_->ShouldRejectRequest(request_));
205 d.set_can_throttle_requests(true); 202 d.set_can_throttle_requests(true);
206 EXPECT_TRUE(entry_->ShouldRejectRequest(request_)); 203 EXPECT_TRUE(entry_->ShouldRejectRequest(request_));
207 } 204 }
208 205
209 TEST_F(URLRequestThrottlerEntryTest, InterfaceDuringExponentialBackoff) { 206 TEST_F(URLRequestThrottlerEntryTest, InterfaceDuringExponentialBackoff) {
210 base::StatisticsDeltaReader statistics_delta_reader; 207 base::StatisticsDeltaReader statistics_delta_reader;
211 entry_->set_exponential_backoff_release_time( 208 entry_->set_exponential_backoff_release_time(entry_->fake_time_now_ +
212 entry_->fake_time_now_ + TimeDelta::FromMilliseconds(1)); 209 TimeDelta::FromMilliseconds(1));
213 EXPECT_TRUE(entry_->ShouldRejectRequest(request_)); 210 EXPECT_TRUE(entry_->ShouldRejectRequest(request_));
214 211
215 // Also end-to-end test the load flags exceptions. 212 // Also end-to-end test the load flags exceptions.
216 request_.SetLoadFlags(LOAD_MAYBE_USER_GESTURE); 213 request_.SetLoadFlags(LOAD_MAYBE_USER_GESTURE);
217 EXPECT_FALSE(entry_->ShouldRejectRequest(request_)); 214 EXPECT_FALSE(entry_->ShouldRejectRequest(request_));
218 215
219 scoped_ptr<base::HistogramSamples> samples( 216 scoped_ptr<base::HistogramSamples> samples(
220 statistics_delta_reader.GetHistogramSamplesSinceCreation( 217 statistics_delta_reader.GetHistogramSamplesSinceCreation(
221 kRequestThrottledHistogramName)); 218 kRequestThrottledHistogramName));
222 ASSERT_EQ(1, samples->GetCount(0)); 219 ASSERT_EQ(1, samples->GetCount(0));
223 ASSERT_EQ(1, samples->GetCount(1)); 220 ASSERT_EQ(1, samples->GetCount(1));
224 } 221 }
225 222
226 TEST_F(URLRequestThrottlerEntryTest, InterfaceNotDuringExponentialBackoff) { 223 TEST_F(URLRequestThrottlerEntryTest, InterfaceNotDuringExponentialBackoff) {
227 base::StatisticsDeltaReader statistics_delta_reader; 224 base::StatisticsDeltaReader statistics_delta_reader;
228 entry_->set_exponential_backoff_release_time(entry_->fake_time_now_); 225 entry_->set_exponential_backoff_release_time(entry_->fake_time_now_);
229 EXPECT_FALSE(entry_->ShouldRejectRequest(request_)); 226 EXPECT_FALSE(entry_->ShouldRejectRequest(request_));
230 entry_->set_exponential_backoff_release_time( 227 entry_->set_exponential_backoff_release_time(entry_->fake_time_now_ -
231 entry_->fake_time_now_ - TimeDelta::FromMilliseconds(1)); 228 TimeDelta::FromMilliseconds(1));
232 EXPECT_FALSE(entry_->ShouldRejectRequest(request_)); 229 EXPECT_FALSE(entry_->ShouldRejectRequest(request_));
233 230
234 scoped_ptr<base::HistogramSamples> samples( 231 scoped_ptr<base::HistogramSamples> samples(
235 statistics_delta_reader.GetHistogramSamplesSinceCreation( 232 statistics_delta_reader.GetHistogramSamplesSinceCreation(
236 kRequestThrottledHistogramName)); 233 kRequestThrottledHistogramName));
237 ASSERT_EQ(2, samples->GetCount(0)); 234 ASSERT_EQ(2, samples->GetCount(0));
238 ASSERT_EQ(0, samples->GetCount(1)); 235 ASSERT_EQ(0, samples->GetCount(1));
239 } 236 }
240 237
241 TEST_F(URLRequestThrottlerEntryTest, InterfaceUpdateFailure) { 238 TEST_F(URLRequestThrottlerEntryTest, InterfaceUpdateFailure) {
(...skipping 28 matching lines...) Expand all
270 TimeAndBool test_values[] = { 267 TimeAndBool test_values[] = {
271 TimeAndBool(now_, false, __LINE__), 268 TimeAndBool(now_, false, __LINE__),
272 TimeAndBool(now_ - kFiveMs, false, __LINE__), 269 TimeAndBool(now_ - kFiveMs, false, __LINE__),
273 TimeAndBool(now_ + kFiveMs, false, __LINE__), 270 TimeAndBool(now_ + kFiveMs, false, __LINE__),
274 TimeAndBool(now_ - (lifetime - kFiveMs), false, __LINE__), 271 TimeAndBool(now_ - (lifetime - kFiveMs), false, __LINE__),
275 TimeAndBool(now_ - lifetime, true, __LINE__), 272 TimeAndBool(now_ - lifetime, true, __LINE__),
276 TimeAndBool(now_ - (lifetime + kFiveMs), true, __LINE__)}; 273 TimeAndBool(now_ - (lifetime + kFiveMs), true, __LINE__)};
277 274
278 for (unsigned int i = 0; i < arraysize(test_values); ++i) { 275 for (unsigned int i = 0; i < arraysize(test_values); ++i) {
279 entry_->set_exponential_backoff_release_time(test_values[i].time); 276 entry_->set_exponential_backoff_release_time(test_values[i].time);
280 EXPECT_EQ(entry_->IsEntryOutdated(), test_values[i].result) << 277 EXPECT_EQ(entry_->IsEntryOutdated(), test_values[i].result)
281 "Test case #" << i << " line " << test_values[i].line << " failed"; 278 << "Test case #" << i << " line " << test_values[i].line << " failed";
282 } 279 }
283 } 280 }
284 281
285 TEST_F(URLRequestThrottlerEntryTest, MaxAllowedBackoff) { 282 TEST_F(URLRequestThrottlerEntryTest, MaxAllowedBackoff) {
286 for (int i = 0; i < 30; ++i) { 283 for (int i = 0; i < 30; ++i) {
287 MockURLRequestThrottlerHeaderAdapter response_adapter(503); 284 MockURLRequestThrottlerHeaderAdapter response_adapter(503);
288 entry_->UpdateWithResponse(std::string(), &response_adapter); 285 entry_->UpdateWithResponse(std::string(), &response_adapter);
289 } 286 }
290 287
291 TimeDelta delay = entry_->GetExponentialBackoffReleaseTime() - now_; 288 TimeDelta delay = entry_->GetExponentialBackoffReleaseTime() - now_;
(...skipping 14 matching lines...) Expand all
306 // is what happens in practice (if a body is received, then a non-500 303 // is what happens in practice (if a body is received, then a non-500
307 // response must also have been received). 304 // response must also have been received).
308 entry_->ReceivedContentWasMalformed(200); 305 entry_->ReceivedContentWasMalformed(200);
309 MockURLRequestThrottlerHeaderAdapter success_adapter(200); 306 MockURLRequestThrottlerHeaderAdapter success_adapter(200);
310 entry_->UpdateWithResponse(std::string(), &success_adapter); 307 entry_->UpdateWithResponse(std::string(), &success_adapter);
311 EXPECT_GT(entry_->GetExponentialBackoffReleaseTime(), release_after_failures); 308 EXPECT_GT(entry_->GetExponentialBackoffReleaseTime(), release_after_failures);
312 } 309 }
313 310
314 TEST_F(URLRequestThrottlerEntryTest, SlidingWindow) { 311 TEST_F(URLRequestThrottlerEntryTest, SlidingWindow) {
315 int max_send = URLRequestThrottlerEntry::kDefaultMaxSendThreshold; 312 int max_send = URLRequestThrottlerEntry::kDefaultMaxSendThreshold;
316 int sliding_window = 313 int sliding_window = URLRequestThrottlerEntry::kDefaultSlidingWindowPeriodMs;
317 URLRequestThrottlerEntry::kDefaultSlidingWindowPeriodMs;
318 314
319 TimeTicks time_1 = entry_->fake_time_now_ + 315 TimeTicks time_1 =
320 TimeDelta::FromMilliseconds(sliding_window / 3); 316 entry_->fake_time_now_ + TimeDelta::FromMilliseconds(sliding_window / 3);
321 TimeTicks time_2 = entry_->fake_time_now_ + 317 TimeTicks time_2 = entry_->fake_time_now_ +
322 TimeDelta::FromMilliseconds(2 * sliding_window / 3); 318 TimeDelta::FromMilliseconds(2 * sliding_window / 3);
323 TimeTicks time_3 = entry_->fake_time_now_ + 319 TimeTicks time_3 =
324 TimeDelta::FromMilliseconds(sliding_window); 320 entry_->fake_time_now_ + TimeDelta::FromMilliseconds(sliding_window);
325 TimeTicks time_4 = entry_->fake_time_now_ + 321 TimeTicks time_4 =
322 entry_->fake_time_now_ +
326 TimeDelta::FromMilliseconds(sliding_window + 2 * sliding_window / 3); 323 TimeDelta::FromMilliseconds(sliding_window + 2 * sliding_window / 3);
327 324
328 entry_->set_exponential_backoff_release_time(time_1); 325 entry_->set_exponential_backoff_release_time(time_1);
329 326
330 for (int i = 0; i < max_send / 2; ++i) { 327 for (int i = 0; i < max_send / 2; ++i) {
331 EXPECT_EQ(2 * sliding_window / 3, 328 EXPECT_EQ(2 * sliding_window / 3,
332 entry_->ReserveSendingTimeForNextRequest(time_2)); 329 entry_->ReserveSendingTimeForNextRequest(time_2));
333 } 330 }
334 EXPECT_EQ(time_2, entry_->sliding_window_release_time()); 331 EXPECT_EQ(time_2, entry_->sliding_window_release_time());
335 332
(...skipping 11 matching lines...) Expand all
347 LOAD_MAYBE_USER_GESTURE)); 344 LOAD_MAYBE_USER_GESTURE));
348 ASSERT_FALSE(MockURLRequestThrottlerEntry::ExplicitUserRequest( 345 ASSERT_FALSE(MockURLRequestThrottlerEntry::ExplicitUserRequest(
349 ~LOAD_MAYBE_USER_GESTURE)); 346 ~LOAD_MAYBE_USER_GESTURE));
350 } 347 }
351 348
352 class URLRequestThrottlerManagerTest : public testing::Test { 349 class URLRequestThrottlerManagerTest : public testing::Test {
353 protected: 350 protected:
354 URLRequestThrottlerManagerTest() 351 URLRequestThrottlerManagerTest()
355 : request_(GURL(), DEFAULT_PRIORITY, NULL, &context_) {} 352 : request_(GURL(), DEFAULT_PRIORITY, NULL, &context_) {}
356 353
357 virtual void SetUp() { 354 virtual void SetUp() { request_.SetLoadFlags(0); }
358 request_.SetLoadFlags(0);
359 }
360 355
361 // context_ must be declared before request_. 356 // context_ must be declared before request_.
362 TestURLRequestContext context_; 357 TestURLRequestContext context_;
363 TestURLRequest request_; 358 TestURLRequest request_;
364 }; 359 };
365 360
366 TEST_F(URLRequestThrottlerManagerTest, IsUrlStandardised) { 361 TEST_F(URLRequestThrottlerManagerTest, IsUrlStandardised) {
367 MockURLRequestThrottlerManager manager; 362 MockURLRequestThrottlerManager manager;
368 GurlAndString test_values[] = { 363 GurlAndString test_values[] = {
369 GurlAndString(GURL("http://www.example.com"), 364 GurlAndString(GURL("http://www.example.com"),
(...skipping 16 matching lines...) Expand all
386 __LINE__), 381 __LINE__),
387 GurlAndString(GURL("http://www.example.com/index.php#superEntry"), 382 GurlAndString(GURL("http://www.example.com/index.php#superEntry"),
388 std::string("http://www.example.com/index.php"), 383 std::string("http://www.example.com/index.php"),
389 __LINE__), 384 __LINE__),
390 GurlAndString(GURL("http://www.example.com:1234/"), 385 GurlAndString(GURL("http://www.example.com:1234/"),
391 std::string("http://www.example.com:1234/"), 386 std::string("http://www.example.com:1234/"),
392 __LINE__)}; 387 __LINE__)};
393 388
394 for (unsigned int i = 0; i < arraysize(test_values); ++i) { 389 for (unsigned int i = 0; i < arraysize(test_values); ++i) {
395 std::string temp = manager.DoGetUrlIdFromUrl(test_values[i].url); 390 std::string temp = manager.DoGetUrlIdFromUrl(test_values[i].url);
396 EXPECT_EQ(temp, test_values[i].result) << 391 EXPECT_EQ(temp, test_values[i].result) << "Test case #" << i << " line "
397 "Test case #" << i << " line " << test_values[i].line << " failed"; 392 << test_values[i].line << " failed";
398 } 393 }
399 } 394 }
400 395
401 TEST_F(URLRequestThrottlerManagerTest, AreEntriesBeingCollected) { 396 TEST_F(URLRequestThrottlerManagerTest, AreEntriesBeingCollected) {
402 MockURLRequestThrottlerManager manager; 397 MockURLRequestThrottlerManager manager;
403 398
404 manager.CreateEntry(true); // true = Entry is outdated. 399 manager.CreateEntry(true); // true = Entry is outdated.
405 manager.CreateEntry(true); 400 manager.CreateEntry(true);
406 manager.CreateEntry(true); 401 manager.CreateEntry(true);
407 manager.DoGarbageCollectEntries(); 402 manager.DoGarbageCollectEntries();
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 FAIL(); 512 FAIL();
518 } 513 }
519 514
520 scoped_refptr<net::URLRequestThrottlerEntryInterface> entry_after = 515 scoped_refptr<net::URLRequestThrottlerEntryInterface> entry_after =
521 manager.RegisterRequestUrl(GURL("http://www.example.com/")); 516 manager.RegisterRequestUrl(GURL("http://www.example.com/"));
522 EXPECT_FALSE(entry_after->ShouldRejectRequest(request_)); 517 EXPECT_FALSE(entry_after->ShouldRejectRequest(request_));
523 } 518 }
524 } 519 }
525 520
526 } // namespace net 521 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698