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

Side by Side Diff: net/spdy/chromium/spdy_session_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
« no previous file with comments | « net/quic/chromium/quic_network_transaction_unittest.cc ('k') | 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 "net/spdy/chromium/spdy_session.h" 5 #include "net/spdy/chromium/spdy_session.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <memory> 8 #include <memory>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 5619 matching lines...) Expand 10 before | Expand all | Expand 10 after
5630 AddSocketData(altsvc_ir); 5630 AddSocketData(altsvc_ir);
5631 AddSSLSocketData(); 5631 AddSSLSocketData();
5632 5632
5633 CreateNetworkSession(); 5633 CreateNetworkSession();
5634 CreateSecureSpdySession(); 5634 CreateSecureSpdySession();
5635 5635
5636 base::RunLoop().RunUntilIdle(); 5636 base::RunLoop().RunUntilIdle();
5637 5637
5638 const url::SchemeHostPort session_origin("https", test_url_.host(), 5638 const url::SchemeHostPort session_origin("https", test_url_.host(),
5639 test_url_.EffectiveIntPort()); 5639 test_url_.EffectiveIntPort());
5640 AlternativeServiceVector altsvc_vector = 5640 AlternativeServiceInfoVector altsvc_info_vector =
5641 spdy_session_pool_->http_server_properties()->GetAlternativeServices( 5641 spdy_session_pool_->http_server_properties()->GetAlternativeServiceInfos(
5642 session_origin); 5642 session_origin);
5643 ASSERT_TRUE(altsvc_vector.empty()); 5643 ASSERT_TRUE(altsvc_info_vector.empty());
5644 5644
5645 altsvc_vector = 5645 altsvc_info_vector =
5646 spdy_session_pool_->http_server_properties()->GetAlternativeServices( 5646 spdy_session_pool_->http_server_properties()->GetAlternativeServiceInfos(
5647 url::SchemeHostPort(GURL(origin))); 5647 url::SchemeHostPort(GURL(origin)));
5648 ASSERT_EQ(1u, altsvc_vector.size()); 5648 ASSERT_EQ(1u, altsvc_info_vector.size());
5649 EXPECT_EQ(kProtoQUIC, altsvc_vector[0].protocol); 5649 AlternativeService alternative_service(kProtoQUIC, "alternative.example.org",
5650 EXPECT_EQ("alternative.example.org", altsvc_vector[0].host); 5650 443u);
5651 EXPECT_EQ(443u, altsvc_vector[0].port); 5651 EXPECT_EQ(alternative_service, altsvc_info_vector[0].alternative_service);
5652 } 5652 }
5653 5653
5654 TEST_F(AltSvcFrameTest, DoNotProcessAltSvcFrameOnInsecureSession) { 5654 TEST_F(AltSvcFrameTest, DoNotProcessAltSvcFrameOnInsecureSession) {
5655 const char origin[] = "https://mail.example.org"; 5655 const char origin[] = "https://mail.example.org";
5656 SpdyAltSvcIR altsvc_ir(/* stream_id = */ 0); 5656 SpdyAltSvcIR altsvc_ir(/* stream_id = */ 0);
5657 altsvc_ir.add_altsvc(alternative_service_); 5657 altsvc_ir.add_altsvc(alternative_service_);
5658 altsvc_ir.set_origin(origin); 5658 altsvc_ir.set_origin(origin);
5659 AddSocketData(altsvc_ir); 5659 AddSocketData(altsvc_ir);
5660 AddSSLSocketData(); 5660 AddSSLSocketData();
5661 5661
5662 CreateNetworkSession(); 5662 CreateNetworkSession();
5663 CreateInsecureSpdySession(); 5663 CreateInsecureSpdySession();
5664 5664
5665 base::RunLoop().RunUntilIdle(); 5665 base::RunLoop().RunUntilIdle();
5666 5666
5667 const url::SchemeHostPort session_origin("https", test_url_.host(), 5667 const url::SchemeHostPort session_origin("https", test_url_.host(),
5668 test_url_.EffectiveIntPort()); 5668 test_url_.EffectiveIntPort());
5669 AlternativeServiceVector altsvc_vector = 5669 ASSERT_TRUE(spdy_session_pool_->http_server_properties()
5670 spdy_session_pool_->http_server_properties()->GetAlternativeServices( 5670 ->GetAlternativeServiceInfos(session_origin)
5671 session_origin); 5671 .empty());
5672 ASSERT_TRUE(altsvc_vector.empty());
5673 5672
5674 altsvc_vector = 5673 ASSERT_TRUE(
5675 spdy_session_pool_->http_server_properties()->GetAlternativeServices( 5674 spdy_session_pool_->http_server_properties()
5676 url::SchemeHostPort(GURL(origin))); 5675 ->GetAlternativeServiceInfos(url::SchemeHostPort(GURL(origin)))
5677 ASSERT_TRUE(altsvc_vector.empty()); 5676 .empty());
5678 } 5677 }
5679 5678
5680 TEST_F(AltSvcFrameTest, DoNotProcessAltSvcFrameForOriginNotCoveredByCert) { 5679 TEST_F(AltSvcFrameTest, DoNotProcessAltSvcFrameForOriginNotCoveredByCert) {
5681 const char origin[] = "https://invalid.example.org"; 5680 const char origin[] = "https://invalid.example.org";
5682 SpdyAltSvcIR altsvc_ir(/* stream_id = */ 0); 5681 SpdyAltSvcIR altsvc_ir(/* stream_id = */ 0);
5683 altsvc_ir.add_altsvc(alternative_service_); 5682 altsvc_ir.add_altsvc(alternative_service_);
5684 altsvc_ir.set_origin(origin); 5683 altsvc_ir.set_origin(origin);
5685 AddSocketData(altsvc_ir); 5684 AddSocketData(altsvc_ir);
5686 AddSSLSocketData(); 5685 AddSSLSocketData();
5687 5686
5688 CreateNetworkSession(); 5687 CreateNetworkSession();
5689 CreateSecureSpdySession(); 5688 CreateSecureSpdySession();
5690 5689
5691 base::RunLoop().RunUntilIdle(); 5690 base::RunLoop().RunUntilIdle();
5692 5691
5693 const url::SchemeHostPort session_origin("https", test_url_.host(), 5692 const url::SchemeHostPort session_origin("https", test_url_.host(),
5694 test_url_.EffectiveIntPort()); 5693 test_url_.EffectiveIntPort());
5695 AlternativeServiceVector altsvc_vector = 5694 ASSERT_TRUE(spdy_session_pool_->http_server_properties()
5696 spdy_session_pool_->http_server_properties()->GetAlternativeServices( 5695 ->GetAlternativeServiceInfos(session_origin)
5697 session_origin); 5696 .empty());
5698 ASSERT_TRUE(altsvc_vector.empty());
5699 5697
5700 altsvc_vector = 5698 ASSERT_TRUE(
5701 spdy_session_pool_->http_server_properties()->GetAlternativeServices( 5699 spdy_session_pool_->http_server_properties()
5702 url::SchemeHostPort(GURL(origin))); 5700 ->GetAlternativeServiceInfos(url::SchemeHostPort(GURL(origin)))
5703 ASSERT_TRUE(altsvc_vector.empty()); 5701 .empty());
5704 } 5702 }
5705 5703
5706 // An ALTSVC frame on stream 0 with empty origin MUST be ignored. 5704 // An ALTSVC frame on stream 0 with empty origin MUST be ignored.
5707 // (RFC 7838 Section 4) 5705 // (RFC 7838 Section 4)
5708 TEST_F(AltSvcFrameTest, DoNotProcessAltSvcFrameWithEmptyOriginOnStreamZero) { 5706 TEST_F(AltSvcFrameTest, DoNotProcessAltSvcFrameWithEmptyOriginOnStreamZero) {
5709 SpdyAltSvcIR altsvc_ir(/* stream_id = */ 0); 5707 SpdyAltSvcIR altsvc_ir(/* stream_id = */ 0);
5710 altsvc_ir.add_altsvc(alternative_service_); 5708 altsvc_ir.add_altsvc(alternative_service_);
5711 AddSocketData(altsvc_ir); 5709 AddSocketData(altsvc_ir);
5712 AddSSLSocketData(); 5710 AddSSLSocketData();
5713 5711
5714 CreateNetworkSession(); 5712 CreateNetworkSession();
5715 CreateSecureSpdySession(); 5713 CreateSecureSpdySession();
5716 5714
5717 base::RunLoop().RunUntilIdle(); 5715 base::RunLoop().RunUntilIdle();
5718 5716
5719 const url::SchemeHostPort session_origin("https", test_url_.host(), 5717 const url::SchemeHostPort session_origin("https", test_url_.host(),
5720 test_url_.EffectiveIntPort()); 5718 test_url_.EffectiveIntPort());
5721 AlternativeServiceVector altsvc_vector = 5719 ASSERT_TRUE(spdy_session_pool_->http_server_properties()
5722 spdy_session_pool_->http_server_properties()->GetAlternativeServices( 5720 ->GetAlternativeServiceInfos(session_origin)
5723 session_origin); 5721 .empty());
5724 ASSERT_TRUE(altsvc_vector.empty());
5725 } 5722 }
5726 5723
5727 // An ALTSVC frame on a stream other than stream 0 with non-empty origin MUST be 5724 // An ALTSVC frame on a stream other than stream 0 with non-empty origin MUST be
5728 // ignored. (RFC 7838 Section 4) 5725 // ignored. (RFC 7838 Section 4)
5729 TEST_F(AltSvcFrameTest, 5726 TEST_F(AltSvcFrameTest,
5730 DoNotProcessAltSvcFrameWithNonEmptyOriginOnNonZeroStream) { 5727 DoNotProcessAltSvcFrameWithNonEmptyOriginOnNonZeroStream) {
5731 SpdyAltSvcIR altsvc_ir(/* stream_id = */ 1); 5728 SpdyAltSvcIR altsvc_ir(/* stream_id = */ 1);
5732 altsvc_ir.add_altsvc(alternative_service_); 5729 altsvc_ir.add_altsvc(alternative_service_);
5733 altsvc_ir.set_origin("https://mail.example.org"); 5730 altsvc_ir.set_origin("https://mail.example.org");
5734 AddSocketData(altsvc_ir); 5731 AddSocketData(altsvc_ir);
5735 AddSSLSocketData(); 5732 AddSSLSocketData();
5736 5733
5737 CreateNetworkSession(); 5734 CreateNetworkSession();
5738 CreateSecureSpdySession(); 5735 CreateSecureSpdySession();
5739 5736
5740 base::RunLoop().RunUntilIdle(); 5737 base::RunLoop().RunUntilIdle();
5741 5738
5742 const url::SchemeHostPort session_origin("https", test_url_.host(), 5739 const url::SchemeHostPort session_origin("https", test_url_.host(),
5743 test_url_.EffectiveIntPort()); 5740 test_url_.EffectiveIntPort());
5744 AlternativeServiceVector altsvc_vector = 5741 ASSERT_TRUE(spdy_session_pool_->http_server_properties()
5745 spdy_session_pool_->http_server_properties()->GetAlternativeServices( 5742 ->GetAlternativeServiceInfos(session_origin)
5746 session_origin); 5743 .empty());
5747 ASSERT_TRUE(altsvc_vector.empty());
5748 } 5744 }
5749 5745
5750 TEST_F(AltSvcFrameTest, ProcessAltSvcFrameOnActiveStream) { 5746 TEST_F(AltSvcFrameTest, ProcessAltSvcFrameOnActiveStream) {
5751 SpdyAltSvcIR altsvc_ir(/* stream_id = */ 1); 5747 SpdyAltSvcIR altsvc_ir(/* stream_id = */ 1);
5752 altsvc_ir.add_altsvc(alternative_service_); 5748 altsvc_ir.add_altsvc(alternative_service_);
5753 5749
5754 SpdySerializedFrame altsvc_frame(spdy_util_.SerializeFrame(altsvc_ir)); 5750 SpdySerializedFrame altsvc_frame(spdy_util_.SerializeFrame(altsvc_ir));
5755 SpdySerializedFrame rst( 5751 SpdySerializedFrame rst(
5756 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_REFUSED_STREAM)); 5752 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_REFUSED_STREAM));
5757 MockRead reads[] = { 5753 MockRead reads[] = {
(...skipping 22 matching lines...) Expand all
5780 spdy_stream1->SetDelegate(&delegate1); 5776 spdy_stream1->SetDelegate(&delegate1);
5781 5777
5782 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(request_origin)); 5778 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(request_origin));
5783 5779
5784 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 5780 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
5785 5781
5786 base::RunLoop().RunUntilIdle(); 5782 base::RunLoop().RunUntilIdle();
5787 5783
5788 const url::SchemeHostPort session_origin("https", test_url_.host(), 5784 const url::SchemeHostPort session_origin("https", test_url_.host(),
5789 test_url_.EffectiveIntPort()); 5785 test_url_.EffectiveIntPort());
5790 AlternativeServiceVector altsvc_vector = 5786 ASSERT_TRUE(spdy_session_pool_->http_server_properties()
5791 spdy_session_pool_->http_server_properties()->GetAlternativeServices( 5787 ->GetAlternativeServiceInfos(session_origin)
5792 session_origin); 5788 .empty());
5793 ASSERT_TRUE(altsvc_vector.empty());
5794 5789
5795 altsvc_vector = 5790 AlternativeServiceInfoVector altsvc_info_vector =
5796 spdy_session_pool_->http_server_properties()->GetAlternativeServices( 5791 spdy_session_pool_->http_server_properties()->GetAlternativeServiceInfos(
5797 url::SchemeHostPort(GURL(request_origin))); 5792 url::SchemeHostPort(GURL(request_origin)));
5798 ASSERT_EQ(1u, altsvc_vector.size()); 5793 ASSERT_EQ(1u, altsvc_info_vector.size());
5799 EXPECT_EQ(kProtoQUIC, altsvc_vector[0].protocol); 5794 EXPECT_EQ(kProtoQUIC, altsvc_info_vector[0].alternative_service.protocol);
5800 EXPECT_EQ("alternative.example.org", altsvc_vector[0].host); 5795 EXPECT_EQ("alternative.example.org",
5801 EXPECT_EQ(443u, altsvc_vector[0].port); 5796 altsvc_info_vector[0].alternative_service.host);
5797 EXPECT_EQ(443u, altsvc_info_vector[0].alternative_service.port);
5802 } 5798 }
5803 5799
5804 TEST_F(AltSvcFrameTest, DoNotProcessAltSvcFrameOnStreamWithInsecureOrigin) { 5800 TEST_F(AltSvcFrameTest, DoNotProcessAltSvcFrameOnStreamWithInsecureOrigin) {
5805 SpdyAltSvcIR altsvc_ir(/* stream_id = */ 1); 5801 SpdyAltSvcIR altsvc_ir(/* stream_id = */ 1);
5806 altsvc_ir.add_altsvc(alternative_service_); 5802 altsvc_ir.add_altsvc(alternative_service_);
5807 5803
5808 SpdySerializedFrame altsvc_frame(spdy_util_.SerializeFrame(altsvc_ir)); 5804 SpdySerializedFrame altsvc_frame(spdy_util_.SerializeFrame(altsvc_ir));
5809 SpdySerializedFrame rst( 5805 SpdySerializedFrame rst(
5810 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_REFUSED_STREAM)); 5806 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_REFUSED_STREAM));
5811 MockRead reads[] = { 5807 MockRead reads[] = {
(...skipping 22 matching lines...) Expand all
5834 spdy_stream1->SetDelegate(&delegate1); 5830 spdy_stream1->SetDelegate(&delegate1);
5835 5831
5836 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(request_origin)); 5832 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(request_origin));
5837 5833
5838 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 5834 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
5839 5835
5840 base::RunLoop().RunUntilIdle(); 5836 base::RunLoop().RunUntilIdle();
5841 5837
5842 const url::SchemeHostPort session_origin("https", test_url_.host(), 5838 const url::SchemeHostPort session_origin("https", test_url_.host(),
5843 test_url_.EffectiveIntPort()); 5839 test_url_.EffectiveIntPort());
5844 AlternativeServiceVector altsvc_vector = 5840 ASSERT_TRUE(spdy_session_pool_->http_server_properties()
5845 spdy_session_pool_->http_server_properties()->GetAlternativeServices( 5841 ->GetAlternativeServiceInfos(session_origin)
5846 session_origin); 5842 .empty());
5847 ASSERT_TRUE(altsvc_vector.empty());
5848 5843
5849 altsvc_vector = 5844 ASSERT_TRUE(spdy_session_pool_->http_server_properties()
5850 spdy_session_pool_->http_server_properties()->GetAlternativeServices( 5845 ->GetAlternativeServiceInfos(
5851 url::SchemeHostPort(GURL(request_origin))); 5846 url::SchemeHostPort(GURL(request_origin)))
5852 ASSERT_TRUE(altsvc_vector.empty()); 5847 .empty());
5853 } 5848 }
5854 5849
5855 TEST_F(AltSvcFrameTest, DoNotProcessAltSvcFrameOnNonExistentStream) { 5850 TEST_F(AltSvcFrameTest, DoNotProcessAltSvcFrameOnNonExistentStream) {
5856 SpdyAltSvcIR altsvc_ir(/* stream_id = */ 1); 5851 SpdyAltSvcIR altsvc_ir(/* stream_id = */ 1);
5857 altsvc_ir.add_altsvc(alternative_service_); 5852 altsvc_ir.add_altsvc(alternative_service_);
5858 AddSocketData(altsvc_ir); 5853 AddSocketData(altsvc_ir);
5859 AddSSLSocketData(); 5854 AddSSLSocketData();
5860 5855
5861 CreateNetworkSession(); 5856 CreateNetworkSession();
5862 CreateSecureSpdySession(); 5857 CreateSecureSpdySession();
5863 5858
5864 base::RunLoop().RunUntilIdle(); 5859 base::RunLoop().RunUntilIdle();
5865 5860
5866 const url::SchemeHostPort session_origin("https", test_url_.host(), 5861 const url::SchemeHostPort session_origin("https", test_url_.host(),
5867 test_url_.EffectiveIntPort()); 5862 test_url_.EffectiveIntPort());
5868 AlternativeServiceVector altsvc_vector = 5863 ASSERT_TRUE(spdy_session_pool_->http_server_properties()
5869 spdy_session_pool_->http_server_properties()->GetAlternativeServices( 5864 ->GetAlternativeServiceInfos(session_origin)
5870 session_origin); 5865 .empty());
5871 ASSERT_TRUE(altsvc_vector.empty());
5872 } 5866 }
5873 5867
5874 TEST(MapFramerErrorToProtocolError, MapsValues) { 5868 TEST(MapFramerErrorToProtocolError, MapsValues) {
5875 CHECK_EQ( 5869 CHECK_EQ(
5876 SPDY_ERROR_INVALID_CONTROL_FRAME, 5870 SPDY_ERROR_INVALID_CONTROL_FRAME,
5877 MapFramerErrorToProtocolError(SpdyFramer::SPDY_INVALID_CONTROL_FRAME)); 5871 MapFramerErrorToProtocolError(SpdyFramer::SPDY_INVALID_CONTROL_FRAME));
5878 CHECK_EQ( 5872 CHECK_EQ(
5879 SPDY_ERROR_INVALID_DATA_FRAME_FLAGS, 5873 SPDY_ERROR_INVALID_DATA_FRAME_FLAGS,
5880 MapFramerErrorToProtocolError(SpdyFramer::SPDY_INVALID_DATA_FRAME_FLAGS)); 5874 MapFramerErrorToProtocolError(SpdyFramer::SPDY_INVALID_DATA_FRAME_FLAGS));
5881 CHECK_EQ( 5875 CHECK_EQ(
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
6146 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(), 6140 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(),
6147 "spdy_pooling.pem"); 6141 "spdy_pooling.pem");
6148 ssl_info.is_issued_by_known_root = true; 6142 ssl_info.is_issued_by_known_root = true;
6149 ssl_info.public_key_hashes.push_back(test::GetTestHashValue(primary_pin)); 6143 ssl_info.public_key_hashes.push_back(test::GetTestHashValue(primary_pin));
6150 6144
6151 EXPECT_TRUE(SpdySession::CanPool( 6145 EXPECT_TRUE(SpdySession::CanPool(
6152 &tss, ssl_info, "www.example.org", "mail.example.org")); 6146 &tss, ssl_info, "www.example.org", "mail.example.org"));
6153 } 6147 }
6154 6148
6155 } // namespace net 6149 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/chromium/quic_network_transaction_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698