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 |