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

Side by Side Diff: net/nqe/network_quality_estimator_params.cc

Issue 2481373004: NQE: Add default RTT and throughput observations (Closed)
Patch Set: Rebased, addressed bengr comments Created 4 years 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 | « net/nqe/network_quality_estimator.cc ('k') | net/nqe/network_quality_estimator_test_util.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "net/nqe/network_quality_estimator_params.h" 5 #include "net/nqe/network_quality_estimator_params.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 NOTREACHED(); 120 NOTREACHED();
121 break; 121 break;
122 } 122 }
123 return ""; 123 return "";
124 } 124 }
125 125
126 void ObtainDefaultObservations( 126 void ObtainDefaultObservations(
127 const std::map<std::string, std::string>& variation_params, 127 const std::map<std::string, std::string>& variation_params,
128 NetworkQuality default_observations[]) { 128 NetworkQuality default_observations[]) {
129 for (size_t i = 0; i < NetworkChangeNotifier::CONNECTION_LAST; ++i) { 129 for (size_t i = 0; i < NetworkChangeNotifier::CONNECTION_LAST; ++i) {
130 NetworkChangeNotifier::ConnectionType type =
131 static_cast<NetworkChangeNotifier::ConnectionType>(i);
132 DCHECK_EQ(InvalidRTT(), default_observations[i].http_rtt()); 130 DCHECK_EQ(InvalidRTT(), default_observations[i].http_rtt());
133 DCHECK_EQ(InvalidRTT(), default_observations[i].transport_rtt()); 131 DCHECK_EQ(InvalidRTT(), default_observations[i].transport_rtt());
134 DCHECK_EQ(kInvalidThroughput, 132 DCHECK_EQ(kInvalidThroughput,
135 default_observations[i].downstream_throughput_kbps()); 133 default_observations[i].downstream_throughput_kbps());
134 }
136 135
137 base::TimeDelta default_rtt = InvalidRTT(); 136 // Default observations for HTTP RTT, transport RTT, and downstream throughput
137 // Kbps for the various connection types. These may be overridden by
138 // variations params. The default observation for a connection type
139 // corresponds to typical network quality for that connection type.
140 default_observations[NetworkChangeNotifier::CONNECTION_UNKNOWN] =
141 NetworkQuality(base::TimeDelta::FromMilliseconds(115),
142 base::TimeDelta::FromMilliseconds(55), 1961);
143
144 default_observations[NetworkChangeNotifier::CONNECTION_ETHERNET] =
145 NetworkQuality(base::TimeDelta::FromMilliseconds(90),
146 base::TimeDelta::FromMilliseconds(33), 1456);
147
148 default_observations[NetworkChangeNotifier::CONNECTION_WIFI] =
149 NetworkQuality(base::TimeDelta::FromMilliseconds(116),
150 base::TimeDelta::FromMilliseconds(66), 2658);
151
152 default_observations[NetworkChangeNotifier::CONNECTION_2G] =
153 NetworkQuality(base::TimeDelta::FromMilliseconds(1726),
154 base::TimeDelta::FromMilliseconds(1531), 74);
155
156 default_observations[NetworkChangeNotifier::CONNECTION_3G] =
157 NetworkQuality(base::TimeDelta::FromMilliseconds(272),
158 base::TimeDelta::FromMilliseconds(209), 749);
159
160 default_observations[NetworkChangeNotifier::CONNECTION_4G] =
161 NetworkQuality(base::TimeDelta::FromMilliseconds(137),
162 base::TimeDelta::FromMilliseconds(80), 1708);
163
164 default_observations[NetworkChangeNotifier::CONNECTION_NONE] =
165 NetworkQuality(base::TimeDelta::FromMilliseconds(163),
166 base::TimeDelta::FromMilliseconds(83), 575);
167
168 default_observations[NetworkChangeNotifier::CONNECTION_BLUETOOTH] =
169 NetworkQuality(base::TimeDelta::FromMilliseconds(385),
170 base::TimeDelta::FromMilliseconds(318), 476);
171
172 // Override using the values provided via variation params.
173 for (size_t i = 0; i <= NetworkChangeNotifier::CONNECTION_LAST; ++i) {
174 NetworkChangeNotifier::ConnectionType type =
175 static_cast<NetworkChangeNotifier::ConnectionType>(i);
176
138 int32_t variations_value = kMinimumRTTVariationParameterMsec - 1; 177 int32_t variations_value = kMinimumRTTVariationParameterMsec - 1;
139 std::string parameter_name = std::string(GetNameForConnectionType(type)) 178 std::string parameter_name = std::string(GetNameForConnectionType(type))
140 .append(".DefaultMedianRTTMsec"); 179 .append(".DefaultMedianRTTMsec");
141 auto it = variation_params.find(parameter_name); 180 auto it = variation_params.find(parameter_name);
142
143 if (it != variation_params.end() && 181 if (it != variation_params.end() &&
144 base::StringToInt(it->second, &variations_value) && 182 base::StringToInt(it->second, &variations_value) &&
145 variations_value >= kMinimumRTTVariationParameterMsec) { 183 variations_value >= kMinimumRTTVariationParameterMsec) {
146 default_rtt = base::TimeDelta::FromMilliseconds(variations_value); 184 default_observations[i] =
185 NetworkQuality(base::TimeDelta::FromMilliseconds(variations_value),
186 default_observations[i].transport_rtt(),
187 default_observations[i].downstream_throughput_kbps());
147 } 188 }
148 189
149 int32_t downstream_throughput_kbps = kInvalidThroughput; 190 variations_value = kMinimumRTTVariationParameterMsec - 1;
191 parameter_name = std::string(GetNameForConnectionType(type))
192 .append(".DefaultMedianTransportRTTMsec");
193 it = variation_params.find(parameter_name);
194 if (it != variation_params.end() &&
195 base::StringToInt(it->second, &variations_value) &&
196 variations_value >= kMinimumRTTVariationParameterMsec) {
197 default_observations[i] =
198 NetworkQuality(default_observations[i].http_rtt(),
199 base::TimeDelta::FromMilliseconds(variations_value),
200 default_observations[i].downstream_throughput_kbps());
201 }
202
150 variations_value = kMinimumThroughputVariationParameterKbps - 1; 203 variations_value = kMinimumThroughputVariationParameterKbps - 1;
151 parameter_name = std::string(GetNameForConnectionType(type)) 204 parameter_name = std::string(GetNameForConnectionType(type))
152 .append(".DefaultMedianKbps"); 205 .append(".DefaultMedianKbps");
153 it = variation_params.find(parameter_name); 206 it = variation_params.find(parameter_name);
154 207
155 if (it != variation_params.end() && 208 if (it != variation_params.end() &&
156 base::StringToInt(it->second, &variations_value) && 209 base::StringToInt(it->second, &variations_value) &&
157 variations_value >= kMinimumThroughputVariationParameterKbps) { 210 variations_value >= kMinimumThroughputVariationParameterKbps) {
158 downstream_throughput_kbps = variations_value; 211 default_observations[i] = NetworkQuality(
212 default_observations[i].http_rtt(),
213 default_observations[i].transport_rtt(), variations_value);
159 } 214 }
160
161 default_observations[i] =
162 NetworkQuality(default_rtt, default_observations[i].transport_rtt(),
163 downstream_throughput_kbps);
164 } 215 }
165 } 216 }
166 217
167 void ObtainTypicalNetworkQuality(NetworkQuality typical_network_quality[]) { 218 void ObtainTypicalNetworkQuality(NetworkQuality typical_network_quality[]) {
168 for (size_t i = 0; i < EFFECTIVE_CONNECTION_TYPE_LAST; ++i) { 219 for (size_t i = 0; i < EFFECTIVE_CONNECTION_TYPE_LAST; ++i) {
169 DCHECK_EQ(InvalidRTT(), typical_network_quality[i].http_rtt()); 220 DCHECK_EQ(InvalidRTT(), typical_network_quality[i].http_rtt());
170 DCHECK_EQ(InvalidRTT(), typical_network_quality[i].transport_rtt()); 221 DCHECK_EQ(InvalidRTT(), typical_network_quality[i].transport_rtt());
171 DCHECK_EQ(kInvalidThroughput, 222 DCHECK_EQ(kInvalidThroughput,
172 typical_network_quality[i].downstream_throughput_kbps()); 223 typical_network_quality[i].downstream_throughput_kbps());
173 } 224 }
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 (void)effective_connection_type_available; 359 (void)effective_connection_type_available;
309 360
310 return forced_effective_connection_type; 361 return forced_effective_connection_type;
311 } 362 }
312 363
313 } // namespace internal 364 } // namespace internal
314 365
315 } // namespace nqe 366 } // namespace nqe
316 367
317 } // namespace net 368 } // namespace net
OLDNEW
« no previous file with comments | « net/nqe/network_quality_estimator.cc ('k') | net/nqe/network_quality_estimator_test_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698