OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/base/network_quality_estimator.h" | 5 #include "net/base/network_quality_estimator.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
10 #include "base/test/histogram_tester.h" | 10 #include "base/test/histogram_tester.h" |
(...skipping 15 matching lines...) Expand all Loading... |
26 // (see http://crbug.com/492410). | 26 // (see http://crbug.com/492410). |
27 TEST(NetworkQualityEstimatorTest, DISABLED_TestPeakKbpsFastestRTTUpdates) { | 27 TEST(NetworkQualityEstimatorTest, DISABLED_TestPeakKbpsFastestRTTUpdates) { |
28 SpawnedTestServer test_server_( | 28 SpawnedTestServer test_server_( |
29 SpawnedTestServer::TYPE_HTTP, SpawnedTestServer::kLocalhost, | 29 SpawnedTestServer::TYPE_HTTP, SpawnedTestServer::kLocalhost, |
30 base::FilePath(FILE_PATH_LITERAL("net/data/url_request_unittest"))); | 30 base::FilePath(FILE_PATH_LITERAL("net/data/url_request_unittest"))); |
31 ASSERT_TRUE(test_server_.Start()); | 31 ASSERT_TRUE(test_server_.Start()); |
32 | 32 |
33 // Enable requests to local host to be used for network quality estimation. | 33 // Enable requests to local host to be used for network quality estimation. |
34 NetworkQualityEstimator estimator(true); | 34 NetworkQualityEstimator estimator(true); |
35 { | 35 { |
36 NetworkQuality network_quality = estimator.GetEstimate(); | 36 NetworkQuality network_quality = estimator.GetPeakEstimate(); |
37 EXPECT_EQ(network_quality.fastest_rtt_confidence, 0); | 37 EXPECT_EQ(network_quality.rtt_confidence, 0); |
38 EXPECT_EQ(network_quality.peak_throughput_kbps_confidence, 0); | 38 EXPECT_EQ(network_quality.throughput_kbps_confidence, 0); |
39 } | 39 } |
40 | 40 |
41 TestDelegate d; | 41 TestDelegate d; |
42 TestURLRequestContext context(false); | 42 TestURLRequestContext context(false); |
43 | 43 |
44 uint64 min_transfer_size_in_bytes = | 44 uint64 min_transfer_size_in_bytes = |
45 NetworkQualityEstimator::kMinTransferSizeInBytes; | 45 NetworkQualityEstimator::kMinTransferSizeInBytes; |
46 base::TimeDelta request_duration = base::TimeDelta::FromMicroseconds( | 46 base::TimeDelta request_duration = base::TimeDelta::FromMicroseconds( |
47 NetworkQualityEstimator::kMinRequestDurationMicroseconds); | 47 NetworkQualityEstimator::kMinRequestDurationMicroseconds); |
48 | 48 |
49 scoped_ptr<URLRequest> request(context.CreateRequest( | 49 scoped_ptr<URLRequest> request(context.CreateRequest( |
50 test_server_.GetURL("echo.html"), DEFAULT_PRIORITY, &d)); | 50 test_server_.GetURL("echo.html"), DEFAULT_PRIORITY, &d)); |
51 request->Start(); | 51 request->Start(); |
52 | 52 |
53 base::RunLoop().Run(); | 53 base::RunLoop().Run(); |
54 | 54 |
55 base::PlatformThread::Sleep(request_duration); | 55 base::PlatformThread::Sleep(request_duration); |
56 | 56 |
57 // With smaller transfer, |fastest_rtt| will be updated but not | 57 // With smaller transfer, |fastest_rtt| will be updated but not |
58 // |peak_throughput_kbps|. | 58 // |peak_throughput_kbps|. |
59 estimator.NotifyDataReceived(*(request.get()), | 59 estimator.NotifyDataReceived(*(request.get()), min_transfer_size_in_bytes - 1, |
60 min_transfer_size_in_bytes - 1); | 60 min_transfer_size_in_bytes - 1); |
61 { | 61 { |
62 NetworkQuality network_quality = estimator.GetEstimate(); | 62 NetworkQuality network_quality = estimator.GetPeakEstimate(); |
63 EXPECT_GT(network_quality.fastest_rtt_confidence, 0); | 63 EXPECT_GT(network_quality.rtt_confidence, 0); |
64 EXPECT_EQ(network_quality.peak_throughput_kbps_confidence, 0); | 64 EXPECT_EQ(network_quality.throughput_kbps_confidence, 0); |
65 } | 65 } |
66 | 66 |
67 // With large transfer, both |fastest_rtt| and |peak_throughput_kbps| will be | 67 // With large transfer, both |fastest_rtt| and |peak_throughput_kbps| will be |
68 // updated. | 68 // updated. |
69 estimator.NotifyDataReceived(*(request.get()), min_transfer_size_in_bytes); | 69 estimator.NotifyDataReceived(*(request.get()), min_transfer_size_in_bytes, |
| 70 min_transfer_size_in_bytes); |
70 { | 71 { |
71 NetworkQuality network_quality = estimator.GetEstimate(); | 72 NetworkQuality network_quality = estimator.GetPeakEstimate(); |
72 EXPECT_GT(network_quality.fastest_rtt_confidence, 0); | 73 EXPECT_GT(network_quality.rtt_confidence, 0); |
73 EXPECT_GT(network_quality.peak_throughput_kbps_confidence, 0); | 74 EXPECT_GT(network_quality.throughput_kbps_confidence, 0); |
74 EXPECT_GE(network_quality.fastest_rtt, request_duration); | 75 EXPECT_GE(network_quality.rtt, request_duration); |
75 EXPECT_GT(network_quality.peak_throughput_kbps, uint32(0)); | 76 EXPECT_GT(network_quality.throughput_kbps, uint32(0)); |
76 EXPECT_LE( | 77 EXPECT_LE( |
77 network_quality.peak_throughput_kbps, | 78 network_quality.throughput_kbps, |
78 min_transfer_size_in_bytes * 8.0 / request_duration.InMilliseconds()); | 79 min_transfer_size_in_bytes * 8.0 / request_duration.InMilliseconds()); |
79 } | 80 } |
80 EXPECT_EQ(estimator.bytes_read_since_last_connection_change_, true); | 81 EXPECT_EQ(estimator.bytes_read_since_last_connection_change_, true); |
81 | 82 |
82 // Check UMA histograms. | 83 // Check UMA histograms. |
83 base::HistogramTester histogram_tester; | 84 base::HistogramTester histogram_tester; |
84 histogram_tester.ExpectTotalCount("NQE.PeakKbps.Unknown", 0); | 85 histogram_tester.ExpectTotalCount("NQE.PeakKbps.Unknown", 0); |
85 histogram_tester.ExpectTotalCount("NQE.FastestRTT.Unknown", 0); | 86 histogram_tester.ExpectTotalCount("NQE.FastestRTT.Unknown", 0); |
86 | 87 |
87 estimator.OnConnectionTypeChanged( | 88 estimator.OnConnectionTypeChanged( |
88 NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI); | 89 NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI); |
89 histogram_tester.ExpectTotalCount("NQE.PeakKbps.Unknown", 1); | 90 histogram_tester.ExpectTotalCount("NQE.PeakKbps.Unknown", 1); |
90 histogram_tester.ExpectTotalCount("NQE.FastestRTT.Unknown", 1); | 91 histogram_tester.ExpectTotalCount("NQE.FastestRTT.Unknown", 1); |
91 { | 92 { |
92 NetworkQuality network_quality = estimator.GetEstimate(); | 93 NetworkQuality network_quality = estimator.GetPeakEstimate(); |
93 EXPECT_EQ(estimator.current_connection_type_, | 94 EXPECT_EQ(estimator.current_connection_type_, |
94 NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI); | 95 NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI); |
95 EXPECT_EQ(network_quality.fastest_rtt_confidence, 0); | 96 EXPECT_EQ(network_quality.rtt_confidence, 0); |
96 EXPECT_EQ(network_quality.peak_throughput_kbps_confidence, 0); | 97 EXPECT_EQ(network_quality.throughput_kbps_confidence, 0); |
97 } | 98 } |
98 } | 99 } |
99 #endif // !defined(OS_IOS) | 100 #endif // !defined(OS_IOS) |
100 | 101 |
101 } // namespace net | 102 } // namespace net |
OLD | NEW |