| Index: remoting/test/protocol_perftest.cc
|
| diff --git a/remoting/test/protocol_perftest.cc b/remoting/test/protocol_perftest.cc
|
| index ce9eea4f758178579c54d91779e84d8fd939eeeb..97bae35ddcf1070c9b88a78f854aba82c9413b1b 100644
|
| --- a/remoting/test/protocol_perftest.cc
|
| +++ b/remoting/test/protocol_perftest.cc
|
| @@ -43,6 +43,7 @@
|
| #include "remoting/test/fake_network_dispatcher.h"
|
| #include "remoting/test/fake_port_allocator.h"
|
| #include "remoting/test/fake_socket_factory.h"
|
| +#include "remoting/test/scroll_frame_generator.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| namespace remoting {
|
| @@ -415,7 +416,7 @@ class ProtocolPerfTest
|
| secret_fetched_callback.Run(kHostPin);
|
| }
|
|
|
| - void MeasureTotalLatency(bool webrtc) {
|
| + void MeasureTotalLatency(bool use_webrtc) {
|
| scoped_refptr<test::CyclicFrameGenerator> frame_generator =
|
| test::CyclicFrameGenerator::Create();
|
| frame_generator->set_draw_barcode(true);
|
| @@ -423,7 +424,7 @@ class ProtocolPerfTest
|
| desktop_environment_factory_.set_frame_generator(base::Bind(
|
| &test::CyclicFrameGenerator::GenerateFrame, frame_generator));
|
|
|
| - StartHostAndClient(webrtc, protocol::ChannelConfig::CODEC_VP8);
|
| + StartHostAndClient(use_webrtc, protocol::ChannelConfig::CODEC_VP8);
|
| ASSERT_NO_FATAL_FAILURE(WaitConnected());
|
|
|
| int skipped_frames = 0;
|
| @@ -473,6 +474,41 @@ class ProtocolPerfTest
|
| }
|
| }
|
|
|
| + void MeasureScrollPerformance(bool use_webrtc) {
|
| + scoped_refptr<test::ScrollFrameGenerator> frame_generator =
|
| + new test::ScrollFrameGenerator();
|
| +
|
| + desktop_environment_factory_.set_frame_generator(base::Bind(
|
| + &test::ScrollFrameGenerator::GenerateFrame, frame_generator));
|
| +
|
| + StartHostAndClient(use_webrtc, protocol::ChannelConfig::CODEC_VP8);
|
| + ASSERT_NO_FATAL_FAILURE(WaitConnected());
|
| +
|
| + base::TimeTicks start_time = base::TimeTicks::Now();
|
| + const base::TimeDelta kWarmUpTime = base::TimeDelta::FromSeconds(2);
|
| + while ((base::TimeTicks::Now() - start_time) < kWarmUpTime) {
|
| + ReceiveFrame();
|
| + }
|
| +
|
| + // Run the test for 2 seconds.
|
| + const base::TimeDelta kTestTime = base::TimeDelta::FromSeconds(2);
|
| +
|
| + int num_frames = 0;
|
| + base::TimeDelta total_latency;
|
| + start_time = base::TimeTicks::Now();
|
| + while ((base::TimeTicks::Now() - start_time) < kTestTime) {
|
| + std::unique_ptr<webrtc::DesktopFrame> frame = ReceiveFrame();
|
| + ++num_frames;
|
| + total_latency += frame_generator->GetFrameLatency(*frame);
|
| + }
|
| +
|
| + VLOG(0) << "FPS: "
|
| + << num_frames / (base::TimeTicks::Now() - start_time).InSecondsF();
|
| +
|
| + VLOG(0) << "Average latency: "
|
| + << (total_latency).InMillisecondsF() / num_frames;
|
| + }
|
| +
|
| base::MessageLoopForIO message_loop_;
|
|
|
| scoped_refptr<FakeNetworkDispatcher> fake_network_dispatcher_;
|
| @@ -645,4 +681,12 @@ TEST_P(ProtocolPerfTest, TotalLatencyWebrtc) {
|
| MeasureTotalLatency(true);
|
| }
|
|
|
| +TEST_P(ProtocolPerfTest, ScrollPerformanceIce) {
|
| + MeasureScrollPerformance(false);
|
| +}
|
| +
|
| +TEST_P(ProtocolPerfTest, ScrollPerformanceWebrtc) {
|
| + MeasureScrollPerformance(true);
|
| +}
|
| +
|
| } // namespace remoting
|
|
|