OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "net/quic/quic_config.h" | 5 #include "net/quic/quic_config.h" |
6 | 6 |
7 #include "net/quic/crypto/crypto_handshake_message.h" | 7 #include "net/quic/crypto/crypto_handshake_message.h" |
8 #include "net/quic/crypto/crypto_protocol.h" | 8 #include "net/quic/crypto/crypto_protocol.h" |
9 #include "net/quic/quic_flags.h" | 9 #include "net/quic/quic_flags.h" |
10 #include "net/quic/quic_protocol.h" | 10 #include "net/quic/quic_protocol.h" |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
76 EXPECT_EQ(1u, out_len); | 76 EXPECT_EQ(1u, out_len); |
77 EXPECT_EQ(kQBIC, *out); | 77 EXPECT_EQ(kQBIC, *out); |
78 } | 78 } |
79 | 79 |
80 TEST_F(QuicConfigTest, ProcessClientHello) { | 80 TEST_F(QuicConfigTest, ProcessClientHello) { |
81 QuicConfig client_config; | 81 QuicConfig client_config; |
82 QuicTagVector cgst; | 82 QuicTagVector cgst; |
83 cgst.push_back(kQBIC); | 83 cgst.push_back(kQBIC); |
84 client_config.set_congestion_feedback(cgst, kQBIC); | 84 client_config.set_congestion_feedback(cgst, kQBIC); |
85 client_config.set_idle_connection_state_lifetime( | 85 client_config.set_idle_connection_state_lifetime( |
86 QuicTime::Delta::FromSeconds(2 * kDefaultTimeoutSecs), | 86 QuicTime::Delta::FromSeconds(2 * kMaximumIdleTimeoutSecs), |
87 QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs)); | 87 QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs)); |
88 client_config.set_max_streams_per_connection( | 88 client_config.set_max_streams_per_connection( |
89 2 * kDefaultMaxStreamsPerConnection, kDefaultMaxStreamsPerConnection); | 89 2 * kDefaultMaxStreamsPerConnection, kDefaultMaxStreamsPerConnection); |
90 client_config.SetInitialRoundTripTimeUsToSend( | 90 client_config.SetInitialRoundTripTimeUsToSend( |
91 10 * base::Time::kMicrosecondsPerMillisecond); | 91 10 * base::Time::kMicrosecondsPerMillisecond); |
92 client_config.SetInitialFlowControlWindowToSend( | 92 client_config.SetInitialFlowControlWindowToSend( |
93 2 * kInitialSessionFlowControlWindowForTest); | 93 2 * kInitialSessionFlowControlWindowForTest); |
94 client_config.SetInitialStreamFlowControlWindowToSend( | 94 client_config.SetInitialStreamFlowControlWindowToSend( |
95 2 * kInitialStreamFlowControlWindowForTest); | 95 2 * kInitialStreamFlowControlWindowForTest); |
96 client_config.SetInitialSessionFlowControlWindowToSend( | 96 client_config.SetInitialSessionFlowControlWindowToSend( |
97 2 * kInitialSessionFlowControlWindowForTest); | 97 2 * kInitialSessionFlowControlWindowForTest); |
98 client_config.SetSocketReceiveBufferToSend(kDefaultSocketReceiveBuffer); | 98 client_config.SetSocketReceiveBufferToSend(kDefaultSocketReceiveBuffer); |
99 QuicTagVector copt; | 99 QuicTagVector copt; |
100 copt.push_back(kTBBR); | 100 copt.push_back(kTBBR); |
101 copt.push_back(kFHDR); | 101 copt.push_back(kFHDR); |
102 client_config.SetConnectionOptionsToSend(copt); | 102 client_config.SetConnectionOptionsToSend(copt); |
103 CryptoHandshakeMessage msg; | 103 CryptoHandshakeMessage msg; |
104 client_config.ToHandshakeMessage(&msg); | 104 client_config.ToHandshakeMessage(&msg); |
105 string error_details; | 105 string error_details; |
106 const QuicErrorCode error = | 106 const QuicErrorCode error = |
107 config_.ProcessPeerHello(msg, CLIENT, &error_details); | 107 config_.ProcessPeerHello(msg, CLIENT, &error_details); |
108 EXPECT_EQ(QUIC_NO_ERROR, error); | 108 EXPECT_EQ(QUIC_NO_ERROR, error); |
109 EXPECT_TRUE(config_.negotiated()); | 109 EXPECT_TRUE(config_.negotiated()); |
110 EXPECT_EQ(kQBIC, config_.congestion_feedback()); | 110 EXPECT_EQ(kQBIC, config_.congestion_feedback()); |
111 EXPECT_EQ(QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs), | 111 EXPECT_EQ(QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs), |
112 config_.idle_connection_state_lifetime()); | 112 config_.idle_connection_state_lifetime()); |
113 EXPECT_EQ(kDefaultMaxStreamsPerConnection, | 113 EXPECT_EQ(kDefaultMaxStreamsPerConnection, |
114 config_.max_streams_per_connection()); | 114 config_.max_streams_per_connection()); |
115 EXPECT_EQ(QuicTime::Delta::FromSeconds(0), config_.keepalive_timeout()); | 115 EXPECT_EQ(QuicTime::Delta::FromSeconds(0), config_.keepalive_timeout()); |
116 EXPECT_EQ(10 * base::Time::kMicrosecondsPerMillisecond, | 116 EXPECT_EQ(10 * base::Time::kMicrosecondsPerMillisecond, |
117 config_.ReceivedInitialRoundTripTimeUs()); | 117 config_.ReceivedInitialRoundTripTimeUs()); |
118 EXPECT_FALSE(config_.HasReceivedLossDetection()); | 118 EXPECT_FALSE(config_.HasReceivedLossDetection()); |
119 EXPECT_TRUE(config_.HasReceivedConnectionOptions()); | 119 EXPECT_TRUE(config_.HasReceivedConnectionOptions()); |
120 EXPECT_EQ(2u, config_.ReceivedConnectionOptions().size()); | 120 EXPECT_EQ(2u, config_.ReceivedConnectionOptions().size()); |
121 EXPECT_EQ(config_.ReceivedConnectionOptions()[0], kTBBR); | 121 EXPECT_EQ(config_.ReceivedConnectionOptions()[0], kTBBR); |
122 EXPECT_EQ(config_.ReceivedConnectionOptions()[1], kFHDR); | 122 EXPECT_EQ(config_.ReceivedConnectionOptions()[1], kFHDR); |
123 EXPECT_EQ(config_.ReceivedInitialFlowControlWindowBytes(), | 123 EXPECT_EQ(config_.ReceivedInitialFlowControlWindowBytes(), |
124 2 * kInitialSessionFlowControlWindowForTest); | 124 2 * kInitialSessionFlowControlWindowForTest); |
125 EXPECT_EQ(config_.ReceivedInitialStreamFlowControlWindowBytes(), | 125 EXPECT_EQ(config_.ReceivedInitialStreamFlowControlWindowBytes(), |
126 2 * kInitialStreamFlowControlWindowForTest); | 126 2 * kInitialStreamFlowControlWindowForTest); |
127 EXPECT_EQ(config_.ReceivedInitialSessionFlowControlWindowBytes(), | 127 EXPECT_EQ(config_.ReceivedInitialSessionFlowControlWindowBytes(), |
128 2 * kInitialSessionFlowControlWindowForTest); | 128 2 * kInitialSessionFlowControlWindowForTest); |
129 EXPECT_EQ(config_.ReceivedSocketReceiveBuffer(), | 129 EXPECT_EQ(config_.ReceivedSocketReceiveBuffer(), |
130 kDefaultSocketReceiveBuffer); | 130 kDefaultSocketReceiveBuffer); |
131 } | 131 } |
132 | 132 |
133 TEST_F(QuicConfigTest, ProcessServerHello) { | 133 TEST_F(QuicConfigTest, ProcessServerHello) { |
134 QuicConfig server_config; | 134 QuicConfig server_config; |
135 QuicTagVector cgst; | 135 QuicTagVector cgst; |
136 cgst.push_back(kQBIC); | 136 cgst.push_back(kQBIC); |
137 server_config.set_congestion_feedback(cgst, kQBIC); | 137 server_config.set_congestion_feedback(cgst, kQBIC); |
138 server_config.set_idle_connection_state_lifetime( | 138 server_config.set_idle_connection_state_lifetime( |
139 QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs / 2), | 139 QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs / 2), |
140 QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs / 2)); | 140 QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs / 2)); |
141 server_config.set_max_streams_per_connection( | 141 server_config.set_max_streams_per_connection( |
142 kDefaultMaxStreamsPerConnection / 2, | 142 kDefaultMaxStreamsPerConnection / 2, |
143 kDefaultMaxStreamsPerConnection / 2); | 143 kDefaultMaxStreamsPerConnection / 2); |
144 server_config.SetInitialCongestionWindowToSend(kDefaultInitialWindow / 2); | 144 server_config.SetInitialCongestionWindowToSend(kDefaultInitialWindow / 2); |
145 server_config.SetInitialRoundTripTimeUsToSend( | 145 server_config.SetInitialRoundTripTimeUsToSend( |
146 10 * base::Time::kMicrosecondsPerMillisecond); | 146 10 * base::Time::kMicrosecondsPerMillisecond); |
147 server_config.SetInitialFlowControlWindowToSend( | 147 server_config.SetInitialFlowControlWindowToSend( |
148 2 * kInitialSessionFlowControlWindowForTest); | 148 2 * kInitialSessionFlowControlWindowForTest); |
149 server_config.SetInitialStreamFlowControlWindowToSend( | 149 server_config.SetInitialStreamFlowControlWindowToSend( |
150 2 * kInitialStreamFlowControlWindowForTest); | 150 2 * kInitialStreamFlowControlWindowForTest); |
151 server_config.SetInitialSessionFlowControlWindowToSend( | 151 server_config.SetInitialSessionFlowControlWindowToSend( |
152 2 * kInitialSessionFlowControlWindowForTest); | 152 2 * kInitialSessionFlowControlWindowForTest); |
153 server_config.SetSocketReceiveBufferToSend(kDefaultSocketReceiveBuffer); | 153 server_config.SetSocketReceiveBufferToSend(kDefaultSocketReceiveBuffer); |
154 CryptoHandshakeMessage msg; | 154 CryptoHandshakeMessage msg; |
155 server_config.ToHandshakeMessage(&msg); | 155 server_config.ToHandshakeMessage(&msg); |
156 string error_details; | 156 string error_details; |
157 const QuicErrorCode error = | 157 const QuicErrorCode error = |
158 config_.ProcessPeerHello(msg, SERVER, &error_details); | 158 config_.ProcessPeerHello(msg, SERVER, &error_details); |
159 EXPECT_EQ(QUIC_NO_ERROR, error); | 159 EXPECT_EQ(QUIC_NO_ERROR, error); |
160 EXPECT_TRUE(config_.negotiated()); | 160 EXPECT_TRUE(config_.negotiated()); |
161 EXPECT_EQ(kQBIC, config_.congestion_feedback()); | 161 EXPECT_EQ(kQBIC, config_.congestion_feedback()); |
162 EXPECT_EQ(QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs / 2), | 162 EXPECT_EQ(QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs / 2), |
163 config_.idle_connection_state_lifetime()); | 163 config_.idle_connection_state_lifetime()); |
164 EXPECT_EQ(kDefaultMaxStreamsPerConnection / 2, | 164 EXPECT_EQ(kDefaultMaxStreamsPerConnection / 2, |
165 config_.max_streams_per_connection()); | 165 config_.max_streams_per_connection()); |
166 EXPECT_EQ(kDefaultInitialWindow / 2, | 166 EXPECT_EQ(kDefaultInitialWindow / 2, |
167 config_.ReceivedInitialCongestionWindow()); | 167 config_.ReceivedInitialCongestionWindow()); |
168 EXPECT_EQ(QuicTime::Delta::FromSeconds(0), config_.keepalive_timeout()); | 168 EXPECT_EQ(QuicTime::Delta::FromSeconds(0), config_.keepalive_timeout()); |
169 EXPECT_EQ(10 * base::Time::kMicrosecondsPerMillisecond, | 169 EXPECT_EQ(10 * base::Time::kMicrosecondsPerMillisecond, |
170 config_.ReceivedInitialRoundTripTimeUs()); | 170 config_.ReceivedInitialRoundTripTimeUs()); |
171 EXPECT_FALSE(config_.HasReceivedLossDetection()); | 171 EXPECT_FALSE(config_.HasReceivedLossDetection()); |
172 EXPECT_EQ(config_.ReceivedInitialFlowControlWindowBytes(), | 172 EXPECT_EQ(config_.ReceivedInitialFlowControlWindowBytes(), |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 // Missing CGST. KATO is optional. | 233 // Missing CGST. KATO is optional. |
234 string error_details; | 234 string error_details; |
235 const QuicErrorCode error = | 235 const QuicErrorCode error = |
236 config_.ProcessPeerHello(msg, SERVER, &error_details); | 236 config_.ProcessPeerHello(msg, SERVER, &error_details); |
237 EXPECT_EQ(QUIC_CRYPTO_MESSAGE_PARAMETER_NOT_FOUND, error); | 237 EXPECT_EQ(QUIC_CRYPTO_MESSAGE_PARAMETER_NOT_FOUND, error); |
238 } | 238 } |
239 | 239 |
240 TEST_F(QuicConfigTest, OutOfBoundSHLO) { | 240 TEST_F(QuicConfigTest, OutOfBoundSHLO) { |
241 QuicConfig server_config; | 241 QuicConfig server_config; |
242 server_config.set_idle_connection_state_lifetime( | 242 server_config.set_idle_connection_state_lifetime( |
243 QuicTime::Delta::FromSeconds(2 * kDefaultTimeoutSecs), | 243 QuicTime::Delta::FromSeconds(2 * kMaximumIdleTimeoutSecs), |
244 QuicTime::Delta::FromSeconds(2 * kDefaultTimeoutSecs)); | 244 QuicTime::Delta::FromSeconds(2 * kMaximumIdleTimeoutSecs)); |
245 | 245 |
246 CryptoHandshakeMessage msg; | 246 CryptoHandshakeMessage msg; |
247 server_config.ToHandshakeMessage(&msg); | 247 server_config.ToHandshakeMessage(&msg); |
248 string error_details; | 248 string error_details; |
249 const QuicErrorCode error = | 249 const QuicErrorCode error = |
250 config_.ProcessPeerHello(msg, SERVER, &error_details); | 250 config_.ProcessPeerHello(msg, SERVER, &error_details); |
251 EXPECT_EQ(QUIC_INVALID_NEGOTIATED_VALUE, error); | 251 EXPECT_EQ(QUIC_INVALID_NEGOTIATED_VALUE, error); |
252 } | 252 } |
253 | 253 |
254 TEST_F(QuicConfigTest, MultipleNegotiatedValuesInVectorTag) { | 254 TEST_F(QuicConfigTest, MultipleNegotiatedValuesInVectorTag) { |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 EXPECT_DFATAL(config.SetInitialFlowControlWindowToSend(kInvalidWindow), | 290 EXPECT_DFATAL(config.SetInitialFlowControlWindowToSend(kInvalidWindow), |
291 "Initial flow control receive window"); | 291 "Initial flow control receive window"); |
292 | 292 |
293 EXPECT_EQ(kDefaultFlowControlSendWindow, | 293 EXPECT_EQ(kDefaultFlowControlSendWindow, |
294 config.GetInitialFlowControlWindowToSend()); | 294 config.GetInitialFlowControlWindowToSend()); |
295 } | 295 } |
296 | 296 |
297 } // namespace | 297 } // namespace |
298 } // namespace test | 298 } // namespace test |
299 } // namespace net | 299 } // namespace net |
OLD | NEW |