Update idle timer test to use longer intervals.
This should increase reliability issues seen on the bbots. Review URL: http://codereview.chromium.org/9261 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@4471 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
@ -10,6 +10,13 @@ using base::Time;
|
|||||||
using base::TimeDelta;
|
using base::TimeDelta;
|
||||||
using base::IdleTimer;
|
using base::IdleTimer;
|
||||||
|
|
||||||
|
|
||||||
|
// If the timers fire too quickly, it can be tricky to make timer tests
|
||||||
|
// reliable on all buildbots. This constant sets a minimum timer delta where
|
||||||
|
// we expect that we should be able to reliably count timers without problems
|
||||||
|
// due to slight clock/scheduling variances.
|
||||||
|
const int kSafeTestIntervalMs = 500;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
// We Mock the GetLastInputInfo function to return
|
// We Mock the GetLastInputInfo function to return
|
||||||
@ -27,7 +34,7 @@ bool MockIdleTimeSource(int32 *milliseconds_interval_since_last_event) {
|
|||||||
class TestIdleTask : public IdleTimer {
|
class TestIdleTask : public IdleTimer {
|
||||||
public:
|
public:
|
||||||
TestIdleTask(bool repeat)
|
TestIdleTask(bool repeat)
|
||||||
: IdleTimer(TimeDelta::FromMilliseconds(100), repeat),
|
: IdleTimer(TimeDelta::FromMilliseconds(kSafeTestIntervalMs), repeat),
|
||||||
idle_counter_(0) {
|
idle_counter_(0) {
|
||||||
set_idle_time_source(MockIdleTimeSource);
|
set_idle_time_source(MockIdleTimeSource);
|
||||||
}
|
}
|
||||||
@ -72,7 +79,7 @@ class IdleTimerTest : public testing::Test {
|
|||||||
// then will not fire again unless it goes non-idle first.
|
// then will not fire again unless it goes non-idle first.
|
||||||
|
|
||||||
TEST_F(IdleTimerTest, NoRepeatIdle) {
|
TEST_F(IdleTimerTest, NoRepeatIdle) {
|
||||||
// Create an IdleTimer, which should fire once after 100ms.
|
// Create an IdleTimer, which should fire once after 500ms.
|
||||||
// Create a Quit timer which will fire after 1s.
|
// Create a Quit timer which will fire after 1s.
|
||||||
// Verify that we fired exactly once.
|
// Verify that we fired exactly once.
|
||||||
|
|
||||||
@ -81,7 +88,8 @@ TEST_F(IdleTimerTest, NoRepeatIdle) {
|
|||||||
|
|
||||||
TestFinishedTask finish_task;
|
TestFinishedTask finish_task;
|
||||||
base::OneShotTimer<TestFinishedTask> timer;
|
base::OneShotTimer<TestFinishedTask> timer;
|
||||||
timer.Start(TimeDelta::FromSeconds(1), &finish_task, &TestFinishedTask::Run);
|
timer.Start(TimeDelta::FromMilliseconds(2 * kSafeTestIntervalMs),
|
||||||
|
&finish_task, &TestFinishedTask::Run);
|
||||||
|
|
||||||
test_task.Start();
|
test_task.Start();
|
||||||
MessageLoop::current()->Run();
|
MessageLoop::current()->Run();
|
||||||
@ -90,9 +98,9 @@ TEST_F(IdleTimerTest, NoRepeatIdle) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(IdleTimerTest, NoRepeatFlipIdleOnce) {
|
TEST_F(IdleTimerTest, NoRepeatFlipIdleOnce) {
|
||||||
// Create an IdleTimer, which should fire once after 100ms.
|
// Create an IdleTimer, which should fire once after 500ms.
|
||||||
// Create a Quit timer which will fire after 1s.
|
// Create a Quit timer which will fire after 5s.
|
||||||
// Create a timer to reset once, idle after 500ms.
|
// Create a timer to reset once, idle after 2s.
|
||||||
// Verify that we fired exactly twice.
|
// Verify that we fired exactly twice.
|
||||||
|
|
||||||
mock_timer_started = Time::Now();
|
mock_timer_started = Time::Now();
|
||||||
@ -102,11 +110,11 @@ TEST_F(IdleTimerTest, NoRepeatFlipIdleOnce) {
|
|||||||
ResetIdleTask reset_task;
|
ResetIdleTask reset_task;
|
||||||
|
|
||||||
base::OneShotTimer<TestFinishedTask> t1;
|
base::OneShotTimer<TestFinishedTask> t1;
|
||||||
t1.Start(TimeDelta::FromMilliseconds(1000), &finish_task,
|
t1.Start(TimeDelta::FromMilliseconds(10 * kSafeTestIntervalMs), &finish_task,
|
||||||
&TestFinishedTask::Run);
|
&TestFinishedTask::Run);
|
||||||
|
|
||||||
base::OneShotTimer<ResetIdleTask> t2;
|
base::OneShotTimer<ResetIdleTask> t2;
|
||||||
t2.Start(TimeDelta::FromMilliseconds(500), &reset_task,
|
t2.Start(TimeDelta::FromMilliseconds(4 * kSafeTestIntervalMs), &reset_task,
|
||||||
&ResetIdleTask::Run);
|
&ResetIdleTask::Run);
|
||||||
|
|
||||||
test_task.Start();
|
test_task.Start();
|
||||||
@ -117,8 +125,8 @@ TEST_F(IdleTimerTest, NoRepeatFlipIdleOnce) {
|
|||||||
|
|
||||||
// TODO(darin): http://crbug.com/3704
|
// TODO(darin): http://crbug.com/3704
|
||||||
TEST_F(IdleTimerTest, DISABLED_NoRepeatNotIdle) {
|
TEST_F(IdleTimerTest, DISABLED_NoRepeatNotIdle) {
|
||||||
// Create an IdleTimer, which should fire once after 100ms.
|
// Create an IdleTimer, which should fire once after 500ms.
|
||||||
// Create a Quit timer which will fire after 1s.
|
// Create a Quit timer which will fire after 5s.
|
||||||
// Create a timer to reset idle every 50ms.
|
// Create a timer to reset idle every 50ms.
|
||||||
// Verify that we never fired.
|
// Verify that we never fired.
|
||||||
|
|
||||||
@ -129,7 +137,7 @@ TEST_F(IdleTimerTest, DISABLED_NoRepeatNotIdle) {
|
|||||||
ResetIdleTask reset_task;
|
ResetIdleTask reset_task;
|
||||||
|
|
||||||
base::OneShotTimer<TestFinishedTask> t;
|
base::OneShotTimer<TestFinishedTask> t;
|
||||||
t.Start(TimeDelta::FromMilliseconds(1000), &finish_task,
|
t.Start(TimeDelta::FromMilliseconds(10 * kSafeTestIntervalMs), &finish_task,
|
||||||
&TestFinishedTask::Run);
|
&TestFinishedTask::Run);
|
||||||
|
|
||||||
base::RepeatingTimer<ResetIdleTask> reset_timer;
|
base::RepeatingTimer<ResetIdleTask> reset_timer;
|
||||||
@ -152,34 +160,33 @@ TEST_F(IdleTimerTest, DISABLED_NoRepeatNotIdle) {
|
|||||||
// firing over and over.
|
// firing over and over.
|
||||||
|
|
||||||
TEST_F(IdleTimerTest, Repeat) {
|
TEST_F(IdleTimerTest, Repeat) {
|
||||||
// Create an IdleTimer, which should fire repeatedly after 100ms.
|
// Create an IdleTimer, which should fire repeatedly after 500ms.
|
||||||
// Create a Quit timer which will fire after 1.05s.
|
// Create a Quit timer which will fire after 1.5s.
|
||||||
// Verify that we fired 10 times.
|
// Verify that we fired 2-3 times.
|
||||||
mock_timer_started = Time::Now();
|
mock_timer_started = Time::Now();
|
||||||
TestIdleTask test_task(true);
|
TestIdleTask test_task(true);
|
||||||
|
|
||||||
TestFinishedTask finish_task;
|
TestFinishedTask finish_task;
|
||||||
|
|
||||||
base::OneShotTimer<TestFinishedTask> t;
|
base::OneShotTimer<TestFinishedTask> t;
|
||||||
t.Start(TimeDelta::FromMilliseconds(1050), &finish_task,
|
t.Start(TimeDelta::FromMilliseconds(kSafeTestIntervalMs * 3), &finish_task,
|
||||||
&TestFinishedTask::Run);
|
&TestFinishedTask::Run);
|
||||||
|
|
||||||
test_task.Start();
|
test_task.Start();
|
||||||
MessageLoop::current()->Run();
|
MessageLoop::current()->Run();
|
||||||
|
|
||||||
// In a perfect world, the idle_counter should be 10. However,
|
// In a perfect world, the idle_counter should be 2. However,
|
||||||
// since timers aren't guaranteed to fire perfectly, this can
|
// due to timer 'slop', accept 2 or 3.
|
||||||
// be less. Just expect more than 5 and no more than 10.
|
EXPECT_GE(test_task.get_idle_counter(), 2);
|
||||||
EXPECT_GT(test_task.get_idle_counter(), 5);
|
EXPECT_LE(test_task.get_idle_counter(), 3);
|
||||||
EXPECT_LE(test_task.get_idle_counter(), 10);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(darin): http://crbug.com/3780
|
// TODO(darin): http://crbug.com/3780
|
||||||
TEST_F(IdleTimerTest, DISABLED_RepeatIdleReset) {
|
TEST_F(IdleTimerTest, RepeatIdleReset) {
|
||||||
// Create an IdleTimer, which should fire repeatedly after 100ms.
|
// Create an IdleTimer, which should fire repeatedly after 500ms.
|
||||||
// Create a Quit timer which will fire after 1s.
|
// Create a Quit timer which will fire after 5s.
|
||||||
// Create a reset timer, which fires after 550ms
|
// Create a reset timer, which fires after 2500ms
|
||||||
// Verify that we fired 9 times.
|
// Verify that we fired 8-10 times.
|
||||||
mock_timer_started = Time::Now();
|
mock_timer_started = Time::Now();
|
||||||
TestIdleTask test_task(true);
|
TestIdleTask test_task(true);
|
||||||
|
|
||||||
@ -187,11 +194,11 @@ TEST_F(IdleTimerTest, DISABLED_RepeatIdleReset) {
|
|||||||
TestFinishedTask finish_task;
|
TestFinishedTask finish_task;
|
||||||
|
|
||||||
base::OneShotTimer<TestFinishedTask> t1;
|
base::OneShotTimer<TestFinishedTask> t1;
|
||||||
t1.Start(TimeDelta::FromMilliseconds(1000), &finish_task,
|
t1.Start(TimeDelta::FromMilliseconds(10 * kSafeTestIntervalMs), &finish_task,
|
||||||
&TestFinishedTask::Run);
|
&TestFinishedTask::Run);
|
||||||
|
|
||||||
base::OneShotTimer<ResetIdleTask> t2;
|
base::OneShotTimer<ResetIdleTask> t2;
|
||||||
t2.Start(TimeDelta::FromMilliseconds(550), &reset_task,
|
t2.Start(TimeDelta::FromMilliseconds(5 * kSafeTestIntervalMs), &reset_task,
|
||||||
&ResetIdleTask::Run);
|
&ResetIdleTask::Run);
|
||||||
|
|
||||||
test_task.Start();
|
test_task.Start();
|
||||||
@ -199,15 +206,15 @@ TEST_F(IdleTimerTest, DISABLED_RepeatIdleReset) {
|
|||||||
|
|
||||||
// In a perfect world, the idle_counter should be 9. However,
|
// In a perfect world, the idle_counter should be 9. However,
|
||||||
// since timers aren't guaranteed to fire perfectly, this can
|
// since timers aren't guaranteed to fire perfectly, this can
|
||||||
// be less. Just expect more than 5 and no more than 9.
|
// be less. Accept 8-10.
|
||||||
EXPECT_GT(test_task.get_idle_counter(), 5);
|
EXPECT_GE(test_task.get_idle_counter(), 8);
|
||||||
EXPECT_LE(test_task.get_idle_counter(), 9);
|
EXPECT_LE(test_task.get_idle_counter(), 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(darin): http://crbug.com/3704
|
// TODO(darin): http://crbug.com/3704
|
||||||
TEST_F(IdleTimerTest, DISABLED_RepeatNotIdle) {
|
TEST_F(IdleTimerTest, DISABLED_RepeatNotIdle) {
|
||||||
// Create an IdleTimer, which should fire repeatedly after 100ms.
|
// Create an IdleTimer, which should fire repeatedly after 500ms.
|
||||||
// Create a Quit timer which will fire after 1s.
|
// Create a Quit timer which will fire after 4s.
|
||||||
// Create a timer to reset idle every 50ms.
|
// Create a timer to reset idle every 50ms.
|
||||||
// Verify that we never fired.
|
// Verify that we never fired.
|
||||||
|
|
||||||
@ -218,7 +225,7 @@ TEST_F(IdleTimerTest, DISABLED_RepeatNotIdle) {
|
|||||||
ResetIdleTask reset_task;
|
ResetIdleTask reset_task;
|
||||||
|
|
||||||
base::OneShotTimer<TestFinishedTask> t;
|
base::OneShotTimer<TestFinishedTask> t;
|
||||||
t.Start(TimeDelta::FromMilliseconds(1000), &finish_task,
|
t.Start(TimeDelta::FromMilliseconds(8 * kSafeTestIntervalMs), &finish_task,
|
||||||
&TestFinishedTask::Run);
|
&TestFinishedTask::Run);
|
||||||
|
|
||||||
base::RepeatingTimer<ResetIdleTask> reset_timer;
|
base::RepeatingTimer<ResetIdleTask> reset_timer;
|
||||||
|
Reference in New Issue
Block a user