Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1152)

Side by Side Diff: net/quic/test_tools/quic_test_utils.cc

Issue 475113005: Refactoring: Create per-connection packet writers in QuicDispatcher. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add new files to net/BUILD.gn Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/quic/test_tools/quic_test_utils.h ('k') | net/tools/quic/end_to_end_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « net/quic/test_tools/quic_test_utils.h ('k') | net/tools/quic/end_to_end_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698