OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/http/http_server_properties_impl.h" | 5 #include "net/http/http_server_properties_impl.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/basictypes.h" | |
11 #include "base/containers/hash_tables.h" | 10 #include "base/containers/hash_tables.h" |
12 #include "base/logging.h" | 11 #include "base/logging.h" |
13 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
14 #include "base/values.h" | 13 #include "base/values.h" |
15 #include "net/base/host_port_pair.h" | 14 #include "net/base/host_port_pair.h" |
16 #include "net/base/ip_address_number.h" | 15 #include "net/base/ip_address_number.h" |
17 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
18 | 17 |
19 namespace base { | 18 namespace base { |
20 class ListValue; | 19 class ListValue; |
(...skipping 23 matching lines...) Expand all Loading... |
44 } | 43 } |
45 | 44 |
46 namespace { | 45 namespace { |
47 | 46 |
48 const int kMaxSupportsSpdyServerHosts = 500; | 47 const int kMaxSupportsSpdyServerHosts = 500; |
49 const SpdySettingsIds kSpdySettingsId = SETTINGS_UPLOAD_BANDWIDTH; | 48 const SpdySettingsIds kSpdySettingsId = SETTINGS_UPLOAD_BANDWIDTH; |
50 const SpdySettingsFlags kSpdySettingsFlags = SETTINGS_FLAG_PERSISTED; | 49 const SpdySettingsFlags kSpdySettingsFlags = SETTINGS_FLAG_PERSISTED; |
51 | 50 |
52 struct SpdySettingsDataToVerify { | 51 struct SpdySettingsDataToVerify { |
53 HostPortPair spdy_server; | 52 HostPortPair spdy_server; |
54 uint32 value; | 53 uint32_t value; |
55 }; | 54 }; |
56 | 55 |
57 class HttpServerPropertiesImplTest : public testing::Test { | 56 class HttpServerPropertiesImplTest : public testing::Test { |
58 protected: | 57 protected: |
59 bool HasAlternativeService(const HostPortPair& origin) { | 58 bool HasAlternativeService(const HostPortPair& origin) { |
60 const AlternativeServiceVector alternative_service_vector = | 59 const AlternativeServiceVector alternative_service_vector = |
61 impl_.GetAlternativeServices(origin); | 60 impl_.GetAlternativeServices(origin); |
62 return !alternative_service_vector.empty(); | 61 return !alternative_service_vector.empty(); |
63 } | 62 } |
64 | 63 |
65 bool SetAlternativeService(const HostPortPair& origin, | 64 bool SetAlternativeService(const HostPortPair& origin, |
66 const AlternativeService& alternative_service, | 65 const AlternativeService& alternative_service, |
67 double alternative_probability) { | 66 double alternative_probability) { |
68 const base::Time expiration = | 67 const base::Time expiration = |
69 base::Time::Now() + base::TimeDelta::FromDays(1); | 68 base::Time::Now() + base::TimeDelta::FromDays(1); |
70 return impl_.SetAlternativeService(origin, alternative_service, | 69 return impl_.SetAlternativeService(origin, alternative_service, |
71 alternative_probability, expiration); | 70 alternative_probability, expiration); |
72 } | 71 } |
73 | 72 |
74 void InitializeSpdySettingsUploadBandwidth(SpdySettingsMap* spdy_settings_map, | 73 void InitializeSpdySettingsUploadBandwidth(SpdySettingsMap* spdy_settings_map, |
75 const HostPortPair& spdy_server, | 74 const HostPortPair& spdy_server, |
76 uint32 value) { | 75 uint32_t value) { |
77 SettingsMap settings_map; | 76 SettingsMap settings_map; |
78 settings_map[kSpdySettingsId] = | 77 settings_map[kSpdySettingsId] = |
79 SettingsFlagsAndValue(kSpdySettingsFlags, value); | 78 SettingsFlagsAndValue(kSpdySettingsFlags, value); |
80 spdy_settings_map->Put(spdy_server, settings_map); | 79 spdy_settings_map->Put(spdy_server, settings_map); |
81 } | 80 } |
82 | 81 |
83 void VerifySpdySettingsUploadBandwidth( | 82 void VerifySpdySettingsUploadBandwidth( |
84 const SpdySettingsDataToVerify* data_to_verify) { | 83 const SpdySettingsDataToVerify* data_to_verify) { |
85 const SpdySettingsMap& spdy_settings_map = impl_.spdy_settings_map(); | 84 const SpdySettingsMap& spdy_settings_map = impl_.spdy_settings_map(); |
86 int count = 0; | 85 int count = 0; |
(...skipping 1015 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1102 | 1101 |
1103 TEST_F(SpdySettingsServerPropertiesTest, SetSpdySetting) { | 1102 TEST_F(SpdySettingsServerPropertiesTest, SetSpdySetting) { |
1104 HostPortPair spdy_server_empty(std::string(), 443); | 1103 HostPortPair spdy_server_empty(std::string(), 443); |
1105 const SettingsMap& settings_map0 = impl_.GetSpdySettings(spdy_server_empty); | 1104 const SettingsMap& settings_map0 = impl_.GetSpdySettings(spdy_server_empty); |
1106 EXPECT_EQ(0U, settings_map0.size()); // Returns kEmptySettingsMap. | 1105 EXPECT_EQ(0U, settings_map0.size()); // Returns kEmptySettingsMap. |
1107 | 1106 |
1108 // Add www.google.com:443 as persisting. | 1107 // Add www.google.com:443 as persisting. |
1109 HostPortPair spdy_server_google("www.google.com", 443); | 1108 HostPortPair spdy_server_google("www.google.com", 443); |
1110 const SpdySettingsIds id1 = SETTINGS_UPLOAD_BANDWIDTH; | 1109 const SpdySettingsIds id1 = SETTINGS_UPLOAD_BANDWIDTH; |
1111 const SpdySettingsFlags flags1 = SETTINGS_FLAG_PLEASE_PERSIST; | 1110 const SpdySettingsFlags flags1 = SETTINGS_FLAG_PLEASE_PERSIST; |
1112 const uint32 value1 = 31337; | 1111 const uint32_t value1 = 31337; |
1113 EXPECT_TRUE(impl_.SetSpdySetting(spdy_server_google, id1, flags1, value1)); | 1112 EXPECT_TRUE(impl_.SetSpdySetting(spdy_server_google, id1, flags1, value1)); |
1114 // Check the values. | 1113 // Check the values. |
1115 const SettingsMap& settings_map1_ret = | 1114 const SettingsMap& settings_map1_ret = |
1116 impl_.GetSpdySettings(spdy_server_google); | 1115 impl_.GetSpdySettings(spdy_server_google); |
1117 ASSERT_EQ(1U, settings_map1_ret.size()); | 1116 ASSERT_EQ(1U, settings_map1_ret.size()); |
1118 SettingsMap::const_iterator it1_ret = settings_map1_ret.find(id1); | 1117 SettingsMap::const_iterator it1_ret = settings_map1_ret.find(id1); |
1119 EXPECT_TRUE(it1_ret != settings_map1_ret.end()); | 1118 EXPECT_TRUE(it1_ret != settings_map1_ret.end()); |
1120 SettingsFlagsAndValue flags_and_value1_ret = it1_ret->second; | 1119 SettingsFlagsAndValue flags_and_value1_ret = it1_ret->second; |
1121 EXPECT_EQ(SETTINGS_FLAG_PERSISTED, flags_and_value1_ret.first); | 1120 EXPECT_EQ(SETTINGS_FLAG_PERSISTED, flags_and_value1_ret.first); |
1122 EXPECT_EQ(value1, flags_and_value1_ret.second); | 1121 EXPECT_EQ(value1, flags_and_value1_ret.second); |
1123 | 1122 |
1124 // Add mail.google.com:443 as not persisting. | 1123 // Add mail.google.com:443 as not persisting. |
1125 HostPortPair spdy_server_mail("mail.google.com", 443); | 1124 HostPortPair spdy_server_mail("mail.google.com", 443); |
1126 const SpdySettingsIds id2 = SETTINGS_DOWNLOAD_BANDWIDTH; | 1125 const SpdySettingsIds id2 = SETTINGS_DOWNLOAD_BANDWIDTH; |
1127 const SpdySettingsFlags flags2 = SETTINGS_FLAG_NONE; | 1126 const SpdySettingsFlags flags2 = SETTINGS_FLAG_NONE; |
1128 const uint32 value2 = 62667; | 1127 const uint32_t value2 = 62667; |
1129 EXPECT_FALSE(impl_.SetSpdySetting(spdy_server_mail, id2, flags2, value2)); | 1128 EXPECT_FALSE(impl_.SetSpdySetting(spdy_server_mail, id2, flags2, value2)); |
1130 const SettingsMap& settings_map2_ret = | 1129 const SettingsMap& settings_map2_ret = |
1131 impl_.GetSpdySettings(spdy_server_mail); | 1130 impl_.GetSpdySettings(spdy_server_mail); |
1132 EXPECT_EQ(0U, settings_map2_ret.size()); // Returns kEmptySettingsMap. | 1131 EXPECT_EQ(0U, settings_map2_ret.size()); // Returns kEmptySettingsMap. |
1133 | 1132 |
1134 // Add docs.google.com:443 as persisting | 1133 // Add docs.google.com:443 as persisting |
1135 HostPortPair spdy_server_docs("docs.google.com", 443); | 1134 HostPortPair spdy_server_docs("docs.google.com", 443); |
1136 const SpdySettingsIds id3 = SETTINGS_ROUND_TRIP_TIME; | 1135 const SpdySettingsIds id3 = SETTINGS_ROUND_TRIP_TIME; |
1137 const SpdySettingsFlags flags3 = SETTINGS_FLAG_PLEASE_PERSIST; | 1136 const SpdySettingsFlags flags3 = SETTINGS_FLAG_PLEASE_PERSIST; |
1138 const uint32 value3 = 93997; | 1137 const uint32_t value3 = 93997; |
1139 SettingsFlagsAndValue flags_and_value3(flags3, value3); | 1138 SettingsFlagsAndValue flags_and_value3(flags3, value3); |
1140 EXPECT_TRUE(impl_.SetSpdySetting(spdy_server_docs, id3, flags3, value3)); | 1139 EXPECT_TRUE(impl_.SetSpdySetting(spdy_server_docs, id3, flags3, value3)); |
1141 // Check the values. | 1140 // Check the values. |
1142 const SettingsMap& settings_map3_ret = | 1141 const SettingsMap& settings_map3_ret = |
1143 impl_.GetSpdySettings(spdy_server_docs); | 1142 impl_.GetSpdySettings(spdy_server_docs); |
1144 ASSERT_EQ(1U, settings_map3_ret.size()); | 1143 ASSERT_EQ(1U, settings_map3_ret.size()); |
1145 SettingsMap::const_iterator it3_ret = settings_map3_ret.find(id3); | 1144 SettingsMap::const_iterator it3_ret = settings_map3_ret.find(id3); |
1146 EXPECT_TRUE(it3_ret != settings_map3_ret.end()); | 1145 EXPECT_TRUE(it3_ret != settings_map3_ret.end()); |
1147 SettingsFlagsAndValue flags_and_value3_ret = it3_ret->second; | 1146 SettingsFlagsAndValue flags_and_value3_ret = it3_ret->second; |
1148 EXPECT_EQ(SETTINGS_FLAG_PERSISTED, flags_and_value3_ret.first); | 1147 EXPECT_EQ(SETTINGS_FLAG_PERSISTED, flags_and_value3_ret.first); |
(...skipping 20 matching lines...) Expand all Loading... |
1169 ASSERT_GT(impl_.spdy_settings_map().size(), 0U); | 1168 ASSERT_GT(impl_.spdy_settings_map().size(), 0U); |
1170 impl_.ClearAllSpdySettings(); | 1169 impl_.ClearAllSpdySettings(); |
1171 ASSERT_EQ(0U, impl_.spdy_settings_map().size()); | 1170 ASSERT_EQ(0U, impl_.spdy_settings_map().size()); |
1172 } | 1171 } |
1173 | 1172 |
1174 TEST_F(SpdySettingsServerPropertiesTest, Clear) { | 1173 TEST_F(SpdySettingsServerPropertiesTest, Clear) { |
1175 // Add www.google.com:443 as persisting. | 1174 // Add www.google.com:443 as persisting. |
1176 HostPortPair spdy_server_google("www.google.com", 443); | 1175 HostPortPair spdy_server_google("www.google.com", 443); |
1177 const SpdySettingsIds id1 = SETTINGS_UPLOAD_BANDWIDTH; | 1176 const SpdySettingsIds id1 = SETTINGS_UPLOAD_BANDWIDTH; |
1178 const SpdySettingsFlags flags1 = SETTINGS_FLAG_PLEASE_PERSIST; | 1177 const SpdySettingsFlags flags1 = SETTINGS_FLAG_PLEASE_PERSIST; |
1179 const uint32 value1 = 31337; | 1178 const uint32_t value1 = 31337; |
1180 EXPECT_TRUE(impl_.SetSpdySetting(spdy_server_google, id1, flags1, value1)); | 1179 EXPECT_TRUE(impl_.SetSpdySetting(spdy_server_google, id1, flags1, value1)); |
1181 // Check the values. | 1180 // Check the values. |
1182 const SettingsMap& settings_map1_ret = | 1181 const SettingsMap& settings_map1_ret = |
1183 impl_.GetSpdySettings(spdy_server_google); | 1182 impl_.GetSpdySettings(spdy_server_google); |
1184 ASSERT_EQ(1U, settings_map1_ret.size()); | 1183 ASSERT_EQ(1U, settings_map1_ret.size()); |
1185 SettingsMap::const_iterator it1_ret = settings_map1_ret.find(id1); | 1184 SettingsMap::const_iterator it1_ret = settings_map1_ret.find(id1); |
1186 EXPECT_TRUE(it1_ret != settings_map1_ret.end()); | 1185 EXPECT_TRUE(it1_ret != settings_map1_ret.end()); |
1187 SettingsFlagsAndValue flags_and_value1_ret = it1_ret->second; | 1186 SettingsFlagsAndValue flags_and_value1_ret = it1_ret->second; |
1188 EXPECT_EQ(SETTINGS_FLAG_PERSISTED, flags_and_value1_ret.first); | 1187 EXPECT_EQ(SETTINGS_FLAG_PERSISTED, flags_and_value1_ret.first); |
1189 EXPECT_EQ(value1, flags_and_value1_ret.second); | 1188 EXPECT_EQ(value1, flags_and_value1_ret.second); |
1190 | 1189 |
1191 // Add docs.google.com:443 as persisting | 1190 // Add docs.google.com:443 as persisting |
1192 HostPortPair spdy_server_docs("docs.google.com", 443); | 1191 HostPortPair spdy_server_docs("docs.google.com", 443); |
1193 const SpdySettingsIds id3 = SETTINGS_ROUND_TRIP_TIME; | 1192 const SpdySettingsIds id3 = SETTINGS_ROUND_TRIP_TIME; |
1194 const SpdySettingsFlags flags3 = SETTINGS_FLAG_PLEASE_PERSIST; | 1193 const SpdySettingsFlags flags3 = SETTINGS_FLAG_PLEASE_PERSIST; |
1195 const uint32 value3 = 93997; | 1194 const uint32_t value3 = 93997; |
1196 EXPECT_TRUE(impl_.SetSpdySetting(spdy_server_docs, id3, flags3, value3)); | 1195 EXPECT_TRUE(impl_.SetSpdySetting(spdy_server_docs, id3, flags3, value3)); |
1197 // Check the values. | 1196 // Check the values. |
1198 const SettingsMap& settings_map3_ret = | 1197 const SettingsMap& settings_map3_ret = |
1199 impl_.GetSpdySettings(spdy_server_docs); | 1198 impl_.GetSpdySettings(spdy_server_docs); |
1200 ASSERT_EQ(1U, settings_map3_ret.size()); | 1199 ASSERT_EQ(1U, settings_map3_ret.size()); |
1201 SettingsMap::const_iterator it3_ret = settings_map3_ret.find(id3); | 1200 SettingsMap::const_iterator it3_ret = settings_map3_ret.find(id3); |
1202 EXPECT_TRUE(it3_ret != settings_map3_ret.end()); | 1201 EXPECT_TRUE(it3_ret != settings_map3_ret.end()); |
1203 SettingsFlagsAndValue flags_and_value3_ret = it3_ret->second; | 1202 SettingsFlagsAndValue flags_and_value3_ret = it3_ret->second; |
1204 EXPECT_EQ(SETTINGS_FLAG_PERSISTED, flags_and_value3_ret.first); | 1203 EXPECT_EQ(SETTINGS_FLAG_PERSISTED, flags_and_value3_ret.first); |
1205 EXPECT_EQ(value3, flags_and_value3_ret.second); | 1204 EXPECT_EQ(value3, flags_and_value3_ret.second); |
1206 | 1205 |
1207 impl_.Clear(); | 1206 impl_.Clear(); |
1208 EXPECT_EQ(0U, impl_.GetSpdySettings(spdy_server_google).size()); | 1207 EXPECT_EQ(0U, impl_.GetSpdySettings(spdy_server_google).size()); |
1209 EXPECT_EQ(0U, impl_.GetSpdySettings(spdy_server_docs).size()); | 1208 EXPECT_EQ(0U, impl_.GetSpdySettings(spdy_server_docs).size()); |
1210 } | 1209 } |
1211 | 1210 |
1212 TEST_F(SpdySettingsServerPropertiesTest, MRUOfGetSpdySettings) { | 1211 TEST_F(SpdySettingsServerPropertiesTest, MRUOfGetSpdySettings) { |
1213 // Add www.google.com:443 as persisting. | 1212 // Add www.google.com:443 as persisting. |
1214 HostPortPair spdy_server_google("www.google.com", 443); | 1213 HostPortPair spdy_server_google("www.google.com", 443); |
1215 const SpdySettingsIds id1 = SETTINGS_UPLOAD_BANDWIDTH; | 1214 const SpdySettingsIds id1 = SETTINGS_UPLOAD_BANDWIDTH; |
1216 const SpdySettingsFlags flags1 = SETTINGS_FLAG_PLEASE_PERSIST; | 1215 const SpdySettingsFlags flags1 = SETTINGS_FLAG_PLEASE_PERSIST; |
1217 const uint32 value1 = 31337; | 1216 const uint32_t value1 = 31337; |
1218 EXPECT_TRUE(impl_.SetSpdySetting(spdy_server_google, id1, flags1, value1)); | 1217 EXPECT_TRUE(impl_.SetSpdySetting(spdy_server_google, id1, flags1, value1)); |
1219 | 1218 |
1220 // Add docs.google.com:443 as persisting | 1219 // Add docs.google.com:443 as persisting |
1221 HostPortPair spdy_server_docs("docs.google.com", 443); | 1220 HostPortPair spdy_server_docs("docs.google.com", 443); |
1222 const SpdySettingsIds id2 = SETTINGS_ROUND_TRIP_TIME; | 1221 const SpdySettingsIds id2 = SETTINGS_ROUND_TRIP_TIME; |
1223 const SpdySettingsFlags flags2 = SETTINGS_FLAG_PLEASE_PERSIST; | 1222 const SpdySettingsFlags flags2 = SETTINGS_FLAG_PLEASE_PERSIST; |
1224 const uint32 value2 = 93997; | 1223 const uint32_t value2 = 93997; |
1225 EXPECT_TRUE(impl_.SetSpdySetting(spdy_server_docs, id2, flags2, value2)); | 1224 EXPECT_TRUE(impl_.SetSpdySetting(spdy_server_docs, id2, flags2, value2)); |
1226 | 1225 |
1227 // Verify the first element is docs.google.com:443. | 1226 // Verify the first element is docs.google.com:443. |
1228 const SpdySettingsMap& map = impl_.spdy_settings_map(); | 1227 const SpdySettingsMap& map = impl_.spdy_settings_map(); |
1229 SpdySettingsMap::const_iterator it = map.begin(); | 1228 SpdySettingsMap::const_iterator it = map.begin(); |
1230 EXPECT_TRUE(it->first.Equals(spdy_server_docs)); | 1229 EXPECT_TRUE(it->first.Equals(spdy_server_docs)); |
1231 const SettingsMap& settings_map2_ret = it->second; | 1230 const SettingsMap& settings_map2_ret = it->second; |
1232 ASSERT_EQ(1U, settings_map2_ret.size()); | 1231 ASSERT_EQ(1U, settings_map2_ret.size()); |
1233 SettingsMap::const_iterator it2_ret = settings_map2_ret.find(id2); | 1232 SettingsMap::const_iterator it2_ret = settings_map2_ret.find(id2); |
1234 EXPECT_TRUE(it2_ret != settings_map2_ret.end()); | 1233 EXPECT_TRUE(it2_ret != settings_map2_ret.end()); |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1464 EXPECT_EQ(quic_server_info1, *(impl_.GetQuicServerInfo(quic_server_id))); | 1463 EXPECT_EQ(quic_server_info1, *(impl_.GetQuicServerInfo(quic_server_id))); |
1465 | 1464 |
1466 impl_.Clear(); | 1465 impl_.Clear(); |
1467 EXPECT_EQ(0u, impl_.quic_server_info_map().size()); | 1466 EXPECT_EQ(0u, impl_.quic_server_info_map().size()); |
1468 EXPECT_EQ(nullptr, impl_.GetQuicServerInfo(quic_server_id)); | 1467 EXPECT_EQ(nullptr, impl_.GetQuicServerInfo(quic_server_id)); |
1469 } | 1468 } |
1470 | 1469 |
1471 } // namespace | 1470 } // namespace |
1472 | 1471 |
1473 } // namespace net | 1472 } // namespace net |
OLD | NEW |