| 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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 config_.ToHandshakeMessage(&msg); | 62 config_.ToHandshakeMessage(&msg); |
| 63 | 63 |
| 64 const QuicTag* out; | 64 const QuicTag* out; |
| 65 size_t out_len; | 65 size_t out_len; |
| 66 EXPECT_EQ(QUIC_NO_ERROR, msg.GetTaglist(kCGST, &out, &out_len)); | 66 EXPECT_EQ(QUIC_NO_ERROR, msg.GetTaglist(kCGST, &out, &out_len)); |
| 67 EXPECT_EQ(2u, out_len); | 67 EXPECT_EQ(2u, out_len); |
| 68 EXPECT_EQ(kPACE, out[0]); | 68 EXPECT_EQ(kPACE, out[0]); |
| 69 EXPECT_EQ(kQBIC, out[1]); | 69 EXPECT_EQ(kQBIC, out[1]); |
| 70 } | 70 } |
| 71 | 71 |
| 72 TEST_F(QuicConfigTest, ProcessPeerHello) { | 72 TEST_F(QuicConfigTest, ProcessClientHello) { |
| 73 QuicConfig client_config; | 73 QuicConfig client_config; |
| 74 QuicTagVector cgst; | 74 QuicTagVector cgst; |
| 75 cgst.push_back(kINAR); | 75 cgst.push_back(kINAR); |
| 76 cgst.push_back(kQBIC); | 76 cgst.push_back(kQBIC); |
| 77 client_config.set_congestion_control(cgst, kQBIC); | 77 client_config.set_congestion_feedback(cgst, kQBIC); |
| 78 client_config.set_idle_connection_state_lifetime( | 78 client_config.set_idle_connection_state_lifetime( |
| 79 QuicTime::Delta::FromSeconds(2 * kDefaultTimeoutSecs), | 79 QuicTime::Delta::FromSeconds(2 * kDefaultTimeoutSecs), |
| 80 QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs)); | 80 QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs)); |
| 81 client_config.set_max_streams_per_connection( | 81 client_config.set_max_streams_per_connection( |
| 82 2 * kDefaultMaxStreamsPerConnection, kDefaultMaxStreamsPerConnection); | 82 2 * kDefaultMaxStreamsPerConnection, kDefaultMaxStreamsPerConnection); |
| 83 client_config.SetInitialRoundTripTimeUsToSend( | 83 client_config.SetInitialRoundTripTimeUsToSend( |
| 84 10 * base::Time::kMicrosecondsPerMillisecond); | 84 10 * base::Time::kMicrosecondsPerMillisecond); |
| 85 QuicTagVector copt; |
| 86 copt.push_back(kTBBR); |
| 87 client_config.SetCongestionOptionsToSend(copt); |
| 85 CryptoHandshakeMessage msg; | 88 CryptoHandshakeMessage msg; |
| 86 client_config.ToHandshakeMessage(&msg); | 89 client_config.ToHandshakeMessage(&msg); |
| 87 string error_details; | 90 string error_details; |
| 88 const QuicErrorCode error = | 91 const QuicErrorCode error = |
| 89 config_.ProcessPeerHello(msg, CLIENT, &error_details); | 92 config_.ProcessPeerHello(msg, CLIENT, &error_details); |
| 90 EXPECT_EQ(QUIC_NO_ERROR, error); | 93 EXPECT_EQ(QUIC_NO_ERROR, error); |
| 91 EXPECT_TRUE(config_.negotiated()); | 94 EXPECT_TRUE(config_.negotiated()); |
| 92 EXPECT_EQ(kQBIC, config_.congestion_control()); | 95 EXPECT_EQ(kQBIC, config_.congestion_feedback()); |
| 93 EXPECT_EQ(QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs), | 96 EXPECT_EQ(QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs), |
| 94 config_.idle_connection_state_lifetime()); | 97 config_.idle_connection_state_lifetime()); |
| 95 EXPECT_EQ(kDefaultMaxStreamsPerConnection, | 98 EXPECT_EQ(kDefaultMaxStreamsPerConnection, |
| 96 config_.max_streams_per_connection()); | 99 config_.max_streams_per_connection()); |
| 97 EXPECT_EQ(QuicTime::Delta::FromSeconds(0), config_.keepalive_timeout()); | 100 EXPECT_EQ(QuicTime::Delta::FromSeconds(0), config_.keepalive_timeout()); |
| 98 EXPECT_EQ(10 * base::Time::kMicrosecondsPerMillisecond, | 101 EXPECT_EQ(10 * base::Time::kMicrosecondsPerMillisecond, |
| 99 config_.ReceivedInitialRoundTripTimeUs()); | 102 config_.ReceivedInitialRoundTripTimeUs()); |
| 100 EXPECT_FALSE(config_.HasReceivedLossDetection()); | 103 EXPECT_FALSE(config_.HasReceivedLossDetection()); |
| 104 EXPECT_TRUE(config_.HasReceivedCongestionOptions()); |
| 105 EXPECT_EQ(1u, config_.ReceivedCongestionOptions().size()); |
| 106 EXPECT_EQ(config_.ReceivedCongestionOptions()[0], kTBBR); |
| 101 } | 107 } |
| 102 | 108 |
| 103 TEST_F(QuicConfigTest, ProcessServerHello) { | 109 TEST_F(QuicConfigTest, ProcessServerHello) { |
| 104 QuicConfig server_config; | 110 QuicConfig server_config; |
| 105 QuicTagVector cgst; | 111 QuicTagVector cgst; |
| 106 cgst.push_back(kQBIC); | 112 cgst.push_back(kQBIC); |
| 107 server_config.set_congestion_control(cgst, kQBIC); | 113 server_config.set_congestion_feedback(cgst, kQBIC); |
| 108 server_config.set_idle_connection_state_lifetime( | 114 server_config.set_idle_connection_state_lifetime( |
| 109 QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs / 2), | 115 QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs / 2), |
| 110 QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs / 2)); | 116 QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs / 2)); |
| 111 server_config.set_max_streams_per_connection( | 117 server_config.set_max_streams_per_connection( |
| 112 kDefaultMaxStreamsPerConnection / 2, | 118 kDefaultMaxStreamsPerConnection / 2, |
| 113 kDefaultMaxStreamsPerConnection / 2); | 119 kDefaultMaxStreamsPerConnection / 2); |
| 114 server_config.SetInitialCongestionWindowToSend(kDefaultInitialWindow / 2); | 120 server_config.SetInitialCongestionWindowToSend(kDefaultInitialWindow / 2); |
| 115 server_config.SetInitialRoundTripTimeUsToSend( | 121 server_config.SetInitialRoundTripTimeUsToSend( |
| 116 10 * base::Time::kMicrosecondsPerMillisecond); | 122 10 * base::Time::kMicrosecondsPerMillisecond); |
| 117 CryptoHandshakeMessage msg; | 123 CryptoHandshakeMessage msg; |
| 118 server_config.ToHandshakeMessage(&msg); | 124 server_config.ToHandshakeMessage(&msg); |
| 119 string error_details; | 125 string error_details; |
| 120 const QuicErrorCode error = | 126 const QuicErrorCode error = |
| 121 config_.ProcessPeerHello(msg, SERVER, &error_details); | 127 config_.ProcessPeerHello(msg, SERVER, &error_details); |
| 122 EXPECT_EQ(QUIC_NO_ERROR, error); | 128 EXPECT_EQ(QUIC_NO_ERROR, error); |
| 123 EXPECT_TRUE(config_.negotiated()); | 129 EXPECT_TRUE(config_.negotiated()); |
| 124 EXPECT_EQ(kQBIC, config_.congestion_control()); | 130 EXPECT_EQ(kQBIC, config_.congestion_feedback()); |
| 125 EXPECT_EQ(QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs / 2), | 131 EXPECT_EQ(QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs / 2), |
| 126 config_.idle_connection_state_lifetime()); | 132 config_.idle_connection_state_lifetime()); |
| 127 EXPECT_EQ(kDefaultMaxStreamsPerConnection / 2, | 133 EXPECT_EQ(kDefaultMaxStreamsPerConnection / 2, |
| 128 config_.max_streams_per_connection()); | 134 config_.max_streams_per_connection()); |
| 129 EXPECT_EQ(kDefaultInitialWindow / 2, | 135 EXPECT_EQ(kDefaultInitialWindow / 2, |
| 130 config_.ReceivedInitialCongestionWindow()); | 136 config_.ReceivedInitialCongestionWindow()); |
| 131 EXPECT_EQ(QuicTime::Delta::FromSeconds(0), config_.keepalive_timeout()); | 137 EXPECT_EQ(QuicTime::Delta::FromSeconds(0), config_.keepalive_timeout()); |
| 132 EXPECT_EQ(10 * base::Time::kMicrosecondsPerMillisecond, | 138 EXPECT_EQ(10 * base::Time::kMicrosecondsPerMillisecond, |
| 133 config_.ReceivedInitialRoundTripTimeUs()); | 139 config_.ReceivedInitialRoundTripTimeUs()); |
| 134 EXPECT_FALSE(config_.HasReceivedLossDetection()); | 140 EXPECT_FALSE(config_.HasReceivedLossDetection()); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 204 const QuicErrorCode error = | 210 const QuicErrorCode error = |
| 205 config_.ProcessPeerHello(msg, SERVER, &error_details); | 211 config_.ProcessPeerHello(msg, SERVER, &error_details); |
| 206 EXPECT_EQ(QUIC_INVALID_NEGOTIATED_VALUE, error); | 212 EXPECT_EQ(QUIC_INVALID_NEGOTIATED_VALUE, error); |
| 207 } | 213 } |
| 208 | 214 |
| 209 TEST_F(QuicConfigTest, MultipleNegotiatedValuesInVectorTag) { | 215 TEST_F(QuicConfigTest, MultipleNegotiatedValuesInVectorTag) { |
| 210 QuicConfig server_config; | 216 QuicConfig server_config; |
| 211 QuicTagVector cgst; | 217 QuicTagVector cgst; |
| 212 cgst.push_back(kQBIC); | 218 cgst.push_back(kQBIC); |
| 213 cgst.push_back(kINAR); | 219 cgst.push_back(kINAR); |
| 214 server_config.set_congestion_control(cgst, kQBIC); | 220 server_config.set_congestion_feedback(cgst, kQBIC); |
| 215 | 221 |
| 216 CryptoHandshakeMessage msg; | 222 CryptoHandshakeMessage msg; |
| 217 server_config.ToHandshakeMessage(&msg); | 223 server_config.ToHandshakeMessage(&msg); |
| 218 string error_details; | 224 string error_details; |
| 219 const QuicErrorCode error = | 225 const QuicErrorCode error = |
| 220 config_.ProcessPeerHello(msg, SERVER, &error_details); | 226 config_.ProcessPeerHello(msg, SERVER, &error_details); |
| 221 EXPECT_EQ(QUIC_INVALID_NEGOTIATED_VALUE, error); | 227 EXPECT_EQ(QUIC_INVALID_NEGOTIATED_VALUE, error); |
| 222 } | 228 } |
| 223 | 229 |
| 224 TEST_F(QuicConfigTest, NoOverLapInCGST) { | 230 TEST_F(QuicConfigTest, NoOverLapInCGST) { |
| 225 QuicConfig server_config; | 231 QuicConfig server_config; |
| 226 server_config.SetDefaults(); | 232 server_config.SetDefaults(); |
| 227 QuicTagVector cgst; | 233 QuicTagVector cgst; |
| 228 cgst.push_back(kINAR); | 234 cgst.push_back(kINAR); |
| 229 server_config.set_congestion_control(cgst, kINAR); | 235 server_config.set_congestion_feedback(cgst, kINAR); |
| 230 | 236 |
| 231 CryptoHandshakeMessage msg; | 237 CryptoHandshakeMessage msg; |
| 232 string error_details; | 238 string error_details; |
| 233 server_config.ToHandshakeMessage(&msg); | 239 server_config.ToHandshakeMessage(&msg); |
| 234 const QuicErrorCode error = | 240 const QuicErrorCode error = |
| 235 config_.ProcessPeerHello(msg, CLIENT, &error_details); | 241 config_.ProcessPeerHello(msg, CLIENT, &error_details); |
| 236 DVLOG(1) << QuicUtils::ErrorToString(error); | 242 DVLOG(1) << QuicUtils::ErrorToString(error); |
| 237 EXPECT_EQ(QUIC_CRYPTO_MESSAGE_PARAMETER_NO_OVERLAP, error); | 243 EXPECT_EQ(QUIC_CRYPTO_MESSAGE_PARAMETER_NO_OVERLAP, error); |
| 238 } | 244 } |
| 239 | 245 |
| 240 } // namespace | 246 } // namespace |
| 241 } // namespace test | 247 } // namespace test |
| 242 } // namespace net | 248 } // namespace net |
| OLD | NEW |