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 780 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
791 CreateSession(); | 791 CreateSession(); |
792 | 792 |
793 AddQuicAlternateProtocolMapping(MockCryptoClientStream::COLD_START); | 793 AddQuicAlternateProtocolMapping(MockCryptoClientStream::COLD_START); |
794 SendRequestAndExpectHttpResponse("hello from http"); | 794 SendRequestAndExpectHttpResponse("hello from http"); |
795 ExpectBrokenAlternateProtocolMapping(); | 795 ExpectBrokenAlternateProtocolMapping(); |
796 } | 796 } |
797 | 797 |
798 TEST_P(QuicNetworkTransactionTest, NoBrokenAlternateProtocolIfTcpFails) { | 798 TEST_P(QuicNetworkTransactionTest, NoBrokenAlternateProtocolIfTcpFails) { |
799 HttpStreamFactory::EnableNpnSpdy3(); // Enables QUIC too. | 799 HttpStreamFactory::EnableNpnSpdy3(); // Enables QUIC too. |
800 | 800 |
801 // Alternate-protocol job | 801 // Alternate-protocol job will fail when the session attempts to read. |
802 MockRead quic_reads[] = { | 802 MockRead quic_reads[] = { |
803 MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED), | 803 MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED), |
804 }; | 804 }; |
805 StaticSocketDataProvider quic_data(quic_reads, arraysize(quic_reads), | 805 StaticSocketDataProvider quic_data(quic_reads, arraysize(quic_reads), |
806 NULL, 0); | 806 NULL, 0); |
807 quic_data.set_connect_data(MockConnect(ASYNC, ERR_SOCKET_NOT_CONNECTED)); | |
808 socket_factory_.AddSocketDataProvider(&quic_data); | 807 socket_factory_.AddSocketDataProvider(&quic_data); |
809 | 808 |
810 // Main job which will succeed even though the alternate job fails. | 809 // Main job will also fail. |
811 MockRead http_reads[] = { | 810 MockRead http_reads[] = { |
812 MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED), | 811 MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED), |
813 }; | 812 }; |
814 | 813 |
815 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), | 814 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), |
816 NULL, 0); | 815 NULL, 0); |
817 http_data.set_connect_data(MockConnect(ASYNC, ERR_SOCKET_NOT_CONNECTED)); | 816 http_data.set_connect_data(MockConnect(ASYNC, ERR_SOCKET_NOT_CONNECTED)); |
818 socket_factory_.AddSocketDataProvider(&http_data); | 817 socket_factory_.AddSocketDataProvider(&http_data); |
819 | 818 |
820 CreateSession(); | 819 CreateSession(); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
859 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT); | 858 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT); |
860 | 859 |
861 SendRequestAndExpectHttpResponse("hello from http"); | 860 SendRequestAndExpectHttpResponse("hello from http"); |
862 | 861 |
863 ExpectBrokenAlternateProtocolMapping(); | 862 ExpectBrokenAlternateProtocolMapping(); |
864 | 863 |
865 EXPECT_TRUE(quic_data.at_read_eof()); | 864 EXPECT_TRUE(quic_data.at_read_eof()); |
866 EXPECT_TRUE(quic_data.at_write_eof()); | 865 EXPECT_TRUE(quic_data.at_write_eof()); |
867 } | 866 } |
868 | 867 |
869 TEST_P(QuicNetworkTransactionTest, NoBrokenAlternateProtocolOnConnectFailure) { | 868 TEST_P(QuicNetworkTransactionTest, BrokenAlternateProtocolOnConnectFailure) { |
870 HttpStreamFactory::EnableNpnSpdy3(); // Enables QUIC too. | 869 HttpStreamFactory::EnableNpnSpdy3(); // Enables QUIC too. |
871 | 870 |
872 // Alternate-protocol job will fail before creating a QUIC session. | 871 // Alternate-protocol job will fail before creating a QUIC session. |
873 StaticSocketDataProvider quic_data(NULL, 0, NULL, 0); | 872 StaticSocketDataProvider quic_data(NULL, 0, NULL, 0); |
874 quic_data.set_connect_data(MockConnect(SYNCHRONOUS, | 873 quic_data.set_connect_data(MockConnect(SYNCHRONOUS, |
875 ERR_INTERNET_DISCONNECTED)); | 874 ERR_INTERNET_DISCONNECTED)); |
876 socket_factory_.AddSocketDataProvider(&quic_data); | 875 socket_factory_.AddSocketDataProvider(&quic_data); |
877 | 876 |
878 // Main job which will succeed even though the alternate job fails. | 877 // Main job which will succeed even though the alternate job fails. |
879 MockRead http_reads[] = { | 878 MockRead http_reads[] = { |
880 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 879 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
881 MockRead("hello from http"), | 880 MockRead("hello from http"), |
882 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | 881 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
883 MockRead(ASYNC, OK) | 882 MockRead(ASYNC, OK) |
884 }; | 883 }; |
885 | 884 |
886 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), | 885 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), |
887 NULL, 0); | 886 NULL, 0); |
888 socket_factory_.AddSocketDataProvider(&http_data); | 887 socket_factory_.AddSocketDataProvider(&http_data); |
889 | 888 |
890 CreateSession(); | 889 CreateSession(); |
891 AddQuicAlternateProtocolMapping(MockCryptoClientStream::COLD_START); | 890 AddQuicAlternateProtocolMapping(MockCryptoClientStream::COLD_START); |
892 SendRequestAndExpectHttpResponse("hello from http"); | 891 SendRequestAndExpectHttpResponse("hello from http"); |
893 ExpectQuicAlternateProtocolMapping(); | 892 |
| 893 ExpectBrokenAlternateProtocolMapping(); |
894 } | 894 } |
895 | 895 |
896 TEST_P(QuicNetworkTransactionTest, ConnectionCloseDuringConnect) { | 896 TEST_P(QuicNetworkTransactionTest, ConnectionCloseDuringConnect) { |
897 HttpStreamFactory::EnableNpnSpdy3(); // Enables QUIC too. | 897 HttpStreamFactory::EnableNpnSpdy3(); // Enables QUIC too. |
898 | 898 |
899 MockQuicData mock_quic_data; | 899 MockQuicData mock_quic_data; |
900 mock_quic_data.AddRead(ConstructConnectionClosePacket(1)); | 900 mock_quic_data.AddRead(ConstructConnectionClosePacket(1)); |
901 mock_quic_data.AddWrite( | 901 mock_quic_data.AddWrite( |
902 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, | 902 ConstructRequestHeadersPacket(1, kClientDataStreamId1, true, true, |
903 GetRequestHeaders("GET", "http", "/"))); | 903 GetRequestHeaders("GET", "http", "/"))); |
(...skipping 27 matching lines...) Expand all Loading... |
931 NULL, | 931 NULL, |
932 net_log_.bound()); | 932 net_log_.bound()); |
933 | 933 |
934 CreateSession(); | 934 CreateSession(); |
935 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT); | 935 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT); |
936 SendRequestAndExpectHttpResponse("hello world"); | 936 SendRequestAndExpectHttpResponse("hello world"); |
937 } | 937 } |
938 | 938 |
939 } // namespace test | 939 } // namespace test |
940 } // namespace net | 940 } // namespace net |
OLD | NEW |