| 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 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 TEST_F(QuicConfigTest, ProcessClientHello) { | 74 TEST_F(QuicConfigTest, ProcessClientHello) { |
| 75 QuicConfig client_config; | 75 QuicConfig client_config; |
| 76 QuicTagVector cgst; | 76 QuicTagVector cgst; |
| 77 cgst.push_back(kQBIC); | 77 cgst.push_back(kQBIC); |
| 78 client_config.SetCongestionFeedback(cgst, kQBIC); | 78 client_config.SetCongestionFeedback(cgst, kQBIC); |
| 79 client_config.SetIdleConnectionStateLifetime( | 79 client_config.SetIdleConnectionStateLifetime( |
| 80 QuicTime::Delta::FromSeconds(2 * kMaximumIdleTimeoutSecs), | 80 QuicTime::Delta::FromSeconds(2 * kMaximumIdleTimeoutSecs), |
| 81 QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs)); | 81 QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs)); |
| 82 client_config.SetMaxStreamsPerConnection( | 82 client_config.SetMaxStreamsPerConnection( |
| 83 2 * kDefaultMaxStreamsPerConnection, kDefaultMaxStreamsPerConnection); | 83 2 * kDefaultMaxStreamsPerConnection, kDefaultMaxStreamsPerConnection); |
| 84 client_config.SetInitialRoundTripTimeUsToSend( | 84 client_config.SetInitialRoundTripTimeUsToSend(10 * kNumMicrosPerMilli); |
| 85 10 * base::Time::kMicrosecondsPerMillisecond); | |
| 86 client_config.SetInitialFlowControlWindowToSend( | 85 client_config.SetInitialFlowControlWindowToSend( |
| 87 2 * kInitialSessionFlowControlWindowForTest); | 86 2 * kInitialSessionFlowControlWindowForTest); |
| 88 client_config.SetInitialStreamFlowControlWindowToSend( | 87 client_config.SetInitialStreamFlowControlWindowToSend( |
| 89 2 * kInitialStreamFlowControlWindowForTest); | 88 2 * kInitialStreamFlowControlWindowForTest); |
| 90 client_config.SetInitialSessionFlowControlWindowToSend( | 89 client_config.SetInitialSessionFlowControlWindowToSend( |
| 91 2 * kInitialSessionFlowControlWindowForTest); | 90 2 * kInitialSessionFlowControlWindowForTest); |
| 92 client_config.SetSocketReceiveBufferToSend(kDefaultSocketReceiveBuffer); | 91 client_config.SetSocketReceiveBufferToSend(kDefaultSocketReceiveBuffer); |
| 93 QuicTagVector copt; | 92 QuicTagVector copt; |
| 94 copt.push_back(kTBBR); | 93 copt.push_back(kTBBR); |
| 95 copt.push_back(kFHDR); | 94 copt.push_back(kFHDR); |
| 96 client_config.SetConnectionOptionsToSend(copt); | 95 client_config.SetConnectionOptionsToSend(copt); |
| 97 CryptoHandshakeMessage msg; | 96 CryptoHandshakeMessage msg; |
| 98 client_config.ToHandshakeMessage(&msg); | 97 client_config.ToHandshakeMessage(&msg); |
| 99 string error_details; | 98 string error_details; |
| 100 const QuicErrorCode error = | 99 const QuicErrorCode error = |
| 101 config_.ProcessPeerHello(msg, CLIENT, &error_details); | 100 config_.ProcessPeerHello(msg, CLIENT, &error_details); |
| 102 EXPECT_EQ(QUIC_NO_ERROR, error); | 101 EXPECT_EQ(QUIC_NO_ERROR, error); |
| 103 EXPECT_TRUE(config_.negotiated()); | 102 EXPECT_TRUE(config_.negotiated()); |
| 104 EXPECT_EQ(kQBIC, config_.CongestionFeedback()); | 103 EXPECT_EQ(kQBIC, config_.CongestionFeedback()); |
| 105 EXPECT_EQ(QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs), | 104 EXPECT_EQ(QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs), |
| 106 config_.IdleConnectionStateLifetime()); | 105 config_.IdleConnectionStateLifetime()); |
| 107 EXPECT_EQ(kDefaultMaxStreamsPerConnection, | 106 EXPECT_EQ(kDefaultMaxStreamsPerConnection, |
| 108 config_.MaxStreamsPerConnection()); | 107 config_.MaxStreamsPerConnection()); |
| 109 EXPECT_EQ(QuicTime::Delta::FromSeconds(0), config_.KeepaliveTimeout()); | 108 EXPECT_EQ(QuicTime::Delta::FromSeconds(0), config_.KeepaliveTimeout()); |
| 110 EXPECT_EQ(10 * base::Time::kMicrosecondsPerMillisecond, | 109 EXPECT_EQ(10 * kNumMicrosPerMilli, config_.ReceivedInitialRoundTripTimeUs()); |
| 111 config_.ReceivedInitialRoundTripTimeUs()); | |
| 112 EXPECT_TRUE(config_.HasReceivedConnectionOptions()); | 110 EXPECT_TRUE(config_.HasReceivedConnectionOptions()); |
| 113 EXPECT_EQ(2u, config_.ReceivedConnectionOptions().size()); | 111 EXPECT_EQ(2u, config_.ReceivedConnectionOptions().size()); |
| 114 EXPECT_EQ(config_.ReceivedConnectionOptions()[0], kTBBR); | 112 EXPECT_EQ(config_.ReceivedConnectionOptions()[0], kTBBR); |
| 115 EXPECT_EQ(config_.ReceivedConnectionOptions()[1], kFHDR); | 113 EXPECT_EQ(config_.ReceivedConnectionOptions()[1], kFHDR); |
| 116 EXPECT_EQ(config_.ReceivedInitialFlowControlWindowBytes(), | 114 EXPECT_EQ(config_.ReceivedInitialFlowControlWindowBytes(), |
| 117 2 * kInitialSessionFlowControlWindowForTest); | 115 2 * kInitialSessionFlowControlWindowForTest); |
| 118 EXPECT_EQ(config_.ReceivedInitialStreamFlowControlWindowBytes(), | 116 EXPECT_EQ(config_.ReceivedInitialStreamFlowControlWindowBytes(), |
| 119 2 * kInitialStreamFlowControlWindowForTest); | 117 2 * kInitialStreamFlowControlWindowForTest); |
| 120 EXPECT_EQ(config_.ReceivedInitialSessionFlowControlWindowBytes(), | 118 EXPECT_EQ(config_.ReceivedInitialSessionFlowControlWindowBytes(), |
| 121 2 * kInitialSessionFlowControlWindowForTest); | 119 2 * kInitialSessionFlowControlWindowForTest); |
| 122 EXPECT_EQ(config_.ReceivedSocketReceiveBuffer(), | 120 EXPECT_EQ(config_.ReceivedSocketReceiveBuffer(), |
| 123 kDefaultSocketReceiveBuffer); | 121 kDefaultSocketReceiveBuffer); |
| 124 } | 122 } |
| 125 | 123 |
| 126 TEST_F(QuicConfigTest, ProcessServerHello) { | 124 TEST_F(QuicConfigTest, ProcessServerHello) { |
| 127 QuicConfig server_config; | 125 QuicConfig server_config; |
| 128 QuicTagVector cgst; | 126 QuicTagVector cgst; |
| 129 cgst.push_back(kQBIC); | 127 cgst.push_back(kQBIC); |
| 130 server_config.SetCongestionFeedback(cgst, kQBIC); | 128 server_config.SetCongestionFeedback(cgst, kQBIC); |
| 131 server_config.SetIdleConnectionStateLifetime( | 129 server_config.SetIdleConnectionStateLifetime( |
| 132 QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs / 2), | 130 QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs / 2), |
| 133 QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs / 2)); | 131 QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs / 2)); |
| 134 server_config.SetMaxStreamsPerConnection( | 132 server_config.SetMaxStreamsPerConnection( |
| 135 kDefaultMaxStreamsPerConnection / 2, | 133 kDefaultMaxStreamsPerConnection / 2, |
| 136 kDefaultMaxStreamsPerConnection / 2); | 134 kDefaultMaxStreamsPerConnection / 2); |
| 137 server_config.SetInitialCongestionWindowToSend(kDefaultInitialWindow / 2); | 135 server_config.SetInitialRoundTripTimeUsToSend(10 * kNumMicrosPerMilli); |
| 138 server_config.SetInitialRoundTripTimeUsToSend( | |
| 139 10 * base::Time::kMicrosecondsPerMillisecond); | |
| 140 server_config.SetInitialFlowControlWindowToSend( | 136 server_config.SetInitialFlowControlWindowToSend( |
| 141 2 * kInitialSessionFlowControlWindowForTest); | 137 2 * kInitialSessionFlowControlWindowForTest); |
| 142 server_config.SetInitialStreamFlowControlWindowToSend( | 138 server_config.SetInitialStreamFlowControlWindowToSend( |
| 143 2 * kInitialStreamFlowControlWindowForTest); | 139 2 * kInitialStreamFlowControlWindowForTest); |
| 144 server_config.SetInitialSessionFlowControlWindowToSend( | 140 server_config.SetInitialSessionFlowControlWindowToSend( |
| 145 2 * kInitialSessionFlowControlWindowForTest); | 141 2 * kInitialSessionFlowControlWindowForTest); |
| 146 server_config.SetSocketReceiveBufferToSend(kDefaultSocketReceiveBuffer); | 142 server_config.SetSocketReceiveBufferToSend(kDefaultSocketReceiveBuffer); |
| 147 CryptoHandshakeMessage msg; | 143 CryptoHandshakeMessage msg; |
| 148 server_config.ToHandshakeMessage(&msg); | 144 server_config.ToHandshakeMessage(&msg); |
| 149 string error_details; | 145 string error_details; |
| 150 const QuicErrorCode error = | 146 const QuicErrorCode error = |
| 151 config_.ProcessPeerHello(msg, SERVER, &error_details); | 147 config_.ProcessPeerHello(msg, SERVER, &error_details); |
| 152 EXPECT_EQ(QUIC_NO_ERROR, error); | 148 EXPECT_EQ(QUIC_NO_ERROR, error); |
| 153 EXPECT_TRUE(config_.negotiated()); | 149 EXPECT_TRUE(config_.negotiated()); |
| 154 EXPECT_EQ(kQBIC, config_.CongestionFeedback()); | 150 EXPECT_EQ(kQBIC, config_.CongestionFeedback()); |
| 155 EXPECT_EQ(QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs / 2), | 151 EXPECT_EQ(QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs / 2), |
| 156 config_.IdleConnectionStateLifetime()); | 152 config_.IdleConnectionStateLifetime()); |
| 157 EXPECT_EQ(kDefaultMaxStreamsPerConnection / 2, | 153 EXPECT_EQ(kDefaultMaxStreamsPerConnection / 2, |
| 158 config_.MaxStreamsPerConnection()); | 154 config_.MaxStreamsPerConnection()); |
| 159 EXPECT_EQ(kDefaultInitialWindow / 2, | |
| 160 config_.ReceivedInitialCongestionWindow()); | |
| 161 EXPECT_EQ(QuicTime::Delta::FromSeconds(0), config_.KeepaliveTimeout()); | 155 EXPECT_EQ(QuicTime::Delta::FromSeconds(0), config_.KeepaliveTimeout()); |
| 162 EXPECT_EQ(10 * base::Time::kMicrosecondsPerMillisecond, | 156 EXPECT_EQ(10 * kNumMicrosPerMilli, config_.ReceivedInitialRoundTripTimeUs()); |
| 163 config_.ReceivedInitialRoundTripTimeUs()); | |
| 164 EXPECT_EQ(config_.ReceivedInitialFlowControlWindowBytes(), | 157 EXPECT_EQ(config_.ReceivedInitialFlowControlWindowBytes(), |
| 165 2 * kInitialSessionFlowControlWindowForTest); | 158 2 * kInitialSessionFlowControlWindowForTest); |
| 166 EXPECT_EQ(config_.ReceivedInitialStreamFlowControlWindowBytes(), | 159 EXPECT_EQ(config_.ReceivedInitialStreamFlowControlWindowBytes(), |
| 167 2 * kInitialStreamFlowControlWindowForTest); | 160 2 * kInitialStreamFlowControlWindowForTest); |
| 168 EXPECT_EQ(config_.ReceivedInitialSessionFlowControlWindowBytes(), | 161 EXPECT_EQ(config_.ReceivedInitialSessionFlowControlWindowBytes(), |
| 169 2 * kInitialSessionFlowControlWindowForTest); | 162 2 * kInitialSessionFlowControlWindowForTest); |
| 170 EXPECT_EQ(config_.ReceivedSocketReceiveBuffer(), | 163 EXPECT_EQ(config_.ReceivedSocketReceiveBuffer(), |
| 171 kDefaultSocketReceiveBuffer); | 164 kDefaultSocketReceiveBuffer); |
| 172 } | 165 } |
| 173 | 166 |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 281 EXPECT_DFATAL(config.SetInitialFlowControlWindowToSend(kInvalidWindow), | 274 EXPECT_DFATAL(config.SetInitialFlowControlWindowToSend(kInvalidWindow), |
| 282 "Initial flow control receive window"); | 275 "Initial flow control receive window"); |
| 283 | 276 |
| 284 EXPECT_EQ(kDefaultFlowControlSendWindow, | 277 EXPECT_EQ(kDefaultFlowControlSendWindow, |
| 285 config.GetInitialFlowControlWindowToSend()); | 278 config.GetInitialFlowControlWindowToSend()); |
| 286 } | 279 } |
| 287 | 280 |
| 288 } // namespace | 281 } // namespace |
| 289 } // namespace test | 282 } // namespace test |
| 290 } // namespace net | 283 } // namespace net |
| OLD | NEW |