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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <utility> 5 #include <utility>
6 6
7 #include "base/base64.h" 7 #include "base/base64.h"
8 #include "base/files/file_util.h" 8 #include "base/files/file_util.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 25 matching lines...) Expand all
36 #include "remoting/protocol/me2me_host_authenticator_factory.h" 36 #include "remoting/protocol/me2me_host_authenticator_factory.h"
37 #include "remoting/protocol/session_config.h" 37 #include "remoting/protocol/session_config.h"
38 #include "remoting/protocol/transport_context.h" 38 #include "remoting/protocol/transport_context.h"
39 #include "remoting/protocol/video_frame_pump.h" 39 #include "remoting/protocol/video_frame_pump.h"
40 #include "remoting/protocol/video_renderer.h" 40 #include "remoting/protocol/video_renderer.h"
41 #include "remoting/signaling/fake_signal_strategy.h" 41 #include "remoting/signaling/fake_signal_strategy.h"
42 #include "remoting/test/cyclic_frame_generator.h" 42 #include "remoting/test/cyclic_frame_generator.h"
43 #include "remoting/test/fake_network_dispatcher.h" 43 #include "remoting/test/fake_network_dispatcher.h"
44 #include "remoting/test/fake_port_allocator.h" 44 #include "remoting/test/fake_port_allocator.h"
45 #include "remoting/test/fake_socket_factory.h" 45 #include "remoting/test/fake_socket_factory.h"
46 #include "remoting/test/scroll_frame_generator.h"
46 #include "testing/gtest/include/gtest/gtest.h" 47 #include "testing/gtest/include/gtest/gtest.h"
47 48
48 namespace remoting { 49 namespace remoting {
49 50
50 using protocol::ChannelConfig; 51 using protocol::ChannelConfig;
51 52
52 namespace { 53 namespace {
53 54
54 const char kHostJid[] = "host_jid@example.com/host"; 55 const char kHostJid[] = "host_jid@example.com/host";
55 const char kHostOwner[] = "jane.doe@example.com"; 56 const char kHostOwner[] = "jane.doe@example.com";
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 client_->Start(client_signaling_.get(), client_auth_config, 409 client_->Start(client_signaling_.get(), client_auth_config,
409 transport_context, kHostJid, std::string()); 410 transport_context, kHostJid, std::string());
410 } 411 }
411 412
412 void FetchPin( 413 void FetchPin(
413 bool pairing_supported, 414 bool pairing_supported,
414 const protocol::SecretFetchedCallback& secret_fetched_callback) { 415 const protocol::SecretFetchedCallback& secret_fetched_callback) {
415 secret_fetched_callback.Run(kHostPin); 416 secret_fetched_callback.Run(kHostPin);
416 } 417 }
417 418
418 void MeasureTotalLatency(bool webrtc) { 419 void MeasureTotalLatency(bool use_webrtc) {
419 scoped_refptr<test::CyclicFrameGenerator> frame_generator = 420 scoped_refptr<test::CyclicFrameGenerator> frame_generator =
420 test::CyclicFrameGenerator::Create(); 421 test::CyclicFrameGenerator::Create();
421 frame_generator->set_draw_barcode(true); 422 frame_generator->set_draw_barcode(true);
422 423
423 desktop_environment_factory_.set_frame_generator(base::Bind( 424 desktop_environment_factory_.set_frame_generator(base::Bind(
424 &test::CyclicFrameGenerator::GenerateFrame, frame_generator)); 425 &test::CyclicFrameGenerator::GenerateFrame, frame_generator));
425 426
426 StartHostAndClient(webrtc, protocol::ChannelConfig::CODEC_VP8); 427 StartHostAndClient(use_webrtc, protocol::ChannelConfig::CODEC_VP8);
427 ASSERT_NO_FATAL_FAILURE(WaitConnected()); 428 ASSERT_NO_FATAL_FAILURE(WaitConnected());
428 429
429 int skipped_frames = 0; 430 int skipped_frames = 0;
430 while (skipped_frames < 10) { 431 while (skipped_frames < 10) {
431 std::unique_ptr<webrtc::DesktopFrame> frame = ReceiveFrame(); 432 std::unique_ptr<webrtc::DesktopFrame> frame = ReceiveFrame();
432 test::CyclicFrameGenerator::ChangeInfoList changes = 433 test::CyclicFrameGenerator::ChangeInfoList changes =
433 frame_generator->GetChangeList(frame.get()); 434 frame_generator->GetChangeList(frame.get());
434 skipped_frames += changes.size(); 435 skipped_frames += changes.size();
435 } 436 }
436 437
(...skipping 29 matching lines...) Expand all
466 VLOG(0) << "Average latency for big frames: " 467 VLOG(0) << "Average latency for big frames: "
467 << (total_latency_big_frames / big_frame_count).InMillisecondsF(); 468 << (total_latency_big_frames / big_frame_count).InMillisecondsF();
468 469
469 if (small_frame_count) { 470 if (small_frame_count) {
470 VLOG(0) 471 VLOG(0)
471 << "Average latency for small frames: " 472 << "Average latency for small frames: "
472 << (total_latency_small_frames / small_frame_count).InMillisecondsF(); 473 << (total_latency_small_frames / small_frame_count).InMillisecondsF();
473 } 474 }
474 } 475 }
475 476
477 void MeasureScrollPerformance(bool use_webrtc) {
478 scoped_refptr<test::ScrollFrameGenerator> frame_generator =
479 new test::ScrollFrameGenerator();
480
481 desktop_environment_factory_.set_frame_generator(base::Bind(
482 &test::ScrollFrameGenerator::GenerateFrame, frame_generator));
483
484 StartHostAndClient(use_webrtc, protocol::ChannelConfig::CODEC_VP8);
485 ASSERT_NO_FATAL_FAILURE(WaitConnected());
486
487 base::TimeTicks start_time = base::TimeTicks::Now();
488 const base::TimeDelta kWarmUpTime = base::TimeDelta::FromSeconds(2);
489 while ((base::TimeTicks::Now() - start_time) < kWarmUpTime) {
490 ReceiveFrame();
491 }
492
493 // Run the test for 2 seconds.
494 const base::TimeDelta kTestTime = base::TimeDelta::FromSeconds(2);
495
496 int num_frames = 0;
497 base::TimeDelta total_latency;
498 start_time = base::TimeTicks::Now();
499 while ((base::TimeTicks::Now() - start_time) < kTestTime) {
500 std::unique_ptr<webrtc::DesktopFrame> frame = ReceiveFrame();
501 ++num_frames;
502 total_latency += frame_generator->GetFrameLatency(*frame);
503 }
504
505 VLOG(0) << "FPS: "
506 << num_frames / (base::TimeTicks::Now() - start_time).InSecondsF();
507
508 VLOG(0) << "Average latency: "
509 << (total_latency).InMillisecondsF() / num_frames;
510 }
511
476 base::MessageLoopForIO message_loop_; 512 base::MessageLoopForIO message_loop_;
477 513
478 scoped_refptr<FakeNetworkDispatcher> fake_network_dispatcher_; 514 scoped_refptr<FakeNetworkDispatcher> fake_network_dispatcher_;
479 515
480 base::Thread host_thread_; 516 base::Thread host_thread_;
481 base::Thread capture_thread_; 517 base::Thread capture_thread_;
482 base::Thread encode_thread_; 518 base::Thread encode_thread_;
483 base::Thread decode_thread_; 519 base::Thread decode_thread_;
484 FakeDesktopEnvironmentFactory desktop_environment_factory_; 520 FakeDesktopEnvironmentFactory desktop_environment_factory_;
485 521
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
638 } 674 }
639 675
640 TEST_P(ProtocolPerfTest, TotalLatencyIce) { 676 TEST_P(ProtocolPerfTest, TotalLatencyIce) {
641 MeasureTotalLatency(false); 677 MeasureTotalLatency(false);
642 } 678 }
643 679
644 TEST_P(ProtocolPerfTest, TotalLatencyWebrtc) { 680 TEST_P(ProtocolPerfTest, TotalLatencyWebrtc) {
645 MeasureTotalLatency(true); 681 MeasureTotalLatency(true);
646 } 682 }
647 683
684 TEST_P(ProtocolPerfTest, ScrollPerformanceIce) {
685 MeasureScrollPerformance(false);
686 }
687
688 TEST_P(ProtocolPerfTest, ScrollPerformanceWebrtc) {
689 MeasureScrollPerformance(true);
690 }
691
648 } // namespace remoting 692 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698