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 |