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

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

Issue 114923007: Remove deprecated flag FLAGS_pad_quic_handshake_packets. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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 | Annotate | Revision Log
« no previous file with comments | « net/quic/quic_packet_creator_test.cc ('k') | no next file » | 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 <string> 6 #include <string>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/memory/singleton.h" 10 #include "base/memory/singleton.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 const char* kBarResponseBody = "Palm hearts are pretty delicious, also."; 59 const char* kBarResponseBody = "Palm hearts are pretty delicious, also.";
60 60
61 void GenerateBody(string* body, int length) { 61 void GenerateBody(string* body, int length) {
62 body->clear(); 62 body->clear();
63 body->reserve(length); 63 body->reserve(length);
64 for (int i = 0; i < length; ++i) { 64 for (int i = 0; i < length; ++i) {
65 body->append(1, static_cast<char>(32 + i % (126 - 32))); 65 body->append(1, static_cast<char>(32 + i % (126 - 32)));
66 } 66 }
67 } 67 }
68 68
69 // Run all tests with the cross products of all versions 69 // Run all tests with the cross products of all versions.
70 // and all values of FLAGS_pad_quic_handshake_packets.
71 struct TestParams { 70 struct TestParams {
72 TestParams(const QuicVersionVector& client_supported_versions, 71 TestParams(const QuicVersionVector& client_supported_versions,
73 const QuicVersionVector& server_supported_versions, 72 const QuicVersionVector& server_supported_versions,
74 QuicVersion negotiated_version, 73 QuicVersion negotiated_version,
75 bool use_padding,
76 bool use_pacing) 74 bool use_pacing)
77 : client_supported_versions(client_supported_versions), 75 : client_supported_versions(client_supported_versions),
78 server_supported_versions(server_supported_versions), 76 server_supported_versions(server_supported_versions),
79 negotiated_version(negotiated_version), 77 negotiated_version(negotiated_version),
80 use_padding(use_padding),
81 use_pacing(use_pacing) { 78 use_pacing(use_pacing) {
82 } 79 }
83 80
84 friend ostream& operator<<(ostream& os, const TestParams& p) { 81 friend ostream& operator<<(ostream& os, const TestParams& p) {
85 os << "{ server_supported_versions: " 82 os << "{ server_supported_versions: "
86 << QuicVersionVectorToString(p.server_supported_versions); 83 << QuicVersionVectorToString(p.server_supported_versions);
87 os << " client_supported_versions: " 84 os << " client_supported_versions: "
88 << QuicVersionVectorToString(p.client_supported_versions); 85 << QuicVersionVectorToString(p.client_supported_versions);
89 os << " negotiated_version: " << QuicVersionToString(p.negotiated_version); 86 os << " negotiated_version: " << QuicVersionToString(p.negotiated_version);
90 os << " use_padding: " << p.use_padding;
91 os << " use_pacing: " << p.use_pacing << " }"; 87 os << " use_pacing: " << p.use_pacing << " }";
92 return os; 88 return os;
93 } 89 }
94 90
95 QuicVersionVector client_supported_versions; 91 QuicVersionVector client_supported_versions;
96 QuicVersionVector server_supported_versions; 92 QuicVersionVector server_supported_versions;
97 QuicVersion negotiated_version; 93 QuicVersion negotiated_version;
98 bool use_padding;
99 bool use_pacing; 94 bool use_pacing;
100 }; 95 };
101 96
102 // Constructs various test permutations. 97 // Constructs various test permutations.
103 vector<TestParams> GetTestParams() { 98 vector<TestParams> GetTestParams() {
104 vector<TestParams> params; 99 vector<TestParams> params;
105 QuicVersionVector all_supported_versions = QuicSupportedVersions(); 100 QuicVersionVector all_supported_versions = QuicSupportedVersions();
106 101
107 for (int use_pacing = 0; use_pacing < 2; ++use_pacing) { 102 for (int use_pacing = 0; use_pacing < 2; ++use_pacing) {
108 for (int use_padding = 0; use_padding < 2; ++use_padding) { 103 // Add an entry for server and client supporting all versions.
109 // Add an entry for server and client supporting all versions. 104 params.push_back(TestParams(all_supported_versions,
105 all_supported_versions,
106 all_supported_versions[0],
107 use_pacing != 0));
108
109 // Test client supporting 1 version and server supporting all versions.
110 // Simulate an old client and exercise version downgrade in the server.
111 // No protocol negotiation should occur. Skip the i = 0 case because it
112 // is essentially the same as the default case.
113 for (size_t i = 1; i < all_supported_versions.size(); ++i) {
114 QuicVersionVector client_supported_versions;
115 client_supported_versions.push_back(all_supported_versions[i]);
116 params.push_back(TestParams(client_supported_versions,
117 all_supported_versions,
118 client_supported_versions[0],
119 use_pacing != 0));
120 }
121
122 // Test client supporting all versions and server supporting 1 version.
123 // Simulate an old server and exercise version downgrade in the client.
124 // Protocol negotiation should occur. Skip the i = 0 case because it is
125 // essentially the same as the default case.
126 for (size_t i = 1; i < all_supported_versions.size(); ++i) {
127 QuicVersionVector server_supported_versions;
128 server_supported_versions.push_back(all_supported_versions[i]);
110 params.push_back(TestParams(all_supported_versions, 129 params.push_back(TestParams(all_supported_versions,
111 all_supported_versions, 130 server_supported_versions,
112 all_supported_versions[0], 131 server_supported_versions[0],
113 use_padding != 0, use_pacing != 0)); 132 use_pacing != 0));
114
115 // Test client supporting 1 version and server supporting all versions.
116 // Simulate an old client and exercise version downgrade in the server.
117 // No protocol negotiation should occur. Skip the i = 0 case because it
118 // is essentially the same as the default case.
119 for (size_t i = 1; i < all_supported_versions.size(); ++i) {
120 QuicVersionVector client_supported_versions;
121 client_supported_versions.push_back(all_supported_versions[i]);
122 params.push_back(TestParams(client_supported_versions,
123 all_supported_versions,
124 client_supported_versions[0],
125 use_pacing != 0, use_padding != 0));
126 }
127
128 // Test client supporting all versions and server supporting 1 version.
129 // Simulate an old server and exercise version downgrade in the client.
130 // Protocol negotiation should occur. Skip the i = 0 case because it is
131 // essentially the same as the default case.
132 for (size_t i = 1; i < all_supported_versions.size(); ++i) {
133 QuicVersionVector server_supported_versions;
134 server_supported_versions.push_back(all_supported_versions[i]);
135 params.push_back(TestParams(all_supported_versions,
136 server_supported_versions,
137 server_supported_versions[0],
138 use_pacing != 0, use_padding != 0));
139 }
140 } 133 }
141 } 134 }
142 return params; 135 return params;
143 } 136 }
144 137
145 class EndToEndTest : public ::testing::TestWithParam<TestParams> { 138 class EndToEndTest : public ::testing::TestWithParam<TestParams> {
146 protected: 139 protected:
147 EndToEndTest() 140 EndToEndTest()
148 : server_hostname_("example.com"), 141 : server_hostname_("example.com"),
149 server_started_(false), 142 server_started_(false),
150 strike_register_no_startup_period_(false) { 143 strike_register_no_startup_period_(false) {
151 net::IPAddressNumber ip; 144 net::IPAddressNumber ip;
152 CHECK(net::ParseIPLiteralToNumber("127.0.0.1", &ip)); 145 CHECK(net::ParseIPLiteralToNumber("127.0.0.1", &ip));
153 server_address_ = IPEndPoint(ip, 0); 146 server_address_ = IPEndPoint(ip, 0);
154 147
155 client_supported_versions_ = GetParam().client_supported_versions; 148 client_supported_versions_ = GetParam().client_supported_versions;
156 server_supported_versions_ = GetParam().server_supported_versions; 149 server_supported_versions_ = GetParam().server_supported_versions;
157 negotiated_version_ = GetParam().negotiated_version; 150 negotiated_version_ = GetParam().negotiated_version;
158 FLAGS_limit_rto_increase_for_tests = true; 151 FLAGS_limit_rto_increase_for_tests = true;
159 FLAGS_pad_quic_handshake_packets = GetParam().use_padding;
160 FLAGS_enable_quic_pacing = GetParam().use_pacing; 152 FLAGS_enable_quic_pacing = GetParam().use_pacing;
161 LOG(INFO) << "Using Configuration: " << GetParam(); 153 LOG(INFO) << "Using Configuration: " << GetParam();
162 154
163 client_config_.SetDefaults(); 155 client_config_.SetDefaults();
164 server_config_.SetDefaults(); 156 server_config_.SetDefaults();
165 server_config_.set_initial_round_trip_time_us(kMaxInitialRoundTripTimeUs, 157 server_config_.set_initial_round_trip_time_us(kMaxInitialRoundTripTimeUs,
166 0); 158 0);
167 159
168 QuicInMemoryCachePeer::ResetForTests(); 160 QuicInMemoryCachePeer::ResetForTests();
169 AddToCache("GET", "https://www.google.com/foo", 161 AddToCache("GET", "https://www.google.com/foo",
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 string body; 548 string body;
557 GenerateBody(&body, 1024 * 1024); 549 GenerateBody(&body, 1024 * 1024);
558 550
559 HTTPMessage request(HttpConstants::HTTP_1_1, 551 HTTPMessage request(HttpConstants::HTTP_1_1,
560 HttpConstants::POST, "/foo"); 552 HttpConstants::POST, "/foo");
561 request.AddBody(body, true); 553 request.AddBody(body, true);
562 554
563 EXPECT_EQ(kFooResponseBody, client_->SendCustomSynchronousRequest(request)); 555 EXPECT_EQ(kFooResponseBody, client_->SendCustomSynchronousRequest(request));
564 } 556 }
565 557
566 // Enable once FLAGS_quic_allow_oversized_packets_for_test is added.
567 TEST_P(EndToEndTest, DISABLED_PacketTooLarge) {
568 //FLAGS_quic_allow_oversized_packets_for_test = true;
569 ASSERT_TRUE(Initialize());
570
571 // Wait for the handshake to be confirmed so that the negotiated
572 // max packet size does not overwrite our increased packet size.
573 client_->client()->WaitForCryptoHandshakeConfirmed();
574
575 // If we use packet padding, then the CHLO is padded to such a large
576 // size that it is rejected by the server before the handshake can complete
577 // which results in a test timeout.
578 if (FLAGS_pad_quic_handshake_packets) {
579 return;
580 }
581
582 string body;
583 GenerateBody(&body, kMaxPacketSize);
584
585 HTTPMessage request(HttpConstants::HTTP_1_1,
586 HttpConstants::POST, "/foo");
587 request.AddBody(body, true);
588 client_->options()->max_packet_length = 20480;
589
590 EXPECT_EQ("", client_->SendCustomSynchronousRequest(request));
591 EXPECT_EQ(QUIC_STREAM_CONNECTION_ERROR, client_->stream_error());
592 EXPECT_EQ(QUIC_PACKET_TOO_LARGE, client_->connection_error());
593 }
594
595 TEST_P(EndToEndTest, InvalidStream) { 558 TEST_P(EndToEndTest, InvalidStream) {
596 ASSERT_TRUE(Initialize()); 559 ASSERT_TRUE(Initialize());
597 client_->client()->WaitForCryptoHandshakeConfirmed(); 560 client_->client()->WaitForCryptoHandshakeConfirmed();
598 561
599 string body; 562 string body;
600 GenerateBody(&body, kMaxPacketSize); 563 GenerateBody(&body, kMaxPacketSize);
601 564
602 HTTPMessage request(HttpConstants::HTTP_1_1, 565 HTTPMessage request(HttpConstants::HTTP_1_1,
603 HttpConstants::POST, "/foo"); 566 HttpConstants::POST, "/foo");
604 request.AddBody(body, true); 567 request.AddBody(body, true);
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
847 client_->SendSynchronousRequest("/bar"); 810 client_->SendSynchronousRequest("/bar");
848 811
849 EXPECT_EQ(QUIC_STREAM_CONNECTION_ERROR, client_->stream_error()); 812 EXPECT_EQ(QUIC_STREAM_CONNECTION_ERROR, client_->stream_error());
850 EXPECT_EQ(QUIC_ERROR_MIGRATING_ADDRESS, client_->connection_error()); 813 EXPECT_EQ(QUIC_ERROR_MIGRATING_ADDRESS, client_->connection_error());
851 } 814 }
852 815
853 } // namespace 816 } // namespace
854 } // namespace test 817 } // namespace test
855 } // namespace tools 818 } // namespace tools
856 } // namespace net 819 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_packet_creator_test.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698