Chromium Code Reviews| Index: remoting/host/capture_scheduler_unittest.cc |
| diff --git a/remoting/host/capture_scheduler_unittest.cc b/remoting/host/capture_scheduler_unittest.cc |
| index 477741a8d1016775726a8ff98a24daffdbecfdea..2cc57e1c398787ae0e207026c6695cb3cba31730 100644 |
| --- a/remoting/host/capture_scheduler_unittest.cc |
| +++ b/remoting/host/capture_scheduler_unittest.cc |
| @@ -18,9 +18,10 @@ class CaptureSchedulerTest : public testing::Test { |
| public: |
| CaptureSchedulerTest() : capture_called_(false) {} |
| - void InitScheduler() { |
| + void InitScheduler(bool acks_supported) { |
| scheduler_.reset(new CaptureScheduler( |
| - base::Bind(&CaptureSchedulerTest::DoCapture, base::Unretained(this)))); |
| + base::Bind(&CaptureSchedulerTest::DoCapture, base::Unretained(this)), |
| + acks_supported)); |
| scheduler_->set_minimum_interval( |
| base::TimeDelta::FromMilliseconds(kMinumumFrameIntervalMs)); |
| tick_clock_ = new base::SimpleTestTickClock(); |
| @@ -49,6 +50,7 @@ class CaptureSchedulerTest : public testing::Test { |
| scheduler_->OnCaptureCompleted(); |
| scheduler_->OnFrameEncoded(encode_delay); |
| scheduler_->OnFrameSent(); |
| + scheduler_->OnFrameAck(); |
| EXPECT_TRUE(capture_timer_->IsRunning()); |
| EXPECT_EQ(std::max(base::TimeDelta(), |
| @@ -78,7 +80,7 @@ TEST_F(CaptureSchedulerTest, SingleSampleSameTimes) { |
| for (size_t i = 0; i < arraysize(kTestResults); ++i) { |
| for (size_t j = 0; j < arraysize(kTestInputs); ++j) { |
| - InitScheduler(); |
| + InitScheduler(true); |
| scheduler_->set_num_of_processors_for_tests(1 << i); |
| SimulateSingleFrameCapture( |
| @@ -99,7 +101,7 @@ TEST_F(CaptureSchedulerTest, SingleSampleDifferentTimes) { |
| for (size_t i = 0; i < arraysize(kTestResults); ++i) { |
| for (size_t j = 0; j < arraysize(kTestInputs); ++j) { |
| - InitScheduler(); |
| + InitScheduler(true); |
| scheduler_->set_num_of_processors_for_tests(1 << i); |
| SimulateSingleFrameCapture( |
| @@ -120,7 +122,7 @@ TEST_F(CaptureSchedulerTest, RollingAverageDifferentTimes) { |
| }; |
| for (size_t i = 0; i < arraysize(kTestResults); ++i) { |
| - InitScheduler(); |
| + InitScheduler(true); |
| scheduler_->set_num_of_processors_for_tests(1 << i); |
| for (size_t j = 0; j < arraysize(kTestInputs); ++j) { |
| SimulateSingleFrameCapture( |
| @@ -132,9 +134,9 @@ TEST_F(CaptureSchedulerTest, RollingAverageDifferentTimes) { |
| } |
| } |
| -// Verify that we never have more than 2 pending frames. |
| -TEST_F(CaptureSchedulerTest, MaximumPendingFrames) { |
| - InitScheduler(); |
| +// Verify that we never have more than 2 encoding frames. |
| +TEST_F(CaptureSchedulerTest, MaximumEncodingFrames) { |
| + InitScheduler(true); |
| capture_timer_->Fire(); |
| CheckCaptureCalled(); |
| @@ -145,11 +147,52 @@ TEST_F(CaptureSchedulerTest, MaximumPendingFrames) { |
| scheduler_->OnCaptureCompleted(); |
| EXPECT_FALSE(capture_timer_->IsRunning()); |
| + scheduler_->OnFrameEncoded(base::TimeDelta()); |
| + EXPECT_TRUE(capture_timer_->IsRunning()); |
| +} |
| + |
| +// Verify that the scheduler doesn't exceed maximum number of pending frames. |
| +TEST_F(CaptureSchedulerTest, MaximumPendingFrames) { |
| + InitScheduler(true); |
| + |
| + scheduler_->set_maximum_pending_frames(2); |
| + |
| + capture_timer_->Fire(); |
| + CheckCaptureCalled(); |
| + scheduler_->OnCaptureCompleted(); |
| + scheduler_->OnFrameEncoded(base::TimeDelta()); |
| + capture_timer_->Fire(); |
|
Wez
2015/02/03 00:54:32
Should you be checking that the timer is running b
Sergey Ulanov
2015/02/09 19:14:54
No. MockTimer::Fire() DCHECKs if the timer is not
|
| + CheckCaptureCalled(); |
| + scheduler_->OnCaptureCompleted(); |
| scheduler_->OnFrameEncoded(base::TimeDelta()); |
| - scheduler_->OnFrameSent(); |
| + EXPECT_FALSE(capture_timer_->IsRunning()); |
| + scheduler_->OnFrameSent(); |
| + EXPECT_FALSE(capture_timer_->IsRunning()); |
| + scheduler_->OnFrameAck(); |
| EXPECT_TRUE(capture_timer_->IsRunning()); |
| } |
| +// Verify that the scheduler doesn't exceed maximum number of pending frames |
| +// when acks are not supported. |
| +TEST_F(CaptureSchedulerTest, MaximumPendingFramesNoAcks) { |
| + InitScheduler(false); |
| + |
| + scheduler_->set_maximum_pending_frames(2); |
| + |
| + capture_timer_->Fire(); |
| + CheckCaptureCalled(); |
| + scheduler_->OnCaptureCompleted(); |
| + scheduler_->OnFrameEncoded(base::TimeDelta()); |
| + |
| + capture_timer_->Fire(); |
| + CheckCaptureCalled(); |
| + scheduler_->OnCaptureCompleted(); |
| + scheduler_->OnFrameEncoded(base::TimeDelta()); |
| + |
| + EXPECT_FALSE(capture_timer_->IsRunning()); |
| + scheduler_->OnFrameSent(); |
| + EXPECT_TRUE(capture_timer_->IsRunning()); |
| +} |
| } // namespace remoting |