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

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

Issue 1237393002: Evaluation tests (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fixing issues: removed to_string(), added static_cast<int> where conversion was implicit 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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 std::vector<PacketSender*> senders_; 62 std::vector<PacketSender*> senders_;
63 std::vector<PacketReceiver*> receivers_; 63 std::vector<PacketReceiver*> receivers_;
64 std::vector<PacketProcessorRunner> processors_; 64 std::vector<PacketProcessorRunner> processors_;
65 }; 65 };
66 66
67 class BweTest { 67 class BweTest {
68 public: 68 public:
69 BweTest(); 69 BweTest();
70 ~BweTest(); 70 ~BweTest();
71 71
72 void RunChoke(BandwidthEstimatorType bwe_type,
73 std::vector<int> capacities_kbps);
74
75 void RunVariableCapacitySingleFlow(BandwidthEstimatorType bwe_type);
76 void RunVariableCapacityTwoFlows(BandwidthEstimatorType bwe_type);
77 void RunBidirectionalFlow(BandwidthEstimatorType bwe_type);
78 void RunRoundTripTimeFairness(BandwidthEstimatorType bwe_type);
79 void RunLongTcpFairness(BandwidthEstimatorType bwe_type);
80 void RunMultipleShortTcpFairness(BandwidthEstimatorType bwe_type,
81 std::vector<int> tcp_file_sizes_bytes,
82 std::vector<int64_t> tcp_starting_times_ms);
83 void RunPauseResumeFlows(BandwidthEstimatorType bwe_type);
84
85 void RunFairnessTest(BandwidthEstimatorType bwe_type,
86 size_t num_media_flows,
87 size_t num_tcp_flows,
88 int64_t run_time_seconds,
89 int capacity_kbps,
90 int64_t max_delay_ms,
91 int64_t rtt_ms,
92 int64_t max_jitter_ms,
93 const int64_t* offsets_ms);
94
95 void set_plot_available_capacity(bool plot) {
96 plot_total_available_capacity_ = plot;
97 }
98
99 static std::vector<int> GetFileSizesBytes(int num_files);
100 static std::vector<int64_t> GetStartingTimesMs(int num_files);
101
72 protected: 102 protected:
73 void SetUp(); 103 void SetUp();
74 104
75 void VerboseLogging(bool enable); 105 void VerboseLogging(bool enable);
76 void RunFor(int64_t time_ms); 106 void RunFor(int64_t time_ms);
77 std::string GetTestName() const; 107 std::string GetTestName() const;
78 108
79 void PrintResults(double max_throughput_kbps, 109 void PrintResults(double max_throughput_kbps,
80 Stats<double> throughput_kbps, 110 Stats<double> throughput_kbps,
81 int flow_id, 111 int flow_id,
82 Stats<double> flow_delay_ms, 112 Stats<double> flow_delay_ms,
83 Stats<double> flow_throughput_kbps); 113 Stats<double> flow_throughput_kbps);
84 114
85 void PrintResults(double max_throughput_kbps, 115 void PrintResults(double max_throughput_kbps,
86 Stats<double> throughput_kbps, 116 Stats<double> throughput_kbps,
87 std::map<int, Stats<double>> flow_delay_ms, 117 std::map<int, Stats<double>> flow_delay_ms,
88 std::map<int, Stats<double>> flow_throughput_kbps); 118 std::map<int, Stats<double>> flow_throughput_kbps);
89 119
90 void RunFairnessTest(BandwidthEstimatorType bwe_type,
91 size_t num_media_flows,
92 size_t num_tcp_flows,
93 int64_t run_time_seconds,
94 int capacity_kbps,
95 int max_delay_ms);
96
97 Link downlink_; 120 Link downlink_;
98 Link uplink_; 121 Link uplink_;
99 122
100 private: 123 private:
101 void FindPacketsToProcess(const FlowIds& flow_ids, Packets* in, 124 void FindPacketsToProcess(const FlowIds& flow_ids, Packets* in,
102 Packets* out); 125 Packets* out);
103 void GiveFeedbackToAffectedSenders(PacketReceiver* receiver); 126 void GiveFeedbackToAffectedSenders(PacketReceiver* receiver);
104 127
105 int64_t run_time_ms_; 128 int64_t run_time_ms_;
106 int64_t time_now_ms_; 129 int64_t time_now_ms_;
107 int64_t simulation_interval_ms_; 130 int64_t simulation_interval_ms_;
108 std::vector<Link*> links_; 131 std::vector<Link*> links_;
109 Packets packets_; 132 Packets packets_;
133 bool plot_total_available_capacity_;
110 134
111 DISALLOW_COPY_AND_ASSIGN(BweTest); 135 DISALLOW_COPY_AND_ASSIGN(BweTest);
112 }; 136 };
137
138 // Default Evaluation parameters:
139 // Link capacity: 4000ms;
140 // Queueing delay capacity: 300ms.
141 // One-Way propagation delay: 50ms.
142 // Jitter model: Truncated gaussian.
143 // Maximum end-to-end jitter: 30ms = 2*standard_deviation.
144 // Bottleneck queue type: Drop tail.
145 // Path loss ratio: 0%.
146
147 const int kOneWayDelayMs = 50;
148 const int kMaxQueueingDelayMs = 300;
149 const int kMaxCapacityKbps = 4000;
150 const int kMaxJitterMs = 15;
151
152 struct DefaultEvaluationFilter {
153 DefaultEvaluationFilter(PacketProcessorListener* listener, int flow_id)
154 : choke(listener, flow_id),
155 delay(listener, flow_id),
156 jitter(listener, flow_id) {
157 SetDefaultParameters(this);
158 }
159
160 DefaultEvaluationFilter(PacketProcessorListener* listener,
161 const FlowIds& flow_ids)
162 : choke(listener, flow_ids),
163 delay(listener, flow_ids),
164 jitter(listener, flow_ids) {
165 SetDefaultParameters(this);
stefan-webrtc 2015/07/21 12:12:32 This is weird. Why not just SetDefaultParameters()
magalhaesc 2015/07/21 14:46:53 Right. It was supposed to be static, but actually
166 }
167
168 void SetDefaultParameters(DefaultEvaluationFilter* filter) {
169 filter->delay.SetOneWayDelayMs(kOneWayDelayMs);
170 filter->choke.set_max_delay_ms(kMaxQueueingDelayMs);
171 filter->choke.set_capacity_kbps(kMaxCapacityKbps);
172 filter->jitter.SetMaxJitter(kMaxJitterMs);
173 }
174
175 ChokeFilter choke;
176 DelayFilter delay;
177 JitterFilter jitter;
178 };
179
113 } // namespace bwe 180 } // namespace bwe
114 } // namespace testing 181 } // namespace testing
115 } // namespace webrtc 182 } // namespace webrtc
116 183
117 #endif // WEBRTC_MODULES_REMOTE_BITRATE_ESTIMATOR_TEST_BWE_TEST_H_ 184 #endif // WEBRTC_MODULES_REMOTE_BITRATE_ESTIMATOR_TEST_BWE_TEST_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698