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

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

Issue 2481373004: NQE: Add default RTT and throughput observations (Closed)
Patch Set: Addressed ryansturm 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
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 // First set the default thresholds.
bengr 2016/11/29 18:39:15 Add to this comment to be a little clearer: // De
tbansal1 2016/12/02 17:41:17 Done.
137 default_observations[NetworkChangeNotifier::CONNECTION_UNKNOWN] =
138 NetworkQuality(base::TimeDelta::FromMilliseconds(115),
139 base::TimeDelta::FromMilliseconds(55), 1961);
140
141 default_observations[NetworkChangeNotifier::CONNECTION_ETHERNET] =
142 NetworkQuality(base::TimeDelta::FromMilliseconds(90),
143 base::TimeDelta::FromMilliseconds(33), 1456);
144
145 default_observations[NetworkChangeNotifier::CONNECTION_WIFI] =
146 NetworkQuality(base::TimeDelta::FromMilliseconds(116),
147 base::TimeDelta::FromMilliseconds(66), 2658);
148
149 default_observations[NetworkChangeNotifier::CONNECTION_2G] =
150 NetworkQuality(base::TimeDelta::FromMilliseconds(1726),
151 base::TimeDelta::FromMilliseconds(1531), 74);
152
153 default_observations[NetworkChangeNotifier::CONNECTION_3G] =
154 NetworkQuality(base::TimeDelta::FromMilliseconds(272),
155 base::TimeDelta::FromMilliseconds(209), 749);
156
157 default_observations[NetworkChangeNotifier::CONNECTION_4G] =
158 NetworkQuality(base::TimeDelta::FromMilliseconds(137),
159 base::TimeDelta::FromMilliseconds(80), 1708);
160
161 default_observations[NetworkChangeNotifier::CONNECTION_NONE] =
162 NetworkQuality(base::TimeDelta::FromMilliseconds(163),
163 base::TimeDelta::FromMilliseconds(83), 575);
164
165 default_observations[NetworkChangeNotifier::CONNECTION_BLUETOOTH] =
166 NetworkQuality(base::TimeDelta::FromMilliseconds(385),
167 base::TimeDelta::FromMilliseconds(318), 476);
168
169 // Override using the values provided via variation params.
170 for (size_t i = 0; i <= NetworkChangeNotifier::CONNECTION_LAST; ++i) {
171 NetworkChangeNotifier::ConnectionType type =
172 static_cast<NetworkChangeNotifier::ConnectionType>(i);
173
138 int32_t variations_value = kMinimumRTTVariationParameterMsec - 1; 174 int32_t variations_value = kMinimumRTTVariationParameterMsec - 1;
139 std::string parameter_name = std::string(GetNameForConnectionType(type)) 175 std::string parameter_name = std::string(GetNameForConnectionType(type))
140 .append(".DefaultMedianRTTMsec"); 176 .append(".DefaultMedianRTTMsec");
141 auto it = variation_params.find(parameter_name); 177 auto it = variation_params.find(parameter_name);
142
143 if (it != variation_params.end() && 178 if (it != variation_params.end() &&
144 base::StringToInt(it->second, &variations_value) && 179 base::StringToInt(it->second, &variations_value) &&
145 variations_value >= kMinimumRTTVariationParameterMsec) { 180 variations_value >= kMinimumRTTVariationParameterMsec) {
146 default_rtt = base::TimeDelta::FromMilliseconds(variations_value); 181 default_observations[i] =
182 NetworkQuality(base::TimeDelta::FromMilliseconds(variations_value),
183 default_observations[i].transport_rtt(),
184 default_observations[i].downstream_throughput_kbps());
147 } 185 }
148 186
149 int32_t downstream_throughput_kbps = kInvalidThroughput; 187 variations_value = kMinimumRTTVariationParameterMsec - 1;
188 parameter_name = std::string(GetNameForConnectionType(type))
189 .append(".DefaultMedianTransportRTTMsec");
190 it = variation_params.find(parameter_name);
191 if (it != variation_params.end() &&
192 base::StringToInt(it->second, &variations_value) &&
193 variations_value >= kMinimumRTTVariationParameterMsec) {
194 default_observations[i] =
195 NetworkQuality(default_observations[i].http_rtt(),
196 base::TimeDelta::FromMilliseconds(variations_value),
197 default_observations[i].downstream_throughput_kbps());
198 }
199
150 variations_value = kMinimumThroughputVariationParameterKbps - 1; 200 variations_value = kMinimumThroughputVariationParameterKbps - 1;
151 parameter_name = std::string(GetNameForConnectionType(type)) 201 parameter_name = std::string(GetNameForConnectionType(type))
152 .append(".DefaultMedianKbps"); 202 .append(".DefaultMedianKbps");
153 it = variation_params.find(parameter_name); 203 it = variation_params.find(parameter_name);
154 204
155 if (it != variation_params.end() && 205 if (it != variation_params.end() &&
156 base::StringToInt(it->second, &variations_value) && 206 base::StringToInt(it->second, &variations_value) &&
157 variations_value >= kMinimumThroughputVariationParameterKbps) { 207 variations_value >= kMinimumThroughputVariationParameterKbps) {
158 downstream_throughput_kbps = variations_value; 208 default_observations[i] = NetworkQuality(
209 default_observations[i].http_rtt(),
210 default_observations[i].transport_rtt(), variations_value);
159 } 211 }
160
161 default_observations[i] =
162 NetworkQuality(default_rtt, default_observations[i].transport_rtt(),
163 downstream_throughput_kbps);
164 } 212 }
165 } 213 }
166 214
167 void ObtainTypicalNetworkQuality(NetworkQuality typical_network_quality[]) { 215 void ObtainTypicalNetworkQuality(NetworkQuality typical_network_quality[]) {
168 for (size_t i = 0; i < EFFECTIVE_CONNECTION_TYPE_LAST; ++i) { 216 for (size_t i = 0; i < EFFECTIVE_CONNECTION_TYPE_LAST; ++i) {
169 DCHECK_EQ(InvalidRTT(), typical_network_quality[i].http_rtt()); 217 DCHECK_EQ(InvalidRTT(), typical_network_quality[i].http_rtt());
170 DCHECK_EQ(InvalidRTT(), typical_network_quality[i].transport_rtt()); 218 DCHECK_EQ(InvalidRTT(), typical_network_quality[i].transport_rtt());
171 DCHECK_EQ(kInvalidThroughput, 219 DCHECK_EQ(kInvalidThroughput,
172 typical_network_quality[i].downstream_throughput_kbps()); 220 typical_network_quality[i].downstream_throughput_kbps());
173 } 221 }
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 (void)effective_connection_type_available; 356 (void)effective_connection_type_available;
309 357
310 return forced_effective_connection_type; 358 return forced_effective_connection_type;
311 } 359 }
312 360
313 } // namespace internal 361 } // namespace internal
314 362
315 } // namespace nqe 363 } // namespace nqe
316 364
317 } // namespace net 365 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698