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

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

Issue 2010003002: Reduce the number of calls to external estimate provider (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 4 years, 6 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 unified diff | Download patch
« no previous file with comments | « net/nqe/network_quality_estimator.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/nqe/network_quality_estimator.h" 5 #include "net/nqe/network_quality_estimator.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <limits> 10 #include <limits>
(...skipping 903 matching lines...) Expand 10 before | Expand all | Expand 10 after
914 test.expected_effective_connection_type, 914 test.expected_effective_connection_type,
915 estimator.GetRecentEffectiveConnectionType(test.start_timestamp)); 915 estimator.GetRecentEffectiveConnectionType(test.start_timestamp));
916 } 916 }
917 } 917 }
918 } 918 }
919 919
920 // An external estimate provider that does not have a valid RTT or throughput 920 // An external estimate provider that does not have a valid RTT or throughput
921 // estimate. 921 // estimate.
922 class InvalidExternalEstimateProvider : public ExternalEstimateProvider { 922 class InvalidExternalEstimateProvider : public ExternalEstimateProvider {
923 public: 923 public:
924 InvalidExternalEstimateProvider() 924 InvalidExternalEstimateProvider() : update_count_(0) {}
925 : get_rtt_count_(0), get_downstream_throughput_count_(0) {}
926 ~InvalidExternalEstimateProvider() override {} 925 ~InvalidExternalEstimateProvider() override {}
927 926
928 // ExternalEstimateProvider implementation:
929 bool GetRTT(base::TimeDelta* rtt) const override { 927 bool GetRTT(base::TimeDelta* rtt) const override {
930 DCHECK(rtt); 928 DCHECK(rtt);
931 get_rtt_count_++;
932 return false; 929 return false;
933 } 930 }
934 931
935 // ExternalEstimateProvider implementation:
936 bool GetDownstreamThroughputKbps( 932 bool GetDownstreamThroughputKbps(
937 int32_t* downstream_throughput_kbps) const override { 933 int32_t* downstream_throughput_kbps) const override {
938 DCHECK(downstream_throughput_kbps); 934 DCHECK(downstream_throughput_kbps);
939 get_downstream_throughput_count_++;
940 return false; 935 return false;
941 } 936 }
942 937
943 // ExternalEstimateProvider implementation:
944 bool GetUpstreamThroughputKbps( 938 bool GetUpstreamThroughputKbps(
945 int32_t* upstream_throughput_kbps) const override { 939 int32_t* upstream_throughput_kbps) const override {
946 // NetworkQualityEstimator does not support upstream throughput. 940 // NetworkQualityEstimator does not support upstream throughput.
947 ADD_FAILURE(); 941 ADD_FAILURE();
948 return false; 942 return false;
949 } 943 }
950 944
951 // ExternalEstimateProvider implementation:
952 bool GetTimeSinceLastUpdate( 945 bool GetTimeSinceLastUpdate(
953 base::TimeDelta* time_since_last_update) const override { 946 base::TimeDelta* time_since_last_update) const override {
954 *time_since_last_update = base::TimeDelta::FromMilliseconds(1); 947 NOTREACHED();
955 return true; 948 return false;
956 } 949 }
957 950
958 // ExternalEstimateProvider implementation:
959 void SetUpdatedEstimateDelegate(UpdatedEstimateDelegate* delegate) override {} 951 void SetUpdatedEstimateDelegate(UpdatedEstimateDelegate* delegate) override {}
960 952
961 // ExternalEstimateProvider implementation: 953 void Update() const override { update_count_++; }
962 void Update() const override {}
963 954
964 size_t get_rtt_count() const { return get_rtt_count_; } 955 size_t update_count() const { return update_count_; }
965
966 size_t get_downstream_throughput_count() const {
967 return get_downstream_throughput_count_;
968 }
969 956
970 private: 957 private:
971 // Keeps track of number of times different functions were called. 958 mutable size_t update_count_;
972 mutable size_t get_rtt_count_;
973 mutable size_t get_downstream_throughput_count_;
974 959
975 DISALLOW_COPY_AND_ASSIGN(InvalidExternalEstimateProvider); 960 DISALLOW_COPY_AND_ASSIGN(InvalidExternalEstimateProvider);
976 }; 961 };
977 962
978 // Tests if the RTT value from external estimate provider is discarded if the 963 // Tests if the RTT value from external estimate provider is discarded if the
979 // external estimate provider is invalid. 964 // external estimate provider is invalid.
980 TEST(NetworkQualityEstimatorTest, InvalidExternalEstimateProvider) { 965 TEST(NetworkQualityEstimatorTest, InvalidExternalEstimateProvider) {
981 base::HistogramTester histogram_tester; 966 base::HistogramTester histogram_tester;
982 InvalidExternalEstimateProvider* invalid_external_estimate_provider = 967 InvalidExternalEstimateProvider* invalid_external_estimate_provider =
983 new InvalidExternalEstimateProvider(); 968 new InvalidExternalEstimateProvider();
984 std::unique_ptr<ExternalEstimateProvider> external_estimate_provider( 969 std::unique_ptr<ExternalEstimateProvider> external_estimate_provider(
985 invalid_external_estimate_provider); 970 invalid_external_estimate_provider);
986 971
987 TestNetworkQualityEstimator estimator(std::map<std::string, std::string>(), 972 TestNetworkQualityEstimator estimator(std::map<std::string, std::string>(),
988 std::move(external_estimate_provider)); 973 std::move(external_estimate_provider));
974 estimator.SimulateNetworkChangeTo(net::NetworkChangeNotifier::CONNECTION_WIFI,
975 "test");
989 976
990 base::TimeDelta rtt; 977 base::TimeDelta rtt;
991 int32_t kbps; 978 int32_t kbps;
992 EXPECT_EQ(1U, invalid_external_estimate_provider->get_rtt_count()); 979 EXPECT_EQ(1U, invalid_external_estimate_provider->update_count());
993 EXPECT_EQ(
994 1U,
995 invalid_external_estimate_provider->get_downstream_throughput_count());
996 EXPECT_FALSE(estimator.GetHttpRTTEstimate(&rtt)); 980 EXPECT_FALSE(estimator.GetHttpRTTEstimate(&rtt));
997 EXPECT_FALSE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps)); 981 EXPECT_FALSE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps));
998 histogram_tester.ExpectTotalCount("NQE.ExternalEstimateProviderStatus", 3); 982 histogram_tester.ExpectTotalCount("NQE.ExternalEstimateProviderStatus", 2);
999 983
1000 histogram_tester.ExpectBucketCount( 984 histogram_tester.ExpectBucketCount(
1001 "NQE.ExternalEstimateProviderStatus", 985 "NQE.ExternalEstimateProviderStatus",
1002 1 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_AVAILABLE */, 1); 986 1 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_AVAILABLE */, 1);
1003 histogram_tester.ExpectBucketCount( 987 histogram_tester.ExpectBucketCount(
1004 "NQE.ExternalEstimateProviderStatus", 988 "NQE.ExternalEstimateProviderStatus",
1005 2 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_QUERIED */, 1); 989 2 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_QUERIED */, 1);
1006 histogram_tester.ExpectBucketCount(
1007 "NQE.ExternalEstimateProviderStatus",
1008 3 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_QUERY_SUCCESSFUL */, 1);
1009 histogram_tester.ExpectTotalCount("NQE.ExternalEstimateProvider.RTT", 0); 990 histogram_tester.ExpectTotalCount("NQE.ExternalEstimateProvider.RTT", 0);
1010 histogram_tester.ExpectTotalCount( 991 histogram_tester.ExpectTotalCount(
1011 "NQE.ExternalEstimateProvider.DownlinkBandwidth", 0); 992 "NQE.ExternalEstimateProvider.DownlinkBandwidth", 0);
1012 } 993 }
1013 994
1014 class TestExternalEstimateProvider : public ExternalEstimateProvider { 995 class TestExternalEstimateProvider : public ExternalEstimateProvider {
1015 public: 996 public:
1016 TestExternalEstimateProvider(base::TimeDelta rtt, 997 TestExternalEstimateProvider(base::TimeDelta rtt,
1017 int32_t downstream_throughput_kbps) 998 int32_t downstream_throughput_kbps)
1018 : rtt_(rtt), 999 : delegate_(nullptr),
1000 should_notify_delegate_(true),
1001 rtt_(rtt),
1019 downstream_throughput_kbps_(downstream_throughput_kbps), 1002 downstream_throughput_kbps_(downstream_throughput_kbps),
1020 time_since_last_update_(base::TimeDelta::FromSeconds(1)),
1021 get_time_since_last_update_count_(0),
1022 get_rtt_count_(0),
1023 get_downstream_throughput_kbps_count_(0),
1024 update_count_(0) {} 1003 update_count_(0) {}
1025 ~TestExternalEstimateProvider() override {} 1004 ~TestExternalEstimateProvider() override {}
1026 1005
1027 // ExternalEstimateProvider implementation:
1028 bool GetRTT(base::TimeDelta* rtt) const override { 1006 bool GetRTT(base::TimeDelta* rtt) const override {
1029 *rtt = rtt_; 1007 NOTREACHED();
1030 get_rtt_count_++;
1031 return true; 1008 return true;
1032 } 1009 }
1033 1010
1034 // ExternalEstimateProvider implementation:
1035 bool GetDownstreamThroughputKbps( 1011 bool GetDownstreamThroughputKbps(
1036 int32_t* downstream_throughput_kbps) const override { 1012 int32_t* downstream_throughput_kbps) const override {
1037 *downstream_throughput_kbps = downstream_throughput_kbps_; 1013 NOTREACHED();
1038 get_downstream_throughput_kbps_count_++;
1039 return true; 1014 return true;
1040 } 1015 }
1041 1016
1042 // ExternalEstimateProvider implementation:
1043 bool GetUpstreamThroughputKbps( 1017 bool GetUpstreamThroughputKbps(
1044 int32_t* upstream_throughput_kbps) const override { 1018 int32_t* upstream_throughput_kbps) const override {
1045 // NetworkQualityEstimator does not support upstream throughput. 1019 NOTREACHED();
1046 ADD_FAILURE();
1047 return false; 1020 return false;
1048 } 1021 }
1049 1022
1050 // ExternalEstimateProvider implementation:
1051 bool GetTimeSinceLastUpdate( 1023 bool GetTimeSinceLastUpdate(
1052 base::TimeDelta* time_since_last_update) const override { 1024 base::TimeDelta* time_since_last_update) const override {
1053 *time_since_last_update = time_since_last_update_; 1025 NOTREACHED();
1054 get_time_since_last_update_count_++;
1055 return true; 1026 return true;
1056 } 1027 }
1057 1028
1058 // ExternalEstimateProvider implementation: 1029 void SetUpdatedEstimateDelegate(UpdatedEstimateDelegate* delegate) override {
1059 void SetUpdatedEstimateDelegate(UpdatedEstimateDelegate* delegate) override {} 1030 delegate_ = delegate;
1060
1061 // ExternalEstimateProvider implementation:
1062 void Update() const override { update_count_++; }
1063
1064 void set_time_since_last_update(base::TimeDelta time_since_last_update) {
1065 time_since_last_update_ = time_since_last_update;
1066 } 1031 }
1067 1032
1068 size_t get_time_since_last_update_count() const { 1033 void set_should_notify_delegate(bool should_notify_delegate) {
1069 return get_time_since_last_update_count_; 1034 should_notify_delegate_ = should_notify_delegate;
1070 } 1035 }
1071 size_t get_rtt_count() const { return get_rtt_count_; } 1036
1072 size_t get_downstream_throughput_kbps_count() const { 1037 void Update() const override {
1073 return get_downstream_throughput_kbps_count_; 1038 update_count_++;
1039 if (!should_notify_delegate_)
1040 return;
1041 delegate_->OnUpdatedEstimateAvailable(rtt_, downstream_throughput_kbps_,
1042 -1);
1074 } 1043 }
1044
1075 size_t update_count() const { return update_count_; } 1045 size_t update_count() const { return update_count_; }
1076 1046
1077 private: 1047 private:
1048 UpdatedEstimateDelegate* delegate_;
1049
1050 bool should_notify_delegate_;
1051
1078 // RTT and downstream throughput estimates. 1052 // RTT and downstream throughput estimates.
1079 const base::TimeDelta rtt_; 1053 const base::TimeDelta rtt_;
1080 const int32_t downstream_throughput_kbps_; 1054 const int32_t downstream_throughput_kbps_;
1081 1055
1082 base::TimeDelta time_since_last_update_;
1083
1084 // Keeps track of number of times different functions were called.
1085 mutable size_t get_time_since_last_update_count_;
1086 mutable size_t get_rtt_count_;
1087 mutable size_t get_downstream_throughput_kbps_count_;
1088 mutable size_t update_count_; 1056 mutable size_t update_count_;
1089 1057
1090 DISALLOW_COPY_AND_ASSIGN(TestExternalEstimateProvider); 1058 DISALLOW_COPY_AND_ASSIGN(TestExternalEstimateProvider);
1091 }; 1059 };
1092 1060
1093 // Tests if the external estimate provider is called in the constructor and 1061 // Tests if the external estimate provider is called in the constructor and
1094 // on network change notification. 1062 // on network change notification.
1095 TEST(NetworkQualityEstimatorTest, TestExternalEstimateProvider) { 1063 TEST(NetworkQualityEstimatorTest, TestExternalEstimateProvider) {
1096 base::HistogramTester histogram_tester; 1064 base::HistogramTester histogram_tester;
1065 const base::TimeDelta external_estimate_provider_rtt =
1066 base::TimeDelta::FromMilliseconds(1);
1067 const int32_t external_estimate_provider_downstream_throughput = 100;
1068
1097 TestExternalEstimateProvider* test_external_estimate_provider = 1069 TestExternalEstimateProvider* test_external_estimate_provider =
1098 new TestExternalEstimateProvider(base::TimeDelta::FromMilliseconds(1), 1070 new TestExternalEstimateProvider(
1099 100); 1071 external_estimate_provider_rtt,
1072 external_estimate_provider_downstream_throughput);
1100 std::unique_ptr<ExternalEstimateProvider> external_estimate_provider( 1073 std::unique_ptr<ExternalEstimateProvider> external_estimate_provider(
1101 test_external_estimate_provider); 1074 test_external_estimate_provider);
1102 std::map<std::string, std::string> variation_params; 1075 std::map<std::string, std::string> variation_params;
1103 TestNetworkQualityEstimator estimator(variation_params, 1076 TestNetworkQualityEstimator estimator(variation_params,
1104 std::move(external_estimate_provider)); 1077 std::move(external_estimate_provider));
1105 1078 estimator.SimulateNetworkChangeTo(net::NetworkChangeNotifier::CONNECTION_WIFI,
1079 "test");
1106 base::TimeDelta rtt; 1080 base::TimeDelta rtt;
1107 int32_t kbps; 1081 int32_t kbps;
1108 EXPECT_TRUE(estimator.GetHttpRTTEstimate(&rtt)); 1082 EXPECT_TRUE(estimator.GetHttpRTTEstimate(&rtt));
1109 EXPECT_FALSE(estimator.GetTransportRTTEstimate(&rtt)); 1083 EXPECT_FALSE(estimator.GetTransportRTTEstimate(&rtt));
1110 EXPECT_TRUE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps)); 1084 EXPECT_TRUE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps));
1111 1085
1112 histogram_tester.ExpectTotalCount("NQE.ExternalEstimateProviderStatus", 5); 1086 histogram_tester.ExpectTotalCount("NQE.ExternalEstimateProviderStatus", 5);
1113 1087
1114 histogram_tester.ExpectBucketCount( 1088 histogram_tester.ExpectBucketCount(
1115 "NQE.ExternalEstimateProviderStatus", 1089 "NQE.ExternalEstimateProviderStatus",
1116 1 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_AVAILABLE */, 1); 1090 1 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_AVAILABLE */, 1);
1117 histogram_tester.ExpectBucketCount( 1091 histogram_tester.ExpectBucketCount(
1118 "NQE.ExternalEstimateProviderStatus", 1092 "NQE.ExternalEstimateProviderStatus",
1119 2 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_QUERIED */, 1); 1093 2 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_QUERIED */, 1);
1120 histogram_tester.ExpectBucketCount( 1094 histogram_tester.ExpectBucketCount(
1121 "NQE.ExternalEstimateProviderStatus", 1095 "NQE.ExternalEstimateProviderStatus",
1122 3 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_QUERY_SUCCESSFUL */, 1); 1096 4 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_CALLBACK */, 1);
1123 histogram_tester.ExpectBucketCount( 1097 histogram_tester.ExpectBucketCount(
1124 "NQE.ExternalEstimateProviderStatus", 1098 "NQE.ExternalEstimateProviderStatus",
1125 5 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_RTT_AVAILABLE */, 1); 1099 5 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_RTT_AVAILABLE */, 1);
1126 histogram_tester.ExpectBucketCount( 1100 histogram_tester.ExpectBucketCount(
1127 "NQE.ExternalEstimateProviderStatus", 1101 "NQE.ExternalEstimateProviderStatus",
1128 6 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_DOWNLINK_BANDWIDTH_AVAILABLE */, 1102 6 /* EXTERNAL_ESTIMATE_PROVIDER_STATUS_DOWNLINK_BANDWIDTH_AVAILABLE */,
1129 1); 1103 1);
1130 histogram_tester.ExpectTotalCount("NQE.ExternalEstimateProvider.RTT", 1); 1104 histogram_tester.ExpectUniqueSample("NQE.ExternalEstimateProvider.RTT", 1, 1);
1131 histogram_tester.ExpectBucketCount("NQE.ExternalEstimateProvider.RTT", 1, 1); 1105 histogram_tester.ExpectUniqueSample(
1132
1133 histogram_tester.ExpectTotalCount(
1134 "NQE.ExternalEstimateProvider.DownlinkBandwidth", 1);
1135 histogram_tester.ExpectBucketCount(
1136 "NQE.ExternalEstimateProvider.DownlinkBandwidth", 100, 1); 1106 "NQE.ExternalEstimateProvider.DownlinkBandwidth", 100, 1);
1137 1107
1138 EXPECT_EQ( 1108 EXPECT_EQ(1U, test_external_estimate_provider->update_count());
1139 1U, test_external_estimate_provider->get_time_since_last_update_count());
1140 EXPECT_EQ(1U, test_external_estimate_provider->get_rtt_count());
1141 EXPECT_EQ(
1142 1U,
1143 test_external_estimate_provider->get_downstream_throughput_kbps_count());
1144 1109
1145 // Change network type to WiFi. Number of queries to External estimate 1110 // Change network type to WiFi. Number of queries to External estimate
1146 // provider must increment. 1111 // provider must increment.
1147 estimator.SimulateNetworkChangeTo( 1112 estimator.SimulateNetworkChangeTo(
1148 NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI, "test-1"); 1113 NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI, "test-1");
1149 EXPECT_TRUE(estimator.GetHttpRTTEstimate(&rtt)); 1114 EXPECT_TRUE(estimator.GetHttpRTTEstimate(&rtt));
1150 EXPECT_TRUE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps)); 1115 EXPECT_TRUE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps));
1151 EXPECT_EQ( 1116 EXPECT_EQ(2U, test_external_estimate_provider->update_count());
1152 2U, test_external_estimate_provider->get_time_since_last_update_count());
1153 EXPECT_EQ(2U, test_external_estimate_provider->get_rtt_count());
1154 EXPECT_EQ(
1155 2U,
1156 test_external_estimate_provider->get_downstream_throughput_kbps_count());
1157 1117
1158 // Change network type to 2G. Number of queries to External estimate provider 1118 test_external_estimate_provider->set_should_notify_delegate(false);
1159 // must increment.
1160 estimator.SimulateNetworkChangeTo(
1161 NetworkChangeNotifier::ConnectionType::CONNECTION_2G, "test-1");
1162 EXPECT_EQ(
1163 3U, test_external_estimate_provider->get_time_since_last_update_count());
1164 EXPECT_EQ(3U, test_external_estimate_provider->get_rtt_count());
1165 EXPECT_EQ(
1166 3U,
1167 test_external_estimate_provider->get_downstream_throughput_kbps_count());
1168
1169 // Set the external estimate as old. Network Quality estimator should request
1170 // an update on connection type change.
1171 EXPECT_EQ(0U, test_external_estimate_provider->update_count());
1172 test_external_estimate_provider->set_time_since_last_update(
1173 base::TimeDelta::Max());
1174
1175 estimator.SimulateNetworkChangeTo( 1119 estimator.SimulateNetworkChangeTo(
1176 NetworkChangeNotifier::ConnectionType::CONNECTION_2G, "test-2"); 1120 NetworkChangeNotifier::ConnectionType::CONNECTION_2G, "test-2");
1177 EXPECT_EQ( 1121 EXPECT_EQ(3U, test_external_estimate_provider->update_count());
1178 4U, test_external_estimate_provider->get_time_since_last_update_count());
1179 EXPECT_EQ(3U, test_external_estimate_provider->get_rtt_count());
1180 EXPECT_EQ(
1181 3U,
1182 test_external_estimate_provider->get_downstream_throughput_kbps_count());
1183 EXPECT_EQ(1U, test_external_estimate_provider->update_count());
1184
1185 // Estimates are unavailable because external estimate provider never 1122 // Estimates are unavailable because external estimate provider never
1186 // notifies network quality estimator of the updated estimates. 1123 // notifies network quality estimator of the updated estimates.
1187 EXPECT_FALSE(estimator.GetHttpRTTEstimate(&rtt)); 1124 EXPECT_FALSE(estimator.GetHttpRTTEstimate(&rtt));
1188 EXPECT_FALSE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps)); 1125 EXPECT_FALSE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps));
1189 } 1126 }
1190 1127
1191 // Tests if the estimate from the external estimate provider is merged with the 1128 // Tests if the estimate from the external estimate provider is merged with the
1192 // observations collected from the HTTP requests. 1129 // observations collected from the HTTP requests.
1193 TEST(NetworkQualityEstimatorTest, TestExternalEstimateProviderMergeEstimates) { 1130 TEST(NetworkQualityEstimatorTest, TestExternalEstimateProviderMergeEstimates) {
1194 const base::TimeDelta external_estimate_provider_rtt = 1131 const base::TimeDelta external_estimate_provider_rtt =
1195 base::TimeDelta::FromMilliseconds(10 * 1000); 1132 base::TimeDelta::FromMilliseconds(10 * 1000);
1196 const int32_t external_estimate_provider_downstream_throughput = 100 * 1000; 1133 const int32_t external_estimate_provider_downstream_throughput = 100 * 1000;
1197 TestExternalEstimateProvider* test_external_estimate_provider = 1134 TestExternalEstimateProvider* test_external_estimate_provider =
1198 new TestExternalEstimateProvider( 1135 new TestExternalEstimateProvider(
1199 external_estimate_provider_rtt, 1136 external_estimate_provider_rtt,
1200 external_estimate_provider_downstream_throughput); 1137 external_estimate_provider_downstream_throughput);
1201 std::unique_ptr<ExternalEstimateProvider> external_estimate_provider( 1138 std::unique_ptr<ExternalEstimateProvider> external_estimate_provider(
1202 test_external_estimate_provider); 1139 test_external_estimate_provider);
1203 1140
1204 std::map<std::string, std::string> variation_params; 1141 std::map<std::string, std::string> variation_params;
1205 TestNetworkQualityEstimator estimator(variation_params, 1142 TestNetworkQualityEstimator estimator(variation_params,
1206 std::move(external_estimate_provider)); 1143 std::move(external_estimate_provider));
1144 estimator.SimulateNetworkChangeTo(net::NetworkChangeNotifier::CONNECTION_WIFI,
1145 "test");
1207 1146
1208 base::TimeDelta rtt; 1147 base::TimeDelta rtt;
1209 // Estimate provided by network quality estimator should match the estimate 1148 // Estimate provided by network quality estimator should match the estimate
1210 // provided by external estimate provider. 1149 // provided by external estimate provider.
1211 EXPECT_TRUE(estimator.GetHttpRTTEstimate(&rtt)); 1150 EXPECT_TRUE(estimator.GetHttpRTTEstimate(&rtt));
1212 EXPECT_EQ(external_estimate_provider_rtt, rtt); 1151 EXPECT_EQ(external_estimate_provider_rtt, rtt);
1213 1152
1214 int32_t kbps; 1153 int32_t kbps;
1215 EXPECT_TRUE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps)); 1154 EXPECT_TRUE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps));
1216 EXPECT_EQ(external_estimate_provider_downstream_throughput, kbps); 1155 EXPECT_EQ(external_estimate_provider_downstream_throughput, kbps);
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
1433 histogram_tester.ExpectTotalCount("NQE.TransportRTT.Percentile90.Unknown", 1); 1372 histogram_tester.ExpectTotalCount("NQE.TransportRTT.Percentile90.Unknown", 1);
1434 histogram_tester.ExpectTotalCount("NQE.TransportRTT.Percentile100.Unknown", 1373 histogram_tester.ExpectTotalCount("NQE.TransportRTT.Percentile100.Unknown",
1435 1); 1374 1);
1436 1375
1437 // Verify that metrics are logged correctly on main-frame requests. 1376 // Verify that metrics are logged correctly on main-frame requests.
1438 histogram_tester.ExpectTotalCount( 1377 histogram_tester.ExpectTotalCount(
1439 "NQE.MainFrame.TransportRTT.Percentile50.Unknown", num_requests); 1378 "NQE.MainFrame.TransportRTT.Percentile50.Unknown", num_requests);
1440 } 1379 }
1441 1380
1442 } // namespace net 1381 } // namespace net
OLDNEW
« no previous file with comments | « net/nqe/network_quality_estimator.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698