Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(911)

Unified Diff: remoting/host/capture_scheduler_unittest.cc

Issue 850983002: Implement video frame acknowledgements in the chromoting protocol. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698