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 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 } | 214 } |
215 | 215 |
216 QuicAlarm* MockHelper::CreateAlarm(QuicAlarm::Delegate* delegate) { | 216 QuicAlarm* MockHelper::CreateAlarm(QuicAlarm::Delegate* delegate) { |
217 return new TestAlarm(delegate); | 217 return new TestAlarm(delegate); |
218 } | 218 } |
219 | 219 |
220 void MockHelper::AdvanceTime(QuicTime::Delta delta) { | 220 void MockHelper::AdvanceTime(QuicTime::Delta delta) { |
221 clock_.AdvanceTime(delta); | 221 clock_.AdvanceTime(delta); |
222 } | 222 } |
223 | 223 |
| 224 namespace { |
| 225 class NiceMockPacketWriterFactory |
| 226 : public QuicConnection::PacketWriterFactory { |
| 227 public: |
| 228 NiceMockPacketWriterFactory() {} |
| 229 virtual ~NiceMockPacketWriterFactory() {} |
| 230 |
| 231 virtual QuicPacketWriter* Create( |
| 232 QuicConnection* /*connection*/) const override { |
| 233 return new testing::NiceMock<MockPacketWriter>(); |
| 234 } |
| 235 |
| 236 private: |
| 237 DISALLOW_COPY_AND_ASSIGN(NiceMockPacketWriterFactory); |
| 238 }; |
| 239 } // namespace |
| 240 |
224 MockConnection::MockConnection(bool is_server) | 241 MockConnection::MockConnection(bool is_server) |
225 : QuicConnection(kTestConnectionId, | 242 : QuicConnection(kTestConnectionId, |
226 IPEndPoint(TestPeerIPAddress(), kTestPort), | 243 IPEndPoint(TestPeerIPAddress(), kTestPort), |
227 new testing::NiceMock<MockHelper>(), | 244 new testing::NiceMock<MockHelper>(), |
228 new testing::NiceMock<MockPacketWriter>(), | 245 NiceMockPacketWriterFactory(), |
229 true /* owns_writer */, | 246 /* owns_writer= */ true, |
230 is_server, QuicSupportedVersions()), | 247 is_server, QuicSupportedVersions()), |
231 helper_(helper()) { | 248 helper_(helper()) { |
232 } | 249 } |
233 | 250 |
234 MockConnection::MockConnection(IPEndPoint address, | 251 MockConnection::MockConnection(IPEndPoint address, |
235 bool is_server) | 252 bool is_server) |
236 : QuicConnection(kTestConnectionId, address, | 253 : QuicConnection(kTestConnectionId, address, |
237 new testing::NiceMock<MockHelper>(), | 254 new testing::NiceMock<MockHelper>(), |
238 new testing::NiceMock<MockPacketWriter>(), | 255 NiceMockPacketWriterFactory(), |
239 true /* owns_writer */, | 256 /* owns_writer= */ true, |
240 is_server, QuicSupportedVersions()), | 257 is_server, QuicSupportedVersions()), |
241 helper_(helper()) { | 258 helper_(helper()) { |
242 } | 259 } |
243 | 260 |
244 MockConnection::MockConnection(QuicConnectionId connection_id, | 261 MockConnection::MockConnection(QuicConnectionId connection_id, |
245 bool is_server) | 262 bool is_server) |
246 : QuicConnection(connection_id, | 263 : QuicConnection(connection_id, |
247 IPEndPoint(TestPeerIPAddress(), kTestPort), | 264 IPEndPoint(TestPeerIPAddress(), kTestPort), |
248 new testing::NiceMock<MockHelper>(), | 265 new testing::NiceMock<MockHelper>(), |
249 new testing::NiceMock<MockPacketWriter>(), | 266 NiceMockPacketWriterFactory(), |
250 true /* owns_writer */, | 267 /* owns_writer= */ true, |
251 is_server, QuicSupportedVersions()), | 268 is_server, QuicSupportedVersions()), |
252 helper_(helper()) { | 269 helper_(helper()) { |
253 } | 270 } |
254 | 271 |
255 MockConnection::MockConnection(bool is_server, | 272 MockConnection::MockConnection(bool is_server, |
256 const QuicVersionVector& supported_versions) | 273 const QuicVersionVector& supported_versions) |
257 : QuicConnection(kTestConnectionId, | 274 : QuicConnection(kTestConnectionId, |
258 IPEndPoint(TestPeerIPAddress(), kTestPort), | 275 IPEndPoint(TestPeerIPAddress(), kTestPort), |
259 new testing::NiceMock<MockHelper>(), | 276 new testing::NiceMock<MockHelper>(), |
260 new testing::NiceMock<MockPacketWriter>(), | 277 NiceMockPacketWriterFactory(), |
261 true /* owns_writer */, | 278 /* owns_writer= */ true, |
262 is_server, supported_versions), | 279 is_server, supported_versions), |
263 helper_(helper()) { | 280 helper_(helper()) { |
264 } | 281 } |
265 | 282 |
266 MockConnection::~MockConnection() { | 283 MockConnection::~MockConnection() { |
267 } | 284 } |
268 | 285 |
269 void MockConnection::AdvanceTime(QuicTime::Delta delta) { | 286 void MockConnection::AdvanceTime(QuicTime::Delta delta) { |
270 static_cast<MockHelper*>(helper())->AdvanceTime(delta); | 287 static_cast<MockHelper*>(helper())->AdvanceTime(delta); |
271 } | 288 } |
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
599 kInitialSessionFlowControlWindowForTest); | 616 kInitialSessionFlowControlWindowForTest); |
600 return config; | 617 return config; |
601 } | 618 } |
602 | 619 |
603 QuicVersionVector SupportedVersions(QuicVersion version) { | 620 QuicVersionVector SupportedVersions(QuicVersion version) { |
604 QuicVersionVector versions; | 621 QuicVersionVector versions; |
605 versions.push_back(version); | 622 versions.push_back(version); |
606 return versions; | 623 return versions; |
607 } | 624 } |
608 | 625 |
| 626 TestWriterFactory::TestWriterFactory() : current_writer_(NULL) {} |
| 627 TestWriterFactory::~TestWriterFactory() {} |
| 628 |
| 629 QuicPacketWriter* TestWriterFactory::Create(QuicServerPacketWriter* writer, |
| 630 QuicConnection* connection) { |
| 631 return new PerConnectionPacketWriter(this, writer, connection); |
| 632 } |
| 633 |
| 634 void TestWriterFactory::OnPacketSent(WriteResult result) { |
| 635 if (current_writer_ != NULL) { |
| 636 current_writer_->connection()->OnPacketSent(result); |
| 637 current_writer_ = NULL; |
| 638 } |
| 639 } |
| 640 |
| 641 void TestWriterFactory::Unregister(PerConnectionPacketWriter* writer) { |
| 642 if (current_writer_ == writer) { |
| 643 current_writer_ = NULL; |
| 644 } |
| 645 } |
| 646 |
| 647 TestWriterFactory::PerConnectionPacketWriter::PerConnectionPacketWriter( |
| 648 TestWriterFactory* factory, |
| 649 QuicServerPacketWriter* writer, |
| 650 QuicConnection* connection) |
| 651 : QuicPerConnectionPacketWriter(writer, connection), |
| 652 factory_(factory) { |
| 653 } |
| 654 |
| 655 TestWriterFactory::PerConnectionPacketWriter::~PerConnectionPacketWriter() { |
| 656 factory_->Unregister(this); |
| 657 } |
| 658 |
| 659 WriteResult TestWriterFactory::PerConnectionPacketWriter::WritePacket( |
| 660 const char* buffer, |
| 661 size_t buf_len, |
| 662 const IPAddressNumber& self_address, |
| 663 const IPEndPoint& peer_address) { |
| 664 // A DCHECK(factory_current_writer_ == NULL) would be wrong here -- this class |
| 665 // may be used in a setting where connection()->OnPacketSent() is called in a |
| 666 // different way, so TestWriterFactory::OnPacketSent might never be called. |
| 667 factory_->current_writer_ = this; |
| 668 return QuicPerConnectionPacketWriter::WritePacket(buffer, |
| 669 buf_len, |
| 670 self_address, |
| 671 peer_address); |
| 672 } |
| 673 |
609 } // namespace test | 674 } // namespace test |
610 } // namespace net | 675 } // namespace net |
OLD | NEW |