Index: net/nqe/network_quality_estimator_unittest.cc |
diff --git a/net/nqe/network_quality_estimator_unittest.cc b/net/nqe/network_quality_estimator_unittest.cc |
index e19c15e9ce265957406950bcd00857abe246164d..58bc1001bbf9b2e5d9cd25f0b31fdb783bd5d38b 100644 |
--- a/net/nqe/network_quality_estimator_unittest.cc |
+++ b/net/nqe/network_quality_estimator_unittest.cc |
@@ -921,26 +921,20 @@ TEST(NetworkQualityEstimatorTest, TestGetMetricsSince) { |
// estimate. |
class InvalidExternalEstimateProvider : public ExternalEstimateProvider { |
public: |
- InvalidExternalEstimateProvider() |
- : get_rtt_count_(0), get_downstream_throughput_count_(0) {} |
+ InvalidExternalEstimateProvider() : update_count_(0) {} |
~InvalidExternalEstimateProvider() override {} |
- // ExternalEstimateProvider implementation: |
bool GetRTT(base::TimeDelta* rtt) const override { |
DCHECK(rtt); |
- get_rtt_count_++; |
return false; |
} |
- // ExternalEstimateProvider implementation: |
bool GetDownstreamThroughputKbps( |
int32_t* downstream_throughput_kbps) const override { |
DCHECK(downstream_throughput_kbps); |
- get_downstream_throughput_count_++; |
return false; |
} |
- // ExternalEstimateProvider implementation: |
bool GetUpstreamThroughputKbps( |
int32_t* upstream_throughput_kbps) const override { |
// NetworkQualityEstimator does not support upstream throughput. |
@@ -948,29 +942,20 @@ class InvalidExternalEstimateProvider : public ExternalEstimateProvider { |
return false; |
} |
- // ExternalEstimateProvider implementation: |
bool GetTimeSinceLastUpdate( |
base::TimeDelta* time_since_last_update) const override { |
- *time_since_last_update = base::TimeDelta::FromMilliseconds(1); |
- return true; |
+ NOTREACHED(); |
+ return false; |
} |
- // ExternalEstimateProvider implementation: |
void SetUpdatedEstimateDelegate(UpdatedEstimateDelegate* delegate) override {} |
- // ExternalEstimateProvider implementation: |
- void Update() const override {} |
- |
- size_t get_rtt_count() const { return get_rtt_count_; } |
+ void Update() const override { update_count_++; } |
- size_t get_downstream_throughput_count() const { |
- return get_downstream_throughput_count_; |
- } |
+ size_t update_count() const { return update_count_; } |
private: |
- // Keeps track of number of times different functions were called. |
- mutable size_t get_rtt_count_; |
- mutable size_t get_downstream_throughput_count_; |
+ mutable size_t update_count_; |
DISALLOW_COPY_AND_ASSIGN(InvalidExternalEstimateProvider); |
}; |
@@ -986,16 +971,15 @@ TEST(NetworkQualityEstimatorTest, InvalidExternalEstimateProvider) { |
TestNetworkQualityEstimator estimator(std::map<std::string, std::string>(), |
std::move(external_estimate_provider)); |
+ estimator.SimulateNetworkChangeTo(net::NetworkChangeNotifier::CONNECTION_WIFI, |
+ "test"); |
base::TimeDelta rtt; |
int32_t kbps; |
- EXPECT_EQ(1U, invalid_external_estimate_provider->get_rtt_count()); |
- EXPECT_EQ( |
- 1U, |
- invalid_external_estimate_provider->get_downstream_throughput_count()); |
+ EXPECT_EQ(1U, invalid_external_estimate_provider->update_count()); |
EXPECT_FALSE(estimator.GetHttpRTTEstimate(&rtt)); |
EXPECT_FALSE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps)); |
- histogram_tester.ExpectTotalCount("NQE.ExternalEstimateProviderStatus", 3); |
+ histogram_tester.ExpectTotalCount("NQE.ExternalEstimateProviderStatus", 2); |
histogram_tester.ExpectBucketCount( |
"NQE.ExternalEstimateProviderStatus", |
@@ -1003,9 +987,6 @@ TEST(NetworkQualityEstimatorTest, InvalidExternalEstimateProvider) { |
histogram_tester.ExpectBucketCount( |
"NQE.ExternalEstimateProviderStatus", |
2 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_QUERIED */, 1); |
- histogram_tester.ExpectBucketCount( |
- "NQE.ExternalEstimateProviderStatus", |
- 3 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_QUERY_SUCCESSFUL */, 1); |
histogram_tester.ExpectTotalCount("NQE.ExternalEstimateProvider.RTT", 0); |
histogram_tester.ExpectTotalCount( |
"NQE.ExternalEstimateProvider.DownlinkBandwidth", 0); |
@@ -1015,76 +996,63 @@ class TestExternalEstimateProvider : public ExternalEstimateProvider { |
public: |
TestExternalEstimateProvider(base::TimeDelta rtt, |
int32_t downstream_throughput_kbps) |
- : rtt_(rtt), |
+ : delegate_(nullptr), |
+ should_notify_delegate_(true), |
+ rtt_(rtt), |
downstream_throughput_kbps_(downstream_throughput_kbps), |
- time_since_last_update_(base::TimeDelta::FromSeconds(1)), |
- get_time_since_last_update_count_(0), |
- get_rtt_count_(0), |
- get_downstream_throughput_kbps_count_(0), |
update_count_(0) {} |
~TestExternalEstimateProvider() override {} |
- // ExternalEstimateProvider implementation: |
bool GetRTT(base::TimeDelta* rtt) const override { |
- *rtt = rtt_; |
- get_rtt_count_++; |
+ NOTREACHED(); |
return true; |
} |
- // ExternalEstimateProvider implementation: |
bool GetDownstreamThroughputKbps( |
int32_t* downstream_throughput_kbps) const override { |
- *downstream_throughput_kbps = downstream_throughput_kbps_; |
- get_downstream_throughput_kbps_count_++; |
+ NOTREACHED(); |
return true; |
} |
- // ExternalEstimateProvider implementation: |
bool GetUpstreamThroughputKbps( |
int32_t* upstream_throughput_kbps) const override { |
- // NetworkQualityEstimator does not support upstream throughput. |
- ADD_FAILURE(); |
+ NOTREACHED(); |
return false; |
} |
- // ExternalEstimateProvider implementation: |
bool GetTimeSinceLastUpdate( |
base::TimeDelta* time_since_last_update) const override { |
- *time_since_last_update = time_since_last_update_; |
- get_time_since_last_update_count_++; |
+ NOTREACHED(); |
return true; |
} |
- // ExternalEstimateProvider implementation: |
- void SetUpdatedEstimateDelegate(UpdatedEstimateDelegate* delegate) override {} |
- |
- // ExternalEstimateProvider implementation: |
- void Update() const override { update_count_++; } |
- |
- void set_time_since_last_update(base::TimeDelta time_since_last_update) { |
- time_since_last_update_ = time_since_last_update; |
+ void SetUpdatedEstimateDelegate(UpdatedEstimateDelegate* delegate) override { |
+ delegate_ = delegate; |
} |
- size_t get_time_since_last_update_count() const { |
- return get_time_since_last_update_count_; |
+ void set_should_notify_delegate(bool should_notify_delegate) { |
+ should_notify_delegate_ = should_notify_delegate; |
} |
- size_t get_rtt_count() const { return get_rtt_count_; } |
- size_t get_downstream_throughput_kbps_count() const { |
- return get_downstream_throughput_kbps_count_; |
+ |
+ void Update() const override { |
+ update_count_++; |
+ if (!should_notify_delegate_) |
+ return; |
+ delegate_->OnUpdatedEstimateAvailable(rtt_, downstream_throughput_kbps_, |
+ -1); |
} |
+ |
size_t update_count() const { return update_count_; } |
private: |
+ UpdatedEstimateDelegate* delegate_; |
+ |
+ bool should_notify_delegate_; |
+ |
// RTT and downstream throughput estimates. |
const base::TimeDelta rtt_; |
const int32_t downstream_throughput_kbps_; |
- base::TimeDelta time_since_last_update_; |
- |
- // Keeps track of number of times different functions were called. |
- mutable size_t get_time_since_last_update_count_; |
- mutable size_t get_rtt_count_; |
- mutable size_t get_downstream_throughput_kbps_count_; |
mutable size_t update_count_; |
DISALLOW_COPY_AND_ASSIGN(TestExternalEstimateProvider); |
@@ -1094,15 +1062,21 @@ class TestExternalEstimateProvider : public ExternalEstimateProvider { |
// on network change notification. |
TEST(NetworkQualityEstimatorTest, TestExternalEstimateProvider) { |
base::HistogramTester histogram_tester; |
+ const base::TimeDelta external_estimate_provider_rtt = |
+ base::TimeDelta::FromMilliseconds(1); |
+ const int32_t external_estimate_provider_downstream_throughput = 100; |
+ |
TestExternalEstimateProvider* test_external_estimate_provider = |
- new TestExternalEstimateProvider(base::TimeDelta::FromMilliseconds(1), |
- 100); |
+ new TestExternalEstimateProvider( |
+ external_estimate_provider_rtt, |
+ external_estimate_provider_downstream_throughput); |
std::unique_ptr<ExternalEstimateProvider> external_estimate_provider( |
test_external_estimate_provider); |
std::map<std::string, std::string> variation_params; |
TestNetworkQualityEstimator estimator(variation_params, |
std::move(external_estimate_provider)); |
- |
+ estimator.SimulateNetworkChangeTo(net::NetworkChangeNotifier::CONNECTION_WIFI, |
+ "test"); |
base::TimeDelta rtt; |
int32_t kbps; |
EXPECT_TRUE(estimator.GetHttpRTTEstimate(&rtt)); |
@@ -1119,7 +1093,7 @@ TEST(NetworkQualityEstimatorTest, TestExternalEstimateProvider) { |
2 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_QUERIED */, 1); |
histogram_tester.ExpectBucketCount( |
"NQE.ExternalEstimateProviderStatus", |
- 3 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_QUERY_SUCCESSFUL */, 1); |
+ 4 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_CALLBACK */, 1); |
histogram_tester.ExpectBucketCount( |
"NQE.ExternalEstimateProviderStatus", |
5 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_RTT_AVAILABLE */, 1); |
@@ -1127,20 +1101,11 @@ TEST(NetworkQualityEstimatorTest, TestExternalEstimateProvider) { |
"NQE.ExternalEstimateProviderStatus", |
6 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_DOWNLINK_BANDWIDTH_AVAILABLE */, |
1); |
- histogram_tester.ExpectTotalCount("NQE.ExternalEstimateProvider.RTT", 1); |
- histogram_tester.ExpectBucketCount("NQE.ExternalEstimateProvider.RTT", 1, 1); |
- |
- histogram_tester.ExpectTotalCount( |
- "NQE.ExternalEstimateProvider.DownlinkBandwidth", 1); |
- histogram_tester.ExpectBucketCount( |
+ histogram_tester.ExpectUniqueSample("NQE.ExternalEstimateProvider.RTT", 1, 1); |
+ histogram_tester.ExpectUniqueSample( |
"NQE.ExternalEstimateProvider.DownlinkBandwidth", 100, 1); |
- EXPECT_EQ( |
- 1U, test_external_estimate_provider->get_time_since_last_update_count()); |
- EXPECT_EQ(1U, test_external_estimate_provider->get_rtt_count()); |
- EXPECT_EQ( |
- 1U, |
- test_external_estimate_provider->get_downstream_throughput_kbps_count()); |
+ EXPECT_EQ(1U, test_external_estimate_provider->update_count()); |
// Change network type to WiFi. Number of queries to External estimate |
// provider must increment. |
@@ -1148,40 +1113,12 @@ TEST(NetworkQualityEstimatorTest, TestExternalEstimateProvider) { |
NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI, "test-1"); |
EXPECT_TRUE(estimator.GetHttpRTTEstimate(&rtt)); |
EXPECT_TRUE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps)); |
- EXPECT_EQ( |
- 2U, test_external_estimate_provider->get_time_since_last_update_count()); |
- EXPECT_EQ(2U, test_external_estimate_provider->get_rtt_count()); |
- EXPECT_EQ( |
- 2U, |
- test_external_estimate_provider->get_downstream_throughput_kbps_count()); |
- |
- // Change network type to 2G. Number of queries to External estimate provider |
- // must increment. |
- estimator.SimulateNetworkChangeTo( |
- NetworkChangeNotifier::ConnectionType::CONNECTION_2G, "test-1"); |
- EXPECT_EQ( |
- 3U, test_external_estimate_provider->get_time_since_last_update_count()); |
- EXPECT_EQ(3U, test_external_estimate_provider->get_rtt_count()); |
- EXPECT_EQ( |
- 3U, |
- test_external_estimate_provider->get_downstream_throughput_kbps_count()); |
- |
- // Set the external estimate as old. Network Quality estimator should request |
- // an update on connection type change. |
- EXPECT_EQ(0U, test_external_estimate_provider->update_count()); |
- test_external_estimate_provider->set_time_since_last_update( |
- base::TimeDelta::Max()); |
+ EXPECT_EQ(2U, test_external_estimate_provider->update_count()); |
+ test_external_estimate_provider->set_should_notify_delegate(false); |
estimator.SimulateNetworkChangeTo( |
NetworkChangeNotifier::ConnectionType::CONNECTION_2G, "test-2"); |
- EXPECT_EQ( |
- 4U, test_external_estimate_provider->get_time_since_last_update_count()); |
- EXPECT_EQ(3U, test_external_estimate_provider->get_rtt_count()); |
- EXPECT_EQ( |
- 3U, |
- test_external_estimate_provider->get_downstream_throughput_kbps_count()); |
- EXPECT_EQ(1U, test_external_estimate_provider->update_count()); |
- |
+ EXPECT_EQ(3U, test_external_estimate_provider->update_count()); |
// Estimates are unavailable because external estimate provider never |
// notifies network quality estimator of the updated estimates. |
EXPECT_FALSE(estimator.GetHttpRTTEstimate(&rtt)); |
@@ -1204,6 +1141,8 @@ TEST(NetworkQualityEstimatorTest, TestExternalEstimateProviderMergeEstimates) { |
std::map<std::string, std::string> variation_params; |
TestNetworkQualityEstimator estimator(variation_params, |
std::move(external_estimate_provider)); |
+ estimator.SimulateNetworkChangeTo(net::NetworkChangeNotifier::CONNECTION_WIFI, |
+ "test"); |
base::TimeDelta rtt; |
// Estimate provided by network quality estimator should match the estimate |