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

Unified Diff: remoting/test/protocol_perftest.cc

Issue 2182833002: Add scroll perf test for protocol in chromoting (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 5 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/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

Powered by Google App Engine
This is Rietveld 408576698