Skip to content

Commit

Permalink
Replaced TestNowSource with SimpleTestTickClock.
Browse files Browse the repository at this point in the history
Removed TestNowSource completely. Its usage updated under cc/test, cc/scheduler, cc/surfaces and components/scheduler with coressponding api of SimpleTestTickClock. Refactored num_now_calls_ functionality in NowNotCalledWhenThereAreNoDelayedTasks test to use TestAlwaysFailTimeSource

BUG=440281, 494887
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel

Review URL: https://codereview.chromium.org/1132753008

Cr-Commit-Position: refs/heads/master@{#334341}
  • Loading branch information
arpv authored and Commit bot committed Jun 13, 2015
1 parent 9501f2b commit 2e4c4e1
Show file tree
Hide file tree
Showing 29 changed files with 469 additions and 603 deletions.
1 change: 1 addition & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ Andrew Brampton <me@bramp.net>
Andrew Tulloch <andrew@tullo.ch>
Anish Patankar <anish.p@samsung.com>
Ankit Kumar <ankit2.kumar@samsung.com>
Ankur Verma <ankur1.verma@samsung.com>
Anne Kao <annekao94@gmail.com>
Anssi Hannula <anssi.hannula@iki.fi>
Antonio Gomes <a1.gomes@sisa.samsung.com>
Expand Down
2 changes: 0 additions & 2 deletions cc/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -673,8 +673,6 @@ source_set("test_support") {
"test/test_image_factory.h",
"test/test_in_process_context_provider.cc",
"test/test_in_process_context_provider.h",
"test/test_now_source.cc",
"test/test_now_source.h",
"test/test_occlusion_tracker.h",
"test/test_shared_bitmap_manager.cc",
"test/test_shared_bitmap_manager.h",
Expand Down
2 changes: 0 additions & 2 deletions cc/cc_tests.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -262,8 +262,6 @@
'test/test_image_factory.h',
'test/test_in_process_context_provider.cc',
'test/test_in_process_context_provider.h',
'test/test_now_source.cc',
'test/test_now_source.h',
'test/test_occlusion_tracker.h',
'test/test_shared_bitmap_manager.cc',
'test/test_shared_bitmap_manager.h',
Expand Down
64 changes: 34 additions & 30 deletions cc/scheduler/begin_frame_source_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -314,39 +314,41 @@ TEST(BeginFrameSourceBaseTest, DetectAsValueIntoLoop) {
class TestBackToBackBeginFrameSource : public BackToBackBeginFrameSource {
public:
static scoped_ptr<TestBackToBackBeginFrameSource> Create(
scoped_refptr<TestNowSource> now_src,
base::SimpleTestTickClock* now_src,
base::SingleThreadTaskRunner* task_runner) {
return make_scoped_ptr(
new TestBackToBackBeginFrameSource(now_src, task_runner));
}

protected:
TestBackToBackBeginFrameSource(scoped_refptr<TestNowSource> now_src,
TestBackToBackBeginFrameSource(base::SimpleTestTickClock* now_src,
base::SingleThreadTaskRunner* task_runner)
: BackToBackBeginFrameSource(task_runner), now_src_(now_src) {}

base::TimeTicks Now() override { return now_src_->Now(); }
base::TimeTicks Now() override { return now_src_->NowTicks(); }

scoped_refptr<TestNowSource> now_src_;
// Not owned.
base::SimpleTestTickClock* now_src_;
};

class BackToBackBeginFrameSourceTest : public ::testing::Test {
public:
static const int64_t kDeadline;
static const int64_t kInterval;

scoped_refptr<TestNowSource> now_src_;
scoped_ptr<base::SimpleTestTickClock> now_src_;
scoped_refptr<OrderedSimpleTaskRunner> task_runner_;
scoped_ptr<TestBackToBackBeginFrameSource> source_;
scoped_ptr<MockBeginFrameObserver> obs_;

void SetUp() override {
now_src_ = TestNowSource::Create(1000);
now_src_.reset(new base::SimpleTestTickClock());
now_src_->Advance(base::TimeDelta::FromMicroseconds(1000));
task_runner_ =
make_scoped_refptr(new OrderedSimpleTaskRunner(now_src_, false));
make_scoped_refptr(new OrderedSimpleTaskRunner(now_src_.get(), false));
task_runner_->SetRunTaskLimit(1);
source_ =
TestBackToBackBeginFrameSource::Create(now_src_, task_runner_.get());
source_ = TestBackToBackBeginFrameSource::Create(now_src_.get(),
task_runner_.get());
obs_ = make_scoped_ptr(new ::testing::StrictMock<MockBeginFrameObserver>());
source_->AddObserver(obs_.get());
}
Expand All @@ -367,7 +369,7 @@ TEST_F(BackToBackBeginFrameSourceTest, SetNeedsBeginFramesSendsBeginFrame) {
task_runner_->RunUntilIdle();

EXPECT_BEGIN_FRAME_USED(*obs_, 1100, 1100 + kDeadline, kInterval);
now_src_->AdvanceNowMicroseconds(100);
now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
source_->DidFinishFrame(0);
task_runner_->RunUntilIdle();
}
Expand All @@ -390,7 +392,7 @@ TEST_F(BackToBackBeginFrameSourceTest,
source_->SetNeedsBeginFrames(true);
task_runner_->RunUntilIdle();

now_src_->AdvanceNowMicroseconds(100);
now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
source_->DidFinishFrame(0);
source_->SetNeedsBeginFrames(false);

Expand All @@ -404,14 +406,14 @@ TEST_F(BackToBackBeginFrameSourceTest,
source_->SetNeedsBeginFrames(true);
task_runner_->RunUntilIdle();

now_src_->AdvanceNowMicroseconds(100);
now_src_->Advance(base::TimeDelta::FromMicroseconds(100));

source_->SetNeedsBeginFrames(false);
now_src_->AdvanceNowMicroseconds(10);
now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
source_->DidFinishFrame(0);
now_src_->AdvanceNowMicroseconds(10);
now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
source_->SetNeedsBeginFrames(false);
now_src_->AdvanceNowMicroseconds(10);
now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
source_->SetNeedsBeginFrames(true);

EXPECT_BEGIN_FRAME_USED(*obs_, 1130, 1130 + kDeadline, kInterval);
Expand All @@ -425,13 +427,13 @@ TEST_F(BackToBackBeginFrameSourceTest,
source_->SetNeedsBeginFrames(true);
task_runner_->RunUntilIdle();

now_src_->AdvanceNowMicroseconds(100);
now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
source_->DidFinishFrame(0);
now_src_->AdvanceNowMicroseconds(10);
now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
source_->SetNeedsBeginFrames(false);
now_src_->AdvanceNowMicroseconds(10);
now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
source_->SetNeedsBeginFrames(true);
now_src_->AdvanceNowMicroseconds(10);
now_src_->Advance(base::TimeDelta::FromMicroseconds(10));

EXPECT_BEGIN_FRAME_USED(*obs_, 1130, 1130 + kDeadline, kInterval);
EXPECT_TRUE(task_runner_->HasPendingTasks());
Expand All @@ -449,7 +451,7 @@ TEST_F(BackToBackBeginFrameSourceTest, DidFinishFrameRemainingFrames) {
source_->SetNeedsBeginFrames(true);
task_runner_->RunUntilIdle();

now_src_->AdvanceNowMicroseconds(100);
now_src_->Advance(base::TimeDelta::FromMicroseconds(100));

source_->DidFinishFrame(3);
EXPECT_FALSE(task_runner_->HasPendingTasks());
Expand All @@ -469,14 +471,14 @@ TEST_F(BackToBackBeginFrameSourceTest, DidFinishFrameMultipleCallsIdempotent) {
EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
task_runner_->RunUntilIdle();

now_src_->AdvanceNowMicroseconds(100);
now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
source_->DidFinishFrame(0);
source_->DidFinishFrame(0);
source_->DidFinishFrame(0);
EXPECT_BEGIN_FRAME_USED(*obs_, 1100, 1100 + kDeadline, kInterval);
task_runner_->RunUntilIdle();

now_src_->AdvanceNowMicroseconds(100);
now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
source_->DidFinishFrame(0);
source_->DidFinishFrame(0);
source_->DidFinishFrame(0);
Expand All @@ -489,9 +491,9 @@ TEST_F(BackToBackBeginFrameSourceTest, DelayInPostedTaskProducesCorrectFrame) {
source_->SetNeedsBeginFrames(true);
task_runner_->RunUntilIdle();

now_src_->AdvanceNowMicroseconds(100);
now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
source_->DidFinishFrame(0);
now_src_->AdvanceNowMicroseconds(50);
now_src_->Advance(base::TimeDelta::FromMicroseconds(50));
EXPECT_BEGIN_FRAME_USED(*obs_, 1150, 1150 + kDeadline, kInterval);

EXPECT_TRUE(task_runner_->HasPendingTasks());
Expand All @@ -501,17 +503,19 @@ TEST_F(BackToBackBeginFrameSourceTest, DelayInPostedTaskProducesCorrectFrame) {
// SyntheticBeginFrameSource testing ------------------------------------------
class SyntheticBeginFrameSourceTest : public ::testing::Test {
public:
scoped_refptr<TestNowSource> now_src_;
scoped_ptr<base::SimpleTestTickClock> now_src_;
scoped_refptr<OrderedSimpleTaskRunner> task_runner_;
scoped_ptr<TestSyntheticBeginFrameSource> source_;
scoped_ptr<MockBeginFrameObserver> obs_;

void SetUp() override {
now_src_ = TestNowSource::Create(1000);
now_src_.reset(new base::SimpleTestTickClock());
now_src_->Advance(base::TimeDelta::FromMicroseconds(1000));
task_runner_ =
make_scoped_refptr(new OrderedSimpleTaskRunner(now_src_, false));
make_scoped_refptr(new OrderedSimpleTaskRunner(now_src_.get(), false));
source_ = TestSyntheticBeginFrameSource::Create(
now_src_, task_runner_.get(), base::TimeDelta::FromMicroseconds(10000));
now_src_.get(), task_runner_.get(),
base::TimeDelta::FromMicroseconds(10000));
obs_ = make_scoped_ptr(new MockBeginFrameObserver());
source_->AddObserver(obs_.get());
}
Expand All @@ -521,7 +525,7 @@ class SyntheticBeginFrameSourceTest : public ::testing::Test {

TEST_F(SyntheticBeginFrameSourceTest,
SetNeedsBeginFramesCallsOnBeginFrameWithMissedTick) {
now_src_->SetNowMicroseconds(10010);
now_src_->Advance(base::TimeDelta::FromMicroseconds(9010));
EXPECT_CALL((*obs_), OnBeginFrame(CreateBeginFrameArgsForTesting(
BEGINFRAME_FROM_HERE, 10000, 20000, 10000,
BeginFrameArgs::MISSED)));
Expand All @@ -535,7 +539,7 @@ TEST_F(SyntheticBeginFrameSourceTest,
EXPECT_EQ(10000, task_runner_->NextTaskTime().ToInternalValue());

EXPECT_BEGIN_FRAME_USED(*obs_, 10000, 20000, 10000);
now_src_->SetNowMicroseconds(10010);
now_src_->Advance(base::TimeDelta::FromMicroseconds(9010));
task_runner_->RunPendingTasks();
}

Expand Down
50 changes: 26 additions & 24 deletions cc/scheduler/scheduler_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -254,11 +254,13 @@ class FakeExternalBeginFrameSource : public BeginFrameSourceBase {
class SchedulerTest : public testing::Test {
public:
SchedulerTest()
: now_src_(TestNowSource::Create()),
task_runner_(new OrderedSimpleTaskRunner(now_src_, true)),
: now_src_(new base::SimpleTestTickClock()),
task_runner_(new OrderedSimpleTaskRunner(now_src_.get(), true)),
fake_external_begin_frame_source_(nullptr) {
// A bunch of tests require Now() to be > BeginFrameArgs::DefaultInterval()
now_src_->AdvanceNow(base::TimeDelta::FromMilliseconds(100));
now_src_->Advance(base::TimeDelta::FromMicroseconds(10000));
// A bunch of tests require NowTicks()
// to be > BeginFrameArgs::DefaultInterval()
now_src_->Advance(base::TimeDelta::FromMilliseconds(100));
// Fail if we need to run 100 tasks in a row.
task_runner_->SetRunTaskLimit(100);
}
Expand All @@ -274,7 +276,7 @@ class SchedulerTest : public testing::Test {
fake_external_begin_frame_source_ =
fake_external_begin_frame_source.get();
}
scheduler_ = TestScheduler::Create(now_src_, client_.get(),
scheduler_ = TestScheduler::Create(now_src_.get(), client_.get(),
scheduler_settings_, 0, task_runner_,
fake_external_begin_frame_source.Pass());
DCHECK(scheduler_);
Expand All @@ -301,7 +303,7 @@ class SchedulerTest : public testing::Test {
}

OrderedSimpleTaskRunner& task_runner() { return *task_runner_; }
TestNowSource* now_src() { return now_src_.get(); }
base::SimpleTestTickClock* now_src() { return now_src_.get(); }

// As this function contains EXPECT macros, to allow debugging it should be
// called inside EXPECT_SCOPED like so;
Expand Down Expand Up @@ -405,7 +407,7 @@ class SchedulerTest : public testing::Test {
DCHECK(scheduler_->settings().use_external_begin_frame_source);
// Creep the time forward so that any BeginFrameArgs is not equal to the
// last one otherwise we violate the BeginFrameSource contract.
now_src_->AdvanceNow(BeginFrameArgs::DefaultInterval());
now_src_->Advance(BeginFrameArgs::DefaultInterval());
BeginFrameArgs args =
CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, now_src());
fake_external_begin_frame_source_->TestOnBeginFrame(args);
Expand All @@ -430,7 +432,7 @@ class SchedulerTest : public testing::Test {
bool impl_side_painting);
void DidLoseOutputSurfaceAfterReadyToCommit(bool impl_side_painting);

scoped_refptr<TestNowSource> now_src_;
scoped_ptr<base::SimpleTestTickClock> now_src_;
scoped_refptr<OrderedSimpleTaskRunner> task_runner_;
FakeExternalBeginFrameSource* fake_external_begin_frame_source_;
SchedulerSettings scheduler_settings_;
Expand Down Expand Up @@ -1819,9 +1821,9 @@ TEST_F(SchedulerTest, BeginRetroFrame_SwapThrottled) {

// Let time pass sufficiently beyond the regular deadline but not beyond the
// late deadline.
now_src()->AdvanceNow(BeginFrameArgs::DefaultInterval() -
base::TimeDelta::FromMicroseconds(1));
task_runner().RunUntilTime(now_src()->Now());
now_src()->Advance(BeginFrameArgs::DefaultInterval() -
base::TimeDelta::FromMicroseconds(1));
task_runner().RunUntilTime(now_src()->NowTicks());
EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());

// Take us out of a swap throttled state.
Expand All @@ -1832,7 +1834,7 @@ TEST_F(SchedulerTest, BeginRetroFrame_SwapThrottled) {
client_->Reset();

// Verify that the deadline was rescheduled.
task_runner().RunUntilTime(now_src()->Now());
task_runner().RunUntilTime(now_src()->NowTicks());
EXPECT_SINGLE_ACTION("ScheduledActionDrawAndSwapIfPossible", client_);
EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
EXPECT_TRUE(client_->needs_begin_frames());
Expand Down Expand Up @@ -1882,7 +1884,7 @@ TEST_F(SchedulerTest, RetroFrameDoesNotExpireTooEarly) {
EXPECT_NO_ACTION(client_);

// Let's advance to the retro frame's deadline.
now_src()->AdvanceNow(retro_frame_args.deadline - now_src()->Now());
now_src()->Advance(retro_frame_args.deadline - now_src()->NowTicks());

// The retro frame hasn't expired yet.
task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(false));
Expand Down Expand Up @@ -1940,8 +1942,8 @@ TEST_F(SchedulerTest, RetroFrameExpiresOnTime) {
EXPECT_NO_ACTION(client_);

// Let's advance sufficiently past the retro frame's deadline.
now_src()->AdvanceNow(retro_frame_args.deadline - now_src()->Now() +
base::TimeDelta::FromMicroseconds(1));
now_src()->Advance(retro_frame_args.deadline - now_src()->NowTicks() +
base::TimeDelta::FromMicroseconds(1));

// The retro frame should've expired.
EXPECT_NO_ACTION(client_);
Expand All @@ -1960,7 +1962,7 @@ TEST_F(SchedulerTest, MissedFrameDoesNotExpireTooEarly) {
missed_frame_args.type = BeginFrameArgs::MISSED;

// Advance to the deadline.
now_src()->AdvanceNow(missed_frame_args.deadline - now_src()->Now());
now_src()->Advance(missed_frame_args.deadline - now_src()->NowTicks());

// Missed frame is handled because it's on time.
client_->Reset();
Expand All @@ -1985,8 +1987,8 @@ TEST_F(SchedulerTest, MissedFrameExpiresOnTime) {
missed_frame_args.type = BeginFrameArgs::MISSED;

// Advance sufficiently past the deadline.
now_src()->AdvanceNow(missed_frame_args.deadline - now_src()->Now() +
base::TimeDelta::FromMicroseconds(1));
now_src()->Advance(missed_frame_args.deadline - now_src()->NowTicks() +
base::TimeDelta::FromMicroseconds(1));

// Missed frame is dropped because it's too late.
client_->Reset();
Expand Down Expand Up @@ -2132,9 +2134,9 @@ void SchedulerTest::BeginFramesNotFromClient_SwapThrottled(

// Let time pass sufficiently beyond the regular deadline but not beyond the
// late deadline.
now_src()->AdvanceNow(BeginFrameArgs::DefaultInterval() -
base::TimeDelta::FromMicroseconds(1));
task_runner().RunUntilTime(now_src()->Now());
now_src()->Advance(BeginFrameArgs::DefaultInterval() -
base::TimeDelta::FromMicroseconds(1));
task_runner().RunUntilTime(now_src()->NowTicks());
EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());

// Take us out of a swap throttled state.
Expand All @@ -2146,9 +2148,9 @@ void SchedulerTest::BeginFramesNotFromClient_SwapThrottled(
// Verify that the deadline was rescheduled.
// We can't use RunUntilTime(now) here because the next frame is also
// scheduled if throttle_frame_production = false.
base::TimeTicks before_deadline = now_src()->Now();
base::TimeTicks before_deadline = now_src()->NowTicks();
task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true));
base::TimeTicks after_deadline = now_src()->Now();
base::TimeTicks after_deadline = now_src()->NowTicks();
EXPECT_EQ(after_deadline, before_deadline);
EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
client_->Reset();
Expand Down Expand Up @@ -2257,7 +2259,7 @@ void SchedulerTest::DidLoseOutputSurfaceAfterBeginFrameStartedWithHighLatency(

// BeginImplFrame is not started.
client_->Reset();
task_runner().RunUntilTime(now_src()->Now() +
task_runner().RunUntilTime(now_src()->NowTicks() +
base::TimeDelta::FromMilliseconds(10));
EXPECT_NO_ACTION(client_);
EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
Expand Down
Loading

0 comments on commit 2e4c4e1

Please sign in to comment.