diff options
author | wez@chromium.org <wez@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-24 03:53:39 +0000 |
---|---|---|
committer | wez@chromium.org <wez@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-24 03:53:39 +0000 |
commit | 4fdd06284b47b856130fdf684e720e2eccc784ec (patch) | |
tree | f7c4798cf910b5f58e8d2c8c73eb1b6936445c50 /remoting/base/rate_counter.cc | |
parent | 984aecc2429b5656d853cb1b9a70973fc477337c (diff) | |
download | chromium_src-4fdd06284b47b856130fdf684e720e2eccc784ec.zip chromium_src-4fdd06284b47b856130fdf684e720e2eccc784ec.tar.gz chromium_src-4fdd06284b47b856130fdf684e720e2eccc784ec.tar.bz2 |
Add unit tests for sub-components of CaptureScheduler.
Unit tests are added for RateCounter, RunningAverage and CaptureScheduler.
BUG=166275
Review URL: https://chromiumcodereview.appspot.com/12803008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@190172 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/base/rate_counter.cc')
-rw-r--r-- | remoting/base/rate_counter.cc | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/remoting/base/rate_counter.cc b/remoting/base/rate_counter.cc index fff9b6c..e6532da 100644 --- a/remoting/base/rate_counter.cc +++ b/remoting/base/rate_counter.cc @@ -4,36 +4,43 @@ #include "remoting/base/rate_counter.h" +#include "base/logging.h" + namespace remoting { RateCounter::RateCounter(base::TimeDelta time_window) : time_window_(time_window), sum_(0) { + DCHECK_GT(time_window.InMilliseconds(), 0); } RateCounter::~RateCounter() { } void RateCounter::Record(int64 value) { - base::Time current_time = base::Time::Now(); - Evict(current_time); + DCHECK(CalledOnValidThread()); - base::AutoLock auto_lock(lock_); + base::Time current_time = CurrentTime(); + EvictOldDataPoints(current_time); sum_ += value; data_points_.push(std::make_pair(current_time, value)); } double RateCounter::Rate() { - Evict(base::Time::Now()); + DCHECK(CalledOnValidThread()); - base::AutoLock auto_lock(lock_); - return static_cast<double>(base::Time::kMillisecondsPerSecond) * sum_ / - time_window_.InMilliseconds(); + EvictOldDataPoints(CurrentTime()); + return sum_ / time_window_.InSecondsF(); } -void RateCounter::Evict(base::Time current_time) { - base::AutoLock auto_lock(lock_); +void RateCounter::SetCurrentTimeForTest(base::Time current_time) { + DCHECK(CalledOnValidThread()); + DCHECK(current_time >= current_time_for_test_); + + current_time_for_test_ = current_time; +} +void RateCounter::EvictOldDataPoints(base::Time current_time) { // Remove data points outside of the window. base::Time window_start = current_time - time_window_; @@ -46,4 +53,10 @@ void RateCounter::Evict(base::Time current_time) { } } +base::Time RateCounter::CurrentTime() const { + if (current_time_for_test_ == base::Time()) + return base::Time::Now(); + return current_time_for_test_; +} + } // namespace remoting |