diff options
author | jackhou <jackhou@chromium.org> | 2015-06-24 20:46:10 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-06-25 03:46:44 +0000 |
commit | 2255e9f327385bcac8aa8766f9f94c8f7a691950 (patch) | |
tree | 35b1d01a8e2c1ed144e002369948d0d14cb5d3cf | |
parent | 341bcc51b0d95d37b5d82b8e05764670294ebad8 (diff) | |
download | chromium_src-2255e9f327385bcac8aa8766f9f94c8f7a691950.zip chromium_src-2255e9f327385bcac8aa8766f9f94c8f7a691950.tar.gz chromium_src-2255e9f327385bcac8aa8766f9f94c8f7a691950.tar.bz2 |
Revert of Seed NetworkQualityEstimator with default estimates. (patchset #6 id:160001 of https://codereview.chromium.org/1174263007/)
Reason for revert:
This is causing a perf regression because it increases the number of files containing a static initializer (network_quality_estimator.cc initializes a base::TimeDelta).
Original issue's description:
> Seed NetworkQualityEstimator with default estimates.
>
> When the browser starts, NetworkQualityEstimator has no
> observation and thus, cannot compute estimated network
> quality. This change populates the NetworkQualityEstimator
> observation buffers with default estimates that depend on
> current connection type.
>
> Default values are configured through field trial, which
> makes it easier to update them with time (or even target
> them based on country).
>
> BUG=472681
>
> Committed: https://crrev.com/c05c8745a17a915f10ab4e4c02e2c6c5f2eac96a
> Cr-Commit-Position: refs/heads/master@{#336074}
TBR=bengr@chromium.org,pauljensen@chromium.org,mmenke@chromium.org,tbansal@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=472681
Review URL: https://codereview.chromium.org/1208763002
Cr-Commit-Position: refs/heads/master@{#336088}
-rw-r--r-- | chrome/browser/io_thread.cc | 11 | ||||
-rw-r--r-- | chrome/browser/io_thread.h | 1 | ||||
-rw-r--r-- | components/data_reduction_proxy/core/browser/data_reduction_proxy_config_unittest.cc | 11 | ||||
-rw-r--r-- | net/base/network_quality.cc | 7 | ||||
-rw-r--r-- | net/base/network_quality.h | 8 | ||||
-rw-r--r-- | net/base/network_quality_estimator.cc | 105 | ||||
-rw-r--r-- | net/base/network_quality_estimator.h | 47 | ||||
-rw-r--r-- | net/base/network_quality_estimator_unittest.cc | 97 | ||||
-rw-r--r-- | net/url_request/url_request_unittest.cc | 3 |
9 files changed, 33 insertions, 257 deletions
diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc index 15acb77..0dd9c0e 100644 --- a/chrome/browser/io_thread.cc +++ b/chrome/browser/io_thread.cc @@ -139,11 +139,6 @@ const char kSpdyFieldTrialSpdy31GroupNamePrefix[] = "Spdy31Enabled"; const char kSpdyFieldTrialSpdy4GroupNamePrefix[] = "Spdy4Enabled"; const char kSpdyFieldTrialParametrizedPrefix[] = "Parametrized"; -// Field trial for network quality estimator. Seeds RTT and downstream -// throughput observations with values that correspond to the connection type -// determined by the operating system. -const char kNetworkQualityEstimatorFieldTrialName[] = "NetworkQualityEstimator"; - #if defined(OS_MACOSX) && !defined(OS_IOS) void ObserveKeychainEvents() { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); @@ -646,11 +641,7 @@ void IOThread::Init() { globals_->system_network_delegate = chrome_network_delegate.Pass(); globals_->host_resolver = CreateGlobalHostResolver(net_log_); - std::map<std::string, std::string> network_quality_estimator_params; - variations::GetVariationParams(kNetworkQualityEstimatorFieldTrialName, - &network_quality_estimator_params); - globals_->network_quality_estimator.reset( - new net::NetworkQualityEstimator(network_quality_estimator_params)); + globals_->network_quality_estimator.reset(new net::NetworkQualityEstimator()); // TODO(erikchen): Remove ScopedTracker below once http://crbug.com/466432 // is fixed. diff --git a/chrome/browser/io_thread.h b/chrome/browser/io_thread.h index 1066a9b..689b11d 100644 --- a/chrome/browser/io_thread.h +++ b/chrome/browser/io_thread.h @@ -5,7 +5,6 @@ #ifndef CHROME_BROWSER_IO_THREAD_H_ #define CHROME_BROWSER_IO_THREAD_H_ -#include <map> #include <string> #include <vector> diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_config_unittest.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_config_unittest.cc index 5233245..dbdc85c 100644 --- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_config_unittest.cc +++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_config_unittest.cc @@ -4,7 +4,6 @@ #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_config.h" -#include <map> #include <vector> #include "base/command_line.h" @@ -1222,11 +1221,7 @@ TEST_F(DataReductionProxyConfigTest, LoFiStatusTransition) { // Overrides net::NetworkQualityEstimator for testing. class TestNetworkQualityEstimator : public net::NetworkQualityEstimator { public: - explicit TestNetworkQualityEstimator( - const std::map<std::string, std::string>& variation_params) - : NetworkQualityEstimator(variation_params), - rtt_(base::TimeDelta()), - kbps_(0) {} + TestNetworkQualityEstimator() : rtt_(base::TimeDelta()), kbps_(0) {} ~TestNetworkQualityEstimator() override {} @@ -1283,9 +1278,7 @@ TEST_F(DataReductionProxyConfigTest, AutoLoFiParams) { EXPECT_EQ(base::TimeDelta::FromSeconds(hysteresis_sec), config.auto_lofi_hysteresis_); - std::map<std::string, std::string> network_quality_estimator_params; - TestNetworkQualityEstimator test_network_quality_estimator( - network_quality_estimator_params); + TestNetworkQualityEstimator test_network_quality_estimator; // RTT is higher than threshold. Network is slow. test_network_quality_estimator.SetRtt( diff --git a/net/base/network_quality.cc b/net/base/network_quality.cc index a25c971..90f282d 100644 --- a/net/base/network_quality.cc +++ b/net/base/network_quality.cc @@ -8,12 +8,7 @@ namespace net { -const base::TimeDelta NetworkQuality::kInvalidRTT = base::TimeDelta::Max(); - -const int32_t NetworkQuality::kInvalidThroughput = 0; - -NetworkQuality::NetworkQuality() - : NetworkQuality(kInvalidRTT, kInvalidThroughput) { +NetworkQuality::NetworkQuality() : NetworkQuality(base::TimeDelta::Max(), 0) { } NetworkQuality::NetworkQuality(const base::TimeDelta& rtt, diff --git a/net/base/network_quality.h b/net/base/network_quality.h index b47e21c..315616f 100644 --- a/net/base/network_quality.h +++ b/net/base/network_quality.h @@ -16,14 +16,6 @@ namespace net { // estimated by the NetworkQualityEstimator. class NET_EXPORT_PRIVATE NetworkQuality { public: - // RTT is set to |kInvalidRTT| if a valid value is unavailable. Readers - // should discard RTT if it is set to |kInvalidRTT|. - static const base::TimeDelta kInvalidRTT; - // Throughput is set to |kInvalidThroughput| if a valid value is unavailable. - // Readers should discard throughput value if it is set to - // |kInvalidThroughput|. - static const int32_t kInvalidThroughput; - NetworkQuality(); // |rtt| is the estimate of the round trip time. // |downstream_throughput_kbps| is the estimate of the downstream throughput. diff --git a/net/base/network_quality_estimator.cc b/net/base/network_quality_estimator.cc index 9f37be0..9131f8f 100644 --- a/net/base/network_quality_estimator.cc +++ b/net/base/network_quality_estimator.cc @@ -13,9 +13,9 @@ #include "base/logging.h" #include "base/metrics/histogram.h" -#include "base/strings/string_number_conversions.h" #include "net/base/load_timing_info.h" #include "net/base/net_util.h" +#include "net/base/network_quality.h" #include "net/url_request/url_request.h" #include "url/gurl.h" @@ -31,112 +31,29 @@ const size_t kMaximumObservationsBufferSize = 500; // in the NetworkQualityEstimator constructor. const int kHalfLifeSeconds = 60; -// Name of the different connection types. Used for matching the connection -// type to the variation parameters. Names must be in the same order as -// NetworkChangeNotifier::ConnectionType enum. -const char* const kConnectionTypeNames[] = - {"Unknown", "Ethernet", "WiFi", "2G", "3G", "4G", "None", "Bluetooth"}; - -// Suffix of the name of the variation parameter that contains the default RTT -// observation (in milliseconds). Complete name of the variation parameter -// would be |ConnectionType|.|kDefaultRTTMsecObservationSuffix| where -// |ConnectionType| is from |kConnectionTypeNames|. For example, variation -// parameter for Wi-Fi would be "WiFi.DefaultMedianRTTMsec". -const char kDefaultRTTMsecObservationSuffix[] = ".DefaultMedianRTTMsec"; - -// Suffix of the name of the variation parameter that contains the default -// downstream throughput observation (in Kbps). Complete name of the variation -// parameter would be |ConnectionType|.|kDefaultKbpsObservationSuffix| where -// |ConnectionType| is from |kConnectionTypeNames|. For example, variation -// parameter for Wi-Fi would be "WiFi.DefaultMedianKbps". -const char kDefaultKbpsObservationSuffix[] = ".DefaultMedianKbps"; - } // namespace namespace net { -NetworkQualityEstimator::NetworkQualityEstimator( - const std::map<std::string, std::string>& variation_params) - : NetworkQualityEstimator(variation_params, false, false) { +NetworkQualityEstimator::NetworkQualityEstimator() + : NetworkQualityEstimator(false, false) { } NetworkQualityEstimator::NetworkQualityEstimator( - const std::map<std::string, std::string>& variation_params, bool allow_local_host_requests_for_tests, bool allow_smaller_responses_for_tests) : allow_localhost_requests_(allow_local_host_requests_for_tests), allow_small_responses_(allow_smaller_responses_for_tests), last_connection_change_(base::TimeTicks::Now()), current_connection_type_(NetworkChangeNotifier::GetConnectionType()), - fastest_rtt_since_last_connection_change_(NetworkQuality::kInvalidRTT), - peak_kbps_since_last_connection_change_( - NetworkQuality::kInvalidThroughput) { + fastest_rtt_since_last_connection_change_(base::TimeDelta::Max()), + peak_kbps_since_last_connection_change_(0) { static_assert(kMinRequestDurationMicroseconds > 0, "Minimum request duration must be > 0"); static_assert(kHalfLifeSeconds > 0, "Half life duration must be > 0"); - static_assert(arraysize(kConnectionTypeNames) == - NetworkChangeNotifier::CONNECTION_LAST + 1, - "ConnectionType name count should match"); - - ObtainOperatingParams(variation_params); - AddDefaultEstimates(); NetworkChangeNotifier::AddConnectionTypeObserver(this); } -void NetworkQualityEstimator::ObtainOperatingParams( - const std::map<std::string, std::string>& variation_params) { - DCHECK(thread_checker_.CalledOnValidThread()); - - for (size_t i = 0; i < arraysize(kConnectionTypeNames); ++i) { - int32_t variations_value = kMinimumRTTVariationParameterMsec - 1; - // Name of the parameter that holds the RTT value for this connection type. - std::string rtt_parameter_name = - std::string(kConnectionTypeNames[i]) - .append(kDefaultRTTMsecObservationSuffix); - auto it = variation_params.find(rtt_parameter_name); - if (it != variation_params.end() && !it->second.empty() && - base::StringToInt(it->second, &variations_value) && - variations_value >= kMinimumRTTVariationParameterMsec) { - default_observations_[i] = - NetworkQuality(base::TimeDelta::FromMilliseconds(variations_value), - default_observations_[i].downstream_throughput_kbps()); - } - - variations_value = kMinimumThroughputVariationParameterKbps - 1; - // Name of the parameter that holds the Kbps value for this connection - // type. - std::string kbps_parameter_name = - std::string(kConnectionTypeNames[i]) - .append(kDefaultKbpsObservationSuffix); - it = variation_params.find(kbps_parameter_name); - if (it != variation_params.end() && !it->second.empty() && - base::StringToInt(it->second, &variations_value) && - variations_value >= kMinimumThroughputVariationParameterKbps) { - default_observations_[i] = - NetworkQuality(default_observations_[i].rtt(), variations_value); - } - } -} - -void NetworkQualityEstimator::AddDefaultEstimates() { - DCHECK(thread_checker_.CalledOnValidThread()); - - if (default_observations_[current_connection_type_].rtt() != - NetworkQuality::kInvalidRTT) { - rtt_msec_observations_.AddObservation(Observation( - default_observations_[current_connection_type_].rtt().InMilliseconds(), - base::TimeTicks::Now())); - } - - if (default_observations_[current_connection_type_] - .downstream_throughput_kbps() != NetworkQuality::kInvalidThroughput) { - kbps_observations_.AddObservation( - Observation(default_observations_[current_connection_type_] - .downstream_throughput_kbps(), - base::TimeTicks::Now())); - } -} - NetworkQualityEstimator::~NetworkQualityEstimator() { DCHECK(thread_checker_.CalledOnValidThread()); NetworkChangeNotifier::RemoveConnectionTypeObserver(this); @@ -229,8 +146,7 @@ void NetworkQualityEstimator::NotifyDataReceived( void NetworkQualityEstimator::OnConnectionTypeChanged( NetworkChangeNotifier::ConnectionType type) { DCHECK(thread_checker_.CalledOnValidThread()); - if (fastest_rtt_since_last_connection_change_ != - NetworkQuality::kInvalidRTT) { + if (fastest_rtt_since_last_connection_change_ != base::TimeDelta::Max()) { switch (current_connection_type_) { case NetworkChangeNotifier::CONNECTION_UNKNOWN: UMA_HISTOGRAM_TIMES("NQE.FastestRTT.Unknown", @@ -270,8 +186,7 @@ void NetworkQualityEstimator::OnConnectionTypeChanged( } } - if (peak_kbps_since_last_connection_change_ != - NetworkQuality::kInvalidThroughput) { + if (peak_kbps_since_last_connection_change_) { switch (current_connection_type_) { case NetworkChangeNotifier::CONNECTION_UNKNOWN: UMA_HISTOGRAM_COUNTS("NQE.PeakKbps.Unknown", @@ -312,13 +227,11 @@ void NetworkQualityEstimator::OnConnectionTypeChanged( } last_connection_change_ = base::TimeTicks::Now(); - peak_kbps_since_last_connection_change_ = NetworkQuality::kInvalidThroughput; - fastest_rtt_since_last_connection_change_ = NetworkQuality::kInvalidRTT; + peak_kbps_since_last_connection_change_ = 0; + fastest_rtt_since_last_connection_change_ = base::TimeDelta::Max(); kbps_observations_.Clear(); rtt_msec_observations_.Clear(); current_connection_type_ = type; - - AddDefaultEstimates(); } NetworkQuality NetworkQualityEstimator::GetPeakEstimate() const { diff --git a/net/base/network_quality_estimator.h b/net/base/network_quality_estimator.h index b8605d8..025ce2c 100644 --- a/net/base/network_quality_estimator.h +++ b/net/base/network_quality_estimator.h @@ -8,7 +8,6 @@ #include <stdint.h> #include <deque> -#include <map> #include "base/gtest_prod_util.h" #include "base/macros.h" @@ -16,10 +15,11 @@ #include "base/time/time.h" #include "net/base/net_export.h" #include "net/base/network_change_notifier.h" -#include "net/base/network_quality.h" namespace net { +class NetworkQuality; + // NetworkQualityEstimator provides network quality estimates (quality of the // full paths to all origins that have been connected to). // The estimates are based on the observed organic traffic. @@ -32,10 +32,7 @@ class NET_EXPORT_PRIVATE NetworkQualityEstimator : public NetworkChangeNotifier::ConnectionTypeObserver { public: // Creates a new NetworkQualityEstimator. - // |variation_params| is the map containing all field trial parameters - // related to NetworkQualityEstimator field trial. - explicit NetworkQualityEstimator( - const std::map<std::string, std::string>& variation_params); + NetworkQualityEstimator(); ~NetworkQualityEstimator() override; @@ -67,7 +64,6 @@ class NET_EXPORT_PRIVATE NetworkQualityEstimator FRIEND_TEST_ALL_PREFIXES(NetworkQualityEstimatorTest, TestPeakKbpsFastestRTTUpdates); FRIEND_TEST_ALL_PREFIXES(NetworkQualityEstimatorTest, TestAddObservation); - FRIEND_TEST_ALL_PREFIXES(NetworkQualityEstimatorTest, ObtainOperatingParams); FRIEND_TEST_ALL_PREFIXES(URLRequestTestHTTP, NetworkQualityEstimator); FRIEND_TEST_ALL_PREFIXES(NetworkQualityEstimatorTest, PercentileSameTimestamps); @@ -137,8 +133,6 @@ class NET_EXPORT_PRIVATE NetworkQualityEstimator private: FRIEND_TEST_ALL_PREFIXES(NetworkQualityEstimatorTest, StoreObservations); - FRIEND_TEST_ALL_PREFIXES(NetworkQualityEstimatorTest, - ObtainOperatingParams); // Computes the weighted observations and stores them in // |weighted_observations| sorted by ascending |WeightedObservation.value|. @@ -170,19 +164,10 @@ class NET_EXPORT_PRIVATE NetworkQualityEstimator // throughput is computed. static const int kMinRequestDurationMicroseconds = 1000; - // Minimum valid value of the variation parameter that holds RTT (in - // milliseconds) values. - static const int kMinimumRTTVariationParameterMsec = 1; - - // Minimum valid value of the variation parameter that holds throughput (in - // kbps) values. - static const int kMinimumThroughputVariationParameterKbps = 1; - // Construct a NetworkQualityEstimator instance allowing for test - // configuration. Registers for network type change notifications so estimates - // can be kept network specific. - // |variation_params| is the map containing all field trial parameters for the - // network quality estimator field trial. + // configuration. + // Registers for network type change notifications so estimates can be kept + // network specific. // |allow_local_host_requests_for_tests| should only be true when testing // against local HTTP server and allows the requests to local host to be // used for network quality estimation. @@ -190,18 +175,8 @@ class NET_EXPORT_PRIVATE NetworkQualityEstimator // against local HTTP server and allows the responses smaller than // |kMinTransferSizeInBytes| or shorter than |kMinRequestDurationMicroseconds| // to be used for network quality estimation. - NetworkQualityEstimator( - const std::map<std::string, std::string>& variation_params, - bool allow_local_host_requests_for_tests, - bool allow_smaller_responses_for_tests); - - // Obtains operating parameters from the field trial parameters. - void ObtainOperatingParams( - const std::map<std::string, std::string>& variation_params); - - // Adds the default median RTT and downstream throughput estimate for the - // current connection type to the observation buffer. - void AddDefaultEstimates(); + NetworkQualityEstimator(bool allow_local_host_requests_for_tests, + bool allow_smaller_responses_for_tests); // Returns the maximum size of the observation buffer. // Used for testing. @@ -255,12 +230,6 @@ class NET_EXPORT_PRIVATE NetworkQualityEstimator // Buffer that holds RTT (in milliseconds) observations sorted by timestamp. ObservationBuffer rtt_msec_observations_; - // Default network quality observations obtained from the network quality - // estimator field trial parameters. The observations are indexed by - // ConnectionType. - NetworkQuality - default_observations_[NetworkChangeNotifier::CONNECTION_LAST + 1]; - base::ThreadChecker thread_checker_; DISALLOW_COPY_AND_ASSIGN(NetworkQualityEstimator); diff --git a/net/base/network_quality_estimator_unittest.cc b/net/base/network_quality_estimator_unittest.cc index ec61b44..c1955ec4 100644 --- a/net/base/network_quality_estimator_unittest.cc +++ b/net/base/network_quality_estimator_unittest.cc @@ -5,7 +5,6 @@ #include "net/base/network_quality_estimator.h" #include <limits> -#include <map> #include "base/basictypes.h" #include "base/logging.h" @@ -31,13 +30,11 @@ TEST(NetworkQualityEstimatorTest, DISABLED_TestPeakKbpsFastestRTTUpdates) { ASSERT_TRUE(embedded_test_server.InitializeAndWaitUntilReady()); // Enable requests to local host to be used for network quality estimation. - std::map<std::string, std::string> variation_params; - NetworkQualityEstimator estimator(variation_params, true, true); + NetworkQualityEstimator estimator(true, true); { NetworkQuality network_quality = estimator.GetPeakEstimate(); - EXPECT_EQ(NetworkQuality::kInvalidRTT, network_quality.rtt()); - EXPECT_EQ(NetworkQuality::kInvalidThroughput, - network_quality.downstream_throughput_kbps()); + EXPECT_EQ(network_quality.rtt(), base::TimeDelta::Max()); + EXPECT_EQ(network_quality.downstream_throughput_kbps(), 0); } TestDelegate test_delegate; @@ -72,9 +69,8 @@ TEST(NetworkQualityEstimatorTest, DISABLED_TestPeakKbpsFastestRTTUpdates) { NetworkQuality network_quality = estimator.GetPeakEstimate(); EXPECT_EQ(estimator.current_connection_type_, NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI); - EXPECT_EQ(NetworkQuality::kInvalidRTT, network_quality.rtt()); - EXPECT_EQ(NetworkQuality::kInvalidThroughput, - network_quality.downstream_throughput_kbps()); + EXPECT_EQ(network_quality.rtt(), base::TimeDelta::Max()); + EXPECT_EQ(network_quality.downstream_throughput_kbps(), 0); } } @@ -84,8 +80,7 @@ TEST(NetworkQualityEstimatorTest, StoreObservations) { base::FilePath(FILE_PATH_LITERAL("net/data/url_request_unittest"))); ASSERT_TRUE(embedded_test_server.InitializeAndWaitUntilReady()); - std::map<std::string, std::string> variation_params; - NetworkQualityEstimator estimator(variation_params, true, true); + NetworkQualityEstimator estimator(true, true); TestDelegate test_delegate; TestURLRequestContext context(false); @@ -131,8 +126,7 @@ TEST(NetworkQualityEstimatorTest, StoreObservations) { // the same timestamp. Kbps percentiles must be in decreasing order. RTT // percentiles must be in increasing order. TEST(NetworkQualityEstimatorTest, PercentileSameTimestamps) { - std::map<std::string, std::string> variation_params; - NetworkQualityEstimator estimator(variation_params); + NetworkQualityEstimator estimator; base::TimeTicks now = base::TimeTicks::Now(); // Network quality should be unavailable when no observations are available. @@ -180,8 +174,7 @@ TEST(NetworkQualityEstimatorTest, PercentileSameTimestamps) { // much more heavily than older samples. Kbps percentiles must be in decreasing // order. RTT percentiles must be in increasing order. TEST(NetworkQualityEstimatorTest, PercentileDifferentTimestamps) { - std::map<std::string, std::string> variation_params; - NetworkQualityEstimator estimator(variation_params); + NetworkQualityEstimator estimator; base::TimeTicks now = base::TimeTicks::Now(); base::TimeTicks very_old = base::TimeTicks::UnixEpoch(); @@ -225,12 +218,10 @@ TEST(NetworkQualityEstimatorTest, ComputedPercentiles) { base::FilePath(FILE_PATH_LITERAL("net/data/url_request_unittest"))); ASSERT_TRUE(embedded_test_server.InitializeAndWaitUntilReady()); - std::map<std::string, std::string> variation_params; - NetworkQualityEstimator estimator(variation_params, true, true); + NetworkQualityEstimator estimator(true, true); NetworkQuality network_quality = estimator.GetPeakEstimate(); - EXPECT_EQ(NetworkQuality::kInvalidRTT, network_quality.rtt()); - EXPECT_EQ(NetworkQuality::kInvalidThroughput, - network_quality.downstream_throughput_kbps()); + EXPECT_EQ(network_quality.rtt(), base::TimeDelta::Max()); + EXPECT_EQ(network_quality.downstream_throughput_kbps(), 0); TestDelegate test_delegate; TestURLRequestContext context(false); @@ -269,70 +260,4 @@ TEST(NetworkQualityEstimatorTest, ComputedPercentiles) { } } -// http://crbug.com/504058 -#if !defined(OS_WIN) -TEST(NetworkQualityEstimatorTest, ObtainOperatingParams) { - std::map<std::string, std::string> variation_params; - variation_params["Unknown.DefaultMedianKbps"] = "100"; - variation_params["WiFi.DefaultMedianKbps"] = "200"; - variation_params["2G.DefaultMedianKbps"] = "300"; - - variation_params["Unknown.DefaultMedianRTTMsec"] = "1000"; - variation_params["WiFi.DefaultMedianRTTMsec"] = "2000"; - // Negative variation value should not be used. - variation_params["2G.DefaultMedianRTTMsec"] = "-5"; - - NetworkQualityEstimator estimator(variation_params, true, true); - EXPECT_EQ(1U, estimator.kbps_observations_.Size()); - EXPECT_EQ(1U, estimator.rtt_msec_observations_.Size()); - NetworkQuality network_quality; - EXPECT_TRUE(estimator.GetEstimate(&network_quality)); - EXPECT_EQ(100, network_quality.downstream_throughput_kbps()); - EXPECT_EQ(base::TimeDelta::FromMilliseconds(1000), network_quality.rtt()); - auto it = estimator.kbps_observations_.observations_.begin(); - EXPECT_EQ(100, (*it).value); - it = estimator.rtt_msec_observations_.observations_.begin(); - EXPECT_EQ(1000, (*it).value); - - // Simulate network change to Wi-Fi. - estimator.OnConnectionTypeChanged( - NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI); - EXPECT_EQ(1U, estimator.kbps_observations_.Size()); - EXPECT_EQ(1U, estimator.rtt_msec_observations_.Size()); - EXPECT_TRUE(estimator.GetEstimate(&network_quality)); - EXPECT_EQ(200, network_quality.downstream_throughput_kbps()); - EXPECT_EQ(base::TimeDelta::FromMilliseconds(2000), network_quality.rtt()); - it = estimator.kbps_observations_.observations_.begin(); - EXPECT_EQ(200, (*it).value); - it = estimator.rtt_msec_observations_.observations_.begin(); - EXPECT_EQ(2000, (*it).value); - - // Peak network quality should not be affected by the network quality - // estimator field trial. - EXPECT_EQ(NetworkQuality::kInvalidRTT, - estimator.fastest_rtt_since_last_connection_change_); - EXPECT_EQ(NetworkQuality::kInvalidThroughput, - estimator.peak_kbps_since_last_connection_change_); - - // Simulate network change to 2G. Only the Kbps default estimate should be - // available. - estimator.OnConnectionTypeChanged( - NetworkChangeNotifier::ConnectionType::CONNECTION_2G); - EXPECT_EQ(1U, estimator.kbps_observations_.Size()); - EXPECT_EQ(0U, estimator.rtt_msec_observations_.Size()); - // For GetEstimate() to return true, at least one observation must be - // available for both RTT and downstream throughput. - EXPECT_FALSE(estimator.GetEstimate(&network_quality)); - it = estimator.kbps_observations_.observations_.begin(); - EXPECT_EQ(300, (*it).value); - - // Simulate network change to 3G. Default estimates should be unavailable. - estimator.OnConnectionTypeChanged( - NetworkChangeNotifier::ConnectionType::CONNECTION_3G); - EXPECT_FALSE(estimator.GetEstimate(&network_quality)); - EXPECT_EQ(0U, estimator.kbps_observations_.Size()); - EXPECT_EQ(0U, estimator.rtt_msec_observations_.Size()); -} -#endif // !defined(OS_WIN) - } // namespace net diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc index 1f57487..11e19d9 100644 --- a/net/url_request/url_request_unittest.cc +++ b/net/url_request/url_request_unittest.cc @@ -4077,8 +4077,7 @@ TEST_F(URLRequestTestHTTP, GetZippedTest) { TEST_F(URLRequestTestHTTP, NetworkQualityEstimator) { ASSERT_TRUE(test_server_.Start()); // Enable requests to local host to be used for network quality estimation. - std::map<std::string, std::string> variation_params; - NetworkQualityEstimator estimator(variation_params, true, true); + NetworkQualityEstimator estimator(true, true); TestDelegate d; TestNetworkDelegate network_delegate; // Must outlive URLRequest. |