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

Side by Side Diff: net/tools/quic/end_to_end_test.cc

Issue 2515613002: deprecate FLAGS_quic_disable_pre_34 (Closed)
Patch Set: Created 4 years, 1 month 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/tools/quic/chlo_extractor_test.cc ('k') | net/tools/quic/quic_dispatcher.cc » ('j') | 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 <stddef.h> 5 #include <stddef.h>
6 #include <sys/epoll.h> 6 #include <sys/epoll.h>
7 7
8 #include <cstdint> 8 #include <cstdint>
9 #include <list> 9 #include <list>
10 #include <memory> 10 #include <memory>
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 std::vector<TestParams> GetTestParams() { 132 std::vector<TestParams> GetTestParams() {
133 // Divide the versions into buckets in which the intra-frame format 133 // Divide the versions into buckets in which the intra-frame format
134 // is compatible. When clients encounter QUIC version negotiation 134 // is compatible. When clients encounter QUIC version negotiation
135 // they simply retransmit all packets using the new version's 135 // they simply retransmit all packets using the new version's
136 // QUIC framing. However, they are unable to change the intra-frame 136 // QUIC framing. However, they are unable to change the intra-frame
137 // layout (for example to change HTTP/2 headers to SPDY/3). So 137 // layout (for example to change HTTP/2 headers to SPDY/3). So
138 // these tests need to ensure that clients are never attempting 138 // these tests need to ensure that clients are never attempting
139 // to do 0-RTT across incompatible versions. Chromium only supports 139 // to do 0-RTT across incompatible versions. Chromium only supports
140 // a single version at a time anyway. :) 140 // a single version at a time anyway. :)
141 QuicVersionVector all_supported_versions = AllSupportedVersions(); 141 QuicVersionVector all_supported_versions = AllSupportedVersions();
142 QuicVersionVector version_buckets[3]; 142 // Even though this currently has one element, it may well get another
143 // with future versions of QUIC, so don't remove it.
144 QuicVersionVector version_buckets[1];
143 145
144 for (const QuicVersion version : all_supported_versions) { 146 for (const QuicVersion version : all_supported_versions) {
145 if (version <= QUIC_VERSION_32) { 147 // Versions: 34+
146 // Versions: 31-32 148 // QUIC_VERSION_34 deprecates entropy and uses new ack and stop waiting
147 // v31 adds a hash of the CHLO into the proof signature. 149 // wire formats.
148 version_buckets[0].push_back(version); 150 version_buckets[0].push_back(version);
149 } else if (version <= QUIC_VERSION_33) {
150 // Versions: 33
151 // v33 adds a diversification nonce into the hkdf.
152 version_buckets[1].push_back(version);
153 } else {
154 // Versions: 34+
155 // QUIC_VERSION_34 deprecates entropy and uses new ack and stop waiting
156 // wire formats.
157 version_buckets[2].push_back(version);
158 }
159 } 151 }
160 152
161 // This must be kept in sync with the number of nested for-loops below as it 153 // This must be kept in sync with the number of nested for-loops below as it
162 // is used to prune the number of tests that are run. 154 // is used to prune the number of tests that are run.
163 const int kMaxEnabledOptions = 5; 155 const int kMaxEnabledOptions = 5;
164 int max_enabled_options = 0; 156 int max_enabled_options = 0;
165 std::vector<TestParams> params; 157 std::vector<TestParams> params;
166 for (bool server_uses_stateless_rejects_if_peer_supported : {true, false}) { 158 for (bool server_uses_stateless_rejects_if_peer_supported : {true, false}) {
167 for (bool client_supports_stateless_rejects : {true, false}) { 159 for (bool client_supports_stateless_rejects : {true, false}) {
168 for (const QuicTag congestion_control_tag : {kRENO, kTBBR, kQBIC}) { 160 for (const QuicTag congestion_control_tag : {kRENO, kTBBR, kQBIC}) {
(...skipping 719 matching lines...) Expand 10 before | Expand all | Expand 10 after
888 880
889 client_->Disconnect(); 881 client_->Disconnect();
890 882
891 // The 0-RTT handshake should succeed. 883 // The 0-RTT handshake should succeed.
892 client_->Connect(); 884 client_->Connect();
893 client_->WaitForInitialResponse(); 885 client_->WaitForInitialResponse();
894 ASSERT_TRUE(client_->client()->connected()); 886 ASSERT_TRUE(client_->client()->connected());
895 EXPECT_EQ(kFooResponseBody, 887 EXPECT_EQ(kFooResponseBody,
896 client_->SendCustomSynchronousRequest(headers, body)); 888 client_->SendCustomSynchronousRequest(headers, body));
897 889
898 if (negotiated_version_ <= QUIC_VERSION_32) { 890 EXPECT_EQ(1, client_->client()->session()->GetNumSentClientHellos());
899 EXPECT_EQ(expected_num_hellos_latest_session, 891 EXPECT_EQ(1, client_->client()->GetNumSentClientHellos());
900 client_->client()->session()->GetNumSentClientHellos());
901 EXPECT_EQ(2, client_->client()->GetNumSentClientHellos());
902 } else {
903 EXPECT_EQ(1, client_->client()->session()->GetNumSentClientHellos());
904 EXPECT_EQ(1, client_->client()->GetNumSentClientHellos());
905 }
906 892
907 client_->Disconnect(); 893 client_->Disconnect();
908 894
909 // Restart the server so that the 0-RTT handshake will take 1 RTT. 895 // Restart the server so that the 0-RTT handshake will take 1 RTT.
910 StopServer(); 896 StopServer();
911 server_writer_ = new PacketDroppingTestWriter(); 897 server_writer_ = new PacketDroppingTestWriter();
912 StartServer(); 898 StartServer();
913 899
914 client_->Connect(); 900 client_->Connect();
915 ASSERT_TRUE(client_->client()->connected()); 901 ASSERT_TRUE(client_->client()->connected());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
948 EXPECT_EQ(2, client_->client()->GetNumSentClientHellos()); 934 EXPECT_EQ(2, client_->client()->GetNumSentClientHellos());
949 935
950 client_->Disconnect(); 936 client_->Disconnect();
951 937
952 // The 0-RTT handshake should succeed. 938 // The 0-RTT handshake should succeed.
953 client_->Connect(); 939 client_->Connect();
954 client_->WaitForInitialResponse(); 940 client_->WaitForInitialResponse();
955 ASSERT_TRUE(client_->client()->connected()); 941 ASSERT_TRUE(client_->client()->connected());
956 EXPECT_EQ(kFooResponseBody, client_->SendSynchronousRequest("/foo")); 942 EXPECT_EQ(kFooResponseBody, client_->SendSynchronousRequest("/foo"));
957 943
958 if (negotiated_version_ <= QUIC_VERSION_32) { 944 EXPECT_EQ(1, client_->client()->session()->GetNumSentClientHellos());
959 EXPECT_EQ(expected_num_hellos_latest_session, 945 EXPECT_EQ(1, client_->client()->GetNumSentClientHellos());
960 client_->client()->session()->GetNumSentClientHellos());
961 EXPECT_EQ(2, client_->client()->GetNumSentClientHellos());
962 } else {
963 EXPECT_EQ(1, client_->client()->session()->GetNumSentClientHellos());
964 EXPECT_EQ(1, client_->client()->GetNumSentClientHellos());
965 }
966 946
967 client_->Disconnect(); 947 client_->Disconnect();
968 948
969 // Restart the server so that the 0-RTT handshake will take 1 RTT. 949 // Restart the server so that the 0-RTT handshake will take 1 RTT.
970 StopServer(); 950 StopServer();
971 server_writer_ = new PacketDroppingTestWriter(); 951 server_writer_ = new PacketDroppingTestWriter();
972 StartServer(); 952 StartServer();
973 953
974 client_->Connect(); 954 client_->Connect();
975 ASSERT_TRUE(client_->client()->connected()); 955 ASSERT_TRUE(client_->client()->connected());
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1017 997
1018 client_->Disconnect(); 998 client_->Disconnect();
1019 999
1020 // The 0-RTT handshake should succeed. 1000 // The 0-RTT handshake should succeed.
1021 client_->Connect(); 1001 client_->Connect();
1022 client_->WaitForInitialResponse(); 1002 client_->WaitForInitialResponse();
1023 ASSERT_TRUE(client_->client()->connected()); 1003 ASSERT_TRUE(client_->client()->connected());
1024 EXPECT_EQ(kFooResponseBody, 1004 EXPECT_EQ(kFooResponseBody,
1025 client_->SendCustomSynchronousRequest(headers, body)); 1005 client_->SendCustomSynchronousRequest(headers, body));
1026 1006
1027 if (negotiated_version_ <= QUIC_VERSION_32) { 1007 EXPECT_EQ(1, client_->client()->session()->GetNumSentClientHellos());
1028 EXPECT_EQ(expected_num_hellos_latest_session, 1008 EXPECT_EQ(1, client_->client()->GetNumSentClientHellos());
1029 client_->client()->session()->GetNumSentClientHellos());
1030 EXPECT_EQ(2, client_->client()->GetNumSentClientHellos());
1031 } else {
1032 EXPECT_EQ(1, client_->client()->session()->GetNumSentClientHellos());
1033 EXPECT_EQ(1, client_->client()->GetNumSentClientHellos());
1034 }
1035 1009
1036 client_->Disconnect(); 1010 client_->Disconnect();
1037 1011
1038 // Restart the server so that the 0-RTT handshake will take 1 RTT. 1012 // Restart the server so that the 0-RTT handshake will take 1 RTT.
1039 StopServer(); 1013 StopServer();
1040 server_writer_ = new PacketDroppingTestWriter(); 1014 server_writer_ = new PacketDroppingTestWriter();
1041 StartServer(); 1015 StartServer();
1042 1016
1043 client_->Connect(); 1017 client_->Connect();
1044 ASSERT_TRUE(client_->client()->connected()); 1018 ASSERT_TRUE(client_->client()->connected());
(...skipping 1909 matching lines...) Expand 10 before | Expand all | Expand 10 after
2954 protected: 2928 protected:
2955 PacketReorderingWriter* reorder_writer_; 2929 PacketReorderingWriter* reorder_writer_;
2956 }; 2930 };
2957 2931
2958 INSTANTIATE_TEST_CASE_P(EndToEndBufferedPacketsTests, 2932 INSTANTIATE_TEST_CASE_P(EndToEndBufferedPacketsTests,
2959 EndToEndBufferedPacketsTest, 2933 EndToEndBufferedPacketsTest,
2960 testing::ValuesIn(GetTestParams())); 2934 testing::ValuesIn(GetTestParams()));
2961 2935
2962 TEST_P(EndToEndBufferedPacketsTest, Buffer0RttRequest) { 2936 TEST_P(EndToEndBufferedPacketsTest, Buffer0RttRequest) {
2963 ASSERT_TRUE(Initialize()); 2937 ASSERT_TRUE(Initialize());
2964 if (negotiated_version_ <= QUIC_VERSION_32) {
2965 // Since no 0-rtt for v32 and under, and this test relies on 0-rtt, skip
2966 // this test if QUIC doesn't do 0-rtt.
2967 return;
2968 }
2969 // Finish one request to make sure handshake established. 2938 // Finish one request to make sure handshake established.
2970 client_->SendSynchronousRequest("/foo"); 2939 client_->SendSynchronousRequest("/foo");
2971 // Disconnect for next 0-rtt request. 2940 // Disconnect for next 0-rtt request.
2972 client_->Disconnect(); 2941 client_->Disconnect();
2973 2942
2974 // Client get valid STK now. Do a 0-rtt request. 2943 // Client get valid STK now. Do a 0-rtt request.
2975 // Buffer a CHLO till another packets sent out. 2944 // Buffer a CHLO till another packets sent out.
2976 reorder_writer_->SetDelay(1); 2945 reorder_writer_->SetDelay(1);
2977 // Only send out a CHLO. 2946 // Only send out a CHLO.
2978 client_->client()->Initialize(); 2947 client_->client()->Initialize();
(...skipping 11 matching lines...) Expand all
2990 client_->WaitForResponse(); 2959 client_->WaitForResponse();
2991 EXPECT_EQ(kBarResponseBody, client_->response_body()); 2960 EXPECT_EQ(kBarResponseBody, client_->response_body());
2992 QuicConnectionStats client_stats = 2961 QuicConnectionStats client_stats =
2993 client_->client()->session()->connection()->GetStats(); 2962 client_->client()->session()->connection()->GetStats();
2994 EXPECT_EQ(0u, client_stats.packets_lost); 2963 EXPECT_EQ(0u, client_stats.packets_lost);
2995 EXPECT_EQ(1, client_->client()->GetNumSentClientHellos()); 2964 EXPECT_EQ(1, client_->client()->GetNumSentClientHellos());
2996 } 2965 }
2997 } // namespace 2966 } // namespace
2998 } // namespace test 2967 } // namespace test
2999 } // namespace net 2968 } // namespace net
OLDNEW
« no previous file with comments | « net/tools/quic/chlo_extractor_test.cc ('k') | net/tools/quic/quic_dispatcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698