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

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

Issue 2901093004: Add and persist a new field in AlternativeServiceInfo to list QUIC verisons advertised (Closed)
Patch Set: fix Canonical test Created 3 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 <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/test/test_mock_time_task_runner.h" 12 #include "base/test/test_mock_time_task_runner.h"
13 #include "base/values.h" 13 #include "base/values.h"
14 #include "net/base/host_port_pair.h" 14 #include "net/base/host_port_pair.h"
15 #include "net/base/ip_address.h" 15 #include "net/base/ip_address.h"
16 #include "net/http/http_network_session.h"
16 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
17 #include "url/gurl.h" 18 #include "url/gurl.h"
18 19
19 namespace base { 20 namespace base {
20 class ListValue; 21 class ListValue;
21 } 22 }
22 23
23 namespace net { 24 namespace net {
24 25
25 const base::TimeDelta BROKEN_ALT_SVC_EXPIRE_DELAYS[10] = { 26 const base::TimeDelta BROKEN_ALT_SVC_EXPIRE_DELAYS[10] = {
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 bool HasAlternativeService(const url::SchemeHostPort& origin) { 72 bool HasAlternativeService(const url::SchemeHostPort& origin) {
72 const AlternativeServiceInfoVector alternative_service_info_vector = 73 const AlternativeServiceInfoVector alternative_service_info_vector =
73 impl_.GetAlternativeServiceInfos(origin); 74 impl_.GetAlternativeServiceInfos(origin);
74 return !alternative_service_info_vector.empty(); 75 return !alternative_service_info_vector.empty();
75 } 76 }
76 77
77 bool SetAlternativeService(const url::SchemeHostPort& origin, 78 bool SetAlternativeService(const url::SchemeHostPort& origin,
78 const AlternativeService& alternative_service) { 79 const AlternativeService& alternative_service) {
79 const base::Time expiration = 80 const base::Time expiration =
80 base::Time::Now() + base::TimeDelta::FromDays(1); 81 base::Time::Now() + base::TimeDelta::FromDays(1);
81 return impl_.SetAlternativeService(origin, alternative_service, expiration); 82 if (alternative_service.protocol == kProtoQUIC) {
83 return impl_.SetQuicAlternativeService(
84 origin, alternative_service, expiration,
85 HttpNetworkSession::Params().quic_supported_versions);
86 } else {
87 return impl_.SetHttp2AlternativeService(origin, alternative_service,
88 expiration);
89 }
82 } 90 }
83 91
84 void MarkBrokenAndLetExpireAlternativeServiceNTimes( 92 void MarkBrokenAndLetExpireAlternativeServiceNTimes(
85 const AlternativeService& alternative_service, 93 const AlternativeService& alternative_service,
86 int num_times) {} 94 int num_times) {}
87 95
88 scoped_refptr<base::TestMockTimeTaskRunner> test_task_runner_; 96 scoped_refptr<base::TestMockTimeTaskRunner> test_task_runner_;
89 97
90 std::unique_ptr<base::TickClock> broken_services_clock_; 98 std::unique_ptr<base::TickClock> broken_services_clock_;
91 HttpServerPropertiesImpl impl_; 99 HttpServerPropertiesImpl impl_;
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 alternative_service_info_vector[0].alternative_service()); 369 alternative_service_info_vector[0].alternative_service());
362 370
363 impl_.Clear(); 371 impl_.Clear();
364 EXPECT_FALSE(HasAlternativeService(test_server)); 372 EXPECT_FALSE(HasAlternativeService(test_server));
365 } 373 }
366 374
367 TEST_F(AlternateProtocolServerPropertiesTest, ExcludeOrigin) { 375 TEST_F(AlternateProtocolServerPropertiesTest, ExcludeOrigin) {
368 AlternativeServiceInfoVector alternative_service_info_vector; 376 AlternativeServiceInfoVector alternative_service_info_vector;
369 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 377 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
370 // Same hostname, same port, TCP: should be ignored. 378 // Same hostname, same port, TCP: should be ignored.
371 AlternativeServiceInfo alternative_service_info1(kProtoHTTP2, "foo", 443, 379 AlternativeServiceInfo alternative_service_info1 =
372 expiration); 380 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
381 AlternativeService(kProtoHTTP2, "foo", 443), expiration);
373 alternative_service_info_vector.push_back(alternative_service_info1); 382 alternative_service_info_vector.push_back(alternative_service_info1);
374 // Different hostname: GetAlternativeServiceInfos should return this one. 383 // Different hostname: GetAlternativeServiceInfos should return this one.
375 AlternativeServiceInfo alternative_service_info2(kProtoHTTP2, "bar", 443, 384 AlternativeServiceInfo alternative_service_info2 =
376 expiration); 385 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
386 AlternativeService(kProtoHTTP2, "bar", 443), expiration);
377 alternative_service_info_vector.push_back(alternative_service_info2); 387 alternative_service_info_vector.push_back(alternative_service_info2);
378 // Different port: GetAlternativeServiceInfos should return this one too. 388 // Different port: GetAlternativeServiceInfos should return this one too.
379 AlternativeServiceInfo alternative_service_info3(kProtoHTTP2, "foo", 80, 389 AlternativeServiceInfo alternative_service_info3 =
380 expiration); 390 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
391 AlternativeService(kProtoHTTP2, "foo", 80), expiration);
381 alternative_service_info_vector.push_back(alternative_service_info3); 392 alternative_service_info_vector.push_back(alternative_service_info3);
382 // QUIC: GetAlternativeServices should return this one too. 393 // QUIC: GetAlternativeServices should return this one too.
383 AlternativeServiceInfo alternative_service_info4(kProtoQUIC, "foo", 443, 394 AlternativeServiceInfo alternative_service_info4 =
384 expiration); 395 AlternativeServiceInfo::CreateQuicAlternativeServiceInfo(
396 AlternativeService(kProtoQUIC, "foo", 443), expiration,
397 HttpNetworkSession::Params().quic_supported_versions);
385 alternative_service_info_vector.push_back(alternative_service_info4); 398 alternative_service_info_vector.push_back(alternative_service_info4);
386 399
387 url::SchemeHostPort test_server("https", "foo", 443); 400 url::SchemeHostPort test_server("https", "foo", 443);
388 impl_.SetAlternativeServices(test_server, alternative_service_info_vector); 401 impl_.SetAlternativeServices(test_server, alternative_service_info_vector);
389 402
390 const AlternativeServiceInfoVector alternative_service_info_vector2 = 403 const AlternativeServiceInfoVector alternative_service_info_vector2 =
391 impl_.GetAlternativeServiceInfos(test_server); 404 impl_.GetAlternativeServiceInfos(test_server);
392 ASSERT_EQ(3u, alternative_service_info_vector2.size()); 405 ASSERT_EQ(3u, alternative_service_info_vector2.size());
393 EXPECT_EQ(alternative_service_info2, alternative_service_info_vector2[0]); 406 EXPECT_EQ(alternative_service_info2, alternative_service_info_vector2[0]);
394 EXPECT_EQ(alternative_service_info3, alternative_service_info_vector2[1]); 407 EXPECT_EQ(alternative_service_info3, alternative_service_info_vector2[1]);
395 EXPECT_EQ(alternative_service_info4, alternative_service_info_vector2[2]); 408 EXPECT_EQ(alternative_service_info4, alternative_service_info_vector2[2]);
396 } 409 }
397 410
398 TEST_F(AlternateProtocolServerPropertiesTest, Set) { 411 TEST_F(AlternateProtocolServerPropertiesTest, Set) {
399 // |test_server1| has an alternative service, which will not be 412 // |test_server1| has an alternative service, which will not be
400 // affected by SetAlternativeServiceServers(), because 413 // affected by SetAlternativeServiceServers(), because
401 // |alternative_service_map| does not have an entry for 414 // |alternative_service_map| does not have an entry for
402 // |test_server1|. 415 // |test_server1|.
403 url::SchemeHostPort test_server1("http", "foo1", 80); 416 url::SchemeHostPort test_server1("http", "foo1", 80);
404 const AlternativeService alternative_service1(kProtoHTTP2, "bar1", 443); 417 const AlternativeService alternative_service1(kProtoHTTP2, "bar1", 443);
405 const base::Time now = base::Time::Now(); 418 const base::Time now = base::Time::Now();
406 base::Time expiration1 = now + base::TimeDelta::FromDays(1); 419 base::Time expiration1 = now + base::TimeDelta::FromDays(1);
407 // 1st entry in the memory. 420 // 1st entry in the memory.
408 impl_.SetAlternativeService(test_server1, alternative_service1, expiration1); 421 impl_.SetHttp2AlternativeService(test_server1, alternative_service1,
422 expiration1);
409 423
410 // |test_server2| has an alternative service, which will be 424 // |test_server2| has an alternative service, which will be
411 // overwritten by SetAlternativeServiceServers(), because 425 // overwritten by SetAlternativeServiceServers(), because
412 // |alternative_service_map| has an entry for 426 // |alternative_service_map| has an entry for
413 // |test_server2|. 427 // |test_server2|.
414 AlternativeServiceInfoVector alternative_service_info_vector; 428 AlternativeServiceInfoVector alternative_service_info_vector;
415 const AlternativeService alternative_service2(kProtoHTTP2, "bar2", 443); 429 const AlternativeService alternative_service2(kProtoHTTP2, "bar2", 443);
416 base::Time expiration2 = now + base::TimeDelta::FromDays(2); 430 base::Time expiration2 = now + base::TimeDelta::FromDays(2);
417 alternative_service_info_vector.push_back( 431 alternative_service_info_vector.push_back(
418 AlternativeServiceInfo(alternative_service2, expiration2)); 432 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
433 alternative_service2, expiration2));
419 url::SchemeHostPort test_server2("http", "foo2", 80); 434 url::SchemeHostPort test_server2("http", "foo2", 80);
420 // 0th entry in the memory. 435 // 0th entry in the memory.
421 impl_.SetAlternativeServices(test_server2, alternative_service_info_vector); 436 impl_.SetAlternativeServices(test_server2, alternative_service_info_vector);
422 437
423 // Prepare |alternative_service_map| to be loaded by 438 // Prepare |alternative_service_map| to be loaded by
424 // SetAlternativeServiceServers(). 439 // SetAlternativeServiceServers().
425 std::unique_ptr<AlternativeServiceMap> alternative_service_map = 440 std::unique_ptr<AlternativeServiceMap> alternative_service_map =
426 base::MakeUnique<AlternativeServiceMap>( 441 base::MakeUnique<AlternativeServiceMap>(
427 AlternativeServiceMap::NO_AUTO_EVICT); 442 AlternativeServiceMap::NO_AUTO_EVICT);
428 const AlternativeService alternative_service3(kProtoHTTP2, "bar3", 123); 443 const AlternativeService alternative_service3(kProtoHTTP2, "bar3", 123);
429 base::Time expiration3 = now + base::TimeDelta::FromDays(3); 444 base::Time expiration3 = now + base::TimeDelta::FromDays(3);
430 const AlternativeServiceInfo alternative_service_info1(alternative_service3, 445 const AlternativeServiceInfo alternative_service_info1 =
431 expiration3); 446 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
447 alternative_service3, expiration3);
432 // Simulate updating data for 0th entry with data from Preferences. 448 // Simulate updating data for 0th entry with data from Preferences.
433 alternative_service_map->Put( 449 alternative_service_map->Put(
434 test_server2, 450 test_server2,
435 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info1)); 451 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info1));
436 452
437 url::SchemeHostPort test_server3("http", "foo3", 80); 453 url::SchemeHostPort test_server3("http", "foo3", 80);
438 const AlternativeService alternative_service4(kProtoHTTP2, "bar4", 1234); 454 const AlternativeService alternative_service4(kProtoHTTP2, "bar4", 1234);
439 base::Time expiration4 = now + base::TimeDelta::FromDays(4); 455 base::Time expiration4 = now + base::TimeDelta::FromDays(4);
440 const AlternativeServiceInfo alternative_service_info2(alternative_service4, 456 const AlternativeServiceInfo alternative_service_info2 =
441 expiration4); 457 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
458 alternative_service4, expiration4);
442 // Add an old entry from Preferences, this will be added to end of recency 459 // Add an old entry from Preferences, this will be added to end of recency
443 // list. 460 // list.
444 alternative_service_map->Put( 461 alternative_service_map->Put(
445 test_server3, 462 test_server3,
446 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info2)); 463 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info2));
447 464
448 // MRU list will be test_server2, test_server1, test_server3. 465 // MRU list will be test_server2, test_server1, test_server3.
449 impl_.SetAlternativeServiceServers(std::move(alternative_service_map)); 466 impl_.SetAlternativeServiceServers(std::move(alternative_service_map));
450 467
451 // Verify alternative_service_map. 468 // Verify alternative_service_map.
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 alternative_service_info_vector[0].alternative_service()); 512 alternative_service_info_vector[0].alternative_service());
496 } 513 }
497 514
498 // Regression test for https://crbug.com/516486: 515 // Regression test for https://crbug.com/516486:
499 // GetAlternativeServiceInfos() should remove |alternative_service_map_| 516 // GetAlternativeServiceInfos() should remove |alternative_service_map_|
500 // elements with empty value. 517 // elements with empty value.
501 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVector) { 518 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVector) {
502 url::SchemeHostPort server("https", "foo", 443); 519 url::SchemeHostPort server("https", "foo", 443);
503 const AlternativeService alternative_service(kProtoHTTP2, "bar", 443); 520 const AlternativeService alternative_service(kProtoHTTP2, "bar", 443);
504 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1); 521 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1);
505 const AlternativeServiceInfo alternative_service_info(alternative_service, 522 const AlternativeServiceInfo alternative_service_info =
506 expiration); 523 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
524 alternative_service, expiration);
507 std::unique_ptr<AlternativeServiceMap> alternative_service_map = 525 std::unique_ptr<AlternativeServiceMap> alternative_service_map =
508 base::MakeUnique<AlternativeServiceMap>( 526 base::MakeUnique<AlternativeServiceMap>(
509 AlternativeServiceMap::NO_AUTO_EVICT); 527 AlternativeServiceMap::NO_AUTO_EVICT);
510 alternative_service_map->Put( 528 alternative_service_map->Put(
511 server, 529 server,
512 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); 530 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info));
513 531
514 // Prepare |alternative_service_map_| with a single key that has a single 532 // Prepare |alternative_service_map_| with a single key that has a single
515 // AlternativeServiceInfo with identical hostname and port. 533 // AlternativeServiceInfo with identical hostname and port.
516 impl_.SetAlternativeServiceServers(std::move(alternative_service_map)); 534 impl_.SetAlternativeServiceServers(std::move(alternative_service_map));
(...skipping 12 matching lines...) Expand all
529 // There should still be no alternative service assigned to |server|. 547 // There should still be no alternative service assigned to |server|.
530 ASSERT_TRUE(impl_.GetAlternativeServiceInfos(server).empty()); 548 ASSERT_TRUE(impl_.GetAlternativeServiceInfos(server).empty());
531 } 549 }
532 550
533 // Regression test for https://crbug.com/516486 for the canonical host case. 551 // Regression test for https://crbug.com/516486 for the canonical host case.
534 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVectorForCanonical) { 552 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVectorForCanonical) {
535 url::SchemeHostPort server("https", "foo.c.youtube.com", 443); 553 url::SchemeHostPort server("https", "foo.c.youtube.com", 443);
536 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); 554 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443);
537 const AlternativeService alternative_service(kProtoHTTP2, "", 443); 555 const AlternativeService alternative_service(kProtoHTTP2, "", 443);
538 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1); 556 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1);
539 const AlternativeServiceInfo alternative_service_info(alternative_service, 557 const AlternativeServiceInfo alternative_service_info =
540 expiration); 558 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
559 alternative_service, expiration);
541 std::unique_ptr<AlternativeServiceMap> alternative_service_map = 560 std::unique_ptr<AlternativeServiceMap> alternative_service_map =
542 base::MakeUnique<AlternativeServiceMap>( 561 base::MakeUnique<AlternativeServiceMap>(
543 AlternativeServiceMap::NO_AUTO_EVICT); 562 AlternativeServiceMap::NO_AUTO_EVICT);
544 alternative_service_map->Put( 563 alternative_service_map->Put(
545 canonical_server, 564 canonical_server,
546 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); 565 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info));
547 566
548 // Prepare |alternative_service_map_| with a single key that has a single 567 // Prepare |alternative_service_map_| with a single key that has a single
549 // AlternativeServiceInfo with identical hostname and port. 568 // AlternativeServiceInfo with identical hostname and port.
550 impl_.SetAlternativeServiceServers(std::move(alternative_service_map)); 569 impl_.SetAlternativeServiceServers(std::move(alternative_service_map));
(...skipping 13 matching lines...) Expand all
564 // There should still be no alternative service assigned to 583 // There should still be no alternative service assigned to
565 // |canonical_server|. 584 // |canonical_server|.
566 ASSERT_TRUE(impl_.GetAlternativeServiceInfos(canonical_server).empty()); 585 ASSERT_TRUE(impl_.GetAlternativeServiceInfos(canonical_server).empty());
567 } 586 }
568 587
569 TEST_F(AlternateProtocolServerPropertiesTest, ClearServerWithCanonical) { 588 TEST_F(AlternateProtocolServerPropertiesTest, ClearServerWithCanonical) {
570 url::SchemeHostPort server("https", "foo.c.youtube.com", 443); 589 url::SchemeHostPort server("https", "foo.c.youtube.com", 443);
571 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); 590 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443);
572 const AlternativeService alternative_service(kProtoQUIC, "", 443); 591 const AlternativeService alternative_service(kProtoQUIC, "", 443);
573 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 592 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
574 const AlternativeServiceInfo alternative_service_info(alternative_service, 593 const AlternativeServiceInfo alternative_service_info =
575 expiration); 594 AlternativeServiceInfo::CreateQuicAlternativeServiceInfo(
595 alternative_service, expiration,
596 HttpNetworkSession::Params().quic_supported_versions);
576 597
577 impl_.SetAlternativeServices( 598 impl_.SetAlternativeServices(
578 canonical_server, 599 canonical_server,
579 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); 600 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info));
580 601
581 // Make sure the canonical service is returned for the other server. 602 // Make sure the canonical service is returned for the other server.
582 const AlternativeServiceInfoVector alternative_service_info_vector = 603 const AlternativeServiceInfoVector alternative_service_info_vector =
583 impl_.GetAlternativeServiceInfos(server); 604 impl_.GetAlternativeServiceInfos(server);
584 ASSERT_EQ(1u, alternative_service_info_vector.size()); 605 ASSERT_EQ(1u, alternative_service_info_vector.size());
585 EXPECT_EQ(kProtoQUIC, 606 EXPECT_EQ(kProtoQUIC,
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
639 impl_.GetAlternativeServiceInfos(test_server); 660 impl_.GetAlternativeServiceInfos(test_server);
640 ASSERT_EQ(1u, alternative_service_info_vector.size()); 661 ASSERT_EQ(1u, alternative_service_info_vector.size());
641 EXPECT_EQ(alternative_service1, 662 EXPECT_EQ(alternative_service1,
642 alternative_service_info_vector[0].alternative_service()); 663 alternative_service_info_vector[0].alternative_service());
643 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); 664 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1));
644 665
645 // SetAlternativeServices should add a broken alternative service to the map. 666 // SetAlternativeServices should add a broken alternative service to the map.
646 AlternativeServiceInfoVector alternative_service_info_vector2; 667 AlternativeServiceInfoVector alternative_service_info_vector2;
647 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 668 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
648 alternative_service_info_vector2.push_back( 669 alternative_service_info_vector2.push_back(
649 AlternativeServiceInfo(alternative_service1, expiration)); 670 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
671 alternative_service1, expiration));
650 const AlternativeService alternative_service2(kProtoHTTP2, "foo", 1234); 672 const AlternativeService alternative_service2(kProtoHTTP2, "foo", 1234);
651 alternative_service_info_vector2.push_back( 673 alternative_service_info_vector2.push_back(
652 AlternativeServiceInfo(alternative_service2, expiration)); 674 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
675 alternative_service2, expiration));
653 impl_.SetAlternativeServices(test_server, alternative_service_info_vector2); 676 impl_.SetAlternativeServices(test_server, alternative_service_info_vector2);
654 alternative_service_info_vector = 677 alternative_service_info_vector =
655 impl_.GetAlternativeServiceInfos(test_server); 678 impl_.GetAlternativeServiceInfos(test_server);
656 ASSERT_EQ(2u, alternative_service_info_vector.size()); 679 ASSERT_EQ(2u, alternative_service_info_vector.size());
657 EXPECT_EQ(alternative_service1, 680 EXPECT_EQ(alternative_service1,
658 alternative_service_info_vector[0].alternative_service()); 681 alternative_service_info_vector[0].alternative_service());
659 EXPECT_EQ(alternative_service2, 682 EXPECT_EQ(alternative_service2,
660 alternative_service_info_vector[1].alternative_service()); 683 alternative_service_info_vector[1].alternative_service());
661 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); 684 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1));
662 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service2)); 685 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service2));
(...skipping 10 matching lines...) Expand all
673 696
674 TEST_F(AlternateProtocolServerPropertiesTest, MaxAge) { 697 TEST_F(AlternateProtocolServerPropertiesTest, MaxAge) {
675 AlternativeServiceInfoVector alternative_service_info_vector; 698 AlternativeServiceInfoVector alternative_service_info_vector;
676 base::Time now = base::Time::Now(); 699 base::Time now = base::Time::Now();
677 base::TimeDelta one_day = base::TimeDelta::FromDays(1); 700 base::TimeDelta one_day = base::TimeDelta::FromDays(1);
678 701
679 // First alternative service expired one day ago, should not be returned by 702 // First alternative service expired one day ago, should not be returned by
680 // GetAlternativeServiceInfos(). 703 // GetAlternativeServiceInfos().
681 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); 704 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443);
682 alternative_service_info_vector.push_back( 705 alternative_service_info_vector.push_back(
683 AlternativeServiceInfo(alternative_service1, now - one_day)); 706 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
707 alternative_service1, now - one_day));
684 708
685 // Second alterrnative service will expire one day from now, should be 709 // Second alterrnative service will expire one day from now, should be
686 // returned by GetAlternativeSerices(). 710 // returned by GetAlternativeSerices().
687 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); 711 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234);
688 alternative_service_info_vector.push_back( 712 alternative_service_info_vector.push_back(
689 AlternativeServiceInfo(alternative_service2, now + one_day)); 713 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
714 alternative_service2, now + one_day));
690 715
691 url::SchemeHostPort test_server("http", "foo", 80); 716 url::SchemeHostPort test_server("http", "foo", 80);
692 impl_.SetAlternativeServices(test_server, alternative_service_info_vector); 717 impl_.SetAlternativeServices(test_server, alternative_service_info_vector);
693 718
694 AlternativeServiceInfoVector alternative_service_info_vector2 = 719 AlternativeServiceInfoVector alternative_service_info_vector2 =
695 impl_.GetAlternativeServiceInfos(test_server); 720 impl_.GetAlternativeServiceInfos(test_server);
696 ASSERT_EQ(1u, alternative_service_info_vector2.size()); 721 ASSERT_EQ(1u, alternative_service_info_vector2.size());
697 EXPECT_EQ(alternative_service2, 722 EXPECT_EQ(alternative_service2,
698 alternative_service_info_vector2[0].alternative_service()); 723 alternative_service_info_vector2[0].alternative_service());
699 } 724 }
700 725
701 TEST_F(AlternateProtocolServerPropertiesTest, MaxAgeCanonical) { 726 TEST_F(AlternateProtocolServerPropertiesTest, MaxAgeCanonical) {
702 AlternativeServiceInfoVector alternative_service_info_vector; 727 AlternativeServiceInfoVector alternative_service_info_vector;
703 base::Time now = base::Time::Now(); 728 base::Time now = base::Time::Now();
704 base::TimeDelta one_day = base::TimeDelta::FromDays(1); 729 base::TimeDelta one_day = base::TimeDelta::FromDays(1);
705 730
706 // First alternative service expired one day ago, should not be returned by 731 // First alternative service expired one day ago, should not be returned by
707 // GetAlternativeServiceInfos(). 732 // GetAlternativeServiceInfos().
708 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); 733 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443);
709 alternative_service_info_vector.push_back( 734 alternative_service_info_vector.push_back(
710 AlternativeServiceInfo(alternative_service1, now - one_day)); 735 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
736 alternative_service1, now - one_day));
711 737
712 // Second alterrnative service will expire one day from now, should be 738 // Second alterrnative service will expire one day from now, should be
713 // returned by GetAlternativeSerices(). 739 // returned by GetAlternativeSerices().
714 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); 740 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234);
715 alternative_service_info_vector.push_back( 741 alternative_service_info_vector.push_back(
716 AlternativeServiceInfo(alternative_service2, now + one_day)); 742 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
743 alternative_service2, now + one_day));
717 744
718 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); 745 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443);
719 impl_.SetAlternativeServices(canonical_server, 746 impl_.SetAlternativeServices(canonical_server,
720 alternative_service_info_vector); 747 alternative_service_info_vector);
721 748
722 url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443); 749 url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443);
723 AlternativeServiceInfoVector alternative_service_info_vector2 = 750 AlternativeServiceInfoVector alternative_service_info_vector2 =
724 impl_.GetAlternativeServiceInfos(test_server); 751 impl_.GetAlternativeServiceInfos(test_server);
725 ASSERT_EQ(1u, alternative_service_info_vector2.size()); 752 ASSERT_EQ(1u, alternative_service_info_vector2.size());
726 EXPECT_EQ(alternative_service2, 753 EXPECT_EQ(alternative_service2,
727 alternative_service_info_vector2[0].alternative_service()); 754 alternative_service_info_vector2[0].alternative_service());
728 } 755 }
729 756
730 TEST_F(AlternateProtocolServerPropertiesTest, AlternativeServiceWithScheme) { 757 TEST_F(AlternateProtocolServerPropertiesTest, AlternativeServiceWithScheme) {
731 AlternativeServiceInfoVector alternative_service_info_vector; 758 AlternativeServiceInfoVector alternative_service_info_vector;
732 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); 759 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443);
733 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 760 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
734 alternative_service_info_vector.push_back( 761 alternative_service_info_vector.push_back(
735 AlternativeServiceInfo(alternative_service1, expiration)); 762 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
763 alternative_service1, expiration));
736 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); 764 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234);
737 alternative_service_info_vector.push_back( 765 alternative_service_info_vector.push_back(
738 AlternativeServiceInfo(alternative_service2, expiration)); 766 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
767 alternative_service2, expiration));
739 // Set Alt-Svc list for |http_server|. 768 // Set Alt-Svc list for |http_server|.
740 url::SchemeHostPort http_server("http", "foo", 80); 769 url::SchemeHostPort http_server("http", "foo", 80);
741 impl_.SetAlternativeServices(http_server, alternative_service_info_vector); 770 impl_.SetAlternativeServices(http_server, alternative_service_info_vector);
742 771
743 const net::AlternativeServiceMap& map = impl_.alternative_service_map(); 772 const net::AlternativeServiceMap& map = impl_.alternative_service_map();
744 net::AlternativeServiceMap::const_iterator it = map.begin(); 773 net::AlternativeServiceMap::const_iterator it = map.begin();
745 EXPECT_TRUE(it->first.Equals(http_server)); 774 EXPECT_TRUE(it->first.Equals(http_server));
746 ASSERT_EQ(2u, it->second.size()); 775 ASSERT_EQ(2u, it->second.size());
747 EXPECT_EQ(alternative_service1, it->second[0].alternative_service()); 776 EXPECT_EQ(alternative_service1, it->second[0].alternative_service());
748 EXPECT_EQ(alternative_service2, it->second[1].alternative_service()); 777 EXPECT_EQ(alternative_service2, it->second[1].alternative_service());
(...skipping 12 matching lines...) Expand all
761 790
762 EXPECT_EQ(0u, impl_.GetAlternativeServiceInfos(http_server).size()); 791 EXPECT_EQ(0u, impl_.GetAlternativeServiceInfos(http_server).size());
763 EXPECT_EQ(2u, impl_.GetAlternativeServiceInfos(https_server).size()); 792 EXPECT_EQ(2u, impl_.GetAlternativeServiceInfos(https_server).size());
764 } 793 }
765 794
766 TEST_F(AlternateProtocolServerPropertiesTest, ClearAlternativeServices) { 795 TEST_F(AlternateProtocolServerPropertiesTest, ClearAlternativeServices) {
767 AlternativeServiceInfoVector alternative_service_info_vector; 796 AlternativeServiceInfoVector alternative_service_info_vector;
768 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); 797 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443);
769 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 798 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
770 alternative_service_info_vector.push_back( 799 alternative_service_info_vector.push_back(
771 AlternativeServiceInfo(alternative_service1, expiration)); 800 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
801 alternative_service1, expiration));
772 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); 802 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234);
773 alternative_service_info_vector.push_back( 803 alternative_service_info_vector.push_back(
774 AlternativeServiceInfo(alternative_service2, expiration)); 804 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
805 alternative_service2, expiration));
775 url::SchemeHostPort test_server("http", "foo", 80); 806 url::SchemeHostPort test_server("http", "foo", 80);
776 impl_.SetAlternativeServices(test_server, alternative_service_info_vector); 807 impl_.SetAlternativeServices(test_server, alternative_service_info_vector);
777 808
778 const net::AlternativeServiceMap& map = impl_.alternative_service_map(); 809 const net::AlternativeServiceMap& map = impl_.alternative_service_map();
779 net::AlternativeServiceMap::const_iterator it = map.begin(); 810 net::AlternativeServiceMap::const_iterator it = map.begin();
780 EXPECT_TRUE(it->first.Equals(test_server)); 811 EXPECT_TRUE(it->first.Equals(test_server));
781 ASSERT_EQ(2u, it->second.size()); 812 ASSERT_EQ(2u, it->second.size());
782 EXPECT_EQ(alternative_service1, it->second[0].alternative_service()); 813 EXPECT_EQ(alternative_service1, it->second[0].alternative_service());
783 EXPECT_EQ(alternative_service2, it->second[1].alternative_service()); 814 EXPECT_EQ(alternative_service2, it->second[1].alternative_service());
784 815
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
850 EXPECT_FALSE(HasAlternativeService(test_server)); 881 EXPECT_FALSE(HasAlternativeService(test_server));
851 882
852 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); 883 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443);
853 EXPECT_FALSE(HasAlternativeService(canonical_server)); 884 EXPECT_FALSE(HasAlternativeService(canonical_server));
854 885
855 AlternativeServiceInfoVector alternative_service_info_vector; 886 AlternativeServiceInfoVector alternative_service_info_vector;
856 const AlternativeService canonical_alternative_service1( 887 const AlternativeService canonical_alternative_service1(
857 kProtoQUIC, "bar.c.youtube.com", 1234); 888 kProtoQUIC, "bar.c.youtube.com", 1234);
858 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 889 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
859 alternative_service_info_vector.push_back( 890 alternative_service_info_vector.push_back(
860 AlternativeServiceInfo(canonical_alternative_service1, expiration)); 891 AlternativeServiceInfo::CreateQuicAlternativeServiceInfo(
892 canonical_alternative_service1, expiration,
893 HttpNetworkSession::Params().quic_supported_versions));
861 const AlternativeService canonical_alternative_service2(kProtoHTTP2, "", 443); 894 const AlternativeService canonical_alternative_service2(kProtoHTTP2, "", 443);
862 alternative_service_info_vector.push_back( 895 alternative_service_info_vector.push_back(
863 AlternativeServiceInfo(canonical_alternative_service2, expiration)); 896 AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
897 canonical_alternative_service2, expiration));
864 impl_.SetAlternativeServices(canonical_server, 898 impl_.SetAlternativeServices(canonical_server,
865 alternative_service_info_vector); 899 alternative_service_info_vector);
866 900
867 // Since |test_server| does not have an alternative service itself, 901 // Since |test_server| does not have an alternative service itself,
868 // GetAlternativeServiceInfos should return those of |canonical_server|. 902 // GetAlternativeServiceInfos should return those of |canonical_server|.
869 AlternativeServiceInfoVector alternative_service_info_vector2 = 903 AlternativeServiceInfoVector alternative_service_info_vector2 =
870 impl_.GetAlternativeServiceInfos(test_server); 904 impl_.GetAlternativeServiceInfos(test_server);
871 ASSERT_EQ(2u, alternative_service_info_vector2.size()); 905 ASSERT_EQ(2u, alternative_service_info_vector2.size());
872 EXPECT_EQ(canonical_alternative_service1, 906 EXPECT_EQ(canonical_alternative_service1,
873 alternative_service_info_vector2[0].alternative_service()); 907 alternative_service_info_vector2[0].alternative_service());
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after
1319 EXPECT_EQ(quic_server_info1, *(impl_.GetQuicServerInfo(quic_server_id))); 1353 EXPECT_EQ(quic_server_info1, *(impl_.GetQuicServerInfo(quic_server_id)));
1320 1354
1321 impl_.Clear(); 1355 impl_.Clear();
1322 EXPECT_EQ(0u, impl_.quic_server_info_map().size()); 1356 EXPECT_EQ(0u, impl_.quic_server_info_map().size());
1323 EXPECT_EQ(nullptr, impl_.GetQuicServerInfo(quic_server_id)); 1357 EXPECT_EQ(nullptr, impl_.GetQuicServerInfo(quic_server_id));
1324 } 1358 }
1325 1359
1326 } // namespace 1360 } // namespace
1327 1361
1328 } // namespace net 1362 } // 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