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

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

Issue 1683313002: Add a QUIC test for using an Alt-Svc with a "remote" host. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cleanup Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | 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 <vector> 5 #include <vector>
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 void AddQuicAlternateProtocolMapping( 521 void AddQuicAlternateProtocolMapping(
522 MockCryptoClientStream::HandshakeMode handshake_mode) { 522 MockCryptoClientStream::HandshakeMode handshake_mode) {
523 crypto_client_stream_factory_.set_handshake_mode(handshake_mode); 523 crypto_client_stream_factory_.set_handshake_mode(handshake_mode);
524 HostPortPair host_port_pair = HostPortPair::FromURL(request_.url); 524 HostPortPair host_port_pair = HostPortPair::FromURL(request_.url);
525 AlternativeService alternative_service(QUIC, host_port_pair.host(), 443); 525 AlternativeService alternative_service(QUIC, host_port_pair.host(), 443);
526 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 526 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
527 http_server_properties_.SetAlternativeService( 527 http_server_properties_.SetAlternativeService(
528 host_port_pair, alternative_service, 1.0, expiration); 528 host_port_pair, alternative_service, 1.0, expiration);
529 } 529 }
530 530
531 void AddQuicRemoteAlternativeServiceMapping(
532 MockCryptoClientStream::HandshakeMode handshake_mode,
533 const HostPortPair& alternative) {
534 crypto_client_stream_factory_.set_handshake_mode(handshake_mode);
535 HostPortPair host_port_pair = HostPortPair::FromURL(request_.url);
536 AlternativeService alternative_service(QUIC, alternative.host(),
537 alternative.port());
538 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
539 http_server_properties_.SetAlternativeService(
540 host_port_pair, alternative_service, 1.0, expiration);
541 }
542
531 void ExpectBrokenAlternateProtocolMapping() { 543 void ExpectBrokenAlternateProtocolMapping() {
532 const HostPortPair origin = HostPortPair::FromURL(request_.url); 544 const HostPortPair origin = HostPortPair::FromURL(request_.url);
533 const AlternativeServiceVector alternative_service_vector = 545 const AlternativeServiceVector alternative_service_vector =
534 http_server_properties_.GetAlternativeServices(origin); 546 http_server_properties_.GetAlternativeServices(origin);
535 EXPECT_EQ(1u, alternative_service_vector.size()); 547 EXPECT_EQ(1u, alternative_service_vector.size());
536 EXPECT_TRUE(http_server_properties_.IsAlternativeServiceBroken( 548 EXPECT_TRUE(http_server_properties_.IsAlternativeServiceBroken(
537 alternative_service_vector[0])); 549 alternative_service_vector[0]));
538 } 550 }
539 551
540 void ExpectQuicAlternateProtocolMapping() { 552 void ExpectQuicAlternateProtocolMapping() {
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
736 verify_details2.cert_verify_result.verified_cert = cert; 748 verify_details2.cert_verify_result.verified_cert = cert;
737 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2); 749 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2);
738 750
739 request_.url = GURL("http://" + origin_host); 751 request_.url = GURL("http://" + origin_host);
740 AddHangingNonAlternateProtocolSocketData(); 752 AddHangingNonAlternateProtocolSocketData();
741 CreateSessionWithNextProtos(); 753 CreateSessionWithNextProtos();
742 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE); 754 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE);
743 SendRequestAndExpectQuicResponseFromProxyOnPort("hello!", 70); 755 SendRequestAndExpectQuicResponseFromProxyOnPort("hello!", 70);
744 } 756 }
745 757
758 TEST_P(QuicNetworkTransactionTest, AlternativeServicesDifferentHost) {
759 params_.enable_alternative_service_with_different_host = true;
760 HostPortPair origin("www.example.org", 443);
761 HostPortPair alternative("mail.example.org", 443);
762
763 base::FilePath certs_dir = GetTestCertsDirectory();
764 scoped_refptr<X509Certificate> cert(
765 ImportCertFromFile(GetTestCertsDirectory(), "wildcard.pem"));
766 ASSERT_TRUE(cert.get());
767 // TODO(rch): the connection should be "to" the origin, so if the cert is
768 // valid for the origin but not the alternative, that should work too.
769 bool common_name_fallback_used;
770 EXPECT_TRUE(cert->VerifyNameMatch(origin.host(), &common_name_fallback_used));
771 EXPECT_TRUE(
772 cert->VerifyNameMatch(alternative.host(), &common_name_fallback_used));
773 ProofVerifyDetailsChromium verify_details;
774 verify_details.cert_verify_result.verified_cert = cert;
775 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
776
777 maker_.set_hostname(origin.host());
778 MockQuicData mock_quic_data;
779 mock_quic_data.AddWrite(
780 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true,
781 GetRequestHeaders("GET", "https", "/")));
782 mock_quic_data.AddRead(ConstructResponseHeadersPacket(
783 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
784 mock_quic_data.AddRead(
785 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!"));
786 mock_quic_data.AddWrite(ConstructAckPacket(2, 1));
787 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read
788 mock_quic_data.AddRead(ASYNC, 0);
789 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
790
791 request_.url = GURL("https://" + origin.host());
792 AddQuicRemoteAlternativeServiceMapping(
793 MockCryptoClientStream::CONFIRM_HANDSHAKE, alternative);
794 AddHangingNonAlternateProtocolSocketData();
795 CreateSessionWithNextProtos();
796
797 SendRequestAndExpectQuicResponse("hello!");
798 }
799
746 TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) { 800 TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) {
747 params_.origin_to_force_quic_on = 801 params_.origin_to_force_quic_on =
748 HostPortPair::FromString("mail.example.org:443"); 802 HostPortPair::FromString("mail.example.org:443");
749 803
750 MockQuicData mock_quic_data1; 804 MockQuicData mock_quic_data1;
751 mock_quic_data1.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); 805 mock_quic_data1.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED);
752 806
753 MockQuicData mock_quic_data2; 807 MockQuicData mock_quic_data2;
754 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); 808 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_);
755 mock_quic_data2.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); 809 mock_quic_data2.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED);
(...skipping 1525 matching lines...) Expand 10 before | Expand all | Expand 10 after
2281 scoped_ptr<HttpNetworkTransaction> trans( 2335 scoped_ptr<HttpNetworkTransaction> trans(
2282 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); 2336 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get()));
2283 TestCompletionCallback callback; 2337 TestCompletionCallback callback;
2284 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); 2338 int rv = trans->Start(&request_, callback.callback(), net_log_.bound());
2285 EXPECT_EQ(ERR_IO_PENDING, rv); 2339 EXPECT_EQ(ERR_IO_PENDING, rv);
2286 EXPECT_NE(OK, callback.WaitForResult()); 2340 EXPECT_NE(OK, callback.WaitForResult());
2287 } 2341 }
2288 2342
2289 } // namespace test 2343 } // namespace test
2290 } // namespace net 2344 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698