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

Side by Side Diff: net/quic/quic_connection_test.cc

Issue 1009543004: Create a Perspective enum to use instead of a bool is_server to improve (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added NET_EXPORT_PRIVATE to fix compiler error Created 5 years, 9 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
« no previous file with comments | « net/quic/quic_connection_logger_unittest.cc ('k') | net/quic/quic_crypto_client_stream.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/quic_connection.h" 5 #include "net/quic/quic_connection.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 } 324 }
325 325
326 const QuicVersionNegotiationPacket* version_negotiation_packet() { 326 const QuicVersionNegotiationPacket* version_negotiation_packet() {
327 return framer_.version_negotiation_packet(); 327 return framer_.version_negotiation_packet();
328 } 328 }
329 329
330 void set_is_write_blocked_data_buffered(bool buffered) { 330 void set_is_write_blocked_data_buffered(bool buffered) {
331 is_write_blocked_data_buffered_ = buffered; 331 is_write_blocked_data_buffered_ = buffered;
332 } 332 }
333 333
334 void set_is_server(bool is_server) { 334 void set_perspective(Perspective perspective) {
335 // We invert is_server here, because the framer needs to parse packets 335 // We invert perspective here, because the framer needs to parse packets
336 // we send. 336 // we send.
337 QuicFramerPeer::SetIsServer(framer_.framer(), !is_server); 337 perspective = perspective == Perspective::IS_CLIENT
338 ? Perspective::IS_SERVER
339 : Perspective::IS_CLIENT;
340 QuicFramerPeer::SetPerspective(framer_.framer(), perspective);
338 } 341 }
339 342
340 // final_bytes_of_last_packet_ returns the last four bytes of the previous 343 // final_bytes_of_last_packet_ returns the last four bytes of the previous
341 // packet as a little-endian, uint32. This is intended to be used with a 344 // packet as a little-endian, uint32. This is intended to be used with a
342 // TaggingEncrypter so that tests can determine which encrypter was used for 345 // TaggingEncrypter so that tests can determine which encrypter was used for
343 // a given packet. 346 // a given packet.
344 uint32 final_bytes_of_last_packet() { return final_bytes_of_last_packet_; } 347 uint32 final_bytes_of_last_packet() { return final_bytes_of_last_packet_; }
345 348
346 // Returns the final bytes of the second to last packet. 349 // Returns the final bytes of the second to last packet.
347 uint32 final_bytes_of_previous_packet() { 350 uint32 final_bytes_of_previous_packet() {
(...skipping 30 matching lines...) Expand all
378 381
379 DISALLOW_COPY_AND_ASSIGN(TestPacketWriter); 382 DISALLOW_COPY_AND_ASSIGN(TestPacketWriter);
380 }; 383 };
381 384
382 class TestConnection : public QuicConnection { 385 class TestConnection : public QuicConnection {
383 public: 386 public:
384 TestConnection(QuicConnectionId connection_id, 387 TestConnection(QuicConnectionId connection_id,
385 IPEndPoint address, 388 IPEndPoint address,
386 TestConnectionHelper* helper, 389 TestConnectionHelper* helper,
387 const PacketWriterFactory& factory, 390 const PacketWriterFactory& factory,
388 bool is_server, 391 Perspective perspective,
389 QuicVersion version) 392 QuicVersion version)
390 : QuicConnection(connection_id, 393 : QuicConnection(connection_id,
391 address, 394 address,
392 helper, 395 helper,
393 factory, 396 factory,
394 /* owns_writer= */ false, 397 /* owns_writer= */ false,
395 is_server, 398 perspective,
396 /* is_secure= */ false, 399 /* is_secure= */ false,
397 SupportedVersions(version)) { 400 SupportedVersions(version)) {
398 // Disable tail loss probes for most tests. 401 // Disable tail loss probes for most tests.
399 QuicSentPacketManagerPeer::SetMaxTailLossProbes( 402 QuicSentPacketManagerPeer::SetMaxTailLossProbes(
400 QuicConnectionPeer::GetSentPacketManager(this), 0); 403 QuicConnectionPeer::GetSentPacketManager(this), 0);
401 writer()->set_is_server(is_server); 404 writer()->set_perspective(perspective);
402 } 405 }
403 406
404 void SendAck() { 407 void SendAck() {
405 QuicConnectionPeer::SendAck(this); 408 QuicConnectionPeer::SendAck(this);
406 } 409 }
407 410
408 void SetSendAlgorithm(SendAlgorithmInterface* send_algorithm) { 411 void SetSendAlgorithm(SendAlgorithmInterface* send_algorithm) {
409 QuicConnectionPeer::SetSendAlgorithm(this, send_algorithm); 412 QuicConnectionPeer::SetSendAlgorithm(this, send_algorithm);
410 } 413 }
411 414
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 497
495 // The crypto stream has special semantics so that it is not blocked by a 498 // The crypto stream has special semantics so that it is not blocked by a
496 // congestion window limitation, and also so that it gets put into a separate 499 // congestion window limitation, and also so that it gets put into a separate
497 // packet (so that it is easier to reason about a crypto frame not being 500 // packet (so that it is easier to reason about a crypto frame not being
498 // split needlessly across packet boundaries). As a result, we have separate 501 // split needlessly across packet boundaries). As a result, we have separate
499 // tests for some cases for this stream. 502 // tests for some cases for this stream.
500 QuicConsumedData SendCryptoStreamData() { 503 QuicConsumedData SendCryptoStreamData() {
501 return SendStreamDataWithString(kCryptoStreamId, "chlo", 0, !kFin, nullptr); 504 return SendStreamDataWithString(kCryptoStreamId, "chlo", 0, !kFin, nullptr);
502 } 505 }
503 506
504 bool is_server() {
505 return QuicConnectionPeer::IsServer(this);
506 }
507
508 void set_version(QuicVersion version) { 507 void set_version(QuicVersion version) {
509 QuicConnectionPeer::GetFramer(this)->set_version(version); 508 QuicConnectionPeer::GetFramer(this)->set_version(version);
510 } 509 }
511 510
512 void SetSupportedVersions(const QuicVersionVector& versions) { 511 void SetSupportedVersions(const QuicVersionVector& versions) {
513 QuicConnectionPeer::GetFramer(this)->SetSupportedVersions(versions); 512 QuicConnectionPeer::GetFramer(this)->SetSupportedVersions(versions);
514 writer()->SetSupportedVersions(versions); 513 writer()->SetSupportedVersions(versions);
515 } 514 }
516 515
517 void set_is_server(bool is_server) { 516 void set_perspective(Perspective perspective) {
518 writer()->set_is_server(is_server); 517 writer()->set_perspective(perspective);
519 QuicConnectionPeer::SetIsServer(this, is_server); 518 QuicConnectionPeer::SetPerspective(this, perspective);
520 } 519 }
521 520
522 TestConnectionHelper::TestAlarm* GetAckAlarm() { 521 TestConnectionHelper::TestAlarm* GetAckAlarm() {
523 return reinterpret_cast<TestConnectionHelper::TestAlarm*>( 522 return reinterpret_cast<TestConnectionHelper::TestAlarm*>(
524 QuicConnectionPeer::GetAckAlarm(this)); 523 QuicConnectionPeer::GetAckAlarm(this));
525 } 524 }
526 525
527 TestConnectionHelper::TestAlarm* GetPingAlarm() { 526 TestConnectionHelper::TestAlarm* GetPingAlarm() {
528 return reinterpret_cast<TestConnectionHelper::TestAlarm*>( 527 return reinterpret_cast<TestConnectionHelper::TestAlarm*>(
529 QuicConnectionPeer::GetPingAlarm(this)); 528 QuicConnectionPeer::GetPingAlarm(this));
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
589 } 588 }
590 ~MockPacketWriterFactory() override {} 589 ~MockPacketWriterFactory() override {}
591 590
592 MOCK_CONST_METHOD1(Create, QuicPacketWriter*(QuicConnection* connection)); 591 MOCK_CONST_METHOD1(Create, QuicPacketWriter*(QuicConnection* connection));
593 }; 592 };
594 593
595 class QuicConnectionTest : public ::testing::TestWithParam<QuicVersion> { 594 class QuicConnectionTest : public ::testing::TestWithParam<QuicVersion> {
596 protected: 595 protected:
597 QuicConnectionTest() 596 QuicConnectionTest()
598 : connection_id_(42), 597 : connection_id_(42),
599 framer_(SupportedVersions(version()), QuicTime::Zero(), false), 598 framer_(SupportedVersions(version()),
599 QuicTime::Zero(),
600 Perspective::IS_CLIENT),
600 peer_creator_(connection_id_, &framer_, &random_generator_), 601 peer_creator_(connection_id_, &framer_, &random_generator_),
601 send_algorithm_(new StrictMock<MockSendAlgorithm>), 602 send_algorithm_(new StrictMock<MockSendAlgorithm>),
602 loss_algorithm_(new MockLossAlgorithm()), 603 loss_algorithm_(new MockLossAlgorithm()),
603 helper_(new TestConnectionHelper(&clock_, &random_generator_)), 604 helper_(new TestConnectionHelper(&clock_, &random_generator_)),
604 writer_(new TestPacketWriter(version(), &clock_)), 605 writer_(new TestPacketWriter(version(), &clock_)),
605 factory_(writer_.get()), 606 factory_(writer_.get()),
606 connection_(connection_id_, 607 connection_(connection_id_,
607 IPEndPoint(), 608 IPEndPoint(),
608 helper_.get(), 609 helper_.get(),
609 factory_, 610 factory_,
610 false, 611 Perspective::IS_CLIENT,
611 version()), 612 version()),
612 creator_(QuicConnectionPeer::GetPacketCreator(&connection_)), 613 creator_(QuicConnectionPeer::GetPacketCreator(&connection_)),
613 generator_(QuicConnectionPeer::GetPacketGenerator(&connection_)), 614 generator_(QuicConnectionPeer::GetPacketGenerator(&connection_)),
614 manager_(QuicConnectionPeer::GetSentPacketManager(&connection_)), 615 manager_(QuicConnectionPeer::GetSentPacketManager(&connection_)),
615 frame1_(1, false, 0, MakeIOVector(data1)), 616 frame1_(1, false, 0, MakeIOVector(data1)),
616 frame2_(1, false, 3, MakeIOVector(data2)), 617 frame2_(1, false, 3, MakeIOVector(data2)),
617 sequence_number_length_(PACKET_6BYTE_SEQUENCE_NUMBER), 618 sequence_number_length_(PACKET_6BYTE_SEQUENCE_NUMBER),
618 connection_id_length_(PACKET_8BYTE_CONNECTION_ID) { 619 connection_id_length_(PACKET_8BYTE_CONNECTION_ID) {
619 connection_.set_visitor(&visitor_); 620 connection_.set_visitor(&visitor_);
620 connection_.SetSendAlgorithm(send_algorithm_); 621 connection_.SetSendAlgorithm(send_algorithm_);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
676 } 677 }
677 678
678 void ProcessPacket(QuicPacketSequenceNumber number) { 679 void ProcessPacket(QuicPacketSequenceNumber number) {
679 EXPECT_CALL(visitor_, OnStreamFrames(_)).Times(1); 680 EXPECT_CALL(visitor_, OnStreamFrames(_)).Times(1);
680 ProcessDataPacket(number, 0, !kEntropyFlag); 681 ProcessDataPacket(number, 0, !kEntropyFlag);
681 } 682 }
682 683
683 QuicPacketEntropyHash ProcessFramePacket(QuicFrame frame) { 684 QuicPacketEntropyHash ProcessFramePacket(QuicFrame frame) {
684 QuicFrames frames; 685 QuicFrames frames;
685 frames.push_back(QuicFrame(frame)); 686 frames.push_back(QuicFrame(frame));
686 QuicPacketCreatorPeer::SetSendVersionInPacket(&peer_creator_, 687 QuicPacketCreatorPeer::SetSendVersionInPacket(
687 connection_.is_server()); 688 &peer_creator_, connection_.perspective() == Perspective::IS_SERVER);
689
688 SerializedPacket serialized_packet = 690 SerializedPacket serialized_packet =
689 peer_creator_.SerializeAllFrames(frames); 691 peer_creator_.SerializeAllFrames(frames);
690 scoped_ptr<QuicEncryptedPacket> encrypted(serialized_packet.packet); 692 scoped_ptr<QuicEncryptedPacket> encrypted(serialized_packet.packet);
691 connection_.ProcessUdpPacket(IPEndPoint(), IPEndPoint(), *encrypted); 693 connection_.ProcessUdpPacket(IPEndPoint(), IPEndPoint(), *encrypted);
692 return serialized_packet.entropy_hash; 694 return serialized_packet.entropy_hash;
693 } 695 }
694 696
695 size_t ProcessDataPacket(QuicPacketSequenceNumber number, 697 size_t ProcessDataPacket(QuicPacketSequenceNumber number,
696 QuicFecGroupNumber fec_group, 698 QuicFecGroupNumber fec_group,
697 bool entropy_flag) { 699 bool entropy_flag) {
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
972 private: 974 private:
973 DISALLOW_COPY_AND_ASSIGN(QuicConnectionTest); 975 DISALLOW_COPY_AND_ASSIGN(QuicConnectionTest);
974 }; 976 };
975 977
976 // Run all end to end tests with all supported versions. 978 // Run all end to end tests with all supported versions.
977 INSTANTIATE_TEST_CASE_P(SupportedVersion, 979 INSTANTIATE_TEST_CASE_P(SupportedVersion,
978 QuicConnectionTest, 980 QuicConnectionTest,
979 ::testing::ValuesIn(QuicSupportedVersions())); 981 ::testing::ValuesIn(QuicSupportedVersions()));
980 982
981 TEST_P(QuicConnectionTest, MaxPacketSize) { 983 TEST_P(QuicConnectionTest, MaxPacketSize) {
982 EXPECT_FALSE(connection_.is_server()); 984 EXPECT_EQ(Perspective::IS_CLIENT, connection_.perspective());
983 EXPECT_EQ(1350u, connection_.max_packet_length()); 985 EXPECT_EQ(1350u, connection_.max_packet_length());
984 } 986 }
985 987
986 TEST_P(QuicConnectionTest, SmallerServerMaxPacketSize) { 988 TEST_P(QuicConnectionTest, SmallerServerMaxPacketSize) {
987 ValueRestore<bool> old_flag(&FLAGS_quic_small_default_packet_size, true); 989 ValueRestore<bool> old_flag(&FLAGS_quic_small_default_packet_size, true);
988 QuicConnectionId connection_id = 42; 990 QuicConnectionId connection_id = 42;
989 bool kIsServer = true;
990 TestConnection connection(connection_id, IPEndPoint(), helper_.get(), 991 TestConnection connection(connection_id, IPEndPoint(), helper_.get(),
991 factory_, kIsServer, version()); 992 factory_, Perspective::IS_SERVER, version());
992 EXPECT_TRUE(connection.is_server()); 993 EXPECT_EQ(Perspective::IS_SERVER, connection.perspective());
993 EXPECT_EQ(1000u, connection.max_packet_length()); 994 EXPECT_EQ(1000u, connection.max_packet_length());
994 } 995 }
995 996
996 TEST_P(QuicConnectionTest, ServerMaxPacketSize) { 997 TEST_P(QuicConnectionTest, ServerMaxPacketSize) {
997 ValueRestore<bool> old_flag(&FLAGS_quic_small_default_packet_size, false); 998 ValueRestore<bool> old_flag(&FLAGS_quic_small_default_packet_size, false);
998 QuicConnectionId connection_id = 42; 999 QuicConnectionId connection_id = 42;
999 bool kIsServer = true;
1000 TestConnection connection(connection_id, IPEndPoint(), helper_.get(), 1000 TestConnection connection(connection_id, IPEndPoint(), helper_.get(),
1001 factory_, kIsServer, version()); 1001 factory_, Perspective::IS_SERVER, version());
1002 EXPECT_TRUE(connection.is_server()); 1002 EXPECT_EQ(Perspective::IS_SERVER, connection.perspective());
1003 EXPECT_EQ(1350u, connection.max_packet_length()); 1003 EXPECT_EQ(1350u, connection.max_packet_length());
1004 } 1004 }
1005 1005
1006 TEST_P(QuicConnectionTest, IncreaseServerMaxPacketSize) { 1006 TEST_P(QuicConnectionTest, IncreaseServerMaxPacketSize) {
1007 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 1007 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
1008 1008
1009 connection_.set_is_server(true); 1009 connection_.set_perspective(Perspective::IS_SERVER);
1010 connection_.set_max_packet_length(1000); 1010 connection_.set_max_packet_length(1000);
1011 1011
1012 QuicPacketHeader header; 1012 QuicPacketHeader header;
1013 header.public_header.connection_id = connection_id_; 1013 header.public_header.connection_id = connection_id_;
1014 header.public_header.reset_flag = false; 1014 header.public_header.reset_flag = false;
1015 header.public_header.version_flag = true; 1015 header.public_header.version_flag = true;
1016 header.entropy_flag = false; 1016 header.entropy_flag = false;
1017 header.fec_flag = false; 1017 header.fec_flag = false;
1018 header.packet_sequence_number = 1; 1018 header.packet_sequence_number = 1;
1019 header.fec_group = 0; 1019 header.fec_group = 0;
(...skipping 2272 matching lines...) Expand 10 before | Expand all | Expand 10 after
3292 3292
3293 TEST_P(QuicConnectionTest, SendDelayedAckOnHandshakeConfirmed) { 3293 TEST_P(QuicConnectionTest, SendDelayedAckOnHandshakeConfirmed) {
3294 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 3294 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
3295 ProcessPacket(1); 3295 ProcessPacket(1);
3296 // Check that ack is sent and that delayed ack alarm is set. 3296 // Check that ack is sent and that delayed ack alarm is set.
3297 EXPECT_TRUE(connection_.GetAckAlarm()->IsSet()); 3297 EXPECT_TRUE(connection_.GetAckAlarm()->IsSet());
3298 QuicTime ack_time = clock_.ApproximateNow().Add(DefaultDelayedAckTime()); 3298 QuicTime ack_time = clock_.ApproximateNow().Add(DefaultDelayedAckTime());
3299 EXPECT_EQ(ack_time, connection_.GetAckAlarm()->deadline()); 3299 EXPECT_EQ(ack_time, connection_.GetAckAlarm()->deadline());
3300 3300
3301 // Completing the handshake as the server does nothing. 3301 // Completing the handshake as the server does nothing.
3302 QuicConnectionPeer::SetIsServer(&connection_, true); 3302 QuicConnectionPeer::SetPerspective(&connection_, Perspective::IS_SERVER);
3303 connection_.OnHandshakeComplete(); 3303 connection_.OnHandshakeComplete();
3304 EXPECT_TRUE(connection_.GetAckAlarm()->IsSet()); 3304 EXPECT_TRUE(connection_.GetAckAlarm()->IsSet());
3305 EXPECT_EQ(ack_time, connection_.GetAckAlarm()->deadline()); 3305 EXPECT_EQ(ack_time, connection_.GetAckAlarm()->deadline());
3306 3306
3307 // Complete the handshake as the client decreases the delayed ack time to 0ms. 3307 // Complete the handshake as the client decreases the delayed ack time to 0ms.
3308 QuicConnectionPeer::SetIsServer(&connection_, false); 3308 QuicConnectionPeer::SetPerspective(&connection_, Perspective::IS_CLIENT);
3309 connection_.OnHandshakeComplete(); 3309 connection_.OnHandshakeComplete();
3310 EXPECT_TRUE(connection_.GetAckAlarm()->IsSet()); 3310 EXPECT_TRUE(connection_.GetAckAlarm()->IsSet());
3311 EXPECT_EQ(clock_.ApproximateNow(), connection_.GetAckAlarm()->deadline()); 3311 EXPECT_EQ(clock_.ApproximateNow(), connection_.GetAckAlarm()->deadline());
3312 } 3312 }
3313 3313
3314 TEST_P(QuicConnectionTest, SendDelayedAckOnSecondPacket) { 3314 TEST_P(QuicConnectionTest, SendDelayedAckOnSecondPacket) {
3315 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 3315 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
3316 ProcessPacket(1); 3316 ProcessPacket(1);
3317 ProcessPacket(2); 3317 ProcessPacket(2);
3318 // Check that ack is sent and that delayed ack alarm is reset. 3318 // Check that ack is sent and that delayed ack alarm is reset.
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
3639 3639
3640 QuicFrames frames; 3640 QuicFrames frames;
3641 QuicFrame frame(&frame1_); 3641 QuicFrame frame(&frame1_);
3642 frames.push_back(frame); 3642 frames.push_back(frame);
3643 scoped_ptr<QuicPacket> packet( 3643 scoped_ptr<QuicPacket> packet(
3644 BuildUnsizedDataPacket(&framer_, header, frames)); 3644 BuildUnsizedDataPacket(&framer_, header, frames));
3645 scoped_ptr<QuicEncryptedPacket> encrypted( 3645 scoped_ptr<QuicEncryptedPacket> encrypted(
3646 framer_.EncryptPacket(ENCRYPTION_NONE, 12, *packet)); 3646 framer_.EncryptPacket(ENCRYPTION_NONE, 12, *packet));
3647 3647
3648 framer_.set_version(version()); 3648 framer_.set_version(version());
3649 connection_.set_is_server(true); 3649 connection_.set_perspective(Perspective::IS_SERVER);
3650 connection_.ProcessUdpPacket(IPEndPoint(), IPEndPoint(), *encrypted); 3650 connection_.ProcessUdpPacket(IPEndPoint(), IPEndPoint(), *encrypted);
3651 EXPECT_TRUE(writer_->version_negotiation_packet() != nullptr); 3651 EXPECT_TRUE(writer_->version_negotiation_packet() != nullptr);
3652 3652
3653 size_t num_versions = arraysize(kSupportedQuicVersions); 3653 size_t num_versions = arraysize(kSupportedQuicVersions);
3654 ASSERT_EQ(num_versions, 3654 ASSERT_EQ(num_versions,
3655 writer_->version_negotiation_packet()->versions.size()); 3655 writer_->version_negotiation_packet()->versions.size());
3656 3656
3657 // We expect all versions in kSupportedQuicVersions to be 3657 // We expect all versions in kSupportedQuicVersions to be
3658 // included in the packet. 3658 // included in the packet.
3659 for (size_t i = 0; i < num_versions; ++i) { 3659 for (size_t i = 0; i < num_versions; ++i) {
(...skipping 17 matching lines...) Expand all
3677 3677
3678 QuicFrames frames; 3678 QuicFrames frames;
3679 QuicFrame frame(&frame1_); 3679 QuicFrame frame(&frame1_);
3680 frames.push_back(frame); 3680 frames.push_back(frame);
3681 scoped_ptr<QuicPacket> packet( 3681 scoped_ptr<QuicPacket> packet(
3682 BuildUnsizedDataPacket(&framer_, header, frames)); 3682 BuildUnsizedDataPacket(&framer_, header, frames));
3683 scoped_ptr<QuicEncryptedPacket> encrypted( 3683 scoped_ptr<QuicEncryptedPacket> encrypted(
3684 framer_.EncryptPacket(ENCRYPTION_NONE, 12, *packet)); 3684 framer_.EncryptPacket(ENCRYPTION_NONE, 12, *packet));
3685 3685
3686 framer_.set_version(version()); 3686 framer_.set_version(version());
3687 connection_.set_is_server(true); 3687 connection_.set_perspective(Perspective::IS_SERVER);
3688 BlockOnNextWrite(); 3688 BlockOnNextWrite();
3689 connection_.ProcessUdpPacket(IPEndPoint(), IPEndPoint(), *encrypted); 3689 connection_.ProcessUdpPacket(IPEndPoint(), IPEndPoint(), *encrypted);
3690 EXPECT_EQ(0u, writer_->last_packet_size()); 3690 EXPECT_EQ(0u, writer_->last_packet_size());
3691 EXPECT_TRUE(connection_.HasQueuedData()); 3691 EXPECT_TRUE(connection_.HasQueuedData());
3692 3692
3693 writer_->SetWritable(); 3693 writer_->SetWritable();
3694 connection_.OnCanWrite(); 3694 connection_.OnCanWrite();
3695 EXPECT_TRUE(writer_->version_negotiation_packet() != nullptr); 3695 EXPECT_TRUE(writer_->version_negotiation_packet() != nullptr);
3696 3696
3697 size_t num_versions = arraysize(kSupportedQuicVersions); 3697 size_t num_versions = arraysize(kSupportedQuicVersions);
(...skipping 24 matching lines...) Expand all
3722 3722
3723 QuicFrames frames; 3723 QuicFrames frames;
3724 QuicFrame frame(&frame1_); 3724 QuicFrame frame(&frame1_);
3725 frames.push_back(frame); 3725 frames.push_back(frame);
3726 scoped_ptr<QuicPacket> packet( 3726 scoped_ptr<QuicPacket> packet(
3727 BuildUnsizedDataPacket(&framer_, header, frames)); 3727 BuildUnsizedDataPacket(&framer_, header, frames));
3728 scoped_ptr<QuicEncryptedPacket> encrypted( 3728 scoped_ptr<QuicEncryptedPacket> encrypted(
3729 framer_.EncryptPacket(ENCRYPTION_NONE, 12, *packet)); 3729 framer_.EncryptPacket(ENCRYPTION_NONE, 12, *packet));
3730 3730
3731 framer_.set_version(version()); 3731 framer_.set_version(version());
3732 connection_.set_is_server(true); 3732 connection_.set_perspective(Perspective::IS_SERVER);
3733 BlockOnNextWrite(); 3733 BlockOnNextWrite();
3734 writer_->set_is_write_blocked_data_buffered(true); 3734 writer_->set_is_write_blocked_data_buffered(true);
3735 connection_.ProcessUdpPacket(IPEndPoint(), IPEndPoint(), *encrypted); 3735 connection_.ProcessUdpPacket(IPEndPoint(), IPEndPoint(), *encrypted);
3736 EXPECT_EQ(0u, writer_->last_packet_size()); 3736 EXPECT_EQ(0u, writer_->last_packet_size());
3737 EXPECT_FALSE(connection_.HasQueuedData()); 3737 EXPECT_FALSE(connection_.HasQueuedData());
3738 } 3738 }
3739 3739
3740 TEST_P(QuicConnectionTest, ClientHandlesVersionNegotiation) { 3740 TEST_P(QuicConnectionTest, ClientHandlesVersionNegotiation) {
3741 // Start out with some unsupported version. 3741 // Start out with some unsupported version.
3742 QuicConnectionPeer::GetFramer(&connection_)->set_version_for_tests( 3742 QuicConnectionPeer::GetFramer(&connection_)->set_version_for_tests(
(...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after
4308 QuicPacketHeader header; 4308 QuicPacketHeader header;
4309 4309
4310 scoped_ptr<MockQuicConnectionDebugVisitor> debug_visitor( 4310 scoped_ptr<MockQuicConnectionDebugVisitor> debug_visitor(
4311 new MockQuicConnectionDebugVisitor()); 4311 new MockQuicConnectionDebugVisitor());
4312 connection_.set_debug_visitor(debug_visitor.get()); 4312 connection_.set_debug_visitor(debug_visitor.get());
4313 EXPECT_CALL(*debug_visitor, OnPacketHeader(Ref(header))).Times(1); 4313 EXPECT_CALL(*debug_visitor, OnPacketHeader(Ref(header))).Times(1);
4314 connection_.OnPacketHeader(header); 4314 connection_.OnPacketHeader(header);
4315 } 4315 }
4316 4316
4317 TEST_P(QuicConnectionTest, Pacing) { 4317 TEST_P(QuicConnectionTest, Pacing) {
4318 TestConnection server(connection_id_, IPEndPoint(), helper_.get(), 4318 TestConnection server(connection_id_, IPEndPoint(), helper_.get(), factory_,
4319 factory_, /* is_server= */ true, version()); 4319 Perspective::IS_SERVER, version());
4320 TestConnection client(connection_id_, IPEndPoint(), helper_.get(), 4320 TestConnection client(connection_id_, IPEndPoint(), helper_.get(), factory_,
4321 factory_, /* is_server= */ false, version()); 4321 Perspective::IS_CLIENT, version());
4322 EXPECT_FALSE(client.sent_packet_manager().using_pacing()); 4322 EXPECT_FALSE(client.sent_packet_manager().using_pacing());
4323 EXPECT_FALSE(server.sent_packet_manager().using_pacing()); 4323 EXPECT_FALSE(server.sent_packet_manager().using_pacing());
4324 } 4324 }
4325 4325
4326 TEST_P(QuicConnectionTest, ControlFramesInstigateAcks) { 4326 TEST_P(QuicConnectionTest, ControlFramesInstigateAcks) {
4327 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 4327 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
4328 4328
4329 // Send a WINDOW_UPDATE frame. 4329 // Send a WINDOW_UPDATE frame.
4330 QuicWindowUpdateFrame window_update; 4330 QuicWindowUpdateFrame window_update;
4331 window_update.stream_id = 3; 4331 window_update.stream_id = 3;
(...skipping 20 matching lines...) Expand all
4352 // Regression test for b/18594622 4352 // Regression test for b/18594622
4353 scoped_refptr<MockAckNotifierDelegate> delegate(new MockAckNotifierDelegate); 4353 scoped_refptr<MockAckNotifierDelegate> delegate(new MockAckNotifierDelegate);
4354 EXPECT_DFATAL( 4354 EXPECT_DFATAL(
4355 connection_.SendStreamDataWithString(3, "", 0, !kFin, delegate.get()), 4355 connection_.SendStreamDataWithString(3, "", 0, !kFin, delegate.get()),
4356 "Attempt to send empty stream frame"); 4356 "Attempt to send empty stream frame");
4357 } 4357 }
4358 4358
4359 } // namespace 4359 } // namespace
4360 } // namespace test 4360 } // namespace test
4361 } // namespace net 4361 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_connection_logger_unittest.cc ('k') | net/quic/quic_crypto_client_stream.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698