OLD | NEW |
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 "net/quic/test_tools/quic_test_utils.h" | 5 #include "net/quic/test_tools/quic_test_utils.h" |
6 | 6 |
7 #include "base/sha1.h" | 7 #include "base/sha1.h" |
8 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
10 #include "net/quic/crypto/crypto_framer.h" | 10 #include "net/quic/crypto/crypto_framer.h" |
(...skipping 15 matching lines...) Expand all Loading... |
26 using std::max; | 26 using std::max; |
27 using std::min; | 27 using std::min; |
28 using std::string; | 28 using std::string; |
29 using testing::Invoke; | 29 using testing::Invoke; |
30 using testing::_; | 30 using testing::_; |
31 | 31 |
32 namespace net { | 32 namespace net { |
33 namespace test { | 33 namespace test { |
34 namespace { | 34 namespace { |
35 | 35 |
36 // No-op alarm implementation used by MockHelper. | 36 // No-op alarm implementation used by MockConnectionHelper. |
37 class TestAlarm : public QuicAlarm { | 37 class TestAlarm : public QuicAlarm { |
38 public: | 38 public: |
39 explicit TestAlarm(QuicAlarm::Delegate* delegate) | 39 explicit TestAlarm(QuicAlarm::Delegate* delegate) |
40 : QuicAlarm(delegate) { | 40 : QuicAlarm(delegate) { |
41 } | 41 } |
42 | 42 |
43 void SetImpl() override {} | 43 void SetImpl() override {} |
44 void CancelImpl() override {} | 44 void CancelImpl() override {} |
45 }; | 45 }; |
46 | 46 |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
197 } | 197 } |
198 | 198 |
199 bool NoOpFramerVisitor::OnBlockedFrame(const QuicBlockedFrame& frame) { | 199 bool NoOpFramerVisitor::OnBlockedFrame(const QuicBlockedFrame& frame) { |
200 return true; | 200 return true; |
201 } | 201 } |
202 | 202 |
203 MockConnectionVisitor::MockConnectionVisitor() {} | 203 MockConnectionVisitor::MockConnectionVisitor() {} |
204 | 204 |
205 MockConnectionVisitor::~MockConnectionVisitor() {} | 205 MockConnectionVisitor::~MockConnectionVisitor() {} |
206 | 206 |
207 MockHelper::MockHelper() {} | 207 MockConnectionHelper::MockConnectionHelper() {} |
208 | 208 |
209 MockHelper::~MockHelper() {} | 209 MockConnectionHelper::~MockConnectionHelper() {} |
210 | 210 |
211 const QuicClock* MockHelper::GetClock() const { | 211 const QuicClock* MockConnectionHelper::GetClock() const { return &clock_; } |
212 return &clock_; | |
213 } | |
214 | 212 |
215 QuicRandom* MockHelper::GetRandomGenerator() { | 213 QuicRandom* MockConnectionHelper::GetRandomGenerator() { |
216 return &random_generator_; | 214 return &random_generator_; |
217 } | 215 } |
218 | 216 |
219 QuicAlarm* MockHelper::CreateAlarm(QuicAlarm::Delegate* delegate) { | 217 QuicAlarm* MockConnectionHelper::CreateAlarm(QuicAlarm::Delegate* delegate) { |
220 return new TestAlarm(delegate); | 218 return new TestAlarm(delegate); |
221 } | 219 } |
222 | 220 |
223 void MockHelper::AdvanceTime(QuicTime::Delta delta) { | 221 void MockConnectionHelper::AdvanceTime(QuicTime::Delta delta) { |
224 clock_.AdvanceTime(delta); | 222 clock_.AdvanceTime(delta); |
225 } | 223 } |
226 | 224 |
227 QuicPacketWriter* NiceMockPacketWriterFactory::Create( | 225 QuicPacketWriter* NiceMockPacketWriterFactory::Create( |
228 QuicConnection* /*connection*/) const { | 226 QuicConnection* /*connection*/) const { |
229 return new testing::NiceMock<MockPacketWriter>(); | 227 return new testing::NiceMock<MockPacketWriter>(); |
230 } | 228 } |
231 | 229 |
232 MockConnection::MockConnection(MockHelper* helper, Perspective perspective) | 230 MockConnection::MockConnection(MockConnectionHelper* helper, |
| 231 Perspective perspective) |
233 : MockConnection(kTestConnectionId, | 232 : MockConnection(kTestConnectionId, |
234 IPEndPoint(TestPeerIPAddress(), kTestPort), | 233 IPEndPoint(TestPeerIPAddress(), kTestPort), |
235 helper, | 234 helper, |
236 perspective, | 235 perspective, |
237 QuicSupportedVersions()) {} | 236 QuicSupportedVersions()) {} |
238 | 237 |
239 MockConnection::MockConnection(IPEndPoint address, | 238 MockConnection::MockConnection(IPEndPoint address, |
240 MockHelper* helper, | 239 MockConnectionHelper* helper, |
241 Perspective perspective) | 240 Perspective perspective) |
242 : MockConnection(kTestConnectionId, | 241 : MockConnection(kTestConnectionId, |
243 address, | 242 address, |
244 helper, | 243 helper, |
245 perspective, | 244 perspective, |
246 QuicSupportedVersions()) {} | 245 QuicSupportedVersions()) {} |
247 | 246 |
248 MockConnection::MockConnection(QuicConnectionId connection_id, | 247 MockConnection::MockConnection(QuicConnectionId connection_id, |
249 MockHelper* helper, | 248 MockConnectionHelper* helper, |
250 Perspective perspective) | 249 Perspective perspective) |
251 : MockConnection(connection_id, | 250 : MockConnection(connection_id, |
252 IPEndPoint(TestPeerIPAddress(), kTestPort), | 251 IPEndPoint(TestPeerIPAddress(), kTestPort), |
253 helper, | 252 helper, |
254 perspective, | 253 perspective, |
255 QuicSupportedVersions()) {} | 254 QuicSupportedVersions()) {} |
256 | 255 |
257 MockConnection::MockConnection(MockHelper* helper, | 256 MockConnection::MockConnection(MockConnectionHelper* helper, |
258 Perspective perspective, | 257 Perspective perspective, |
259 const QuicVersionVector& supported_versions) | 258 const QuicVersionVector& supported_versions) |
260 : MockConnection(kTestConnectionId, | 259 : MockConnection(kTestConnectionId, |
261 IPEndPoint(TestPeerIPAddress(), kTestPort), | 260 IPEndPoint(TestPeerIPAddress(), kTestPort), |
262 helper, | 261 helper, |
263 perspective, | 262 perspective, |
264 supported_versions) {} | 263 supported_versions) {} |
265 | 264 |
266 MockConnection::MockConnection(QuicConnectionId connection_id, | 265 MockConnection::MockConnection(QuicConnectionId connection_id, |
267 IPEndPoint address, | 266 IPEndPoint address, |
268 MockHelper* helper, | 267 MockConnectionHelper* helper, |
269 Perspective perspective, | 268 Perspective perspective, |
270 const QuicVersionVector& supported_versions) | 269 const QuicVersionVector& supported_versions) |
271 : QuicConnection(connection_id, | 270 : QuicConnection(connection_id, |
272 address, | 271 address, |
273 helper, | 272 helper, |
274 NiceMockPacketWriterFactory(), | 273 NiceMockPacketWriterFactory(), |
275 /* owns_writer= */ true, | 274 /* owns_writer= */ true, |
276 perspective, | 275 perspective, |
277 supported_versions) { | 276 supported_versions) { |
278 ON_CALL(*this, OnError(_)) | 277 ON_CALL(*this, OnError(_)) |
279 .WillByDefault( | 278 .WillByDefault( |
280 Invoke(this, &PacketSavingConnection::QuicConnection_OnError)); | 279 Invoke(this, &PacketSavingConnection::QuicConnection_OnError)); |
281 } | 280 } |
282 | 281 |
283 MockConnection::~MockConnection() {} | 282 MockConnection::~MockConnection() {} |
284 | 283 |
285 void MockConnection::AdvanceTime(QuicTime::Delta delta) { | 284 void MockConnection::AdvanceTime(QuicTime::Delta delta) { |
286 static_cast<MockHelper*>(helper())->AdvanceTime(delta); | 285 static_cast<MockConnectionHelper*>(helper())->AdvanceTime(delta); |
287 } | 286 } |
288 | 287 |
289 PacketSavingConnection::PacketSavingConnection(MockHelper* helper, | 288 PacketSavingConnection::PacketSavingConnection(MockConnectionHelper* helper, |
290 Perspective perspective) | 289 Perspective perspective) |
291 : MockConnection(helper, perspective) {} | 290 : MockConnection(helper, perspective) {} |
292 | 291 |
293 PacketSavingConnection::PacketSavingConnection( | 292 PacketSavingConnection::PacketSavingConnection( |
294 MockHelper* helper, | 293 MockConnectionHelper* helper, |
295 Perspective perspective, | 294 Perspective perspective, |
296 const QuicVersionVector& supported_versions) | 295 const QuicVersionVector& supported_versions) |
297 : MockConnection(helper, perspective, supported_versions) {} | 296 : MockConnection(helper, perspective, supported_versions) {} |
298 | 297 |
299 PacketSavingConnection::~PacketSavingConnection() { | 298 PacketSavingConnection::~PacketSavingConnection() { |
300 STLDeleteElements(&encrypted_packets_); | 299 STLDeleteElements(&encrypted_packets_); |
301 } | 300 } |
302 | 301 |
303 void PacketSavingConnection::SendOrQueuePacket(QueuedPacket packet) { | 302 void PacketSavingConnection::SendOrQueuePacket(QueuedPacket packet) { |
304 if (!packet.serialized_packet.packet->owns_buffer()) { | 303 if (!packet.serialized_packet.packet->owns_buffer()) { |
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
748 buffer, buf_len, self_address, peer_address); | 747 buffer, buf_len, self_address, peer_address); |
749 } | 748 } |
750 | 749 |
751 MockQuicConnectionDebugVisitor::MockQuicConnectionDebugVisitor() {} | 750 MockQuicConnectionDebugVisitor::MockQuicConnectionDebugVisitor() {} |
752 | 751 |
753 MockQuicConnectionDebugVisitor::~MockQuicConnectionDebugVisitor() {} | 752 MockQuicConnectionDebugVisitor::~MockQuicConnectionDebugVisitor() {} |
754 | 753 |
755 void CreateClientSessionForTest(QuicServerId server_id, | 754 void CreateClientSessionForTest(QuicServerId server_id, |
756 bool supports_stateless_rejects, | 755 bool supports_stateless_rejects, |
757 QuicTime::Delta connection_start_time, | 756 QuicTime::Delta connection_start_time, |
758 MockHelper* helper, | 757 MockConnectionHelper* helper, |
759 QuicCryptoClientConfig* crypto_client_config, | 758 QuicCryptoClientConfig* crypto_client_config, |
760 PacketSavingConnection** client_connection, | 759 PacketSavingConnection** client_connection, |
761 TestQuicSpdyClientSession** client_session) { | 760 TestQuicSpdyClientSession** client_session) { |
762 CHECK(crypto_client_config); | 761 CHECK(crypto_client_config); |
763 CHECK(client_connection); | 762 CHECK(client_connection); |
764 CHECK(client_session); | 763 CHECK(client_session); |
765 CHECK(!connection_start_time.IsZero()) | 764 CHECK(!connection_start_time.IsZero()) |
766 << "Connections must start at non-zero times, otherwise the " | 765 << "Connections must start at non-zero times, otherwise the " |
767 << "strike-register will be unhappy."; | 766 << "strike-register will be unhappy."; |
768 | 767 |
769 QuicConfig config = supports_stateless_rejects | 768 QuicConfig config = supports_stateless_rejects |
770 ? DefaultQuicConfigStatelessRejects() | 769 ? DefaultQuicConfigStatelessRejects() |
771 : DefaultQuicConfig(); | 770 : DefaultQuicConfig(); |
772 *client_connection = | 771 *client_connection = |
773 new PacketSavingConnection(helper, Perspective::IS_CLIENT); | 772 new PacketSavingConnection(helper, Perspective::IS_CLIENT); |
774 *client_session = new TestQuicSpdyClientSession( | 773 *client_session = new TestQuicSpdyClientSession( |
775 *client_connection, config, server_id, crypto_client_config); | 774 *client_connection, config, server_id, crypto_client_config); |
776 (*client_connection)->AdvanceTime(connection_start_time); | 775 (*client_connection)->AdvanceTime(connection_start_time); |
777 } | 776 } |
778 | 777 |
779 void CreateServerSessionForTest(QuicServerId server_id, | 778 void CreateServerSessionForTest(QuicServerId server_id, |
780 QuicTime::Delta connection_start_time, | 779 QuicTime::Delta connection_start_time, |
781 MockHelper* helper, | 780 MockConnectionHelper* helper, |
782 QuicCryptoServerConfig* server_crypto_config, | 781 QuicCryptoServerConfig* server_crypto_config, |
783 PacketSavingConnection** server_connection, | 782 PacketSavingConnection** server_connection, |
784 TestQuicSpdyServerSession** server_session) { | 783 TestQuicSpdyServerSession** server_session) { |
785 CHECK(server_crypto_config); | 784 CHECK(server_crypto_config); |
786 CHECK(server_connection); | 785 CHECK(server_connection); |
787 CHECK(server_session); | 786 CHECK(server_session); |
788 CHECK(!connection_start_time.IsZero()) | 787 CHECK(!connection_start_time.IsZero()) |
789 << "Connections must start at non-zero times, otherwise the " | 788 << "Connections must start at non-zero times, otherwise the " |
790 << "strike-register will be unhappy."; | 789 << "strike-register will be unhappy."; |
791 | 790 |
792 *server_connection = | 791 *server_connection = |
793 new PacketSavingConnection(helper, Perspective::IS_SERVER); | 792 new PacketSavingConnection(helper, Perspective::IS_SERVER); |
794 *server_session = new TestQuicSpdyServerSession( | 793 *server_session = new TestQuicSpdyServerSession( |
795 *server_connection, DefaultQuicConfig(), server_crypto_config); | 794 *server_connection, DefaultQuicConfig(), server_crypto_config); |
796 | 795 |
797 // We advance the clock initially because the default time is zero and the | 796 // We advance the clock initially because the default time is zero and the |
798 // strike register worries that we've just overflowed a uint32 time. | 797 // strike register worries that we've just overflowed a uint32 time. |
799 (*server_connection)->AdvanceTime(connection_start_time); | 798 (*server_connection)->AdvanceTime(connection_start_time); |
800 } | 799 } |
801 | 800 |
802 QuicStreamId QuicClientDataStreamId(int i) { | 801 QuicStreamId QuicClientDataStreamId(int i) { |
803 return kClientDataStreamId1 + 2 * i; | 802 return kClientDataStreamId1 + 2 * i; |
804 } | 803 } |
805 | 804 |
806 } // namespace test | 805 } // namespace test |
807 } // namespace net | 806 } // namespace net |
OLD | NEW |