| Index: net/url_request/url_request_throttler_unittest.cc
|
| diff --git a/net/url_request/url_request_throttler_unittest.cc b/net/url_request/url_request_throttler_unittest.cc
|
| index dcafca1203c0a82e1a923de7285fb956991ee515..3104a6048dadb50f540206e32e5386f82b591304 100644
|
| --- a/net/url_request/url_request_throttler_unittest.cc
|
| +++ b/net/url_request/url_request_throttler_unittest.cc
|
| @@ -36,7 +36,7 @@ class MockURLRequestThrottlerEntry : public URLRequestThrottlerEntry {
|
| explicit MockURLRequestThrottlerEntry(
|
| URLRequestThrottlerManager* manager)
|
| : URLRequestThrottlerEntry(manager, std::string()),
|
| - mock_backoff_entry_(&backoff_policy_) {
|
| + backoff_entry_(&backoff_policy_, &fake_clock_) {
|
| InitPolicy();
|
| }
|
| MockURLRequestThrottlerEntry(
|
| @@ -45,11 +45,10 @@ class MockURLRequestThrottlerEntry : public URLRequestThrottlerEntry {
|
| const TimeTicks& sliding_window_release_time,
|
| const TimeTicks& fake_now)
|
| : URLRequestThrottlerEntry(manager, std::string()),
|
| - fake_time_now_(fake_now),
|
| - mock_backoff_entry_(&backoff_policy_) {
|
| + fake_clock_(fake_now),
|
| + backoff_entry_(&backoff_policy_, &fake_clock_) {
|
| InitPolicy();
|
|
|
| - mock_backoff_entry_.set_fake_now(fake_now);
|
| set_exponential_backoff_release_time(exponential_backoff_release_time);
|
| set_sliding_window_release_time(sliding_window_release_time);
|
| }
|
| @@ -64,47 +63,45 @@ class MockURLRequestThrottlerEntry : public URLRequestThrottlerEntry {
|
| }
|
|
|
| const BackoffEntry* GetBackoffEntry() const override {
|
| - return &mock_backoff_entry_;
|
| + return &backoff_entry_;
|
| }
|
|
|
| - BackoffEntry* GetBackoffEntry() override { return &mock_backoff_entry_; }
|
| + BackoffEntry* GetBackoffEntry() override { return &backoff_entry_; }
|
|
|
| static bool ExplicitUserRequest(int load_flags) {
|
| return URLRequestThrottlerEntry::ExplicitUserRequest(load_flags);
|
| }
|
|
|
| void ResetToBlank(const TimeTicks& time_now) {
|
| - fake_time_now_ = time_now;
|
| - mock_backoff_entry_.set_fake_now(time_now);
|
| + fake_clock_.set_now(time_now);
|
|
|
| GetBackoffEntry()->Reset();
|
| - GetBackoffEntry()->SetCustomReleaseTime(time_now);
|
| set_sliding_window_release_time(time_now);
|
| }
|
|
|
| // Overridden for tests.
|
| - TimeTicks ImplGetTimeNow() const override { return fake_time_now_; }
|
| + TimeTicks ImplGetTimeNow() const override { return fake_clock_.NowTicks(); }
|
|
|
| - void set_exponential_backoff_release_time(
|
| - const base::TimeTicks& release_time) {
|
| + void set_fake_now(const TimeTicks& now) { fake_clock_.set_now(now); }
|
| +
|
| + void set_exponential_backoff_release_time(const TimeTicks& release_time) {
|
| GetBackoffEntry()->SetCustomReleaseTime(release_time);
|
| }
|
|
|
| - base::TimeTicks sliding_window_release_time() const {
|
| + TimeTicks sliding_window_release_time() const {
|
| return URLRequestThrottlerEntry::sliding_window_release_time();
|
| }
|
|
|
| - void set_sliding_window_release_time(
|
| - const base::TimeTicks& release_time) {
|
| - URLRequestThrottlerEntry::set_sliding_window_release_time(
|
| - release_time);
|
| + void set_sliding_window_release_time(const TimeTicks& release_time) {
|
| + URLRequestThrottlerEntry::set_sliding_window_release_time(release_time);
|
| }
|
|
|
| - TimeTicks fake_time_now_;
|
| - MockBackoffEntry mock_backoff_entry_;
|
| -
|
| protected:
|
| ~MockURLRequestThrottlerEntry() override {}
|
| +
|
| + private:
|
| + mutable TestTickClock fake_clock_;
|
| + BackoffEntry backoff_entry_;
|
| };
|
|
|
| class MockURLRequestThrottlerManager : public URLRequestThrottlerManager {
|
| @@ -197,7 +194,7 @@ TEST_F(URLRequestThrottlerEntryTest, CanThrottleRequest) {
|
| TestNetworkDelegate d;
|
| context_.set_network_delegate(&d);
|
| entry_->set_exponential_backoff_release_time(
|
| - entry_->fake_time_now_ + TimeDelta::FromMilliseconds(1));
|
| + entry_->ImplGetTimeNow() + TimeDelta::FromMilliseconds(1));
|
|
|
| d.set_can_throttle_requests(false);
|
| EXPECT_FALSE(entry_->ShouldRejectRequest(*request_,
|
| @@ -210,7 +207,7 @@ TEST_F(URLRequestThrottlerEntryTest, CanThrottleRequest) {
|
| TEST_F(URLRequestThrottlerEntryTest, InterfaceDuringExponentialBackoff) {
|
| base::HistogramTester histogram_tester;
|
| entry_->set_exponential_backoff_release_time(
|
| - entry_->fake_time_now_ + TimeDelta::FromMilliseconds(1));
|
| + entry_->ImplGetTimeNow() + TimeDelta::FromMilliseconds(1));
|
| EXPECT_TRUE(entry_->ShouldRejectRequest(*request_,
|
| context_.network_delegate()));
|
|
|
| @@ -225,11 +222,11 @@ TEST_F(URLRequestThrottlerEntryTest, InterfaceDuringExponentialBackoff) {
|
|
|
| TEST_F(URLRequestThrottlerEntryTest, InterfaceNotDuringExponentialBackoff) {
|
| base::HistogramTester histogram_tester;
|
| - entry_->set_exponential_backoff_release_time(entry_->fake_time_now_);
|
| + entry_->set_exponential_backoff_release_time(entry_->ImplGetTimeNow());
|
| EXPECT_FALSE(entry_->ShouldRejectRequest(*request_,
|
| context_.network_delegate()));
|
| entry_->set_exponential_backoff_release_time(
|
| - entry_->fake_time_now_ - TimeDelta::FromMilliseconds(1));
|
| + entry_->ImplGetTimeNow() - TimeDelta::FromMilliseconds(1));
|
| EXPECT_FALSE(entry_->ShouldRejectRequest(*request_,
|
| context_.network_delegate()));
|
|
|
| @@ -240,14 +237,16 @@ TEST_F(URLRequestThrottlerEntryTest, InterfaceNotDuringExponentialBackoff) {
|
| TEST_F(URLRequestThrottlerEntryTest, InterfaceUpdateFailure) {
|
| MockURLRequestThrottlerHeaderAdapter failure_response(503);
|
| entry_->UpdateWithResponse(std::string(), &failure_response);
|
| - EXPECT_GT(entry_->GetExponentialBackoffReleaseTime(), entry_->fake_time_now_)
|
| + EXPECT_GT(entry_->GetExponentialBackoffReleaseTime(),
|
| + entry_->ImplGetTimeNow())
|
| << "A failure should increase the release_time";
|
| }
|
|
|
| TEST_F(URLRequestThrottlerEntryTest, InterfaceUpdateSuccess) {
|
| MockURLRequestThrottlerHeaderAdapter success_response(200);
|
| entry_->UpdateWithResponse(std::string(), &success_response);
|
| - EXPECT_EQ(entry_->GetExponentialBackoffReleaseTime(), entry_->fake_time_now_)
|
| + EXPECT_EQ(entry_->GetExponentialBackoffReleaseTime(),
|
| + entry_->ImplGetTimeNow())
|
| << "A success should not add any delay";
|
| }
|
|
|
| @@ -256,7 +255,8 @@ TEST_F(URLRequestThrottlerEntryTest, InterfaceUpdateSuccessThenFailure) {
|
| MockURLRequestThrottlerHeaderAdapter success_response(200);
|
| entry_->UpdateWithResponse(std::string(), &success_response);
|
| entry_->UpdateWithResponse(std::string(), &failure_response);
|
| - EXPECT_GT(entry_->GetExponentialBackoffReleaseTime(), entry_->fake_time_now_)
|
| + EXPECT_GT(entry_->GetExponentialBackoffReleaseTime(),
|
| + entry_->ImplGetTimeNow())
|
| << "This scenario should add delay";
|
| entry_->UpdateWithResponse(std::string(), &success_response);
|
| }
|
| @@ -315,13 +315,13 @@ TEST_F(URLRequestThrottlerEntryTest, SlidingWindow) {
|
| int sliding_window =
|
| URLRequestThrottlerEntry::kDefaultSlidingWindowPeriodMs;
|
|
|
| - TimeTicks time_1 = entry_->fake_time_now_ +
|
| + TimeTicks time_1 = entry_->ImplGetTimeNow() +
|
| TimeDelta::FromMilliseconds(sliding_window / 3);
|
| - TimeTicks time_2 = entry_->fake_time_now_ +
|
| + TimeTicks time_2 = entry_->ImplGetTimeNow() +
|
| TimeDelta::FromMilliseconds(2 * sliding_window / 3);
|
| - TimeTicks time_3 = entry_->fake_time_now_ +
|
| + TimeTicks time_3 = entry_->ImplGetTimeNow() +
|
| TimeDelta::FromMilliseconds(sliding_window);
|
| - TimeTicks time_4 = entry_->fake_time_now_ +
|
| + TimeTicks time_4 = entry_->ImplGetTimeNow() +
|
| TimeDelta::FromMilliseconds(sliding_window + 2 * sliding_window / 3);
|
|
|
| entry_->set_exponential_backoff_release_time(time_1);
|
| @@ -332,7 +332,7 @@ TEST_F(URLRequestThrottlerEntryTest, SlidingWindow) {
|
| }
|
| EXPECT_EQ(time_2, entry_->sliding_window_release_time());
|
|
|
| - entry_->fake_time_now_ = time_3;
|
| + entry_->set_fake_now(time_3);
|
|
|
| for (int i = 0; i < (max_send + 1) / 2; ++i)
|
| EXPECT_EQ(0, entry_->ReserveSendingTimeForNextRequest(TimeTicks()));
|
|
|