Index: chrome/browser/policy/cloud/rate_limiter_unittest.cc |
diff --git a/chrome/browser/policy/cloud/rate_limiter_unittest.cc b/chrome/browser/policy/cloud/rate_limiter_unittest.cc |
deleted file mode 100644 |
index 18995aaa38b390eb5c946cd9c3ba57fc2ba8b8af..0000000000000000000000000000000000000000 |
--- a/chrome/browser/policy/cloud/rate_limiter_unittest.cc |
+++ /dev/null |
@@ -1,121 +0,0 @@ |
-// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/policy/cloud/rate_limiter.h" |
- |
-#include "base/bind.h" |
-#include "base/bind_helpers.h" |
-#include "base/test/simple_test_tick_clock.h" |
-#include "base/test/test_simple_task_runner.h" |
-#include "base/time/tick_clock.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace policy { |
- |
-class RateLimiterTest : public testing::Test { |
- public: |
- RateLimiterTest() |
- : task_runner_(new base::TestSimpleTaskRunner()), |
- clock_(new base::SimpleTestTickClock()), |
- callbacks_(0), |
- max_requests_(5), |
- duration_(base::TimeDelta::FromHours(1)), |
- small_delta_(base::TimeDelta::FromMinutes(1)), |
- limiter_(max_requests_, |
- duration_, |
- base::Bind(&RateLimiterTest::Callback, base::Unretained(this)), |
- task_runner_, |
- scoped_ptr<base::TickClock>(clock_).Pass()) {} |
- virtual ~RateLimiterTest() {} |
- |
- protected: |
- void Callback() { |
- callbacks_++; |
- } |
- |
- scoped_refptr<base::TestSimpleTaskRunner> task_runner_; |
- base::SimpleTestTickClock* clock_; |
- size_t callbacks_; |
- const size_t max_requests_; |
- const base::TimeDelta duration_; |
- const base::TimeDelta small_delta_; |
- RateLimiter limiter_; |
-}; |
- |
-TEST_F(RateLimiterTest, LimitRequests) { |
- size_t count = 0; |
- for (size_t i = 0; i < max_requests_; ++i) { |
- EXPECT_EQ(count, callbacks_); |
- limiter_.PostRequest(); |
- ++count; |
- EXPECT_EQ(count, callbacks_); |
- EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); |
- clock_->Advance(small_delta_); |
- } |
- |
- for (size_t i = 0; i < 10; ++i) { |
- limiter_.PostRequest(); |
- EXPECT_EQ(max_requests_, callbacks_); |
- clock_->Advance(small_delta_); |
- EXPECT_FALSE(task_runner_->GetPendingTasks().empty()); |
- } |
- |
- // Now advance the clock beyond the duration. The callback is invoked once. |
- callbacks_ = 0; |
- clock_->Advance(duration_); |
- task_runner_->RunPendingTasks(); |
- EXPECT_EQ(1u, callbacks_); |
- EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); |
-} |
- |
-TEST_F(RateLimiterTest, Steady) { |
- const base::TimeDelta delta = duration_ / 2; |
- size_t count = 0; |
- for (int i = 0; i < 100; ++i) { |
- EXPECT_EQ(count, callbacks_); |
- limiter_.PostRequest(); |
- ++count; |
- EXPECT_EQ(count, callbacks_); |
- EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); |
- clock_->Advance(delta); |
- } |
-} |
- |
-TEST_F(RateLimiterTest, RetryAfterDelay) { |
- size_t count = 0; |
- base::TimeDelta total_delta; |
- // Fill the queue. |
- for (size_t i = 0; i < max_requests_; ++i) { |
- EXPECT_EQ(count, callbacks_); |
- limiter_.PostRequest(); |
- ++count; |
- EXPECT_EQ(count, callbacks_); |
- EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); |
- clock_->Advance(small_delta_); |
- total_delta += small_delta_; |
- } |
- |
- // Now post a request that will be delayed. |
- EXPECT_EQ(max_requests_, callbacks_); |
- limiter_.PostRequest(); |
- EXPECT_EQ(max_requests_, callbacks_); |
- EXPECT_FALSE(task_runner_->GetPendingTasks().empty()); |
- |
- while (total_delta < duration_) { |
- task_runner_->RunPendingTasks(); |
- // The queue is still full, so another task is immediately posted. |
- EXPECT_FALSE(task_runner_->GetPendingTasks().empty()); |
- clock_->Advance(small_delta_); |
- total_delta += small_delta_; |
- } |
- |
- // Now advance time beyond the initial duration. It will immediately execute |
- // the callback. |
- EXPECT_EQ(max_requests_, callbacks_); |
- task_runner_->RunPendingTasks(); |
- EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); |
- EXPECT_EQ(max_requests_ + 1, callbacks_); |
-} |
- |
-} // namespace policy |