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

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

Issue 1216703002: Implement multiple alternative services per origin. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nit. Created 5 years, 5 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_impl.cc ('k') | net/http/http_server_properties_manager.h » ('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 (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" 10 #include "base/basictypes.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 43
44 void PrintTo(const AlternativeService& alternative_service, std::ostream* os) { 44 void PrintTo(const AlternativeService& alternative_service, std::ostream* os) {
45 *os << alternative_service.ToString(); 45 *os << alternative_service.ToString();
46 } 46 }
47 47
48 namespace { 48 namespace {
49 49
50 class HttpServerPropertiesImplTest : public testing::Test { 50 class HttpServerPropertiesImplTest : public testing::Test {
51 protected: 51 protected:
52 bool HasAlternativeService(const HostPortPair& origin) { 52 bool HasAlternativeService(const HostPortPair& origin) {
53 const AlternativeService alternative_service = 53 const AlternativeServiceVector alternative_service_vector =
54 impl_.GetAlternativeService(origin); 54 impl_.GetAlternativeServices(origin);
55 return alternative_service.protocol != UNINITIALIZED_ALTERNATE_PROTOCOL; 55 return !alternative_service_vector.empty();
56 } 56 }
57 57
58 HttpServerPropertiesImpl impl_; 58 HttpServerPropertiesImpl impl_;
59 }; 59 };
60 60
61 typedef HttpServerPropertiesImplTest SpdyServerPropertiesTest; 61 typedef HttpServerPropertiesImplTest SpdyServerPropertiesTest;
62 62
63 TEST_F(SpdyServerPropertiesTest, Initialize) { 63 TEST_F(SpdyServerPropertiesTest, Initialize) {
64 HostPortPair spdy_server_google("www.google.com", 443); 64 HostPortPair spdy_server_google("www.google.com", 443);
65 std::string spdy_server_g = spdy_server_google.ToString(); 65 std::string spdy_server_g = spdy_server_google.ToString();
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 HostPortPair spdy_server_mail("mail.google.com", 443); 116 HostPortPair spdy_server_mail("mail.google.com", 443);
117 EXPECT_FALSE(impl_.SupportsRequestPriority(spdy_server_mail)); 117 EXPECT_FALSE(impl_.SupportsRequestPriority(spdy_server_mail));
118 118
119 // Add docs.google.com:443 as supporting SPDY. 119 // Add docs.google.com:443 as supporting SPDY.
120 HostPortPair spdy_server_docs("docs.google.com", 443); 120 HostPortPair spdy_server_docs("docs.google.com", 443);
121 impl_.SetSupportsSpdy(spdy_server_docs, true); 121 impl_.SetSupportsSpdy(spdy_server_docs, true);
122 EXPECT_TRUE(impl_.SupportsRequestPriority(spdy_server_docs)); 122 EXPECT_TRUE(impl_.SupportsRequestPriority(spdy_server_docs));
123 123
124 // Add www.youtube.com:443 as supporting QUIC. 124 // Add www.youtube.com:443 as supporting QUIC.
125 HostPortPair quic_server_youtube("www.youtube.com", 443); 125 HostPortPair quic_server_youtube("www.youtube.com", 443);
126 const AlternativeService alternative_service(QUIC, "www.youtube.com", 443); 126 const AlternativeService alternative_service1(QUIC, "www.youtube.com", 443);
127 impl_.SetAlternativeService(quic_server_youtube, alternative_service, 1.0); 127 impl_.SetAlternativeService(quic_server_youtube, alternative_service1, 1.0);
128 EXPECT_TRUE(impl_.SupportsRequestPriority(quic_server_youtube)); 128 EXPECT_TRUE(impl_.SupportsRequestPriority(quic_server_youtube));
129 129
130 // Add www.example.com:443 with two alternative services, one supporting QUIC.
131 HostPortPair quic_server_example("www.example.com", 443);
132 const AlternativeService alternative_service2(NPN_SPDY_4, "", 443);
133 impl_.SetAlternativeService(quic_server_example, alternative_service2, 1.0);
134 impl_.SetAlternativeService(quic_server_example, alternative_service1, 1.0);
135 EXPECT_TRUE(impl_.SupportsRequestPriority(quic_server_example));
136
130 // Verify all the entries are the same after additions. 137 // Verify all the entries are the same after additions.
131 EXPECT_TRUE(impl_.SupportsRequestPriority(spdy_server_google)); 138 EXPECT_TRUE(impl_.SupportsRequestPriority(spdy_server_google));
132 EXPECT_FALSE(impl_.SupportsRequestPriority(spdy_server_mail)); 139 EXPECT_FALSE(impl_.SupportsRequestPriority(spdy_server_mail));
133 EXPECT_TRUE(impl_.SupportsRequestPriority(spdy_server_docs)); 140 EXPECT_TRUE(impl_.SupportsRequestPriority(spdy_server_docs));
134 EXPECT_TRUE(impl_.SupportsRequestPriority(quic_server_youtube)); 141 EXPECT_TRUE(impl_.SupportsRequestPriority(quic_server_youtube));
142 EXPECT_TRUE(impl_.SupportsRequestPriority(quic_server_example));
135 } 143 }
136 144
137 TEST_F(SpdyServerPropertiesTest, Clear) { 145 TEST_F(SpdyServerPropertiesTest, Clear) {
138 // Add www.google.com:443 and mail.google.com:443 as supporting SPDY. 146 // Add www.google.com:443 and mail.google.com:443 as supporting SPDY.
139 HostPortPair spdy_server_google("www.google.com", 443); 147 HostPortPair spdy_server_google("www.google.com", 443);
140 impl_.SetSupportsSpdy(spdy_server_google, true); 148 impl_.SetSupportsSpdy(spdy_server_google, true);
141 HostPortPair spdy_server_mail("mail.google.com", 443); 149 HostPortPair spdy_server_mail("mail.google.com", 443);
142 impl_.SetSupportsSpdy(spdy_server_mail, true); 150 impl_.SetSupportsSpdy(spdy_server_mail, true);
143 151
144 EXPECT_TRUE(impl_.SupportsRequestPriority(spdy_server_google)); 152 EXPECT_TRUE(impl_.SupportsRequestPriority(spdy_server_google));
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 } 253 }
246 254
247 typedef HttpServerPropertiesImplTest AlternateProtocolServerPropertiesTest; 255 typedef HttpServerPropertiesImplTest AlternateProtocolServerPropertiesTest;
248 256
249 TEST_F(AlternateProtocolServerPropertiesTest, Basic) { 257 TEST_F(AlternateProtocolServerPropertiesTest, Basic) {
250 HostPortPair test_host_port_pair("foo", 80); 258 HostPortPair test_host_port_pair("foo", 80);
251 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); 259 EXPECT_FALSE(HasAlternativeService(test_host_port_pair));
252 260
253 AlternativeService alternative_service(NPN_SPDY_4, "foo", 443); 261 AlternativeService alternative_service(NPN_SPDY_4, "foo", 443);
254 impl_.SetAlternativeService(test_host_port_pair, alternative_service, 1.0); 262 impl_.SetAlternativeService(test_host_port_pair, alternative_service, 1.0);
255 ASSERT_TRUE(HasAlternativeService(test_host_port_pair)); 263 const AlternativeServiceVector alternative_service_vector =
256 alternative_service = impl_.GetAlternativeService(test_host_port_pair); 264 impl_.GetAlternativeServices(test_host_port_pair);
257 EXPECT_EQ(443, alternative_service.port); 265 ASSERT_EQ(1u, alternative_service_vector.size());
258 EXPECT_EQ(NPN_SPDY_4, alternative_service.protocol); 266 EXPECT_EQ(alternative_service, alternative_service_vector[0]);
259 267
260 impl_.Clear(); 268 impl_.Clear();
261 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); 269 EXPECT_FALSE(HasAlternativeService(test_host_port_pair));
262 } 270 }
263 271
264 TEST_F(AlternateProtocolServerPropertiesTest, DefaultProbabilityExcluded) { 272 TEST_F(AlternateProtocolServerPropertiesTest, DefaultProbabilityExcluded) {
265 HostPortPair test_host_port_pair("foo", 80); 273 HostPortPair test_host_port_pair("foo", 80);
266 const AlternativeService alternative_service(NPN_SPDY_4, "foo", 443); 274 const AlternativeService alternative_service(NPN_SPDY_4, "foo", 443);
267 impl_.SetAlternativeService(test_host_port_pair, alternative_service, 0.99); 275 impl_.SetAlternativeService(test_host_port_pair, alternative_service, 0.99);
268 276
269 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); 277 EXPECT_FALSE(HasAlternativeService(test_host_port_pair));
270 } 278 }
271 279
280 // GetAlternativeServices and HasAlternativeServices should only return the ones
281 // with probability greater than or equal to the threshold.
272 TEST_F(AlternateProtocolServerPropertiesTest, Probability) { 282 TEST_F(AlternateProtocolServerPropertiesTest, Probability) {
273 impl_.SetAlternativeServiceProbabilityThreshold(0.25); 283 impl_.SetAlternativeServiceProbabilityThreshold(0.5);
284
285 AlternativeServiceInfoVector alternative_service_info_vector;
286 const AlternativeService alternative_service1(NPN_SPDY_4, "foo", 443);
287 alternative_service_info_vector.push_back(
288 AlternativeServiceInfo(alternative_service1, 0.3));
289 const AlternativeService alternative_service2(QUIC, "bar", 123);
290 alternative_service_info_vector.push_back(
291 AlternativeServiceInfo(alternative_service2, 0.7));
292 const AlternativeService alternative_service3(NPN_SPDY_3_1, "baz", 443);
293 alternative_service_info_vector.push_back(
294 AlternativeServiceInfo(alternative_service3, 0.4));
295 const AlternativeService alternative_service4(NPN_SPDY_4, "qux", 1234);
296 alternative_service_info_vector.push_back(
297 AlternativeServiceInfo(alternative_service4, 0.6));
274 298
275 HostPortPair test_host_port_pair("foo", 80); 299 HostPortPair test_host_port_pair("foo", 80);
276 const AlternativeService alternative_service(NPN_SPDY_4, "foo", 443); 300 impl_.SetAlternativeServices(test_host_port_pair,
277 impl_.SetAlternativeService(test_host_port_pair, alternative_service, 0.5); 301 alternative_service_info_vector);
278 EXPECT_TRUE(HasAlternativeService(test_host_port_pair));
279 302
280 AlternativeServiceMap::const_iterator it = 303 const AlternativeServiceVector alternative_service_vector =
281 impl_.alternative_service_map().Peek(test_host_port_pair); 304 impl_.GetAlternativeServices(test_host_port_pair);
282 ASSERT_TRUE(it != impl_.alternative_service_map().end()); 305 ASSERT_EQ(2u, alternative_service_vector.size());
283 EXPECT_EQ(443, it->second.alternative_service.port); 306 EXPECT_EQ(alternative_service2, alternative_service_vector[0]);
284 EXPECT_EQ(NPN_SPDY_4, it->second.alternative_service.protocol); 307 EXPECT_EQ(alternative_service4, alternative_service_vector[1]);
285 EXPECT_EQ(0.5, it->second.probability);
286 } 308 }
287 309
288 TEST_F(AlternateProtocolServerPropertiesTest, ProbabilityExcluded) { 310 TEST_F(AlternateProtocolServerPropertiesTest, ProbabilityExcluded) {
289 impl_.SetAlternativeServiceProbabilityThreshold(0.75); 311 impl_.SetAlternativeServiceProbabilityThreshold(0.75);
290 312
291 HostPortPair test_host_port_pair("foo", 80); 313 HostPortPair test_host_port_pair("foo", 80);
292 const AlternativeService alternative_service(NPN_SPDY_4, "foo", 443); 314 const AlternativeService alternative_service(NPN_SPDY_4, "foo", 443);
293 impl_.SetAlternativeService(test_host_port_pair, alternative_service, 0.5); 315 impl_.SetAlternativeService(test_host_port_pair, alternative_service, 0.5);
294 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); 316 EXPECT_FALSE(HasAlternativeService(test_host_port_pair));
295 } 317 }
296 318
297 TEST_F(AlternateProtocolServerPropertiesTest, Initialize) { 319 TEST_F(AlternateProtocolServerPropertiesTest, Initialize) {
320 // |test_host_port_pair1| has one alternative service, which is non-broken,
321 // and thus will be removed by InitializeAlternativeServiceServers().
298 HostPortPair test_host_port_pair1("foo1", 80); 322 HostPortPair test_host_port_pair1("foo1", 80);
299 const AlternativeService alternative_service1(NPN_SPDY_4, "foo1", 443); 323 const AlternativeService alternative_service1(NPN_SPDY_4, "bar1", 443);
300 impl_.SetAlternativeService(test_host_port_pair1, alternative_service1, 1.0); 324 impl_.SetAlternativeService(test_host_port_pair1, alternative_service1, 1.0);
301 impl_.MarkAlternativeServiceBroken(alternative_service1);
302 325
326 // |test_host_port_pair2| has two alternative services. The broken one will
327 // remain, the non-broken one will be removed by
328 // InitializeAlternativeServiceServers().
329 AlternativeServiceInfoVector alternative_service_info_vector;
330 const AlternativeService alternative_service2(NPN_SPDY_3_1, "bar2", 443);
331 alternative_service_info_vector.push_back(
332 AlternativeServiceInfo(alternative_service2, 1.0));
333 const AlternativeService alternative_service3(NPN_SPDY_3_1, "bar3", 1234);
334 alternative_service_info_vector.push_back(
335 AlternativeServiceInfo(alternative_service3, 0.8));
303 HostPortPair test_host_port_pair2("foo2", 80); 336 HostPortPair test_host_port_pair2("foo2", 80);
304 const AlternativeService alternative_service2(NPN_SPDY_4, "foo2", 443); 337 impl_.SetAlternativeServices(test_host_port_pair2,
305 impl_.SetAlternativeService(test_host_port_pair2, alternative_service2, 1.0); 338 alternative_service_info_vector);
339 impl_.MarkAlternativeServiceBroken(alternative_service2);
306 340
341 // Prepare |alternative_service_map| to be loaded by
342 // InitializeAlternativeServiceServers().
307 AlternativeServiceMap alternative_service_map( 343 AlternativeServiceMap alternative_service_map(
308 AlternativeServiceMap::NO_AUTO_EVICT); 344 AlternativeServiceMap::NO_AUTO_EVICT);
309 AlternativeServiceInfo alternative_service_info(NPN_SPDY_4, "bar", 123, 1.0); 345 const AlternativeService alternative_service4(NPN_SPDY_4, "bar4", 123);
310 alternative_service_map.Put(test_host_port_pair2, alternative_service_info); 346 const AlternativeServiceInfo alternative_service_info1(alternative_service4,
347 0.7);
348 alternative_service_map.Put(
349 test_host_port_pair2,
350 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info1));
351
311 HostPortPair test_host_port_pair3("foo3", 80); 352 HostPortPair test_host_port_pair3("foo3", 80);
312 alternative_service_info.alternative_service.port = 1234; 353 const AlternativeService alternative_service5(NPN_SPDY_4, "bar5", 1234);
313 alternative_service_map.Put(test_host_port_pair3, alternative_service_info); 354 const AlternativeServiceInfo alternative_service_info2(alternative_service5,
355 0.2);
356 alternative_service_map.Put(
357 test_host_port_pair3,
358 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info2));
359
314 impl_.InitializeAlternativeServiceServers(&alternative_service_map); 360 impl_.InitializeAlternativeServiceServers(&alternative_service_map);
315 361
316 // Verify test_host_port_pair3 is the MRU server. 362 // Verify alternative_service_map.
317 const AlternativeServiceMap& map = impl_.alternative_service_map(); 363 const AlternativeServiceMap& map = impl_.alternative_service_map();
318 AlternativeServiceMap::const_iterator it = map.begin(); 364 ASSERT_EQ(2u, map.size());
319 ASSERT_TRUE(it != map.end()); 365 AlternativeServiceMap::const_iterator map_it = map.begin();
320 EXPECT_TRUE(it->first.Equals(test_host_port_pair3)); 366 EXPECT_TRUE(map_it->first.Equals(test_host_port_pair3));
321 EXPECT_EQ(NPN_SPDY_4, it->second.alternative_service.protocol); 367 ASSERT_EQ(1u, map_it->second.size());
322 EXPECT_EQ(1234, it->second.alternative_service.port); 368 EXPECT_EQ(alternative_service5, map_it->second[0].alternative_service);
323 369 EXPECT_EQ(0.2, map_it->second[0].probability);
324 ASSERT_TRUE(HasAlternativeService(test_host_port_pair1)); 370 ++map_it;
325 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); 371 EXPECT_TRUE(map_it->first.Equals(test_host_port_pair2));
326 const AlternativeService alternative_service = 372 ASSERT_EQ(2u, map_it->second.size());
327 impl_.GetAlternativeService(test_host_port_pair2); 373 EXPECT_EQ(alternative_service2, map_it->second[0].alternative_service);
328 EXPECT_EQ(NPN_SPDY_4, alternative_service.protocol); 374 EXPECT_EQ(1.0, map_it->second[0].probability);
329 EXPECT_EQ(123, alternative_service.port); 375 EXPECT_EQ(alternative_service4, map_it->second[1].alternative_service);
376 EXPECT_EQ(0.7, map_it->second[1].probability);
330 } 377 }
331 378
332 // Regression test for https://crbug.com/504032: 379 // Regression test for https://crbug.com/504032:
333 // InitializeAlternativeServiceServers() should not crash if there is an empty 380 // InitializeAlternativeServiceServers() should not crash if there is an empty
334 // hostname is the mapping. 381 // hostname is the mapping.
335 TEST_F(AlternateProtocolServerPropertiesTest, InitializeWithEmptyHostname) { 382 TEST_F(AlternateProtocolServerPropertiesTest, InitializeWithEmptyHostname) {
336 const HostPortPair host_port_pair("foo", 443); 383 const HostPortPair host_port_pair("foo", 443);
337 const AlternativeService alternative_service_with_empty_hostname(NPN_SPDY_4, 384 const AlternativeService alternative_service_with_empty_hostname(NPN_SPDY_4,
338 "", 1234); 385 "", 1234);
339 const AlternativeService alternative_service_with_foo_hostname(NPN_SPDY_4, 386 const AlternativeService alternative_service_with_foo_hostname(NPN_SPDY_4,
340 "foo", 1234); 387 "foo", 1234);
341 impl_.SetAlternativeService(host_port_pair, 388 impl_.SetAlternativeService(host_port_pair,
342 alternative_service_with_empty_hostname, 1.0); 389 alternative_service_with_empty_hostname, 1.0);
343 impl_.MarkAlternativeServiceBroken(alternative_service_with_foo_hostname); 390 impl_.MarkAlternativeServiceBroken(alternative_service_with_foo_hostname);
344 391
345 AlternativeServiceMap alternative_service_map( 392 AlternativeServiceMap alternative_service_map(
346 AlternativeServiceMap::NO_AUTO_EVICT); 393 AlternativeServiceMap::NO_AUTO_EVICT);
347 impl_.InitializeAlternativeServiceServers(&alternative_service_map); 394 impl_.InitializeAlternativeServiceServers(&alternative_service_map);
348 395
349 EXPECT_TRUE( 396 EXPECT_TRUE(
350 impl_.IsAlternativeServiceBroken(alternative_service_with_foo_hostname)); 397 impl_.IsAlternativeServiceBroken(alternative_service_with_foo_hostname));
351 EXPECT_TRUE(impl_.GetAlternativeService(host_port_pair) == 398 const AlternativeServiceVector alternative_service_vector =
352 alternative_service_with_foo_hostname); 399 impl_.GetAlternativeServices(host_port_pair);
400 ASSERT_EQ(1u, alternative_service_vector.size());
401 EXPECT_EQ(alternative_service_with_foo_hostname,
402 alternative_service_vector[0]);
353 } 403 }
354 404
355 TEST_F(AlternateProtocolServerPropertiesTest, MRUOfGetAlternateProtocol) { 405 TEST_F(AlternateProtocolServerPropertiesTest, MRUOfGetAlternativeServices) {
356 HostPortPair test_host_port_pair1("foo1", 80); 406 HostPortPair test_host_port_pair1("foo1", 80);
357 const AlternativeService alternative_service1(NPN_SPDY_4, "foo1", 443); 407 const AlternativeService alternative_service1(NPN_SPDY_3_1, "foo1", 443);
358 impl_.SetAlternativeService(test_host_port_pair1, alternative_service1, 1.0); 408 impl_.SetAlternativeService(test_host_port_pair1, alternative_service1, 1.0);
359 HostPortPair test_host_port_pair2("foo2", 80); 409 HostPortPair test_host_port_pair2("foo2", 80);
360 const AlternativeService alternative_service2(NPN_SPDY_4, "foo2", 1234); 410 const AlternativeService alternative_service2(NPN_SPDY_4, "foo2", 1234);
361 impl_.SetAlternativeService(test_host_port_pair2, alternative_service2, 1.0); 411 impl_.SetAlternativeService(test_host_port_pair2, alternative_service2, 1.0);
362 412
363 const AlternativeServiceMap& map = impl_.alternative_service_map(); 413 const AlternativeServiceMap& map = impl_.alternative_service_map();
364 AlternativeServiceMap::const_iterator it = map.begin(); 414 AlternativeServiceMap::const_iterator it = map.begin();
365 EXPECT_TRUE(it->first.Equals(test_host_port_pair2)); 415 EXPECT_TRUE(it->first.Equals(test_host_port_pair2));
366 EXPECT_EQ(NPN_SPDY_4, it->second.alternative_service.protocol); 416 ASSERT_EQ(1u, it->second.size());
367 EXPECT_EQ(1234, it->second.alternative_service.port); 417 EXPECT_EQ(alternative_service2, it->second[0].alternative_service);
368 418
369 // GetAlternativeService should reorder the AlternateProtocol map. 419 const AlternativeServiceVector alternative_service_vector =
370 const AlternativeService alternative_service = 420 impl_.GetAlternativeServices(test_host_port_pair1);
371 impl_.GetAlternativeService(test_host_port_pair1); 421 ASSERT_EQ(1u, alternative_service_vector.size());
372 EXPECT_EQ(443, alternative_service.port); 422 EXPECT_EQ(alternative_service1, alternative_service_vector[0]);
373 EXPECT_EQ(NPN_SPDY_4, alternative_service.protocol); 423
424 // GetAlternativeServices should reorder the AlternateProtocol map.
374 it = map.begin(); 425 it = map.begin();
375 EXPECT_TRUE(it->first.Equals(test_host_port_pair1)); 426 EXPECT_TRUE(it->first.Equals(test_host_port_pair1));
376 EXPECT_EQ(NPN_SPDY_4, it->second.alternative_service.protocol); 427 ASSERT_EQ(1u, it->second.size());
377 EXPECT_EQ(443, it->second.alternative_service.port); 428 EXPECT_EQ(alternative_service1, it->second[0].alternative_service);
378 } 429 }
379 430
380 TEST_F(AlternateProtocolServerPropertiesTest, SetBroken) { 431 TEST_F(AlternateProtocolServerPropertiesTest, SetBroken) {
381 HostPortPair test_host_port_pair("foo", 80); 432 HostPortPair test_host_port_pair("foo", 80);
382 const AlternativeService alternative_service1(NPN_SPDY_4, "foo", 443); 433 const AlternativeService alternative_service1(NPN_SPDY_4, "foo", 443);
383 impl_.SetAlternativeService(test_host_port_pair, alternative_service1, 1.0); 434 impl_.SetAlternativeService(test_host_port_pair, alternative_service1, 1.0);
435 AlternativeServiceVector alternative_service_vector =
436 impl_.GetAlternativeServices(test_host_port_pair);
437 ASSERT_EQ(1u, alternative_service_vector.size());
438 EXPECT_EQ(alternative_service1, alternative_service_vector[0]);
439 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service1));
440
441 // GetAlternativeServices should return the broken alternative service.
384 impl_.MarkAlternativeServiceBroken(alternative_service1); 442 impl_.MarkAlternativeServiceBroken(alternative_service1);
385 ASSERT_TRUE(HasAlternativeService(test_host_port_pair)); 443 alternative_service_vector =
444 impl_.GetAlternativeServices(test_host_port_pair);
445 ASSERT_EQ(1u, alternative_service_vector.size());
446 EXPECT_EQ(alternative_service1, alternative_service_vector[0]);
386 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); 447 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1));
387 448
449 // SetAlternativeServices should add a broken alternative service to the map.
450 AlternativeServiceInfoVector alternative_service_info_vector;
451 alternative_service_info_vector.push_back(
452 AlternativeServiceInfo(alternative_service1, 1.0));
388 const AlternativeService alternative_service2(NPN_SPDY_4, "foo", 1234); 453 const AlternativeService alternative_service2(NPN_SPDY_4, "foo", 1234);
389 impl_.SetAlternativeService(test_host_port_pair, alternative_service2, 1.0); 454 alternative_service_info_vector.push_back(
390 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); 455 AlternativeServiceInfo(alternative_service2, 1.0));
391 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service2)); 456 impl_.SetAlternativeServices(test_host_port_pair,
392 EXPECT_EQ(1234, impl_.GetAlternativeService(test_host_port_pair).port); 457 alternative_service_info_vector);
458 alternative_service_vector =
459 impl_.GetAlternativeServices(test_host_port_pair);
460 ASSERT_EQ(2u, alternative_service_vector.size());
461 EXPECT_EQ(alternative_service1, alternative_service_vector[0]);
462 EXPECT_EQ(alternative_service2, alternative_service_vector[1]);
463 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service_vector[0]));
464 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service_vector[1]));
465
466 // SetAlternativeService should add a broken alternative service to the map.
467 impl_.SetAlternativeService(test_host_port_pair, alternative_service1, 1.0);
468 alternative_service_vector =
469 impl_.GetAlternativeServices(test_host_port_pair);
470 ASSERT_EQ(1u, alternative_service_vector.size());
471 EXPECT_EQ(alternative_service1, alternative_service_vector[0]);
472 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service_vector[0]));
473 }
474
475 TEST_F(AlternateProtocolServerPropertiesTest, ClearAlternativeServices) {
476 AlternativeServiceInfoVector alternative_service_info_vector;
477 const AlternativeService alternative_service1(NPN_SPDY_3_1, "foo", 443);
478 alternative_service_info_vector.push_back(
479 AlternativeServiceInfo(alternative_service1, 1.0));
480 const AlternativeService alternative_service2(NPN_SPDY_4, "bar", 1234);
481 alternative_service_info_vector.push_back(
482 AlternativeServiceInfo(alternative_service2, 1.0));
483 HostPortPair test_host_port_pair("foo", 80);
484 impl_.SetAlternativeServices(test_host_port_pair,
485 alternative_service_info_vector);
486
487 const net::AlternativeServiceMap& map = impl_.alternative_service_map();
488 net::AlternativeServiceMap::const_iterator it = map.begin();
489 EXPECT_TRUE(it->first.Equals(test_host_port_pair));
490 ASSERT_EQ(2u, it->second.size());
491 EXPECT_EQ(alternative_service1, it->second[0].alternative_service);
492 EXPECT_EQ(alternative_service2, it->second[1].alternative_service);
493
494 impl_.ClearAlternativeServices(test_host_port_pair);
495 EXPECT_TRUE(map.empty());
393 } 496 }
394 497
395 // A broken alternative service in the mapping carries meaningful information, 498 // A broken alternative service in the mapping carries meaningful information,
396 // therefore it should not be ignored by SetAlternativeService(). In 499 // therefore it should not be ignored by SetAlternativeService(). In
397 // particular, an alternative service mapped to an origin shadows alternative 500 // particular, an alternative service mapped to an origin shadows alternative
398 // services of canonical hosts. 501 // services of canonical hosts.
399 TEST_F(AlternateProtocolServerPropertiesTest, BrokenShadowsCanonical) { 502 TEST_F(AlternateProtocolServerPropertiesTest, BrokenShadowsCanonical) {
400 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 503 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
401 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); 504 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80);
402 AlternativeService canonical_altsvc(QUIC, "bar.c.youtube.com", 1234); 505 AlternativeService canonical_alternative_service(QUIC, "bar.c.youtube.com",
403 impl_.SetAlternativeService(canonical_port_pair, canonical_altsvc, 1.0); 506 1234);
404 EXPECT_TRUE(impl_.GetAlternativeService(test_host_port_pair) == 507 impl_.SetAlternativeService(canonical_host_port_pair,
405 canonical_altsvc); 508 canonical_alternative_service, 1.0);
509 AlternativeServiceVector alternative_service_vector =
510 impl_.GetAlternativeServices(test_host_port_pair);
511 ASSERT_EQ(1u, alternative_service_vector.size());
512 EXPECT_EQ(canonical_alternative_service, alternative_service_vector[0]);
406 513
407 const AlternativeService broken_alternative_service(NPN_SPDY_4, "foo", 443); 514 const AlternativeService broken_alternative_service(NPN_SPDY_4, "foo", 443);
408 impl_.MarkAlternativeServiceBroken(broken_alternative_service); 515 impl_.MarkAlternativeServiceBroken(broken_alternative_service);
409 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(broken_alternative_service)); 516 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(broken_alternative_service));
410 517
411 impl_.SetAlternativeService(test_host_port_pair, broken_alternative_service, 518 impl_.SetAlternativeService(test_host_port_pair, broken_alternative_service,
412 1.0); 519 1.0);
413 ASSERT_EQ(broken_alternative_service, 520 alternative_service_vector =
414 impl_.GetAlternativeService(test_host_port_pair)); 521 impl_.GetAlternativeServices(test_host_port_pair);
522 ASSERT_EQ(1u, alternative_service_vector.size());
523 EXPECT_EQ(broken_alternative_service, alternative_service_vector[0]);
415 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(broken_alternative_service)); 524 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(broken_alternative_service));
416 } 525 }
417 526
418 TEST_F(AlternateProtocolServerPropertiesTest, ClearBroken) { 527 TEST_F(AlternateProtocolServerPropertiesTest, ClearBroken) {
419 HostPortPair test_host_port_pair("foo", 80); 528 HostPortPair test_host_port_pair("foo", 80);
420 const AlternativeService alternative_service(NPN_SPDY_4, "foo", 443); 529 const AlternativeService alternative_service(NPN_SPDY_4, "foo", 443);
421 impl_.SetAlternativeService(test_host_port_pair, alternative_service, 1.0); 530 impl_.SetAlternativeService(test_host_port_pair, alternative_service, 1.0);
422 impl_.MarkAlternativeServiceBroken(alternative_service); 531 impl_.MarkAlternativeServiceBroken(alternative_service);
423 ASSERT_TRUE(HasAlternativeService(test_host_port_pair)); 532 ASSERT_TRUE(HasAlternativeService(test_host_port_pair));
424 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service)); 533 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service));
425 impl_.ClearAlternativeService(test_host_port_pair); 534 // ClearAlternativeServices should leave a broken alternative service marked
535 // as such.
536 impl_.ClearAlternativeServices(test_host_port_pair);
426 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service)); 537 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service));
427 } 538 }
428 539
429 TEST_F(AlternateProtocolServerPropertiesTest, MarkRecentlyBroken) { 540 TEST_F(AlternateProtocolServerPropertiesTest, MarkRecentlyBroken) {
430 HostPortPair host_port_pair("foo", 80); 541 HostPortPair host_port_pair("foo", 80);
431 const AlternativeService alternative_service(NPN_SPDY_4, "foo", 443); 542 const AlternativeService alternative_service(NPN_SPDY_4, "foo", 443);
432 impl_.SetAlternativeService(host_port_pair, alternative_service, 1.0); 543 impl_.SetAlternativeService(host_port_pair, alternative_service, 1.0);
433 544
434 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service)); 545 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service));
435 EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service)); 546 EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
436 547
437 impl_.MarkAlternativeServiceRecentlyBroken(alternative_service); 548 impl_.MarkAlternativeServiceRecentlyBroken(alternative_service);
438 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service)); 549 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service));
439 EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service)); 550 EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
440 551
441 impl_.ConfirmAlternativeService(alternative_service); 552 impl_.ConfirmAlternativeService(alternative_service);
442 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service)); 553 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service));
443 EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service)); 554 EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
444 } 555 }
445 556
446 TEST_F(AlternateProtocolServerPropertiesTest, Canonical) { 557 TEST_F(AlternateProtocolServerPropertiesTest, Canonical) {
447 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 558 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
448 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); 559 EXPECT_FALSE(HasAlternativeService(test_host_port_pair));
449 560
450 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); 561 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80);
451 EXPECT_FALSE(HasAlternativeService(canonical_port_pair)); 562 EXPECT_FALSE(HasAlternativeService(canonical_host_port_pair));
452 563
453 AlternativeService canonical_altsvc(QUIC, "bar.c.youtube.com", 1234); 564 AlternativeServiceInfoVector alternative_service_info_vector;
454 impl_.SetAlternativeService(canonical_port_pair, canonical_altsvc, 1.0); 565 const AlternativeService canonical_alternative_service1(
455 // Verify the forced protocol. 566 QUIC, "bar.c.youtube.com", 1234);
456 ASSERT_TRUE(HasAlternativeService(test_host_port_pair)); 567 alternative_service_info_vector.push_back(
457 const AlternativeService alternative_service = 568 AlternativeServiceInfo(canonical_alternative_service1, 1.0));
458 impl_.GetAlternativeService(test_host_port_pair); 569 const AlternativeService canonical_alternative_service2(NPN_SPDY_4, "", 443);
459 EXPECT_EQ(canonical_altsvc.port, alternative_service.port); 570 alternative_service_info_vector.push_back(
460 EXPECT_EQ(canonical_altsvc.protocol, alternative_service.protocol); 571 AlternativeServiceInfo(canonical_alternative_service2, 1.0));
572 impl_.SetAlternativeServices(canonical_host_port_pair,
573 alternative_service_info_vector);
574
575 // Since |test_host_port_pair| does not have an alternative service itself,
576 // GetAlternativeServices should return those of |canonical_host_port_pair|.
577 AlternativeServiceVector alternative_service_vector =
578 impl_.GetAlternativeServices(test_host_port_pair);
579 ASSERT_EQ(2u, alternative_service_vector.size());
580 EXPECT_EQ(canonical_alternative_service1, alternative_service_vector[0]);
581
582 // Since |canonical_alternative_service2| has an empty host,
583 // GetAlternativeServices should substitute the hostname of its |origin|
584 // argument.
585 EXPECT_EQ(test_host_port_pair.host(), alternative_service_vector[1].host);
586 EXPECT_EQ(canonical_alternative_service2.protocol,
587 alternative_service_vector[1].protocol);
588 EXPECT_EQ(canonical_alternative_service2.port,
589 alternative_service_vector[1].port);
461 590
462 // Verify the canonical suffix. 591 // Verify the canonical suffix.
463 EXPECT_EQ(".c.youtube.com", 592 EXPECT_EQ(".c.youtube.com",
464 impl_.GetCanonicalSuffix(test_host_port_pair.host())); 593 impl_.GetCanonicalSuffix(test_host_port_pair.host()));
465 EXPECT_EQ(".c.youtube.com", 594 EXPECT_EQ(".c.youtube.com",
466 impl_.GetCanonicalSuffix(canonical_port_pair.host())); 595 impl_.GetCanonicalSuffix(canonical_host_port_pair.host()));
467 }
468
469 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalDefaultHost) {
470 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
471 EXPECT_FALSE(HasAlternativeService(test_host_port_pair));
472
473 HostPortPair canonical_port_pair("bar.c.youtube.com", 80);
474 EXPECT_FALSE(HasAlternativeService(canonical_port_pair));
475
476 AlternativeService canonical_altsvc(QUIC, "", 1234);
477 impl_.SetAlternativeService(canonical_port_pair, canonical_altsvc, 1.0);
478 ASSERT_TRUE(HasAlternativeService(test_host_port_pair));
479 const AlternativeService alternative_service =
480 impl_.GetAlternativeService(test_host_port_pair);
481 EXPECT_EQ(canonical_altsvc.protocol, alternative_service.protocol);
482 EXPECT_EQ(test_host_port_pair.host(), alternative_service.host);
483 EXPECT_EQ(canonical_altsvc.port, alternative_service.port);
484 } 596 }
485 597
486 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBelowThreshold) { 598 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBelowThreshold) {
487 impl_.SetAlternativeServiceProbabilityThreshold(0.02); 599 impl_.SetAlternativeServiceProbabilityThreshold(0.02);
488 600
489 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 601 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
490 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); 602 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80);
491 AlternativeService canonical_altsvc(QUIC, "bar.c.youtube.com", 1234); 603 AlternativeService canonical_alternative_service(QUIC, "bar.c.youtube.com",
604 1234);
492 605
493 impl_.SetAlternativeService(canonical_port_pair, canonical_altsvc, 0.01); 606 impl_.SetAlternativeService(canonical_host_port_pair,
494 EXPECT_FALSE(HasAlternativeService(canonical_port_pair)); 607 canonical_alternative_service, 0.01);
608 EXPECT_FALSE(HasAlternativeService(canonical_host_port_pair));
495 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); 609 EXPECT_FALSE(HasAlternativeService(test_host_port_pair));
496 } 610 }
497 611
498 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalAboveThreshold) { 612 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalAboveThreshold) {
499 impl_.SetAlternativeServiceProbabilityThreshold(0.02); 613 impl_.SetAlternativeServiceProbabilityThreshold(0.02);
500 614
501 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 615 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
502 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); 616 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80);
503 AlternativeService canonical_altsvc(QUIC, "bar.c.youtube.com", 1234); 617 AlternativeService canonical_alternative_service(QUIC, "bar.c.youtube.com",
618 1234);
504 619
505 impl_.SetAlternativeService(canonical_port_pair, canonical_altsvc, 0.03); 620 impl_.SetAlternativeService(canonical_host_port_pair,
506 EXPECT_TRUE(HasAlternativeService(canonical_port_pair)); 621 canonical_alternative_service, 0.03);
622 EXPECT_TRUE(HasAlternativeService(canonical_host_port_pair));
507 EXPECT_TRUE(HasAlternativeService(test_host_port_pair)); 623 EXPECT_TRUE(HasAlternativeService(test_host_port_pair));
508 } 624 }
509 625
510 TEST_F(AlternateProtocolServerPropertiesTest, ClearCanonical) { 626 TEST_F(AlternateProtocolServerPropertiesTest, ClearCanonical) {
511 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 627 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
512 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); 628 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80);
513 AlternativeService canonical_altsvc(QUIC, "bar.c.youtube.com", 1234); 629 AlternativeService canonical_alternative_service(QUIC, "bar.c.youtube.com",
630 1234);
514 631
515 impl_.SetAlternativeService(canonical_port_pair, canonical_altsvc, 1.0); 632 impl_.SetAlternativeService(canonical_host_port_pair,
516 impl_.ClearAlternativeService(canonical_port_pair); 633 canonical_alternative_service, 1.0);
634 impl_.ClearAlternativeServices(canonical_host_port_pair);
517 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); 635 EXPECT_FALSE(HasAlternativeService(test_host_port_pair));
518 } 636 }
519 637
520 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBroken) { 638 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBroken) {
521 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 639 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
522 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); 640 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80);
523 AlternativeService canonical_altsvc(QUIC, "bar.c.youtube.com", 1234); 641 AlternativeService canonical_alternative_service(QUIC, "bar.c.youtube.com",
642 1234);
524 643
525 impl_.SetAlternativeService(canonical_port_pair, canonical_altsvc, 1.0); 644 impl_.SetAlternativeService(canonical_host_port_pair,
526 impl_.MarkAlternativeServiceBroken(canonical_altsvc); 645 canonical_alternative_service, 1.0);
646 impl_.MarkAlternativeServiceBroken(canonical_alternative_service);
527 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); 647 EXPECT_FALSE(HasAlternativeService(test_host_port_pair));
528 } 648 }
529 649
530 // Adding an alternative service for a new host overrides canonical host. 650 // Adding an alternative service for a new host overrides canonical host.
531 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalOverride) { 651 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalOverride) {
532 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 652 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
533 HostPortPair bar_host_port_pair("bar.c.youtube.com", 80); 653 HostPortPair bar_host_port_pair("bar.c.youtube.com", 80);
534 AlternativeService bar_alternative_service(QUIC, "bar.c.youtube.com", 1234); 654 AlternativeService bar_alternative_service(QUIC, "bar.c.youtube.com", 1234);
535 impl_.SetAlternativeService(bar_host_port_pair, bar_alternative_service, 1.0); 655 impl_.SetAlternativeService(bar_host_port_pair, bar_alternative_service, 1.0);
536 AlternativeService altsvc = impl_.GetAlternativeService(test_host_port_pair); 656 AlternativeServiceVector alternative_service_vector =
537 EXPECT_EQ(1234, altsvc.port); 657 impl_.GetAlternativeServices(test_host_port_pair);
658 ASSERT_EQ(1u, alternative_service_vector.size());
659 EXPECT_EQ(bar_alternative_service, alternative_service_vector[0]);
538 660
539 HostPortPair qux_host_port_pair("qux.c.youtube.com", 80); 661 HostPortPair qux_host_port_pair("qux.c.youtube.com", 80);
540 AlternativeService qux_alternative_service(QUIC, "qux.c.youtube.com", 443); 662 AlternativeService qux_alternative_service(QUIC, "qux.c.youtube.com", 443);
541 impl_.SetAlternativeService(qux_host_port_pair, qux_alternative_service, 1.0); 663 impl_.SetAlternativeService(qux_host_port_pair, qux_alternative_service, 1.0);
542 altsvc = impl_.GetAlternativeService(test_host_port_pair); 664 alternative_service_vector =
543 EXPECT_EQ(443, altsvc.port); 665 impl_.GetAlternativeServices(test_host_port_pair);
666 ASSERT_EQ(1u, alternative_service_vector.size());
667 EXPECT_EQ(qux_alternative_service, alternative_service_vector[0]);
544 } 668 }
545 669
546 TEST_F(AlternateProtocolServerPropertiesTest, ClearWithCanonical) { 670 TEST_F(AlternateProtocolServerPropertiesTest, ClearWithCanonical) {
547 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 671 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
548 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); 672 HostPortPair canonical_host_port_pair("bar.c.youtube.com", 80);
549 AlternativeService canonical_altsvc(QUIC, "bar.c.youtube.com", 1234); 673 AlternativeService canonical_alternative_service(QUIC, "bar.c.youtube.com",
674 1234);
550 675
551 impl_.SetAlternativeService(canonical_port_pair, canonical_altsvc, 1.0); 676 impl_.SetAlternativeService(canonical_host_port_pair,
677 canonical_alternative_service, 1.0);
552 impl_.Clear(); 678 impl_.Clear();
553 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); 679 EXPECT_FALSE(HasAlternativeService(test_host_port_pair));
554 } 680 }
555 681
556 TEST_F(AlternateProtocolServerPropertiesTest, 682 TEST_F(AlternateProtocolServerPropertiesTest,
557 ExpireBrokenAlternateProtocolMappings) { 683 ExpireBrokenAlternateProtocolMappings) {
558 HostPortPair host_port_pair("foo", 443); 684 HostPortPair host_port_pair("foo", 443);
559 AlternativeService alternative_service(QUIC, "foo", 443); 685 AlternativeService alternative_service(QUIC, "foo", 443);
560 impl_.SetAlternativeService(host_port_pair, alternative_service, 1.0); 686 impl_.SetAlternativeService(host_port_pair, alternative_service, 1.0);
561 EXPECT_TRUE(HasAlternativeService(host_port_pair)); 687 EXPECT_TRUE(HasAlternativeService(host_port_pair));
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
839 EXPECT_EQ(100, stats2->bandwidth_estimate.ToBitsPerSecond()); 965 EXPECT_EQ(100, stats2->bandwidth_estimate.ToBitsPerSecond());
840 966
841 impl_.Clear(); 967 impl_.Clear();
842 const ServerNetworkStats* stats3 = impl_.GetServerNetworkStats(foo_server); 968 const ServerNetworkStats* stats3 = impl_.GetServerNetworkStats(foo_server);
843 EXPECT_EQ(NULL, stats3); 969 EXPECT_EQ(NULL, stats3);
844 } 970 }
845 971
846 } // namespace 972 } // namespace
847 973
848 } // namespace net 974 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_server_properties_impl.cc ('k') | net/http/http_server_properties_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698