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

Side by Side Diff: remoting/test/protocol_perftest.cc

Issue 2369243002: Report network stats in the scroll performance tests (Closed)
Patch Set: Created 4 years, 2 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
« no previous file with comments | « remoting/test/fake_socket_factory.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <numeric> 5 #include <numeric>
6 #include <utility> 6 #include <utility>
7 7
8 #include "base/base64.h" 8 #include "base/base64.h"
9 #include "base/files/file_util.h" 9 #include "base/files/file_util.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 protocol::NetworkSettings network_settings( 304 protocol::NetworkSettings network_settings(
305 protocol::NetworkSettings::NAT_TRAVERSAL_OUTGOING); 305 protocol::NetworkSettings::NAT_TRAVERSAL_OUTGOING);
306 306
307 // Initialize client. 307 // Initialize client.
308 client_context_.reset( 308 client_context_.reset(
309 new ClientContext(base::ThreadTaskRunnerHandle::Get())); 309 new ClientContext(base::ThreadTaskRunnerHandle::Get()));
310 client_context_->Start(); 310 client_context_->Start();
311 311
312 std::unique_ptr<FakePortAllocatorFactory> port_allocator_factory( 312 std::unique_ptr<FakePortAllocatorFactory> port_allocator_factory(
313 new FakePortAllocatorFactory(fake_network_dispatcher_)); 313 new FakePortAllocatorFactory(fake_network_dispatcher_));
314 client_socket_factory_ = port_allocator_factory->socket_factory();
314 port_allocator_factory->socket_factory()->SetBandwidth( 315 port_allocator_factory->socket_factory()->SetBandwidth(
315 GetParam().bandwidth, GetParam().max_buffers); 316 GetParam().bandwidth, GetParam().max_buffers);
316 port_allocator_factory->socket_factory()->SetLatency( 317 port_allocator_factory->socket_factory()->SetLatency(
317 GetParam().latency_average, GetParam().latency_stddev); 318 GetParam().latency_average, GetParam().latency_stddev);
318 port_allocator_factory->socket_factory()->set_out_of_order_rate( 319 port_allocator_factory->socket_factory()->set_out_of_order_rate(
319 GetParam().out_of_order_rate); 320 GetParam().out_of_order_rate);
320 scoped_refptr<protocol::TransportContext> transport_context( 321 scoped_refptr<protocol::TransportContext> transport_context(
321 new protocol::TransportContext( 322 new protocol::TransportContext(
322 host_signaling_.get(), std::move(port_allocator_factory), nullptr, 323 host_signaling_.get(), std::move(port_allocator_factory), nullptr,
323 network_settings, protocol::TransportRole::CLIENT)); 324 network_settings, protocol::TransportRole::CLIENT));
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 std::unique_ptr<protocol::CandidateSessionConfig> protocol_config_; 362 std::unique_ptr<protocol::CandidateSessionConfig> protocol_config_;
362 363
363 std::unique_ptr<FakeSignalStrategy> host_signaling_; 364 std::unique_ptr<FakeSignalStrategy> host_signaling_;
364 std::unique_ptr<FakeSignalStrategy> client_signaling_; 365 std::unique_ptr<FakeSignalStrategy> client_signaling_;
365 366
366 std::unique_ptr<ChromotingHost> host_; 367 std::unique_ptr<ChromotingHost> host_;
367 std::unique_ptr<ClientContext> client_context_; 368 std::unique_ptr<ClientContext> client_context_;
368 std::unique_ptr<SoftwareVideoRenderer> video_renderer_; 369 std::unique_ptr<SoftwareVideoRenderer> video_renderer_;
369 std::unique_ptr<ChromotingClient> client_; 370 std::unique_ptr<ChromotingClient> client_;
370 371
372 FakePacketSocketFactory* client_socket_factory_;
373
371 std::unique_ptr<base::RunLoop> connecting_loop_; 374 std::unique_ptr<base::RunLoop> connecting_loop_;
372 std::unique_ptr<base::RunLoop> waiting_frames_loop_; 375 std::unique_ptr<base::RunLoop> waiting_frames_loop_;
373 376
374 std::unique_ptr<base::RunLoop> waiting_frame_stats_loop_; 377 std::unique_ptr<base::RunLoop> waiting_frame_stats_loop_;
375 size_t num_expected_frame_stats_; 378 size_t num_expected_frame_stats_;
376 379
377 bool client_connected_; 380 bool client_connected_;
378 bool host_connected_; 381 bool host_connected_;
379 382
380 base::Closure on_frame_task_; 383 base::Closure on_frame_task_;
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 550
548 int warm_up_frames = 0; 551 int warm_up_frames = 0;
549 552
550 base::TimeTicks start_time = base::TimeTicks::Now(); 553 base::TimeTicks start_time = base::TimeTicks::Now();
551 const base::TimeDelta kWarmUpTime = base::TimeDelta::FromSeconds(2); 554 const base::TimeDelta kWarmUpTime = base::TimeDelta::FromSeconds(2);
552 while ((base::TimeTicks::Now() - start_time) < kWarmUpTime) { 555 while ((base::TimeTicks::Now() - start_time) < kWarmUpTime) {
553 ReceiveFrame(); 556 ReceiveFrame();
554 ++warm_up_frames; 557 ++warm_up_frames;
555 } 558 }
556 559
560 client_socket_factory_->ResetStats();
561
557 // Run the test for 2 seconds. 562 // Run the test for 2 seconds.
558 const base::TimeDelta kTestTime = base::TimeDelta::FromSeconds(2); 563 const base::TimeDelta kTestTime = base::TimeDelta::FromSeconds(2);
559 564
560 int num_frames = 0; 565 int num_frames = 0;
561 base::TimeDelta latency_sum; 566 base::TimeDelta latency_sum;
562 start_time = base::TimeTicks::Now(); 567 start_time = base::TimeTicks::Now();
563 while ((base::TimeTicks::Now() - start_time) < kTestTime) { 568 while ((base::TimeTicks::Now() - start_time) < kTestTime) {
564 std::unique_ptr<webrtc::DesktopFrame> frame = ReceiveFrame(); 569 std::unique_ptr<webrtc::DesktopFrame> frame = ReceiveFrame();
565 ++num_frames; 570 ++num_frames;
566 latency_sum += frame_generator->GetFrameLatency(*frame); 571 latency_sum += frame_generator->GetFrameLatency(*frame);
(...skipping 10 matching lines...) Expand all
577 return sum + stats.host_stats.frame_size; 582 return sum + stats.host_stats.frame_size;
578 }); 583 });
579 584
580 VLOG(0) << "FPS: " << num_frames / total_time.InSecondsF(); 585 VLOG(0) << "FPS: " << num_frames / total_time.InSecondsF();
581 VLOG(0) << "Average latency: " << latency_sum.InMillisecondsF() / num_frames 586 VLOG(0) << "Average latency: " << latency_sum.InMillisecondsF() / num_frames
582 << " ms"; 587 << " ms";
583 VLOG(0) << "Total size: " << total_size << " bytes"; 588 VLOG(0) << "Total size: " << total_size << " bytes";
584 VLOG(0) << "Bandwidth utilization: " 589 VLOG(0) << "Bandwidth utilization: "
585 << 100 * total_size / (total_time.InSecondsF() * GetParam().bandwidth) 590 << 100 * total_size / (total_time.InSecondsF() * GetParam().bandwidth)
586 << "%"; 591 << "%";
592 VLOG(0) << "Average host->client network latency + bufferbloat: "
593 << client_socket_factory_->GetAverageDelay().InMilliseconds()
Irfan 2016/09/27 17:52:07 It appears a packet is dropped when the buffer ove
Sergey Ulanov 2016/09/27 20:21:35 This is good point. Problem is that the fake netwo
594 << " ms";
587 } 595 }
588 596
589 TEST_P(ProtocolPerfTest, ScrollPerformanceIce) { 597 TEST_P(ProtocolPerfTest, ScrollPerformanceIce) {
590 MeasureScrollPerformance(false); 598 MeasureScrollPerformance(false);
591 } 599 }
592 600
593 TEST_P(ProtocolPerfTest, ScrollPerformanceWebrtc) { 601 TEST_P(ProtocolPerfTest, ScrollPerformanceWebrtc) {
594 MeasureScrollPerformance(true); 602 MeasureScrollPerformance(true);
595 } 603 }
596 604
597 } // namespace remoting 605 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/test/fake_socket_factory.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698