| OLD | NEW |
| 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 // The tests in this file attempt to verify the following through simulation: | 5 // The tests in this file attempt to verify the following through simulation: |
| 6 // a) That a server experiencing overload will actually benefit from the | 6 // a) That a server experiencing overload will actually benefit from the |
| 7 // anti-DDoS throttling logic, i.e. that its traffic spike will subside | 7 // anti-DDoS throttling logic, i.e. that its traffic spike will subside |
| 8 // and be distributed over a longer period of time; | 8 // and be distributed over a longer period of time; |
| 9 // b) That "well-behaved" clients of a server under DDoS attack actually | 9 // b) That "well-behaved" clients of a server under DDoS attack actually |
| 10 // benefit from the anti-DDoS throttling logic; and | 10 // benefit from the anti-DDoS throttling logic; and |
| (...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 292 }; | 292 }; |
| 293 | 293 |
| 294 // Mock throttler entry used by Requester class. | 294 // Mock throttler entry used by Requester class. |
| 295 class MockURLRequestThrottlerEntry : public URLRequestThrottlerEntry { | 295 class MockURLRequestThrottlerEntry : public URLRequestThrottlerEntry { |
| 296 public: | 296 public: |
| 297 explicit MockURLRequestThrottlerEntry( | 297 explicit MockURLRequestThrottlerEntry( |
| 298 URLRequestThrottlerManager* manager) | 298 URLRequestThrottlerManager* manager) |
| 299 : URLRequestThrottlerEntry(manager, ""), | 299 : URLRequestThrottlerEntry(manager, ""), |
| 300 mock_backoff_entry_(&backoff_policy_) { | 300 mock_backoff_entry_(&backoff_policy_) { |
| 301 } | 301 } |
| 302 virtual ~MockURLRequestThrottlerEntry() {} | |
| 303 | 302 |
| 304 virtual const BackoffEntry* GetBackoffEntry() const OVERRIDE { | 303 virtual const BackoffEntry* GetBackoffEntry() const OVERRIDE { |
| 305 return &mock_backoff_entry_; | 304 return &mock_backoff_entry_; |
| 306 } | 305 } |
| 307 | 306 |
| 308 virtual BackoffEntry* GetBackoffEntry() OVERRIDE { | 307 virtual BackoffEntry* GetBackoffEntry() OVERRIDE { |
| 309 return &mock_backoff_entry_; | 308 return &mock_backoff_entry_; |
| 310 } | 309 } |
| 311 | 310 |
| 312 virtual TimeTicks ImplGetTimeNow() const OVERRIDE { | 311 virtual TimeTicks ImplGetTimeNow() const OVERRIDE { |
| 313 return fake_now_; | 312 return fake_now_; |
| 314 } | 313 } |
| 315 | 314 |
| 316 void SetFakeNow(const TimeTicks& fake_time) { | 315 void SetFakeNow(const TimeTicks& fake_time) { |
| 317 fake_now_ = fake_time; | 316 fake_now_ = fake_time; |
| 318 mock_backoff_entry_.set_fake_now(fake_time); | 317 mock_backoff_entry_.set_fake_now(fake_time); |
| 319 } | 318 } |
| 320 | 319 |
| 321 TimeTicks fake_now() const { | 320 TimeTicks fake_now() const { |
| 322 return fake_now_; | 321 return fake_now_; |
| 323 } | 322 } |
| 324 | 323 |
| 324 protected: |
| 325 virtual ~MockURLRequestThrottlerEntry() {} |
| 326 |
| 325 private: | 327 private: |
| 326 TimeTicks fake_now_; | 328 TimeTicks fake_now_; |
| 327 MockBackoffEntry mock_backoff_entry_; | 329 MockBackoffEntry mock_backoff_entry_; |
| 328 }; | 330 }; |
| 329 | 331 |
| 330 // Registry of results for a class of |Requester| objects (e.g. attackers vs. | 332 // Registry of results for a class of |Requester| objects (e.g. attackers vs. |
| 331 // regular clients). | 333 // regular clients). |
| 332 class RequesterResults { | 334 class RequesterResults { |
| 333 public: | 335 public: |
| 334 RequesterResults() | 336 RequesterResults() |
| (...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 743 trials[i].PrintTrialDescription(); | 745 trials[i].PrintTrialDescription(); |
| 744 trials[i].stats.ReportTrialResult(increase_ratio); | 746 trials[i].stats.ReportTrialResult(increase_ratio); |
| 745 } | 747 } |
| 746 | 748 |
| 747 VerboseOut("Average increase ratio was %.4f\n", average_increase_ratio); | 749 VerboseOut("Average increase ratio was %.4f\n", average_increase_ratio); |
| 748 VerboseOut("Maximum increase ratio was %.4f\n", max_increase_ratio); | 750 VerboseOut("Maximum increase ratio was %.4f\n", max_increase_ratio); |
| 749 } | 751 } |
| 750 | 752 |
| 751 } // namespace | 753 } // namespace |
| 752 } // namespace net | 754 } // namespace net |
| OLD | NEW |