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/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
274 | 274 |
275 void ExpectBrokenAlternateProtocolMapping() { | 275 void ExpectBrokenAlternateProtocolMapping() { |
276 ASSERT_TRUE(session_->http_server_properties()->HasAlternateProtocol( | 276 ASSERT_TRUE(session_->http_server_properties()->HasAlternateProtocol( |
277 HostPortPair::FromURL(request_.url))); | 277 HostPortPair::FromURL(request_.url))); |
278 const PortAlternateProtocolPair alternate = | 278 const PortAlternateProtocolPair alternate = |
279 session_->http_server_properties()->GetAlternateProtocol( | 279 session_->http_server_properties()->GetAlternateProtocol( |
280 HostPortPair::FromURL(request_.url)); | 280 HostPortPair::FromURL(request_.url)); |
281 EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, alternate.protocol); | 281 EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, alternate.protocol); |
282 } | 282 } |
283 | 283 |
| 284 void ExpectQuicAlternateProtocolMapping() { |
| 285 ASSERT_TRUE(session_->http_server_properties()->HasAlternateProtocol( |
| 286 HostPortPair::FromURL(request_.url))); |
| 287 const PortAlternateProtocolPair alternate = |
| 288 session_->http_server_properties()->GetAlternateProtocol( |
| 289 HostPortPair::FromURL(request_.url)); |
| 290 EXPECT_EQ(QUIC, alternate.protocol); |
| 291 } |
| 292 |
284 void AddHangingNonAlternateProtocolSocketData() { | 293 void AddHangingNonAlternateProtocolSocketData() { |
285 MockConnect hanging_connect(SYNCHRONOUS, ERR_IO_PENDING); | 294 MockConnect hanging_connect(SYNCHRONOUS, ERR_IO_PENDING); |
286 hanging_data_.set_connect_data(hanging_connect); | 295 hanging_data_.set_connect_data(hanging_connect); |
287 socket_factory_.AddSocketDataProvider(&hanging_data_); | 296 socket_factory_.AddSocketDataProvider(&hanging_data_); |
288 } | 297 } |
289 | 298 |
290 QuicTestPacketMaker maker_; | 299 QuicTestPacketMaker maker_; |
291 scoped_refptr<HttpNetworkSession> session_; | 300 scoped_refptr<HttpNetworkSession> session_; |
292 MockClientSocketFactory socket_factory_; | 301 MockClientSocketFactory socket_factory_; |
293 MockCryptoClientStreamFactory crypto_client_stream_factory_; | 302 MockCryptoClientStreamFactory crypto_client_stream_factory_; |
(...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
782 NULL, 0); | 791 NULL, 0); |
783 socket_factory_.AddSocketDataProvider(&http_data); | 792 socket_factory_.AddSocketDataProvider(&http_data); |
784 | 793 |
785 CreateSession(); | 794 CreateSession(); |
786 | 795 |
787 AddQuicAlternateProtocolMapping(MockCryptoClientStream::COLD_START); | 796 AddQuicAlternateProtocolMapping(MockCryptoClientStream::COLD_START); |
788 SendRequestAndExpectHttpResponse("hello from http"); | 797 SendRequestAndExpectHttpResponse("hello from http"); |
789 ExpectBrokenAlternateProtocolMapping(); | 798 ExpectBrokenAlternateProtocolMapping(); |
790 } | 799 } |
791 | 800 |
| 801 TEST_P(QuicNetworkTransactionTest, NoBrokenAlternateProtocolIfTcpFails) { |
| 802 HttpStreamFactory::EnableNpnSpdy3(); // Enables QUIC too. |
| 803 |
| 804 // Alternate-protocol job |
| 805 MockRead quic_reads[] = { |
| 806 MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED), |
| 807 }; |
| 808 StaticSocketDataProvider quic_data(quic_reads, arraysize(quic_reads), |
| 809 NULL, 0); |
| 810 quic_data.set_connect_data(MockConnect(ASYNC, ERR_SOCKET_NOT_CONNECTED)); |
| 811 socket_factory_.AddSocketDataProvider(&quic_data); |
| 812 |
| 813 // Main job which will succeed even though the alternate job fails. |
| 814 MockRead http_reads[] = { |
| 815 MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED), |
| 816 }; |
| 817 |
| 818 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), |
| 819 NULL, 0); |
| 820 http_data.set_connect_data(MockConnect(ASYNC, ERR_SOCKET_NOT_CONNECTED)); |
| 821 socket_factory_.AddSocketDataProvider(&http_data); |
| 822 |
| 823 CreateSession(); |
| 824 |
| 825 AddQuicAlternateProtocolMapping(MockCryptoClientStream::COLD_START); |
| 826 scoped_ptr<HttpNetworkTransaction> trans( |
| 827 new HttpNetworkTransaction(DEFAULT_PRIORITY, session_.get())); |
| 828 TestCompletionCallback callback; |
| 829 int rv = trans->Start(&request_, callback.callback(), net_log_.bound()); |
| 830 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 831 EXPECT_EQ(ERR_SOCKET_NOT_CONNECTED, callback.WaitForResult()); |
| 832 ExpectQuicAlternateProtocolMapping(); |
| 833 } |
| 834 |
792 TEST_P(QuicNetworkTransactionTest, FailedZeroRttBrokenAlternateProtocol) { | 835 TEST_P(QuicNetworkTransactionTest, FailedZeroRttBrokenAlternateProtocol) { |
793 HttpStreamFactory::EnableNpnSpdy3(); // Enables QUIC too. | 836 HttpStreamFactory::EnableNpnSpdy3(); // Enables QUIC too. |
794 | 837 |
795 // Alternate-protocol job | 838 // Alternate-protocol job |
796 MockRead quic_reads[] = { | 839 MockRead quic_reads[] = { |
797 MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED), | 840 MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED), |
798 }; | 841 }; |
799 StaticSocketDataProvider quic_data(quic_reads, arraysize(quic_reads), | 842 StaticSocketDataProvider quic_data(quic_reads, arraysize(quic_reads), |
800 NULL, 0); | 843 NULL, 0); |
801 socket_factory_.AddSocketDataProvider(&quic_data); | 844 socket_factory_.AddSocketDataProvider(&quic_data); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
864 NULL, | 907 NULL, |
865 net_log_.bound()); | 908 net_log_.bound()); |
866 | 909 |
867 CreateSession(); | 910 CreateSession(); |
868 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT); | 911 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT); |
869 SendRequestAndExpectHttpResponse("hello world"); | 912 SendRequestAndExpectHttpResponse("hello world"); |
870 } | 913 } |
871 | 914 |
872 } // namespace test | 915 } // namespace test |
873 } // namespace net | 916 } // namespace net |
OLD | NEW |