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

Side by Side Diff: net/quic/chromium/quic_network_transaction_unittest.cc

Issue 2886273002: Change GetAlternativeServies to return alternative service infos. (Closed)
Patch Set: address comments in ps #3 Created 3 years, 7 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
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 <memory> 5 #include <memory>
6 #include <ostream> 6 #include <ostream>
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after
618 url::SchemeHostPort server(request_.url); 618 url::SchemeHostPort server(request_.url);
619 AlternativeService alternative_service(kProtoQUIC, alternative.host(), 619 AlternativeService alternative_service(kProtoQUIC, alternative.host(),
620 alternative.port()); 620 alternative.port());
621 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 621 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
622 http_server_properties_.SetAlternativeService(server, alternative_service, 622 http_server_properties_.SetAlternativeService(server, alternative_service,
623 expiration); 623 expiration);
624 } 624 }
625 625
626 void ExpectBrokenAlternateProtocolMapping() { 626 void ExpectBrokenAlternateProtocolMapping() {
627 const url::SchemeHostPort server(request_.url); 627 const url::SchemeHostPort server(request_.url);
628 const AlternativeServiceVector alternative_service_vector = 628 const AlternativeServiceInfoVector alternative_service_info_vector =
629 http_server_properties_.GetAlternativeServices(server); 629 http_server_properties_.GetAlternativeServiceInfos(server);
630 EXPECT_EQ(1u, alternative_service_vector.size()); 630 EXPECT_EQ(1u, alternative_service_info_vector.size());
631 EXPECT_TRUE(http_server_properties_.IsAlternativeServiceBroken( 631 EXPECT_TRUE(http_server_properties_.IsAlternativeServiceBroken(
632 alternative_service_vector[0])); 632 alternative_service_info_vector[0].alternative_service));
633 } 633 }
634 634
635 void ExpectQuicAlternateProtocolMapping() { 635 void ExpectQuicAlternateProtocolMapping() {
636 const url::SchemeHostPort server(request_.url); 636 const url::SchemeHostPort server(request_.url);
637 const AlternativeServiceVector alternative_service_vector = 637 const AlternativeServiceInfoVector alternative_service_info_vector =
638 http_server_properties_.GetAlternativeServices(server); 638 http_server_properties_.GetAlternativeServiceInfos(server);
639 EXPECT_EQ(1u, alternative_service_vector.size()); 639 EXPECT_EQ(1u, alternative_service_info_vector.size());
640 EXPECT_EQ(kProtoQUIC, alternative_service_vector[0].protocol); 640 EXPECT_EQ(kProtoQUIC,
641 alternative_service_info_vector[0].alternative_service.protocol);
641 EXPECT_FALSE(http_server_properties_.IsAlternativeServiceBroken( 642 EXPECT_FALSE(http_server_properties_.IsAlternativeServiceBroken(
642 alternative_service_vector[0])); 643 alternative_service_info_vector[0].alternative_service));
643 } 644 }
644 645
645 void AddHangingNonAlternateProtocolSocketData() { 646 void AddHangingNonAlternateProtocolSocketData() {
646 std::unique_ptr<StaticSocketDataProvider> hanging_data; 647 std::unique_ptr<StaticSocketDataProvider> hanging_data;
647 hanging_data.reset(new StaticSocketDataProvider()); 648 hanging_data.reset(new StaticSocketDataProvider());
648 MockConnect hanging_connect(SYNCHRONOUS, ERR_IO_PENDING); 649 MockConnect hanging_connect(SYNCHRONOUS, ERR_IO_PENDING);
649 hanging_data->set_connect_data(hanging_connect); 650 hanging_data->set_connect_data(hanging_connect);
650 hanging_data_.push_back(std::move(hanging_data)); 651 hanging_data_.push_back(std::move(hanging_data));
651 socket_factory_.AddSocketDataProvider(hanging_data_.back().get()); 652 socket_factory_.AddSocketDataProvider(hanging_data_.back().get());
652 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); 653 socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
(...skipping 635 matching lines...) Expand 10 before | Expand all | Expand 10 after
1288 // Send https request, ignore alternative service advertising if response 1289 // Send https request, ignore alternative service advertising if response
1289 // header advertises alternative service for mail.example.org. 1290 // header advertises alternative service for mail.example.org.
1290 request_.url = GURL("https://mail.example.org:443"); 1291 request_.url = GURL("https://mail.example.org:443");
1291 SendRequestAndExpectHttpResponse("hello world"); 1292 SendRequestAndExpectHttpResponse("hello world");
1292 HttpServerProperties* http_server_properties = 1293 HttpServerProperties* http_server_properties =
1293 session_->http_server_properties(); 1294 session_->http_server_properties();
1294 url::SchemeHostPort http_server("http", "mail.example.org", 443); 1295 url::SchemeHostPort http_server("http", "mail.example.org", 443);
1295 url::SchemeHostPort https_server("https", "mail.example.org", 443); 1296 url::SchemeHostPort https_server("https", "mail.example.org", 443);
1296 // Check alternative service is set for the correct origin. 1297 // Check alternative service is set for the correct origin.
1297 EXPECT_EQ( 1298 EXPECT_EQ(
1298 2u, http_server_properties->GetAlternativeServices(https_server).size()); 1299 2u,
1300 http_server_properties->GetAlternativeServiceInfos(https_server).size());
1299 EXPECT_TRUE( 1301 EXPECT_TRUE(
1300 http_server_properties->GetAlternativeServices(http_server).empty()); 1302 http_server_properties->GetAlternativeServiceInfos(http_server).empty());
1301 } 1303 }
1302 1304
1303 TEST_P(QuicNetworkTransactionTest, DoNotGetAltSvcForDifferentOrigin) { 1305 TEST_P(QuicNetworkTransactionTest, DoNotGetAltSvcForDifferentOrigin) {
1304 MockRead http_reads[] = { 1306 MockRead http_reads[] = {
1305 MockRead("HTTP/1.1 200 OK\r\n"), 1307 MockRead("HTTP/1.1 200 OK\r\n"),
1306 MockRead("Alt-Svc: quic=\"foo.example.org:443\", quic=\":444\"\r\n\r\n"), 1308 MockRead("Alt-Svc: quic=\"foo.example.org:443\", quic=\":444\"\r\n\r\n"),
1307 MockRead("hello world"), 1309 MockRead("hello world"),
1308 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 1310 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
1309 MockRead(ASYNC, OK)}; 1311 MockRead(ASYNC, OK)};
1310 1312
1311 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, 1313 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr,
1312 0); 1314 0);
1313 1315
1314 socket_factory_.AddSocketDataProvider(&http_data); 1316 socket_factory_.AddSocketDataProvider(&http_data);
1315 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); 1317 socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
1316 socket_factory_.AddSocketDataProvider(&http_data); 1318 socket_factory_.AddSocketDataProvider(&http_data);
1317 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); 1319 socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
1318 1320
1319 CreateSession(); 1321 CreateSession();
1320 1322
1321 // Send https request and set alternative services if response header 1323 // Send https request and set alternative services if response header
1322 // advertises alternative service for mail.example.org. 1324 // advertises alternative service for mail.example.org.
1323 SendRequestAndExpectHttpResponse("hello world"); 1325 SendRequestAndExpectHttpResponse("hello world");
1324 HttpServerProperties* http_server_properties = 1326 HttpServerProperties* http_server_properties =
1325 session_->http_server_properties(); 1327 session_->http_server_properties();
1326 1328
1327 const url::SchemeHostPort https_server(request_.url); 1329 const url::SchemeHostPort https_server(request_.url);
1328 // Check alternative service is set. 1330 // Check alternative service is set.
1329 AlternativeServiceVector alternative_service_vector = 1331 EXPECT_EQ(
1330 http_server_properties->GetAlternativeServices(https_server); 1332 2u,
1331 EXPECT_EQ(2u, alternative_service_vector.size()); 1333 http_server_properties->GetAlternativeServiceInfos(https_server).size());
1332 1334
1333 // Send http request to the same origin but with diffrent scheme, should not 1335 // Send http request to the same origin but with diffrent scheme, should not
1334 // use QUIC. 1336 // use QUIC.
1335 request_.url = GURL("http://mail.example.org:443"); 1337 request_.url = GURL("http://mail.example.org:443");
1336 SendRequestAndExpectHttpResponse("hello world"); 1338 SendRequestAndExpectHttpResponse("hello world");
1337 } 1339 }
1338 1340
1339 TEST_P(QuicNetworkTransactionTest, UseAlternativeServiceAllSupportedVersion) { 1341 TEST_P(QuicNetworkTransactionTest, UseAlternativeServiceAllSupportedVersion) {
1340 std::string altsvc_header = 1342 std::string altsvc_header =
1341 base::StringPrintf("Alt-Svc: quic=\":443\"; v=\"%u\"\r\n\r\n", version_); 1343 base::StringPrintf("Alt-Svc: quic=\":443\"; v=\"%u\"\r\n\r\n", version_);
(...skipping 1533 matching lines...) Expand 10 before | Expand all | Expand 10 after
2875 0); 2877 0);
2876 socket_factory_.AddSocketDataProvider(&http_data); 2878 socket_factory_.AddSocketDataProvider(&http_data);
2877 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); 2879 socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
2878 2880
2879 AddHangingNonAlternateProtocolSocketData(); 2881 AddHangingNonAlternateProtocolSocketData();
2880 CreateSession(); 2882 CreateSession();
2881 2883
2882 SendRequestAndExpectHttpResponse("hello world"); 2884 SendRequestAndExpectHttpResponse("hello world");
2883 2885
2884 url::SchemeHostPort http_server("https", kDefaultServerHostName, 443); 2886 url::SchemeHostPort http_server("https", kDefaultServerHostName, 443);
2885 AlternativeServiceVector alternative_service_vector = 2887 AlternativeServiceInfoVector alternative_service_info_vector =
2886 http_server_properties_.GetAlternativeServices(http_server); 2888 http_server_properties_.GetAlternativeServiceInfos(http_server);
2887 ASSERT_EQ(1u, alternative_service_vector.size()); 2889 ASSERT_EQ(1u, alternative_service_info_vector.size());
2888 const AlternativeService alternative_service = alternative_service_vector[0]; 2890 const AlternativeService alternative_service =
2889 EXPECT_EQ(kProtoQUIC, alternative_service_vector[0].protocol); 2891 alternative_service_info_vector[0].alternative_service;
2890 EXPECT_EQ(kDefaultServerHostName, alternative_service_vector[0].host); 2892 EXPECT_EQ(kProtoQUIC, alternative_service.protocol);
2891 EXPECT_EQ(137, alternative_service_vector[0].port); 2893 EXPECT_EQ(kDefaultServerHostName, alternative_service.host);
2894 EXPECT_EQ(137, alternative_service.port);
2892 } 2895 }
2893 2896
2894 TEST_P(QuicNetworkTransactionTest, ConfirmAlternativeService) { 2897 TEST_P(QuicNetworkTransactionTest, ConfirmAlternativeService) {
2895 MockRead http_reads[] = { 2898 MockRead http_reads[] = {
2896 MockRead("HTTP/1.1 200 OK\r\n"), MockRead(kQuicAlternativeServiceHeader), 2899 MockRead("HTTP/1.1 200 OK\r\n"), MockRead(kQuicAlternativeServiceHeader),
2897 MockRead("hello world"), 2900 MockRead("hello world"),
2898 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 2901 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
2899 MockRead(ASYNC, OK)}; 2902 MockRead(ASYNC, OK)};
2900 2903
2901 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, 2904 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr,
(...skipping 1784 matching lines...) Expand 10 before | Expand all | Expand 10 after
4686 4689
4687 request_.url = GURL("https://mail.example.org/pushed.jpg"); 4690 request_.url = GURL("https://mail.example.org/pushed.jpg");
4688 ChunkedUploadDataStream upload_data(0); 4691 ChunkedUploadDataStream upload_data(0);
4689 upload_data.AppendData("1", 1, true); 4692 upload_data.AppendData("1", 1, true);
4690 request_.upload_data_stream = &upload_data; 4693 request_.upload_data_stream = &upload_data;
4691 SendRequestAndExpectQuicResponse("and hello!"); 4694 SendRequestAndExpectQuicResponse("and hello!");
4692 } 4695 }
4693 4696
4694 } // namespace test 4697 } // namespace test
4695 } // namespace net 4698 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_stream_factory_impl_job_controller_unittest.cc ('k') | net/spdy/chromium/spdy_session_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698