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

Unified Diff: net/nqe/network_quality_estimator_unittest.cc

Issue 2654033010: NQE: Record the number of RTT and throughput samples received (Closed)
Patch Set: Fix test Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/nqe/network_quality_estimator_test_util.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 8f65b0212d06b5f6bbd63e9a0cca10fd87ff6270..e035cedb79adf046d6521097ae65a6db9779a6e6 100644
--- a/net/nqe/network_quality_estimator_unittest.cc
+++ b/net/nqe/network_quality_estimator_unittest.cc
@@ -44,6 +44,26 @@
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
+namespace {
+
+// Verifies that the number of samples in the bucket with minimum value
+// |bucket_min| in |histogram| are at least |expected_min_count_samples|.
+void ExpectBucketCountAtLeast(base::HistogramTester* histogram_tester,
+ const std::string& histogram,
+ int32_t bucket_min,
+ int32_t expected_min_count_samples) {
+ std::vector<base::Bucket> buckets =
+ histogram_tester->GetAllSamples(histogram);
+ int actual_count_samples = 0;
+ for (const auto& bucket : buckets) {
+ if (bucket.min == bucket_min)
+ actual_count_samples += bucket.count;
+ }
+ EXPECT_LE(expected_min_count_samples, actual_count_samples);
+}
+
+} // namespace
+
namespace net {
namespace {
@@ -235,6 +255,11 @@ TEST(NetworkQualityEstimatorTest, TestKbpsRTTUpdates) {
EXPECT_LE(1u,
histogram_tester.GetAllSamples("NQE.Kbps.OnECTComputation").size());
+ histogram_tester.ExpectBucketCount(
+ "NQE.RTT.ObservationSource", NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP, 1);
+ histogram_tester.ExpectBucketCount(
+ "NQE.Kbps.ObservationSource", NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP, 1);
+
std::unique_ptr<URLRequest> request2(context.CreateRequest(
estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate));
request2->SetLoadFlags(request2->load_flags() | LOAD_MAIN_FRAME_DEPRECATED);
@@ -386,6 +411,12 @@ TEST(NetworkQualityEstimatorTest, Caching) {
estimator.SimulateNetworkChange(
NetworkChangeNotifier::ConnectionType::CONNECTION_2G, "test");
+ histogram_tester.ExpectBucketCount(
+ "NQE.RTT.ObservationSource",
+ NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP_CACHED_ESTIMATE, 1);
+ histogram_tester.ExpectBucketCount(
+ "NQE.Kbps.ObservationSource",
+ NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP_CACHED_ESTIMATE, 1);
// Verify the contents of the net log.
EXPECT_LE(
@@ -484,6 +515,21 @@ TEST(NetworkQualityEstimatorTest, CachingDisabled) {
EXPECT_EQ(0U, throughput_observer.observations().size());
}
+TEST(NetworkQualityEstimatorTest, QuicObservations) {
+ base::HistogramTester histogram_tester;
+ TestNetworkQualityEstimator estimator;
+ estimator.OnUpdatedRTTAvailable(SocketPerformanceWatcherFactory::PROTOCOL_TCP,
+ base::TimeDelta::FromMilliseconds(10));
+ estimator.OnUpdatedRTTAvailable(
+ SocketPerformanceWatcherFactory::PROTOCOL_QUIC,
+ base::TimeDelta::FromMilliseconds(10));
+ histogram_tester.ExpectBucketCount("NQE.RTT.ObservationSource",
+ NETWORK_QUALITY_OBSERVATION_SOURCE_TCP, 1);
+ histogram_tester.ExpectBucketCount(
+ "NQE.RTT.ObservationSource", NETWORK_QUALITY_OBSERVATION_SOURCE_QUIC, 1);
+ histogram_tester.ExpectTotalCount("NQE.RTT.ObservationSource", 2);
+}
+
TEST(NetworkQualityEstimatorTest, StoreObservations) {
TestNetworkQualityEstimator estimator;
@@ -578,6 +624,8 @@ TEST(NetworkQualityEstimatorTest, ComputedPercentiles) {
// Verifies that the observers receive the notifications when default estimates
// are added to the observations.
TEST(NetworkQualityEstimatorTest, DefaultObservations) {
+ base::HistogramTester histogram_tester;
+
TestEffectiveConnectionTypeObserver effective_connection_type_observer;
TestRTTAndThroughputEstimatesObserver rtt_throughput_estimates_observer;
TestRTTObserver rtt_observer;
@@ -587,6 +635,19 @@ TEST(NetworkQualityEstimatorTest, DefaultObservations) {
nullptr, variation_params, false, false,
true /* add_default_platform_observations */,
base::MakeUnique<BoundTestNetLog>());
+
+ histogram_tester.ExpectBucketCount(
+ "NQE.RTT.ObservationSource",
+ NETWORK_QUALITY_OBSERVATION_SOURCE_DEFAULT_HTTP_FROM_PLATFORM, 1);
+ histogram_tester.ExpectBucketCount(
+ "NQE.RTT.ObservationSource",
+ NETWORK_QUALITY_OBSERVATION_SOURCE_DEFAULT_TRANSPORT_FROM_PLATFORM, 1);
+ histogram_tester.ExpectBucketCount(
+ "NQE.Kbps.ObservationSource",
+ NETWORK_QUALITY_OBSERVATION_SOURCE_DEFAULT_HTTP_FROM_PLATFORM, 1);
+ histogram_tester.ExpectTotalCount("NQE.RTT.ObservationSource", 2);
+ histogram_tester.ExpectTotalCount("NQE.Kbps.ObservationSource", 1);
+
base::TimeDelta rtt;
int32_t kbps;
@@ -1481,6 +1542,12 @@ TEST(NetworkQualityEstimatorTest, TestExternalEstimateProvider) {
histogram_tester.ExpectUniqueSample("NQE.ExternalEstimateProvider.RTT", 1, 1);
histogram_tester.ExpectUniqueSample(
"NQE.ExternalEstimateProvider.DownlinkBandwidth", 100, 1);
+ histogram_tester.ExpectBucketCount(
+ "NQE.RTT.ObservationSource",
+ NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP_EXTERNAL_ESTIMATE, 1);
+ histogram_tester.ExpectBucketCount(
+ "NQE.Kbps.ObservationSource",
+ NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP_EXTERNAL_ESTIMATE, 1);
EXPECT_EQ(1U, test_external_estimate_provider->update_count());
@@ -1539,10 +1606,15 @@ TEST(NetworkQualityEstimatorTest, TestExternalEstimateProviderMergeEstimates) {
context.set_network_quality_estimator(&estimator);
context.Init();
- std::unique_ptr<URLRequest> request(context.CreateRequest(
- estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate));
- request->Start();
- base::RunLoop().Run();
+ for (size_t i = 0; i < 2; ++i) {
+ // Start 2 requests to ensure that the RTT estimate computed by the network
+ // quality estimator takes into account the RTT observations from the
+ // external estimate provider as well as organic observations.
+ std::unique_ptr<URLRequest> request(context.CreateRequest(
+ estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate));
+ request->Start();
+ base::RunLoop().Run();
+ }
EXPECT_TRUE(estimator.GetRecentHttpRTT(base::TimeTicks(), &rtt));
EXPECT_NE(external_estimate_provider_rtt, rtt);
@@ -2034,7 +2106,13 @@ TEST(NetworkQualityEstimatorTest, TestRttThroughputObservers) {
TEST(NetworkQualityEstimatorTest, MAYBE_TestTCPSocketRTT) {
base::HistogramTester histogram_tester;
TestRTTObserver rtt_observer;
- TestNetworkQualityEstimator estimator;
+
+ std::map<std::string, std::string> variation_params;
+ variation_params["persistent_cache_reading_enabled"] = "true";
+ TestNetworkQualityEstimator estimator(variation_params);
+ estimator.SimulateNetworkChange(
+ NetworkChangeNotifier::ConnectionType::CONNECTION_2G, "test");
+
estimator.AddRTTObserver(&rtt_observer);
TestDelegate test_delegate;
@@ -2086,14 +2164,13 @@ TEST(NetworkQualityEstimatorTest, MAYBE_TestTCPSocketRTT) {
estimator.SimulateNetworkChange(
NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI, "test-1");
- histogram_tester.ExpectTotalCount("NQE.TransportRTT.Percentile50.Unknown", 1);
- histogram_tester.ExpectBucketCount("NQE.TransportRTT.Percentile50.Unknown",
+ histogram_tester.ExpectTotalCount("NQE.TransportRTT.Percentile50.2G", 1);
+ histogram_tester.ExpectBucketCount("NQE.TransportRTT.Percentile50.2G",
rtt.InMilliseconds(), 1);
- histogram_tester.ExpectTotalCount("NQE.TransportRTT.Percentile10.Unknown", 1);
- histogram_tester.ExpectTotalCount("NQE.TransportRTT.Percentile50.Unknown", 1);
- histogram_tester.ExpectTotalCount("NQE.TransportRTT.Percentile90.Unknown", 1);
- histogram_tester.ExpectTotalCount("NQE.TransportRTT.Percentile100.Unknown",
- 1);
+ histogram_tester.ExpectTotalCount("NQE.TransportRTT.Percentile10.2G", 1);
+ histogram_tester.ExpectTotalCount("NQE.TransportRTT.Percentile50.2G", 1);
+ histogram_tester.ExpectTotalCount("NQE.TransportRTT.Percentile90.2G", 1);
+ histogram_tester.ExpectTotalCount("NQE.TransportRTT.Percentile100.2G", 1);
// Verify that metrics are logged correctly on main-frame requests.
histogram_tester.ExpectTotalCount("NQE.MainFrame.TransportRTT.Percentile50",
@@ -2110,14 +2187,19 @@ TEST(NetworkQualityEstimatorTest, MAYBE_TestTCPSocketRTT) {
num_requests - 1);
histogram_tester.ExpectTotalCount(
- "NQE.MainFrame.TransportRTT.Percentile50.Unknown", num_requests);
+ "NQE.MainFrame.TransportRTT.Percentile50.2G", num_requests);
histogram_tester.ExpectTotalCount("NQE.MainFrame.EffectiveConnectionType",
num_requests);
- histogram_tester.ExpectTotalCount(
- "NQE.MainFrame.EffectiveConnectionType.Unknown", num_requests);
- histogram_tester.ExpectBucketCount(
- "NQE.MainFrame.EffectiveConnectionType.Unknown",
- EFFECTIVE_CONNECTION_TYPE_UNKNOWN, 1);
+ histogram_tester.ExpectTotalCount("NQE.MainFrame.EffectiveConnectionType.2G",
+ num_requests);
+ histogram_tester.ExpectBucketCount("NQE.MainFrame.EffectiveConnectionType.2G",
+ EFFECTIVE_CONNECTION_TYPE_UNKNOWN, 1);
+ ExpectBucketCountAtLeast(&histogram_tester, "NQE.RTT.ObservationSource",
+ NETWORK_QUALITY_OBSERVATION_SOURCE_TCP, 1);
+ ExpectBucketCountAtLeast(&histogram_tester, "NQE.Kbps.ObservationSource",
+ NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP, 1);
+ histogram_tester.ExpectBucketCount("NQE.MainFrame.EffectiveConnectionType.2G",
+ EFFECTIVE_CONNECTION_TYPE_UNKNOWN, 1);
EXPECT_LE(1u,
histogram_tester
.GetAllSamples("NQE.EffectiveConnectionType.OnECTComputation")
@@ -2127,6 +2209,16 @@ TEST(NetworkQualityEstimatorTest, MAYBE_TestTCPSocketRTT) {
.size());
EXPECT_LE(1u,
histogram_tester.GetAllSamples("NQE.RTT.OnECTComputation").size());
+
+ histogram_tester.ExpectBucketCount(
+ "NQE.Kbps.ObservationSource",
+ NETWORK_QUALITY_OBSERVATION_SOURCE_TRANSPORT_CACHED_ESTIMATE, 0);
+
+ estimator.SimulateNetworkChange(
+ NetworkChangeNotifier::ConnectionType::CONNECTION_2G, "test");
+ histogram_tester.ExpectBucketCount(
+ "NQE.RTT.ObservationSource",
+ NETWORK_QUALITY_OBSERVATION_SOURCE_TRANSPORT_CACHED_ESTIMATE, 1);
}
#if defined(OS_IOS)
« no previous file with comments | « net/nqe/network_quality_estimator_test_util.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698