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 params_.origins_to_force_quic_on.insert( |
625 HostPortPair::FromString("mail.example.org:443"); | 625 HostPortPair::FromString("mail.example.org:443")); |
626 | 626 |
627 MockQuicData mock_quic_data; | 627 MockQuicData mock_quic_data; |
628 mock_quic_data.AddWrite( | 628 mock_quic_data.AddWrite( |
629 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, | 629 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, |
630 GetRequestHeaders("GET", "https", "/"))); | 630 GetRequestHeaders("GET", "https", "/"))); |
631 mock_quic_data.AddRead(ConstructResponseHeadersPacket( | 631 mock_quic_data.AddRead(ConstructResponseHeadersPacket( |
632 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); | 632 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); |
633 mock_quic_data.AddRead( | 633 mock_quic_data.AddRead( |
634 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!")); | 634 ConstructDataPacket(2, kClientDataStreamId1, false, true, 0, "hello!")); |
635 mock_quic_data.AddWrite(ConstructAckPacket(2, 1)); | 635 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()); | 802 request_.url = GURL("https://" + origin.host()); |
803 AddQuicRemoteAlternativeServiceMapping( | 803 AddQuicRemoteAlternativeServiceMapping( |
804 MockCryptoClientStream::CONFIRM_HANDSHAKE, alternative); | 804 MockCryptoClientStream::CONFIRM_HANDSHAKE, alternative); |
805 AddHangingNonAlternateProtocolSocketData(); | 805 AddHangingNonAlternateProtocolSocketData(); |
806 CreateSession(); | 806 CreateSession(); |
807 | 807 |
808 SendRequestAndExpectQuicResponse("hello!"); | 808 SendRequestAndExpectQuicResponse("hello!"); |
809 } | 809 } |
810 | 810 |
811 TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) { | 811 TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) { |
812 params_.origin_to_force_quic_on = | 812 params_.origins_to_force_quic_on.insert( |
813 HostPortPair::FromString("mail.example.org:443"); | 813 HostPortPair::FromString("mail.example.org:443")); |
814 | 814 |
815 MockQuicData mock_quic_data1; | 815 MockQuicData mock_quic_data1; |
816 mock_quic_data1.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); | 816 mock_quic_data1.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); |
817 | 817 |
818 MockQuicData mock_quic_data2; | 818 MockQuicData mock_quic_data2; |
819 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); | 819 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); |
820 mock_quic_data2.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); | 820 mock_quic_data2.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); |
821 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); | 821 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); |
822 | 822 |
823 mock_quic_data1.AddSocketDataToFactory(&socket_factory_); | 823 mock_quic_data1.AddSocketDataToFactory(&socket_factory_); |
(...skipping 10 matching lines...) Expand all Loading... |
834 TestCompletionCallback callback; | 834 TestCompletionCallback callback; |
835 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); | 835 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); |
836 EXPECT_EQ(ERR_IO_PENDING, rv); | 836 EXPECT_EQ(ERR_IO_PENDING, rv); |
837 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult()); | 837 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult()); |
838 EXPECT_EQ(1 + i, test_network_quality_estimator_->watcher_count()); | 838 EXPECT_EQ(1 + i, test_network_quality_estimator_->watcher_count()); |
839 } | 839 } |
840 } | 840 } |
841 | 841 |
842 TEST_P(QuicNetworkTransactionTest, DoNotForceQuicForHttps) { | 842 TEST_P(QuicNetworkTransactionTest, DoNotForceQuicForHttps) { |
843 // Attempt to "force" quic on 443, which will not be honored. | 843 // Attempt to "force" quic on 443, which will not be honored. |
844 params_.origin_to_force_quic_on = | 844 params_.origins_to_force_quic_on.insert( |
845 HostPortPair::FromString("www.google.com:443"); | 845 HostPortPair::FromString("www.google.com:443")); |
846 | 846 |
847 MockRead http_reads[] = { | 847 MockRead http_reads[] = { |
848 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), | 848 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), |
849 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | 849 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
850 MockRead(ASYNC, OK)}; | 850 MockRead(ASYNC, OK)}; |
851 | 851 |
852 StaticSocketDataProvider data(http_reads, arraysize(http_reads), nullptr, 0); | 852 StaticSocketDataProvider data(http_reads, arraysize(http_reads), nullptr, 0); |
853 socket_factory_.AddSocketDataProvider(&data); | 853 socket_factory_.AddSocketDataProvider(&data); |
854 SSLSocketDataProvider ssl(ASYNC, OK); | 854 SSLSocketDataProvider ssl(ASYNC, OK); |
855 socket_factory_.AddSSLSocketDataProvider(&ssl); | 855 socket_factory_.AddSSLSocketDataProvider(&ssl); |
(...skipping 1373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2229 | 2229 |
2230 request_.url = GURL("https://www.example.org:443"); | 2230 request_.url = GURL("https://www.example.org:443"); |
2231 AddHangingNonAlternateProtocolSocketData(); | 2231 AddHangingNonAlternateProtocolSocketData(); |
2232 CreateSession(); | 2232 CreateSession(); |
2233 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE); | 2233 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE); |
2234 SendRequestAndExpectQuicResponse("hello!"); | 2234 SendRequestAndExpectQuicResponse("hello!"); |
2235 EXPECT_TRUE(rtt_observer_.rtt_notification_received()); | 2235 EXPECT_TRUE(rtt_observer_.rtt_notification_received()); |
2236 } | 2236 } |
2237 | 2237 |
2238 TEST_P(QuicNetworkTransactionTest, QuicUpload) { | 2238 TEST_P(QuicNetworkTransactionTest, QuicUpload) { |
2239 params_.origin_to_force_quic_on = | 2239 params_.origins_to_force_quic_on.insert( |
2240 HostPortPair::FromString("mail.example.org:443"); | 2240 HostPortPair::FromString("mail.example.org:443")); |
2241 | 2241 |
2242 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 2242 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
2243 MockWrite writes[] = {MockWrite(SYNCHRONOUS, ERR_FAILED, 1)}; | 2243 MockWrite writes[] = {MockWrite(SYNCHRONOUS, ERR_FAILED, 1)}; |
2244 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 2244 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
2245 arraysize(writes)); | 2245 arraysize(writes)); |
2246 socket_factory_.AddSocketDataProvider(&socket_data); | 2246 socket_factory_.AddSocketDataProvider(&socket_data); |
2247 | 2247 |
2248 // The non-alternate protocol job needs to hang in order to guarantee that | 2248 // The non-alternate protocol job needs to hang in order to guarantee that |
2249 // the alternate-protocol job will "win". | 2249 // the alternate-protocol job will "win". |
2250 AddHangingNonAlternateProtocolSocketData(); | 2250 AddHangingNonAlternateProtocolSocketData(); |
(...skipping 10 matching lines...) Expand all Loading... |
2261 scoped_ptr<HttpNetworkTransaction> trans( | 2261 scoped_ptr<HttpNetworkTransaction> trans( |
2262 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); | 2262 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); |
2263 TestCompletionCallback callback; | 2263 TestCompletionCallback callback; |
2264 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); | 2264 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); |
2265 EXPECT_EQ(ERR_IO_PENDING, rv); | 2265 EXPECT_EQ(ERR_IO_PENDING, rv); |
2266 EXPECT_NE(OK, callback.WaitForResult()); | 2266 EXPECT_NE(OK, callback.WaitForResult()); |
2267 } | 2267 } |
2268 | 2268 |
2269 } // namespace test | 2269 } // namespace test |
2270 } // namespace net | 2270 } // namespace net |
OLD | NEW |