OLD | NEW |
---|---|
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 603 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
614 CheckResponseData(trans, expected); | 614 CheckResponseData(trans, expected); |
615 EXPECT_EQ(used_proxy, proxy_headers_handler.was_called()); | 615 EXPECT_EQ(used_proxy, proxy_headers_handler.was_called()); |
616 } | 616 } |
617 }; | 617 }; |
618 | 618 |
619 INSTANTIATE_TEST_CASE_P(Version, | 619 INSTANTIATE_TEST_CASE_P(Version, |
620 QuicNetworkTransactionTest, | 620 QuicNetworkTransactionTest, |
621 ::testing::ValuesIn(QuicSupportedVersions())); | 621 ::testing::ValuesIn(QuicSupportedVersions())); |
622 | 622 |
623 TEST_P(QuicNetworkTransactionTest, ForceQuic) { | 623 TEST_P(QuicNetworkTransactionTest, ForceQuic) { |
624 params_.origin_to_force_quic_on = | 624 for (const char* host : {"mail.example.org:443"}) { |
625 HostPortPair::FromString("mail.example.org:443"); | 625 params_.origins_to_force_quic_on.insert(HostPortPair::FromString(host)); |
Ryan Hamilton
2016/03/20 22:46:53
Ditto, no need for loops here and below.
ramant (doing other things)
2016/03/21 17:23:48
Done.
| |
626 } | |
626 | 627 |
627 MockQuicData mock_quic_data; | 628 MockQuicData mock_quic_data; |
628 mock_quic_data.AddWrite( | 629 mock_quic_data.AddWrite( |
629 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, | 630 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, |
630 GetRequestHeaders("GET", "https", "/"))); | 631 GetRequestHeaders("GET", "https", "/"))); |
631 mock_quic_data.AddRead(ConstructResponseHeadersPacket( | 632 mock_quic_data.AddRead(ConstructResponseHeadersPacket( |
632 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); | 633 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); |
633 mock_quic_data.AddRead( | 634 mock_quic_data.AddRead( |
634 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!")); | 635 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!")); |
635 mock_quic_data.AddWrite(ConstructAckPacket(2, 1)); | 636 mock_quic_data.AddWrite(ConstructAckPacket(2, 1)); |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
802 request_.url = GURL("https://" + origin.host()); | 803 request_.url = GURL("https://" + origin.host()); |
803 AddQuicRemoteAlternativeServiceMapping( | 804 AddQuicRemoteAlternativeServiceMapping( |
804 MockCryptoClientStream::CONFIRM_HANDSHAKE, alternative); | 805 MockCryptoClientStream::CONFIRM_HANDSHAKE, alternative); |
805 AddHangingNonAlternateProtocolSocketData(); | 806 AddHangingNonAlternateProtocolSocketData(); |
806 CreateSession(); | 807 CreateSession(); |
807 | 808 |
808 SendRequestAndExpectQuicResponse("hello!"); | 809 SendRequestAndExpectQuicResponse("hello!"); |
809 } | 810 } |
810 | 811 |
811 TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) { | 812 TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) { |
812 params_.origin_to_force_quic_on = | 813 for (const char* host : {"mail.example.org:443"}) { |
813 HostPortPair::FromString("mail.example.org:443"); | 814 params_.origins_to_force_quic_on.insert(HostPortPair::FromString(host)); |
815 } | |
814 | 816 |
815 MockQuicData mock_quic_data1; | 817 MockQuicData mock_quic_data1; |
816 mock_quic_data1.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); | 818 mock_quic_data1.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); |
817 | 819 |
818 MockQuicData mock_quic_data2; | 820 MockQuicData mock_quic_data2; |
819 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); | 821 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); |
820 mock_quic_data2.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); | 822 mock_quic_data2.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); |
821 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); | 823 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); |
822 | 824 |
823 mock_quic_data1.AddSocketDataToFactory(&socket_factory_); | 825 mock_quic_data1.AddSocketDataToFactory(&socket_factory_); |
(...skipping 10 matching lines...) Expand all Loading... | |
834 TestCompletionCallback callback; | 836 TestCompletionCallback callback; |
835 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); | 837 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); |
836 EXPECT_EQ(ERR_IO_PENDING, rv); | 838 EXPECT_EQ(ERR_IO_PENDING, rv); |
837 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult()); | 839 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult()); |
838 EXPECT_EQ(1 + i, test_network_quality_estimator_->watcher_count()); | 840 EXPECT_EQ(1 + i, test_network_quality_estimator_->watcher_count()); |
839 } | 841 } |
840 } | 842 } |
841 | 843 |
842 TEST_P(QuicNetworkTransactionTest, DoNotForceQuicForHttps) { | 844 TEST_P(QuicNetworkTransactionTest, DoNotForceQuicForHttps) { |
843 // Attempt to "force" quic on 443, which will not be honored. | 845 // Attempt to "force" quic on 443, which will not be honored. |
844 params_.origin_to_force_quic_on = | 846 for (const char* host : {"www.google.com:443"}) { |
845 HostPortPair::FromString("www.google.com:443"); | 847 params_.origins_to_force_quic_on.insert(HostPortPair::FromString(host)); |
848 } | |
846 | 849 |
847 MockRead http_reads[] = { | 850 MockRead http_reads[] = { |
848 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), | 851 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), |
849 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | 852 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
850 MockRead(ASYNC, OK)}; | 853 MockRead(ASYNC, OK)}; |
851 | 854 |
852 StaticSocketDataProvider data(http_reads, arraysize(http_reads), nullptr, 0); | 855 StaticSocketDataProvider data(http_reads, arraysize(http_reads), nullptr, 0); |
853 socket_factory_.AddSocketDataProvider(&data); | 856 socket_factory_.AddSocketDataProvider(&data); |
854 SSLSocketDataProvider ssl(ASYNC, OK); | 857 SSLSocketDataProvider ssl(ASYNC, OK); |
855 socket_factory_.AddSSLSocketDataProvider(&ssl); | 858 socket_factory_.AddSSLSocketDataProvider(&ssl); |
(...skipping 1373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2229 | 2232 |
2230 request_.url = GURL("https://www.example.org:443"); | 2233 request_.url = GURL("https://www.example.org:443"); |
2231 AddHangingNonAlternateProtocolSocketData(); | 2234 AddHangingNonAlternateProtocolSocketData(); |
2232 CreateSession(); | 2235 CreateSession(); |
2233 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE); | 2236 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE); |
2234 SendRequestAndExpectQuicResponse("hello!"); | 2237 SendRequestAndExpectQuicResponse("hello!"); |
2235 EXPECT_TRUE(rtt_observer_.rtt_notification_received()); | 2238 EXPECT_TRUE(rtt_observer_.rtt_notification_received()); |
2236 } | 2239 } |
2237 | 2240 |
2238 TEST_P(QuicNetworkTransactionTest, QuicUpload) { | 2241 TEST_P(QuicNetworkTransactionTest, QuicUpload) { |
2239 params_.origin_to_force_quic_on = | 2242 for (const char* host : {"mail.example.org:443"}) { |
2240 HostPortPair::FromString("mail.example.org:443"); | 2243 params_.origins_to_force_quic_on.insert(HostPortPair::FromString(host)); |
2244 } | |
2241 | 2245 |
2242 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 2246 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
2243 MockWrite writes[] = {MockWrite(SYNCHRONOUS, ERR_FAILED, 1)}; | 2247 MockWrite writes[] = {MockWrite(SYNCHRONOUS, ERR_FAILED, 1)}; |
2244 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 2248 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
2245 arraysize(writes)); | 2249 arraysize(writes)); |
2246 socket_factory_.AddSocketDataProvider(&socket_data); | 2250 socket_factory_.AddSocketDataProvider(&socket_data); |
2247 | 2251 |
2248 // The non-alternate protocol job needs to hang in order to guarantee that | 2252 // The non-alternate protocol job needs to hang in order to guarantee that |
2249 // the alternate-protocol job will "win". | 2253 // the alternate-protocol job will "win". |
2250 AddHangingNonAlternateProtocolSocketData(); | 2254 AddHangingNonAlternateProtocolSocketData(); |
(...skipping 10 matching lines...) Expand all Loading... | |
2261 scoped_ptr<HttpNetworkTransaction> trans( | 2265 scoped_ptr<HttpNetworkTransaction> trans( |
2262 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); | 2266 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); |
2263 TestCompletionCallback callback; | 2267 TestCompletionCallback callback; |
2264 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); | 2268 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); |
2265 EXPECT_EQ(ERR_IO_PENDING, rv); | 2269 EXPECT_EQ(ERR_IO_PENDING, rv); |
2266 EXPECT_NE(OK, callback.WaitForResult()); | 2270 EXPECT_NE(OK, callback.WaitForResult()); |
2267 } | 2271 } |
2268 | 2272 |
2269 } // namespace test | 2273 } // namespace test |
2270 } // namespace net | 2274 } // namespace net |
OLD | NEW |