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

Side by Side Diff: webrtc/modules/remote_bitrate_estimator/test/bwe_test.cc

Issue 1253473004: BWE Simulation Framework: Standard plot logging (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Added missing comma in python script Created 5 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 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 305
306 int64_t one_way_delay_ms = rtt_ms / 2; 306 int64_t one_way_delay_ms = rtt_ms / 2;
307 DelayFilter delay_uplink(&uplink_, all_flow_ids); 307 DelayFilter delay_uplink(&uplink_, all_flow_ids);
308 delay_uplink.SetOneWayDelayMs(one_way_delay_ms); 308 delay_uplink.SetOneWayDelayMs(one_way_delay_ms);
309 309
310 JitterFilter jitter(&uplink_, all_flow_ids); 310 JitterFilter jitter(&uplink_, all_flow_ids);
311 jitter.SetMaxJitter(max_jitter_ms); 311 jitter.SetMaxJitter(max_jitter_ms);
312 312
313 std::vector<RateCounterFilter*> rate_counters; 313 std::vector<RateCounterFilter*> rate_counters;
314 for (int flow : all_flow_ids) { 314 for (int flow : all_flow_ids) {
315 rate_counters.push_back( 315 rate_counters.push_back(new RateCounterFilter(&uplink_, flow, "Receiver"));
316 new RateCounterFilter(&uplink_, flow, "receiver_input"));
317 } 316 }
318 317
319 RateCounterFilter total_utilization(&uplink_, all_flow_ids, 318 RateCounterFilter total_utilization(&uplink_, all_flow_ids,
320 "total_utilization"); 319 "total_utilization");
321 320
322 std::vector<PacketReceiver*> receivers; 321 std::vector<PacketReceiver*> receivers;
323 // Delays is being plotted only for the first flow. 322 // Delays is being plotted only for the first flow.
324 // To plot all of them, replace "i == 0" with "true" on new PacketReceiver(). 323 // To plot all of them, replace "i == 0" with "true" on new PacketReceiver().
325 for (int media_flow : media_flow_ids) { 324 for (int media_flow : media_flow_ids) {
326 metric_recorders.push_back( 325 metric_recorders.push_back(
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 senders.push_back(new VideoSender(&uplink_, sources[i], bwe_type)); 485 senders.push_back(new VideoSender(&uplink_, sources[i], bwe_type));
487 } 486 }
488 487
489 FlowIds flow_ids = CreateFlowIdRange(0, static_cast<int>(num_flows - 1)); 488 FlowIds flow_ids = CreateFlowIdRange(0, static_cast<int>(num_flows - 1));
490 489
491 DefaultEvaluationFilter up_filter(&uplink_, flow_ids); 490 DefaultEvaluationFilter up_filter(&uplink_, flow_ids);
492 LinkShare link_share(&(up_filter.choke)); 491 LinkShare link_share(&(up_filter.choke));
493 492
494 RateCounterFilter total_utilization(&uplink_, flow_ids, "Total_utilization"); 493 RateCounterFilter total_utilization(&uplink_, flow_ids, "Total_utilization");
495 494
496 // Delays is being plotted only for the first flow.
497 // To plot all of them, replace "i == 0" with "true" on new PacketReceiver().
498 for (size_t i = 0; i < num_flows; ++i) { 495 for (size_t i = 0; i < num_flows; ++i) {
499 metric_recorders.push_back(new MetricRecorder( 496 metric_recorders.push_back(new MetricRecorder(
500 bwe_names[bwe_type], static_cast<int>(i), senders[i], &link_share)); 497 bwe_names[bwe_type], static_cast<int>(i), senders[i], &link_share));
501 498
502 receivers.push_back(new PacketReceiver(&uplink_, static_cast<int>(i), 499 receivers.push_back(new PacketReceiver(&uplink_, static_cast<int>(i),
503 bwe_type, i == 0, false, 500 bwe_type, false, false,
stefan-webrtc 2015/07/24 09:30:42 Who is responsible for plotting delays in this tes
magalhaesc 2015/07/24 11:46:40 The delay is being plotted by the metric_recorder.
504 metric_recorders[i])); 501 metric_recorders[i]));
505 metric_recorders[i]->set_plot_available_capacity( 502 metric_recorders[i]->set_plot_available_capacity(
506 i == 0 && plot_total_available_capacity_); 503 i == 0 && plot_total_available_capacity_);
507 } 504 }
508 505
509 DelayFilter down_filter(&downlink_, flow_ids); 506 DelayFilter down_filter(&downlink_, flow_ids);
510 down_filter.SetOneWayDelayMs(kOneWayDelayMs); 507 down_filter.SetOneWayDelayMs(kOneWayDelayMs);
511 // Test also with one way propagation delay = 100ms. 508 // Test also with one way propagation delay = 100ms.
512 // up_filter.delay.SetOneWayDelayMs(100); 509 // up_filter.delay.SetOneWayDelayMs(100);
513 // down_filter.SetOneWayDelayMs(100); 510 // down_filter.SetOneWayDelayMs(100);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 sources[kBackward].reset(new AdaptiveVideoSource(kBackward, 30, 300, 0, 0)); 558 sources[kBackward].reset(new AdaptiveVideoSource(kBackward, 30, 300, 0, 0));
562 senders[kBackward].reset( 559 senders[kBackward].reset(
563 new VideoSender(&downlink_, sources[kBackward].get(), bwe_type)); 560 new VideoSender(&downlink_, sources[kBackward].get(), bwe_type));
564 561
565 DefaultEvaluationFilter up_filter(&uplink_, kForward); 562 DefaultEvaluationFilter up_filter(&uplink_, kForward);
566 LinkShare up_link_share(&(up_filter.choke)); 563 LinkShare up_link_share(&(up_filter.choke));
567 564
568 metric_recorders[kForward].reset(new MetricRecorder( 565 metric_recorders[kForward].reset(new MetricRecorder(
569 bwe_names[bwe_type], kForward, senders[kForward].get(), &up_link_share)); 566 bwe_names[bwe_type], kForward, senders[kForward].get(), &up_link_share));
570 receivers[kForward].reset( 567 receivers[kForward].reset(
571 new PacketReceiver(&uplink_, kForward, bwe_type, true, false, 568 new PacketReceiver(&uplink_, kForward, bwe_type, false, false,
572 metric_recorders[kForward].get())); 569 metric_recorders[kForward].get()));
573 570
574 metric_recorders[kForward].get()->set_plot_available_capacity( 571 metric_recorders[kForward].get()->set_plot_available_capacity(
575 plot_total_available_capacity_); 572 plot_total_available_capacity_);
576 573
577 DefaultEvaluationFilter down_filter(&downlink_, kBackward); 574 DefaultEvaluationFilter down_filter(&downlink_, kBackward);
578 LinkShare down_link_share(&(down_filter.choke)); 575 LinkShare down_link_share(&(down_filter.choke));
579 576
580 metric_recorders[kBackward].reset( 577 metric_recorders[kBackward].reset(
581 new MetricRecorder(bwe_names[bwe_type], kBackward, 578 new MetricRecorder(bwe_names[bwe_type], kBackward,
582 senders[kBackward].get(), &down_link_share)); 579 senders[kBackward].get(), &down_link_share));
583 receivers[kBackward].reset( 580 receivers[kBackward].reset(
584 new PacketReceiver(&downlink_, kBackward, bwe_type, true, false, 581 new PacketReceiver(&downlink_, kBackward, bwe_type, false, false,
585 metric_recorders[kBackward].get())); 582 metric_recorders[kBackward].get()));
586 583
587 metric_recorders[kBackward].get()->set_plot_available_capacity( 584 metric_recorders[kBackward].get()->set_plot_available_capacity(
588 plot_total_available_capacity_); 585 plot_total_available_capacity_);
589 586
590 // Test also with one way propagation delay = 100ms. 587 // Test also with one way propagation delay = 100ms.
591 // up_filter.delay.SetOneWayDelayMs(100); 588 // up_filter.delay.SetOneWayDelayMs(100);
592 // down_filter.delay.SetOneWayDelayMs(100); 589 // down_filter.delay.SetOneWayDelayMs(100);
593 590
594 up_filter.choke.set_capacity_kbps(2000); 591 up_filter.choke.set_capacity_kbps(2000);
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
677 JitterFilter jitter_filter(&uplink_, CreateFlowIds(kAllFlowIds, kNumFlows)); 674 JitterFilter jitter_filter(&uplink_, CreateFlowIds(kAllFlowIds, kNumFlows));
678 675
679 rtc::scoped_ptr<DelayFilter> up_delay_filters[kNumFlows]; 676 rtc::scoped_ptr<DelayFilter> up_delay_filters[kNumFlows];
680 for (size_t i = 0; i < kNumFlows; ++i) { 677 for (size_t i = 0; i < kNumFlows; ++i) {
681 up_delay_filters[i].reset(new DelayFilter(&uplink_, kAllFlowIds[i])); 678 up_delay_filters[i].reset(new DelayFilter(&uplink_, kAllFlowIds[i]));
682 } 679 }
683 680
684 RateCounterFilter total_utilization( 681 RateCounterFilter total_utilization(
685 &uplink_, CreateFlowIds(kAllFlowIds, kNumFlows), "Total_utilization"); 682 &uplink_, CreateFlowIds(kAllFlowIds, kNumFlows), "Total_utilization");
686 683
687 // Delays is being plotted only for the first flow.
688 // To plot all of them, replace "i == 0" with "true" on new PacketReceiver().
689 rtc::scoped_ptr<PacketReceiver> receivers[kNumFlows]; 684 rtc::scoped_ptr<PacketReceiver> receivers[kNumFlows];
690 for (size_t i = 0; i < kNumFlows; ++i) { 685 for (size_t i = 0; i < kNumFlows; ++i) {
691 metric_recorders[i].reset( 686 metric_recorders[i].reset(
692 new MetricRecorder(bwe_names[bwe_type], static_cast<int>(i), 687 new MetricRecorder(bwe_names[bwe_type], static_cast<int>(i),
693 senders[i].get(), &link_share)); 688 senders[i].get(), &link_share));
694 689
695 receivers[i].reset(new PacketReceiver(&uplink_, kAllFlowIds[i], bwe_type, 690 receivers[i].reset(new PacketReceiver(&uplink_, kAllFlowIds[i], bwe_type,
696 i == 0, false, 691 false, false,
697 metric_recorders[i].get())); 692 metric_recorders[i].get()));
698 metric_recorders[i].get()->set_start_computing_metrics_ms(kStartingApartMs * 693 metric_recorders[i].get()->set_start_computing_metrics_ms(kStartingApartMs *
699 (kNumFlows - 1)); 694 (kNumFlows - 1));
700 metric_recorders[i].get()->set_plot_available_capacity( 695 metric_recorders[i].get()->set_plot_available_capacity(
701 i == 0 && plot_total_available_capacity_); 696 i == 0 && plot_total_available_capacity_);
702 } 697 }
703 698
704 rtc::scoped_ptr<DelayFilter> down_delay_filters[kNumFlows]; 699 rtc::scoped_ptr<DelayFilter> down_delay_filters[kNumFlows];
705 for (size_t i = 0; i < kNumFlows; ++i) { 700 for (size_t i = 0; i < kNumFlows; ++i) {
706 down_delay_filters[i].reset(new DelayFilter(&downlink_, kAllFlowIds[i])); 701 down_delay_filters[i].reset(new DelayFilter(&downlink_, kAllFlowIds[i]));
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
792 tcp_file_sizes_bytes[id - kNumRmcatFlows])); 787 tcp_file_sizes_bytes[id - kNumRmcatFlows]));
793 } 788 }
794 789
795 FlowIds flow_ids = CreateFlowIdRange(0, static_cast<int>(kNumTotalFlows - 1)); 790 FlowIds flow_ids = CreateFlowIdRange(0, static_cast<int>(kNumTotalFlows - 1));
796 DefaultEvaluationFilter up_filter(&uplink_, flow_ids); 791 DefaultEvaluationFilter up_filter(&uplink_, flow_ids);
797 792
798 LinkShare link_share(&(up_filter.choke)); 793 LinkShare link_share(&(up_filter.choke));
799 794
800 RateCounterFilter total_utilization(&uplink_, flow_ids, "Total_utilization"); 795 RateCounterFilter total_utilization(&uplink_, flow_ids, "Total_utilization");
801 796
802 // Delays is being plotted only for the first flow.
803 // To plot all of them, replace "i == 0" with "true" on new PacketReceiver().
804 for (size_t id : kAllRmcatFlowIds) { 797 for (size_t id : kAllRmcatFlowIds) {
805 metric_recorders[id].reset( 798 metric_recorders[id].reset(
806 new MetricRecorder(bwe_names[bwe_type], static_cast<int>(id), 799 new MetricRecorder(bwe_names[bwe_type], static_cast<int>(id),
807 senders[id].get(), &link_share)); 800 senders[id].get(), &link_share));
808 receivers[id].reset(new PacketReceiver(&uplink_, static_cast<int>(id), 801 receivers[id].reset(new PacketReceiver(&uplink_, static_cast<int>(id),
809 bwe_type, id == 0, false, 802 bwe_type, false, false,
810 metric_recorders[id].get())); 803 metric_recorders[id].get()));
811 metric_recorders[id].get()->set_start_computing_metrics_ms( 804 metric_recorders[id].get()->set_start_computing_metrics_ms(
812 kRmcatStartingTimeMs); 805 kRmcatStartingTimeMs);
813 metric_recorders[id].get()->set_plot_available_capacity( 806 metric_recorders[id].get()->set_plot_available_capacity(
814 id == 0 && plot_total_available_capacity_); 807 id == 0 && plot_total_available_capacity_);
815 } 808 }
816 809
817 // Delays is not being plotted only for TCP flows. To plot all of them,
818 // replace first "false" occurence with "true" on new PacketReceiver().
819 for (size_t id : kAllTcpFlowIds) { 810 for (size_t id : kAllTcpFlowIds) {
820 metric_recorders[id].reset( 811 metric_recorders[id].reset(
821 new MetricRecorder(bwe_names[kTcpEstimator], static_cast<int>(id), 812 new MetricRecorder(bwe_names[kTcpEstimator], static_cast<int>(id),
822 senders[id].get(), &link_share)); 813 senders[id].get(), &link_share));
823 receivers[id].reset(new PacketReceiver(&uplink_, static_cast<int>(id), 814 receivers[id].reset(new PacketReceiver(&uplink_, static_cast<int>(id),
824 kTcpEstimator, false, false, 815 kTcpEstimator, false, false,
825 metric_recorders[id].get())); 816 metric_recorders[id].get()));
826 metric_recorders[id].get()->set_plot_available_capacity( 817 metric_recorders[id].get()->set_plot_available_capacity(
827 id == 0 && plot_total_available_capacity_); 818 id == 0 && plot_total_available_capacity_);
828 } 819 }
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
879 } 870 }
880 871
881 DefaultEvaluationFilter filter(&uplink_, 872 DefaultEvaluationFilter filter(&uplink_,
882 CreateFlowIds(kAllFlowIds, kNumFlows)); 873 CreateFlowIds(kAllFlowIds, kNumFlows));
883 874
884 LinkShare link_share(&(filter.choke)); 875 LinkShare link_share(&(filter.choke));
885 876
886 RateCounterFilter total_utilization( 877 RateCounterFilter total_utilization(
887 &uplink_, CreateFlowIds(kAllFlowIds, kNumFlows), "Total_utilization"); 878 &uplink_, CreateFlowIds(kAllFlowIds, kNumFlows), "Total_utilization");
888 879
889 // Delays is being plotted only for the first flow.
890 // To plot all of them, replace "i == 0" with "true" on new PacketReceiver().
891 for (size_t i = 0; i < kNumFlows; ++i) { 880 for (size_t i = 0; i < kNumFlows; ++i) {
892 metric_recorders[i].reset( 881 metric_recorders[i].reset(
893 new MetricRecorder(bwe_names[bwe_type], static_cast<int>(i), 882 new MetricRecorder(bwe_names[bwe_type], static_cast<int>(i),
894 senders[i].get(), &link_share)); 883 senders[i].get(), &link_share));
895 receivers[i].reset(new PacketReceiver(&uplink_, kAllFlowIds[i], bwe_type, 884 receivers[i].reset(new PacketReceiver(&uplink_, kAllFlowIds[i], bwe_type,
896 i == 0, false, 885 false, false,
897 metric_recorders[i].get())); 886 metric_recorders[i].get()));
898 metric_recorders[i].get()->set_start_computing_metrics_ms(kStartingApartMs * 887 metric_recorders[i].get()->set_start_computing_metrics_ms(kStartingApartMs *
899 (kNumFlows - 1)); 888 (kNumFlows - 1));
900 metric_recorders[i].get()->set_plot_available_capacity( 889 metric_recorders[i].get()->set_plot_available_capacity(
901 i == 0 && plot_total_available_capacity_); 890 i == 0 && plot_total_available_capacity_);
902 } 891 }
903 892
904 // Test also with one way propagation delay = 100ms. 893 // Test also with one way propagation delay = 100ms.
905 // filter.delay.SetOneWayDelayMs(100); 894 // filter.delay.SetOneWayDelayMs(100);
906 filter.choke.set_capacity_kbps(3500); 895 filter.choke.set_capacity_kbps(3500);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
970 tcp_starting_times_ms.push_back( 959 tcp_starting_times_ms.push_back(
971 static_cast<int64_t>(random.Exponential(1.0f / kMeanMs))); 960 static_cast<int64_t>(random.Exponential(1.0f / kMeanMs)));
972 } 961 }
973 962
974 return tcp_starting_times_ms; 963 return tcp_starting_times_ms;
975 } 964 }
976 965
977 } // namespace bwe 966 } // namespace bwe
978 } // namespace testing 967 } // namespace testing
979 } // namespace webrtc 968 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698