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

Side by Side Diff: net/http/http_server_properties_manager_unittest.cc

Issue 892203004: Make HttpServerProperties::GetSupportsQuic not host-specific. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 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 unified diff | Download patch
« no previous file with comments | « net/http/http_server_properties_manager.cc ('k') | net/quic/quic_stream_factory.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_manager.h" 5 #include "net/http/http_server_properties_manager.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "base/prefs/pref_registry_simple.h" 9 #include "base/prefs/pref_registry_simple.h"
10 #include "base/prefs/testing_pref_service.h" 10 #include "base/prefs/testing_pref_service.h"
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 const base::Closure& callback) { 67 const base::Closure& callback) {
68 HttpServerPropertiesManager::UpdatePrefsFromCacheOnNetworkThread(callback); 68 HttpServerPropertiesManager::UpdatePrefsFromCacheOnNetworkThread(callback);
69 } 69 }
70 70
71 MOCK_METHOD0(UpdateCacheFromPrefsOnPrefThread, void()); 71 MOCK_METHOD0(UpdateCacheFromPrefsOnPrefThread, void());
72 MOCK_METHOD1(UpdatePrefsFromCacheOnNetworkThread, void(const base::Closure&)); 72 MOCK_METHOD1(UpdatePrefsFromCacheOnNetworkThread, void(const base::Closure&));
73 MOCK_METHOD6(UpdateCacheFromPrefsOnNetworkThread, 73 MOCK_METHOD6(UpdateCacheFromPrefsOnNetworkThread,
74 void(std::vector<std::string>* spdy_servers, 74 void(std::vector<std::string>* spdy_servers,
75 SpdySettingsMap* spdy_settings_map, 75 SpdySettingsMap* spdy_settings_map,
76 AlternateProtocolMap* alternate_protocol_map, 76 AlternateProtocolMap* alternate_protocol_map,
77 SupportsQuicMap* supports_quic_map, 77 IPAddressNumber* last_quic_address,
78 ServerNetworkStatsMap* server_network_stats_map, 78 ServerNetworkStatsMap* server_network_stats_map,
79 bool detected_corrupted_prefs)); 79 bool detected_corrupted_prefs));
80 MOCK_METHOD5(UpdatePrefsOnPref, 80 MOCK_METHOD5(UpdatePrefsOnPref,
81 void(base::ListValue* spdy_server_list, 81 void(base::ListValue* spdy_server_list,
82 SpdySettingsMap* spdy_settings_map, 82 SpdySettingsMap* spdy_settings_map,
83 AlternateProtocolMap* alternate_protocol_map, 83 AlternateProtocolMap* alternate_protocol_map,
84 SupportsQuicMap* supports_quic_map, 84 IPAddressNumber* last_quic_address,
85 ServerNetworkStatsMap* server_network_stats_map)); 85 ServerNetworkStatsMap* server_network_stats_map));
86 86
87 private: 87 private:
88 DISALLOW_COPY_AND_ASSIGN(TestingHttpServerPropertiesManager); 88 DISALLOW_COPY_AND_ASSIGN(TestingHttpServerPropertiesManager);
89 }; 89 };
90 90
91 class HttpServerPropertiesManagerTest : public testing::Test { 91 class HttpServerPropertiesManagerTest : public testing::Test {
92 protected: 92 protected:
93 HttpServerPropertiesManagerTest() {} 93 HttpServerPropertiesManagerTest() {}
94 94
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 // Set supports_spdy for www.google.com:80. 162 // Set supports_spdy for www.google.com:80.
163 server_pref_dict->SetBoolean("supports_spdy", true); 163 server_pref_dict->SetBoolean("supports_spdy", true);
164 164
165 // Set up alternate_protocol for www.google.com:80. 165 // Set up alternate_protocol for www.google.com:80.
166 base::DictionaryValue* alternate_protocol = new base::DictionaryValue; 166 base::DictionaryValue* alternate_protocol = new base::DictionaryValue;
167 alternate_protocol->SetInteger("port", 443); 167 alternate_protocol->SetInteger("port", 443);
168 alternate_protocol->SetString("protocol_str", "npn-spdy/3"); 168 alternate_protocol->SetString("protocol_str", "npn-spdy/3");
169 server_pref_dict->SetWithoutPathExpansion("alternate_protocol", 169 server_pref_dict->SetWithoutPathExpansion("alternate_protocol",
170 alternate_protocol); 170 alternate_protocol);
171 171
172 // Set up SupportsQuic for www.google.com:80.
173 base::DictionaryValue* supports_quic = new base::DictionaryValue;
174 supports_quic->SetBoolean("used_quic", true);
175 supports_quic->SetString("address", "foo");
176 server_pref_dict->SetWithoutPathExpansion("supports_quic", supports_quic);
177
178 // Set up ServerNetworkStats for www.google.com:80. 172 // Set up ServerNetworkStats for www.google.com:80.
179 base::DictionaryValue* stats = new base::DictionaryValue; 173 base::DictionaryValue* stats = new base::DictionaryValue;
180 stats->SetInteger("srtt", 10); 174 stats->SetInteger("srtt", 10);
181 server_pref_dict->SetWithoutPathExpansion("network_stats", stats); 175 server_pref_dict->SetWithoutPathExpansion("network_stats", stats);
182 176
183 // Set the server preference for www.google.com:80. 177 // Set the server preference for www.google.com:80.
184 base::DictionaryValue* servers_dict = new base::DictionaryValue; 178 base::DictionaryValue* servers_dict = new base::DictionaryValue;
185 servers_dict->SetWithoutPathExpansion("www.google.com:80", server_pref_dict); 179 servers_dict->SetWithoutPathExpansion("www.google.com:80", server_pref_dict);
186 180
187 // Set the preference for mail.google.com server. 181 // Set the preference for mail.google.com server.
188 base::DictionaryValue* server_pref_dict1 = new base::DictionaryValue; 182 base::DictionaryValue* server_pref_dict1 = new base::DictionaryValue;
189 183
190 // Set supports_spdy for mail.google.com:80 184 // Set supports_spdy for mail.google.com:80
191 server_pref_dict1->SetBoolean("supports_spdy", true); 185 server_pref_dict1->SetBoolean("supports_spdy", true);
192 186
193 // Set up alternate_protocol for mail.google.com:80 187 // Set up alternate_protocol for mail.google.com:80
194 base::DictionaryValue* alternate_protocol1 = new base::DictionaryValue; 188 base::DictionaryValue* alternate_protocol1 = new base::DictionaryValue;
195 alternate_protocol1->SetInteger("port", 444); 189 alternate_protocol1->SetInteger("port", 444);
196 alternate_protocol1->SetString("protocol_str", "npn-spdy/3.1"); 190 alternate_protocol1->SetString("protocol_str", "npn-spdy/3.1");
197 191
198 server_pref_dict1->SetWithoutPathExpansion("alternate_protocol", 192 server_pref_dict1->SetWithoutPathExpansion("alternate_protocol",
199 alternate_protocol1); 193 alternate_protocol1);
200 194
201 // Set up SupportsQuic for mail.google.com:80
202 base::DictionaryValue* supports_quic1 = new base::DictionaryValue;
203 supports_quic1->SetBoolean("used_quic", false);
204 supports_quic1->SetString("address", "bar");
205 server_pref_dict1->SetWithoutPathExpansion("supports_quic", supports_quic1);
206
207 // Set up ServerNetworkStats for mail.google.com:80. 195 // Set up ServerNetworkStats for mail.google.com:80.
208 base::DictionaryValue* stats1 = new base::DictionaryValue; 196 base::DictionaryValue* stats1 = new base::DictionaryValue;
209 stats1->SetInteger("srtt", 20); 197 stats1->SetInteger("srtt", 20);
210 server_pref_dict1->SetWithoutPathExpansion("network_stats", stats1); 198 server_pref_dict1->SetWithoutPathExpansion("network_stats", stats1);
211 // Set the server preference for mail.google.com:80. 199 // Set the server preference for mail.google.com:80.
212 servers_dict->SetWithoutPathExpansion("mail.google.com:80", 200 servers_dict->SetWithoutPathExpansion("mail.google.com:80",
213 server_pref_dict1); 201 server_pref_dict1);
214 202
215 base::DictionaryValue* http_server_properties_dict = 203 base::DictionaryValue* http_server_properties_dict =
216 new base::DictionaryValue; 204 new base::DictionaryValue;
217 HttpServerPropertiesManager::SetVersion(http_server_properties_dict, -1); 205 HttpServerPropertiesManager::SetVersion(http_server_properties_dict, -1);
218 http_server_properties_dict->SetWithoutPathExpansion("servers", servers_dict); 206 http_server_properties_dict->SetWithoutPathExpansion("servers", servers_dict);
207 base::DictionaryValue* supports_quic = new base::DictionaryValue;
208 supports_quic->SetBoolean("used_quic", true);
209 supports_quic->SetString("address", "127.0.0.1");
210 http_server_properties_dict->SetWithoutPathExpansion("supports_quic",
211 supports_quic);
219 212
220 // Set the same value for kHttpServerProperties multiple times. 213 // Set the same value for kHttpServerProperties multiple times.
221 pref_service_.SetManagedPref(kTestHttpServerProperties, 214 pref_service_.SetManagedPref(kTestHttpServerProperties,
222 http_server_properties_dict); 215 http_server_properties_dict);
223 base::DictionaryValue* http_server_properties_dict2 = 216 base::DictionaryValue* http_server_properties_dict2 =
224 http_server_properties_dict->DeepCopy(); 217 http_server_properties_dict->DeepCopy();
225 pref_service_.SetManagedPref(kTestHttpServerProperties, 218 pref_service_.SetManagedPref(kTestHttpServerProperties,
226 http_server_properties_dict2); 219 http_server_properties_dict2);
227 220
228 base::RunLoop().RunUntilIdle(); 221 base::RunLoop().RunUntilIdle();
(...skipping 10 matching lines...) Expand all
239 AlternateProtocolInfo port_alternate_protocol = 232 AlternateProtocolInfo port_alternate_protocol =
240 http_server_props_manager_->GetAlternateProtocol(google_server); 233 http_server_props_manager_->GetAlternateProtocol(google_server);
241 EXPECT_EQ(443, port_alternate_protocol.port); 234 EXPECT_EQ(443, port_alternate_protocol.port);
242 EXPECT_EQ(NPN_SPDY_3, port_alternate_protocol.protocol); 235 EXPECT_EQ(NPN_SPDY_3, port_alternate_protocol.protocol);
243 port_alternate_protocol = 236 port_alternate_protocol =
244 http_server_props_manager_->GetAlternateProtocol(mail_server); 237 http_server_props_manager_->GetAlternateProtocol(mail_server);
245 EXPECT_EQ(444, port_alternate_protocol.port); 238 EXPECT_EQ(444, port_alternate_protocol.port);
246 EXPECT_EQ(NPN_SPDY_3_1, port_alternate_protocol.protocol); 239 EXPECT_EQ(NPN_SPDY_3_1, port_alternate_protocol.protocol);
247 240
248 // Verify SupportsQuic. 241 // Verify SupportsQuic.
249 SupportsQuic supports_quic2 = 242 IPAddressNumber last_address;
250 http_server_props_manager_->GetSupportsQuic(google_server); 243 EXPECT_TRUE(http_server_props_manager_->GetSupportsQuic(&last_address));
251 EXPECT_TRUE(supports_quic2.used_quic); 244 EXPECT_EQ("127.0.0.1", IPAddressToString(last_address));
252 EXPECT_EQ("foo", supports_quic2.address);
253 supports_quic2 = http_server_props_manager_->GetSupportsQuic(mail_server);
254 EXPECT_FALSE(supports_quic2.used_quic);
255 EXPECT_EQ("bar", supports_quic2.address);
256 245
257 // Verify ServerNetworkStats. 246 // Verify ServerNetworkStats.
258 const ServerNetworkStats* stats2 = 247 const ServerNetworkStats* stats2 =
259 http_server_props_manager_->GetServerNetworkStats(google_server); 248 http_server_props_manager_->GetServerNetworkStats(google_server);
260 EXPECT_EQ(10, stats2->srtt.ToInternalValue()); 249 EXPECT_EQ(10, stats2->srtt.ToInternalValue());
261 const ServerNetworkStats* stats3 = 250 const ServerNetworkStats* stats3 =
262 http_server_props_manager_->GetServerNetworkStats(mail_server); 251 http_server_props_manager_->GetServerNetworkStats(mail_server);
263 EXPECT_EQ(20, stats3->srtt.ToInternalValue()); 252 EXPECT_EQ(20, stats3->srtt.ToInternalValue());
264 } 253 }
265 254
266 TEST_F(HttpServerPropertiesManagerTest, BadCachedHostPortPair) { 255 TEST_F(HttpServerPropertiesManagerTest, BadCachedHostPortPair) {
267 ExpectCacheUpdate(); 256 ExpectCacheUpdate();
268 // The prefs are automaticalls updated in the case corruption is detected. 257 // The prefs are automaticalls updated in the case corruption is detected.
269 ExpectPrefsUpdate(); 258 ExpectPrefsUpdate();
270 259
271 base::DictionaryValue* server_pref_dict = new base::DictionaryValue; 260 base::DictionaryValue* server_pref_dict = new base::DictionaryValue;
272 261
273 // Set supports_spdy for www.google.com:65536. 262 // Set supports_spdy for www.google.com:65536.
274 server_pref_dict->SetBoolean("supports_spdy", true); 263 server_pref_dict->SetBoolean("supports_spdy", true);
275 264
276 // Set up alternate_protocol for www.google.com:65536. 265 // Set up alternate_protocol for www.google.com:65536.
277 base::DictionaryValue* alternate_protocol = new base::DictionaryValue; 266 base::DictionaryValue* alternate_protocol = new base::DictionaryValue;
278 alternate_protocol->SetInteger("port", 80); 267 alternate_protocol->SetInteger("port", 80);
279 alternate_protocol->SetString("protocol_str", "npn-spdy/3"); 268 alternate_protocol->SetString("protocol_str", "npn-spdy/3");
280 server_pref_dict->SetWithoutPathExpansion("alternate_protocol", 269 server_pref_dict->SetWithoutPathExpansion("alternate_protocol",
281 alternate_protocol); 270 alternate_protocol);
282 271
283 // Set up SupportsQuic for www.google.com:65536.
284 base::DictionaryValue* supports_quic = new base::DictionaryValue;
285 supports_quic->SetBoolean("used_quic", true);
286 supports_quic->SetString("address", "foo");
287 server_pref_dict->SetWithoutPathExpansion("supports_quic", supports_quic);
288
289 // Set up ServerNetworkStats for www.google.com:65536. 272 // Set up ServerNetworkStats for www.google.com:65536.
290 base::DictionaryValue* stats = new base::DictionaryValue; 273 base::DictionaryValue* stats = new base::DictionaryValue;
291 stats->SetInteger("srtt", 10); 274 stats->SetInteger("srtt", 10);
292 server_pref_dict->SetWithoutPathExpansion("network_stats", stats); 275 server_pref_dict->SetWithoutPathExpansion("network_stats", stats);
293 276
294 // Set the server preference for www.google.com:65536. 277 // Set the server preference for www.google.com:65536.
295 base::DictionaryValue* servers_dict = new base::DictionaryValue; 278 base::DictionaryValue* servers_dict = new base::DictionaryValue;
296 servers_dict->SetWithoutPathExpansion("www.google.com:65536", 279 servers_dict->SetWithoutPathExpansion("www.google.com:65536",
297 server_pref_dict); 280 server_pref_dict);
298 281
299 base::DictionaryValue* http_server_properties_dict = 282 base::DictionaryValue* http_server_properties_dict =
300 new base::DictionaryValue; 283 new base::DictionaryValue;
301 HttpServerPropertiesManager::SetVersion(http_server_properties_dict, -1); 284 HttpServerPropertiesManager::SetVersion(http_server_properties_dict, -1);
302 http_server_properties_dict->SetWithoutPathExpansion("servers", servers_dict); 285 http_server_properties_dict->SetWithoutPathExpansion("servers", servers_dict);
303 286
304 // Set up the pref. 287 // Set up the pref.
305 pref_service_.SetManagedPref(kTestHttpServerProperties, 288 pref_service_.SetManagedPref(kTestHttpServerProperties,
306 http_server_properties_dict); 289 http_server_properties_dict);
307 290
308 base::RunLoop().RunUntilIdle(); 291 base::RunLoop().RunUntilIdle();
309 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 292 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
310 293
311 // Verify that nothing is set. 294 // Verify that nothing is set.
312 EXPECT_FALSE(http_server_props_manager_->SupportsRequestPriority( 295 EXPECT_FALSE(http_server_props_manager_->SupportsRequestPriority(
313 HostPortPair::FromString("www.google.com:65536"))); 296 HostPortPair::FromString("www.google.com:65536")));
314 EXPECT_FALSE( 297 EXPECT_FALSE(
315 HasAlternateProtocol(HostPortPair::FromString("www.google.com:65536"))); 298 HasAlternateProtocol(HostPortPair::FromString("www.google.com:65536")));
316 SupportsQuic supports_quic2 = http_server_props_manager_->GetSupportsQuic(
317 HostPortPair::FromString("www.google.com:65536"));
318 EXPECT_FALSE(supports_quic2.used_quic);
319 const ServerNetworkStats* stats1 = 299 const ServerNetworkStats* stats1 =
320 http_server_props_manager_->GetServerNetworkStats( 300 http_server_props_manager_->GetServerNetworkStats(
321 HostPortPair::FromString("www.google.com:65536")); 301 HostPortPair::FromString("www.google.com:65536"));
322 EXPECT_EQ(NULL, stats1); 302 EXPECT_EQ(NULL, stats1);
323 } 303 }
324 304
325 TEST_F(HttpServerPropertiesManagerTest, BadCachedAltProtocolPort) { 305 TEST_F(HttpServerPropertiesManagerTest, BadCachedAltProtocolPort) {
326 ExpectCacheUpdate(); 306 ExpectCacheUpdate();
327 // The prefs are automaticalls updated in the case corruption is detected. 307 // The prefs are automaticalls updated in the case corruption is detected.
328 ExpectPrefsUpdate(); 308 ExpectPrefsUpdate();
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 const AlternateProtocolInfo alternate_protocol = 476 const AlternateProtocolInfo alternate_protocol =
497 http_server_props_manager_->GetAlternateProtocol(spdy_server_mail); 477 http_server_props_manager_->GetAlternateProtocol(spdy_server_mail);
498 EXPECT_EQ(443, alternate_protocol.port); 478 EXPECT_EQ(443, alternate_protocol.port);
499 EXPECT_EQ(NPN_SPDY_3, alternate_protocol.protocol); 479 EXPECT_EQ(NPN_SPDY_3, alternate_protocol.protocol);
500 EXPECT_EQ(1.0, alternate_protocol.probability); 480 EXPECT_EQ(1.0, alternate_protocol.probability);
501 } 481 }
502 482
503 TEST_F(HttpServerPropertiesManagerTest, SupportsQuic) { 483 TEST_F(HttpServerPropertiesManagerTest, SupportsQuic) {
504 ExpectPrefsUpdate(); 484 ExpectPrefsUpdate();
505 485
506 HostPortPair quic_server_mail("mail.google.com", 80); 486 IPAddressNumber address;
507 SupportsQuic supports_quic = 487 EXPECT_FALSE(http_server_props_manager_->GetSupportsQuic(&address));
508 http_server_props_manager_->GetSupportsQuic(quic_server_mail); 488
509 EXPECT_FALSE(supports_quic.used_quic); 489 IPAddressNumber actual_address;
510 EXPECT_EQ("", supports_quic.address); 490 CHECK(ParseIPLiteralToNumber("127.0.0.1", &actual_address));
511 http_server_props_manager_->SetSupportsQuic(quic_server_mail, true, "foo"); 491 http_server_props_manager_->SetSupportsQuic(true, actual_address);
512 492
513 // Run the task. 493 // Run the task.
514 base::RunLoop().RunUntilIdle(); 494 base::RunLoop().RunUntilIdle();
515 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 495 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
516 496
517 SupportsQuic supports_quic1 = 497 EXPECT_TRUE(http_server_props_manager_->GetSupportsQuic(&address));
518 http_server_props_manager_->GetSupportsQuic(quic_server_mail); 498 EXPECT_EQ(actual_address, address);
519 EXPECT_TRUE(supports_quic1.used_quic);
520 EXPECT_EQ("foo", supports_quic1.address);
521 } 499 }
522 500
523 TEST_F(HttpServerPropertiesManagerTest, ServerNetworkStats) { 501 TEST_F(HttpServerPropertiesManagerTest, ServerNetworkStats) {
524 ExpectPrefsUpdate(); 502 ExpectPrefsUpdate();
525 503
526 HostPortPair mail_server("mail.google.com", 80); 504 HostPortPair mail_server("mail.google.com", 80);
527 const ServerNetworkStats* stats = 505 const ServerNetworkStats* stats =
528 http_server_props_manager_->GetServerNetworkStats(mail_server); 506 http_server_props_manager_->GetServerNetworkStats(mail_server);
529 EXPECT_EQ(NULL, stats); 507 EXPECT_EQ(NULL, stats);
530 ServerNetworkStats stats1; 508 ServerNetworkStats stats1;
531 stats1.srtt = base::TimeDelta::FromMicroseconds(10); 509 stats1.srtt = base::TimeDelta::FromMicroseconds(10);
532 http_server_props_manager_->SetServerNetworkStats(mail_server, stats1); 510 http_server_props_manager_->SetServerNetworkStats(mail_server, stats1);
533 511
534 // Run the task. 512 // Run the task.
535 base::RunLoop().RunUntilIdle(); 513 base::RunLoop().RunUntilIdle();
536 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 514 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
537 515
538 const ServerNetworkStats* stats2 = 516 const ServerNetworkStats* stats2 =
539 http_server_props_manager_->GetServerNetworkStats(mail_server); 517 http_server_props_manager_->GetServerNetworkStats(mail_server);
540 EXPECT_EQ(10, stats2->srtt.ToInternalValue()); 518 EXPECT_EQ(10, stats2->srtt.ToInternalValue());
541 } 519 }
542 520
543 TEST_F(HttpServerPropertiesManagerTest, Clear) { 521 TEST_F(HttpServerPropertiesManagerTest, Clear) {
544 ExpectPrefsUpdate(); 522 ExpectPrefsUpdate();
545 523
546 HostPortPair spdy_server_mail("mail.google.com", 443); 524 HostPortPair spdy_server_mail("mail.google.com", 443);
547 http_server_props_manager_->SetSupportsSpdy(spdy_server_mail, true); 525 http_server_props_manager_->SetSupportsSpdy(spdy_server_mail, true);
548 http_server_props_manager_->SetAlternateProtocol(spdy_server_mail, 443, 526 http_server_props_manager_->SetAlternateProtocol(spdy_server_mail, 443,
549 NPN_SPDY_3, 1.0); 527 NPN_SPDY_3, 1.0);
550 http_server_props_manager_->SetSupportsQuic(spdy_server_mail, true, "foo"); 528 IPAddressNumber actual_address;
529 CHECK(ParseIPLiteralToNumber("127.0.0.1", &actual_address));
530 http_server_props_manager_->SetSupportsQuic(true, actual_address);
551 ServerNetworkStats stats; 531 ServerNetworkStats stats;
552 stats.srtt = base::TimeDelta::FromMicroseconds(10); 532 stats.srtt = base::TimeDelta::FromMicroseconds(10);
553 http_server_props_manager_->SetServerNetworkStats(spdy_server_mail, stats); 533 http_server_props_manager_->SetServerNetworkStats(spdy_server_mail, stats);
554 534
555 const SpdySettingsIds id1 = SETTINGS_UPLOAD_BANDWIDTH; 535 const SpdySettingsIds id1 = SETTINGS_UPLOAD_BANDWIDTH;
556 const SpdySettingsFlags flags1 = SETTINGS_FLAG_PLEASE_PERSIST; 536 const SpdySettingsFlags flags1 = SETTINGS_FLAG_PLEASE_PERSIST;
557 const uint32 value1 = 31337; 537 const uint32 value1 = 31337;
558 http_server_props_manager_->SetSpdySetting( 538 http_server_props_manager_->SetSpdySetting(
559 spdy_server_mail, id1, flags1, value1); 539 spdy_server_mail, id1, flags1, value1);
560 540
561 // Run the task. 541 // Run the task.
562 base::RunLoop().RunUntilIdle(); 542 base::RunLoop().RunUntilIdle();
563 543
564 EXPECT_TRUE( 544 EXPECT_TRUE(
565 http_server_props_manager_->SupportsRequestPriority(spdy_server_mail)); 545 http_server_props_manager_->SupportsRequestPriority(spdy_server_mail));
566 EXPECT_TRUE(HasAlternateProtocol(spdy_server_mail)); 546 EXPECT_TRUE(HasAlternateProtocol(spdy_server_mail));
567 SupportsQuic supports_quic = 547 IPAddressNumber address;
568 http_server_props_manager_->GetSupportsQuic(spdy_server_mail); 548 EXPECT_TRUE(http_server_props_manager_->GetSupportsQuic(&address));
569 EXPECT_TRUE(supports_quic.used_quic); 549 EXPECT_EQ(actual_address, address);
570 EXPECT_EQ("foo", supports_quic.address);
571 const ServerNetworkStats* stats1 = 550 const ServerNetworkStats* stats1 =
572 http_server_props_manager_->GetServerNetworkStats(spdy_server_mail); 551 http_server_props_manager_->GetServerNetworkStats(spdy_server_mail);
573 EXPECT_EQ(10, stats1->srtt.ToInternalValue()); 552 EXPECT_EQ(10, stats1->srtt.ToInternalValue());
574 553
575 // Check SPDY settings values. 554 // Check SPDY settings values.
576 const SettingsMap& settings_map1_ret = 555 const SettingsMap& settings_map1_ret =
577 http_server_props_manager_->GetSpdySettings(spdy_server_mail); 556 http_server_props_manager_->GetSpdySettings(spdy_server_mail);
578 ASSERT_EQ(1U, settings_map1_ret.size()); 557 ASSERT_EQ(1U, settings_map1_ret.size());
579 SettingsMap::const_iterator it1_ret = settings_map1_ret.find(id1); 558 SettingsMap::const_iterator it1_ret = settings_map1_ret.find(id1);
580 EXPECT_TRUE(it1_ret != settings_map1_ret.end()); 559 EXPECT_TRUE(it1_ret != settings_map1_ret.end());
581 SettingsFlagsAndValue flags_and_value1_ret = it1_ret->second; 560 SettingsFlagsAndValue flags_and_value1_ret = it1_ret->second;
582 EXPECT_EQ(SETTINGS_FLAG_PERSISTED, flags_and_value1_ret.first); 561 EXPECT_EQ(SETTINGS_FLAG_PERSISTED, flags_and_value1_ret.first);
583 EXPECT_EQ(value1, flags_and_value1_ret.second); 562 EXPECT_EQ(value1, flags_and_value1_ret.second);
584 563
585 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 564 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
586 565
587 ExpectPrefsUpdate(); 566 ExpectPrefsUpdate();
588 567
589 // Clear http server data, time out if we do not get a completion callback. 568 // Clear http server data, time out if we do not get a completion callback.
590 http_server_props_manager_->Clear(base::MessageLoop::QuitClosure()); 569 http_server_props_manager_->Clear(base::MessageLoop::QuitClosure());
591 base::RunLoop().Run(); 570 base::RunLoop().Run();
592 571
593 EXPECT_FALSE( 572 EXPECT_FALSE(
594 http_server_props_manager_->SupportsRequestPriority(spdy_server_mail)); 573 http_server_props_manager_->SupportsRequestPriority(spdy_server_mail));
595 EXPECT_FALSE(HasAlternateProtocol(spdy_server_mail)); 574 EXPECT_FALSE(HasAlternateProtocol(spdy_server_mail));
596 SupportsQuic supports_quic1 = 575 EXPECT_FALSE(http_server_props_manager_->GetSupportsQuic(&address));
597 http_server_props_manager_->GetSupportsQuic(spdy_server_mail);
598 EXPECT_FALSE(supports_quic1.used_quic);
599 EXPECT_EQ("", supports_quic1.address);
600 const ServerNetworkStats* stats2 = 576 const ServerNetworkStats* stats2 =
601 http_server_props_manager_->GetServerNetworkStats(spdy_server_mail); 577 http_server_props_manager_->GetServerNetworkStats(spdy_server_mail);
602 EXPECT_EQ(NULL, stats2); 578 EXPECT_EQ(NULL, stats2);
603 579
604 const SettingsMap& settings_map2_ret = 580 const SettingsMap& settings_map2_ret =
605 http_server_props_manager_->GetSpdySettings(spdy_server_mail); 581 http_server_props_manager_->GetSpdySettings(spdy_server_mail);
606 EXPECT_EQ(0U, settings_map2_ret.size()); 582 EXPECT_EQ(0U, settings_map2_ret.size());
607 583
608 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 584 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
609 } 585 }
(...skipping 12 matching lines...) Expand all
622 alternate_protocol->SetString("protocol_str", "npn-spdy/3"); 598 alternate_protocol->SetString("protocol_str", "npn-spdy/3");
623 base::DictionaryValue* server_pref_dict = new base::DictionaryValue; 599 base::DictionaryValue* server_pref_dict = new base::DictionaryValue;
624 server_pref_dict->SetWithoutPathExpansion("alternate_protocol", 600 server_pref_dict->SetWithoutPathExpansion("alternate_protocol",
625 alternate_protocol); 601 alternate_protocol);
626 servers_dict->SetWithoutPathExpansion(StringPrintf("www.google.com:%d", i), 602 servers_dict->SetWithoutPathExpansion(StringPrintf("www.google.com:%d", i),
627 server_pref_dict); 603 server_pref_dict);
628 } 604 }
629 605
630 // Set the preference for mail.google.com server. 606 // Set the preference for mail.google.com server.
631 base::DictionaryValue* server_pref_dict1 = new base::DictionaryValue; 607 base::DictionaryValue* server_pref_dict1 = new base::DictionaryValue;
632 // Set up SupportsQuic for mail.google.com:80
633 base::DictionaryValue* supports_quic = new base::DictionaryValue;
634 supports_quic->SetBoolean("used_quic", true);
635 supports_quic->SetString("address", "bar");
636 server_pref_dict1->SetWithoutPathExpansion("supports_quic", supports_quic);
637 608
638 // Set the server preference for mail.google.com:80. 609 // Set the server preference for mail.google.com:80.
639 servers_dict->SetWithoutPathExpansion("mail.google.com:80", 610 servers_dict->SetWithoutPathExpansion("mail.google.com:80",
640 server_pref_dict1); 611 server_pref_dict1);
641 612
642 base::DictionaryValue* http_server_properties_dict = 613 base::DictionaryValue* http_server_properties_dict =
643 new base::DictionaryValue; 614 new base::DictionaryValue;
644 HttpServerPropertiesManager::SetVersion(http_server_properties_dict, -1); 615 HttpServerPropertiesManager::SetVersion(http_server_properties_dict, -1);
645 http_server_properties_dict->SetWithoutPathExpansion("servers", servers_dict); 616 http_server_properties_dict->SetWithoutPathExpansion("servers", servers_dict);
646 617
618 // Set up SupportsQuic for 127.0.0.1
619 base::DictionaryValue* supports_quic = new base::DictionaryValue;
620 supports_quic->SetBoolean("used_quic", true);
621 supports_quic->SetString("address", "127.0.0.1");
622 http_server_properties_dict->SetWithoutPathExpansion("supports_quic",
623 supports_quic);
624
647 // Set up the pref. 625 // Set up the pref.
648 pref_service_.SetManagedPref(kTestHttpServerProperties, 626 pref_service_.SetManagedPref(kTestHttpServerProperties,
649 http_server_properties_dict); 627 http_server_properties_dict);
650 628
651 base::RunLoop().RunUntilIdle(); 629 base::RunLoop().RunUntilIdle();
652 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 630 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
653 631
654 // Verify AlternateProtocol. 632 // Verify AlternateProtocol.
655 for (int i = 0; i < 200; ++i) { 633 for (int i = 0; i < 200; ++i) {
656 std::string server = StringPrintf("www.google.com:%d", i); 634 std::string server = StringPrintf("www.google.com:%d", i);
657 AlternateProtocolInfo port_alternate_protocol = 635 AlternateProtocolInfo port_alternate_protocol =
658 http_server_props_manager_->GetAlternateProtocol( 636 http_server_props_manager_->GetAlternateProtocol(
659 HostPortPair::FromString(server)); 637 HostPortPair::FromString(server));
660 EXPECT_EQ(i, port_alternate_protocol.port); 638 EXPECT_EQ(i, port_alternate_protocol.port);
661 EXPECT_EQ(NPN_SPDY_3, port_alternate_protocol.protocol); 639 EXPECT_EQ(NPN_SPDY_3, port_alternate_protocol.protocol);
662 } 640 }
663 641
664 // Verify SupportsQuic. 642 // Verify SupportsQuic.
665 SupportsQuic supports_quic1 = http_server_props_manager_->GetSupportsQuic( 643 IPAddressNumber address;
666 HostPortPair::FromString("mail.google.com:80")); 644 ASSERT_TRUE(http_server_props_manager_->GetSupportsQuic(&address));
667 EXPECT_TRUE(supports_quic1.used_quic); 645 EXPECT_EQ("127.0.0.1", IPAddressToString(address));
668 EXPECT_EQ("bar", supports_quic1.address);
669 } 646 }
670 647
671 TEST_F(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdateCache0) { 648 TEST_F(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdateCache0) {
672 // Post an update task to the UI thread. 649 // Post an update task to the UI thread.
673 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); 650 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread();
674 // Shutdown comes before the task is executed. 651 // Shutdown comes before the task is executed.
675 http_server_props_manager_->ShutdownOnPrefThread(); 652 http_server_props_manager_->ShutdownOnPrefThread();
676 http_server_props_manager_.reset(); 653 http_server_props_manager_.reset();
677 // Run the task after shutdown and deletion. 654 // Run the task after shutdown and deletion.
678 base::RunLoop().RunUntilIdle(); 655 base::RunLoop().RunUntilIdle();
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
736 // Run the task after shutdown, but before deletion. 713 // Run the task after shutdown, but before deletion.
737 base::RunLoop().RunUntilIdle(); 714 base::RunLoop().RunUntilIdle();
738 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 715 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
739 http_server_props_manager_.reset(); 716 http_server_props_manager_.reset();
740 base::RunLoop().RunUntilIdle(); 717 base::RunLoop().RunUntilIdle();
741 } 718 }
742 719
743 } // namespace 720 } // namespace
744 721
745 } // namespace net 722 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_server_properties_manager.cc ('k') | net/quic/quic_stream_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698