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

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

Issue 1421853006: Landing Recent QUIC changes until: Fri Oct 30 22:23:58 2015 +0000 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix comments Created 5 years, 1 month 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.h » ('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 <ostream> 7 #include <ostream>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 QuicPacket* packet, 448 QuicPacket* packet,
449 QuicPacketEntropyHash entropy_hash, 449 QuicPacketEntropyHash entropy_hash,
450 HasRetransmittableData retransmittable, 450 HasRetransmittableData retransmittable,
451 bool has_ack, 451 bool has_ack,
452 bool has_pending_frames) { 452 bool has_pending_frames) {
453 RetransmittableFrames* retransmittable_frames = 453 RetransmittableFrames* retransmittable_frames =
454 retransmittable == HAS_RETRANSMITTABLE_DATA 454 retransmittable == HAS_RETRANSMITTABLE_DATA
455 ? new RetransmittableFrames(ENCRYPTION_NONE) 455 ? new RetransmittableFrames(ENCRYPTION_NONE)
456 : nullptr; 456 : nullptr;
457 char buffer[kMaxPacketSize]; 457 char buffer[kMaxPacketSize];
458 QuicEncryptedPacket* encrypted = 458 size_t encrypted_length =
459 QuicConnectionPeer::GetFramer(this)->EncryptPayload( 459 QuicConnectionPeer::GetFramer(this)->EncryptPayload(
460 ENCRYPTION_NONE, packet_number, *packet, buffer, kMaxPacketSize); 460 ENCRYPTION_NONE, packet_number, *packet, buffer, kMaxPacketSize);
461 delete packet; 461 delete packet;
462 OnSerializedPacket(SerializedPacket( 462 OnSerializedPacket(
463 packet_number, PACKET_6BYTE_PACKET_NUMBER, encrypted, entropy_hash, 463 SerializedPacket(packet_number, PACKET_6BYTE_PACKET_NUMBER, buffer,
464 retransmittable_frames, has_ack, has_pending_frames)); 464 encrypted_length, false, entropy_hash,
465 retransmittable_frames, has_ack, has_pending_frames));
465 } 466 }
466 467
467 QuicConsumedData SendStreamDataWithString( 468 QuicConsumedData SendStreamDataWithString(
468 QuicStreamId id, 469 QuicStreamId id,
469 StringPiece data, 470 StringPiece data,
470 QuicStreamOffset offset, 471 QuicStreamOffset offset,
471 bool fin, 472 bool fin,
472 QuicAckListenerInterface* listener) { 473 QuicAckListenerInterface* listener) {
473 return SendStreamDataWithStringHelper(id, data, offset, fin, 474 return SendStreamDataWithStringHelper(id, data, offset, fin,
474 MAY_FEC_PROTECT, listener); 475 MAY_FEC_PROTECT, listener);
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
780 ENCRYPTION_NONE); 781 ENCRYPTION_NONE);
781 } 782 }
782 783
783 size_t ProcessDataPacketAtLevel(QuicPacketNumber number, 784 size_t ProcessDataPacketAtLevel(QuicPacketNumber number,
784 QuicFecGroupNumber fec_group, 785 QuicFecGroupNumber fec_group,
785 bool entropy_flag, 786 bool entropy_flag,
786 EncryptionLevel level) { 787 EncryptionLevel level) {
787 scoped_ptr<QuicPacket> packet(ConstructDataPacket(number, fec_group, 788 scoped_ptr<QuicPacket> packet(ConstructDataPacket(number, fec_group,
788 entropy_flag)); 789 entropy_flag));
789 char buffer[kMaxPacketSize]; 790 char buffer[kMaxPacketSize];
790 scoped_ptr<QuicEncryptedPacket> encrypted( 791 size_t encrypted_length =
791 framer_.EncryptPayload(level, number, *packet, buffer, kMaxPacketSize)); 792 framer_.EncryptPayload(level, number, *packet, buffer, kMaxPacketSize);
792 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *encrypted); 793 connection_.ProcessUdpPacket(
793 return encrypted->length(); 794 kSelfAddress, kPeerAddress,
795 QuicEncryptedPacket(buffer, encrypted_length, false));
796 return encrypted_length;
794 } 797 }
795 798
796 void ProcessClosePacket(QuicPacketNumber number, 799 void ProcessClosePacket(QuicPacketNumber number,
797 QuicFecGroupNumber fec_group) { 800 QuicFecGroupNumber fec_group) {
798 scoped_ptr<QuicPacket> packet(ConstructClosePacket(number, fec_group)); 801 scoped_ptr<QuicPacket> packet(ConstructClosePacket(number, fec_group));
799 char buffer[kMaxPacketSize]; 802 char buffer[kMaxPacketSize];
800 scoped_ptr<QuicEncryptedPacket> encrypted(framer_.EncryptPayload( 803 size_t encrypted_length = framer_.EncryptPayload(
801 ENCRYPTION_NONE, number, *packet, buffer, kMaxPacketSize)); 804 ENCRYPTION_NONE, number, *packet, buffer, kMaxPacketSize);
802 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *encrypted); 805 connection_.ProcessUdpPacket(
806 kSelfAddress, kPeerAddress,
807 QuicEncryptedPacket(buffer, encrypted_length, false));
803 } 808 }
804 809
805 size_t ProcessFecProtectedPacket(QuicPacketNumber number, 810 size_t ProcessFecProtectedPacket(QuicPacketNumber number,
806 bool expect_revival, 811 bool expect_revival,
807 bool entropy_flag) { 812 bool entropy_flag) {
808 if (expect_revival) { 813 if (expect_revival) {
809 EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); 814 EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1);
810 } 815 }
811 EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1).RetiresOnSaturation(); 816 EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1).RetiresOnSaturation();
812 return ProcessDataPacket(number, 1, entropy_flag); 817 return ProcessDataPacket(number, 1, entropy_flag);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
852 header.public_header.version_flag, 857 header.public_header.version_flag,
853 header.public_header.packet_number_length); 858 header.public_header.packet_number_length);
854 i < data_packet->length(); ++i) { 859 i < data_packet->length(); ++i) {
855 data_packet->mutable_data()[i] ^= data_packet->data()[i]; 860 data_packet->mutable_data()[i] ^= data_packet->data()[i];
856 } 861 }
857 } 862 }
858 863
859 scoped_ptr<QuicPacket> fec_packet( 864 scoped_ptr<QuicPacket> fec_packet(
860 framer_.BuildFecPacket(header, data_packet->FecProtectedData())); 865 framer_.BuildFecPacket(header, data_packet->FecProtectedData()));
861 char buffer[kMaxPacketSize]; 866 char buffer[kMaxPacketSize];
862 scoped_ptr<QuicEncryptedPacket> encrypted(framer_.EncryptPayload( 867 size_t encrypted_length = framer_.EncryptPayload(
863 ENCRYPTION_NONE, number, *fec_packet, buffer, kMaxPacketSize)); 868 ENCRYPTION_NONE, number, *fec_packet, buffer, kMaxPacketSize);
864 869
865 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *encrypted); 870 connection_.ProcessUdpPacket(
866 return encrypted->length(); 871 kSelfAddress, kPeerAddress,
872 QuicEncryptedPacket(buffer, encrypted_length, false));
873 return encrypted_length;
867 } 874 }
868 875
869 QuicByteCount SendStreamDataToPeer(QuicStreamId id, 876 QuicByteCount SendStreamDataToPeer(QuicStreamId id,
870 StringPiece data, 877 StringPiece data,
871 QuicStreamOffset offset, 878 QuicStreamOffset offset,
872 bool fin, 879 bool fin,
873 QuicPacketNumber* last_packet) { 880 QuicPacketNumber* last_packet) {
874 QuicByteCount packet_size; 881 QuicByteCount packet_size;
875 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)) 882 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _))
876 .WillOnce(DoAll(SaveArg<3>(&packet_size), Return(true))); 883 .WillOnce(DoAll(SaveArg<3>(&packet_size), Return(true)));
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
1080 header.public_header.connection_id = connection_id_; 1087 header.public_header.connection_id = connection_id_;
1081 header.public_header.version_flag = true; 1088 header.public_header.version_flag = true;
1082 header.packet_number = 1; 1089 header.packet_number = 1;
1083 1090
1084 QuicFrames frames; 1091 QuicFrames frames;
1085 QuicPaddingFrame padding; 1092 QuicPaddingFrame padding;
1086 frames.push_back(QuicFrame(&frame1_)); 1093 frames.push_back(QuicFrame(&frame1_));
1087 frames.push_back(QuicFrame(padding)); 1094 frames.push_back(QuicFrame(padding));
1088 scoped_ptr<QuicPacket> packet(ConstructPacket(header, frames)); 1095 scoped_ptr<QuicPacket> packet(ConstructPacket(header, frames));
1089 char buffer[kMaxPacketSize]; 1096 char buffer[kMaxPacketSize];
1090 scoped_ptr<QuicEncryptedPacket> encrypted(framer_.EncryptPayload( 1097 size_t encrypted_length = framer_.EncryptPayload(ENCRYPTION_NONE, 12, *packet,
1091 ENCRYPTION_NONE, 12, *packet, buffer, kMaxPacketSize)); 1098 buffer, kMaxPacketSize);
1092 EXPECT_EQ(kMaxPacketSize, encrypted->length()); 1099 EXPECT_EQ(kMaxPacketSize, encrypted_length);
1093 1100
1094 framer_.set_version(version()); 1101 framer_.set_version(version());
1095 EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); 1102 EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1);
1096 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *encrypted); 1103 connection_.ProcessUdpPacket(
1104 kSelfAddress, kPeerAddress,
1105 QuicEncryptedPacket(buffer, encrypted_length, false));
1097 1106
1098 EXPECT_EQ(kMaxPacketSize, connection_.max_packet_length()); 1107 EXPECT_EQ(kMaxPacketSize, connection_.max_packet_length());
1099 } 1108 }
1100 1109
1101 TEST_P(QuicConnectionTest, IncreaseServerMaxPacketSizeWhileWriterLimited) { 1110 TEST_P(QuicConnectionTest, IncreaseServerMaxPacketSizeWhileWriterLimited) {
1102 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 1111 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
1103 1112
1104 const QuicByteCount lower_max_packet_size = 1240; 1113 const QuicByteCount lower_max_packet_size = 1240;
1105 writer_->set_max_packet_size(lower_max_packet_size); 1114 writer_->set_max_packet_size(lower_max_packet_size);
1106 connection_.set_perspective(Perspective::IS_SERVER); 1115 connection_.set_perspective(Perspective::IS_SERVER);
1107 connection_.SetMaxPacketLength(1000); 1116 connection_.SetMaxPacketLength(1000);
1108 EXPECT_EQ(1000u, connection_.max_packet_length()); 1117 EXPECT_EQ(1000u, connection_.max_packet_length());
1109 1118
1110 QuicPacketHeader header; 1119 QuicPacketHeader header;
1111 header.public_header.connection_id = connection_id_; 1120 header.public_header.connection_id = connection_id_;
1112 header.public_header.version_flag = true; 1121 header.public_header.version_flag = true;
1113 header.packet_number = 1; 1122 header.packet_number = 1;
1114 1123
1115 QuicFrames frames; 1124 QuicFrames frames;
1116 QuicPaddingFrame padding; 1125 QuicPaddingFrame padding;
1117 frames.push_back(QuicFrame(&frame1_)); 1126 frames.push_back(QuicFrame(&frame1_));
1118 frames.push_back(QuicFrame(padding)); 1127 frames.push_back(QuicFrame(padding));
1119 scoped_ptr<QuicPacket> packet(ConstructPacket(header, frames)); 1128 scoped_ptr<QuicPacket> packet(ConstructPacket(header, frames));
1120 char buffer[kMaxPacketSize]; 1129 char buffer[kMaxPacketSize];
1121 scoped_ptr<QuicEncryptedPacket> encrypted(framer_.EncryptPayload( 1130 size_t encrypted_length = framer_.EncryptPayload(ENCRYPTION_NONE, 12, *packet,
1122 ENCRYPTION_NONE, 12, *packet, buffer, kMaxPacketSize)); 1131 buffer, kMaxPacketSize);
1123 EXPECT_EQ(kMaxPacketSize, encrypted->length()); 1132 EXPECT_EQ(kMaxPacketSize, encrypted_length);
1124 1133
1125 framer_.set_version(version()); 1134 framer_.set_version(version());
1126 EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); 1135 EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1);
1127 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *encrypted); 1136 connection_.ProcessUdpPacket(
1137 kSelfAddress, kPeerAddress,
1138 QuicEncryptedPacket(buffer, encrypted_length, false));
1128 1139
1129 // Here, the limit imposed by the writer is lower than the size of the packet 1140 // Here, the limit imposed by the writer is lower than the size of the packet
1130 // received, so the writer max packet size is used. 1141 // received, so the writer max packet size is used.
1131 EXPECT_EQ(lower_max_packet_size, connection_.max_packet_length()); 1142 EXPECT_EQ(lower_max_packet_size, connection_.max_packet_length());
1132 } 1143 }
1133 1144
1134 TEST_P(QuicConnectionTest, LimitMaxPacketSizeByWriter) { 1145 TEST_P(QuicConnectionTest, LimitMaxPacketSizeByWriter) {
1135 const QuicByteCount lower_max_packet_size = 1240; 1146 const QuicByteCount lower_max_packet_size = 1240;
1136 writer_->set_max_packet_size(lower_max_packet_size); 1147 writer_->set_max_packet_size(lower_max_packet_size);
1137 1148
(...skipping 2996 matching lines...) Expand 10 before | Expand all | Expand 10 after
4134 4145
4135 QuicPacketHeader header; 4146 QuicPacketHeader header;
4136 header.public_header.connection_id = connection_id_; 4147 header.public_header.connection_id = connection_id_;
4137 header.public_header.version_flag = true; 4148 header.public_header.version_flag = true;
4138 header.packet_number = 12; 4149 header.packet_number = 12;
4139 4150
4140 QuicFrames frames; 4151 QuicFrames frames;
4141 frames.push_back(QuicFrame(&frame1_)); 4152 frames.push_back(QuicFrame(&frame1_));
4142 scoped_ptr<QuicPacket> packet(ConstructPacket(header, frames)); 4153 scoped_ptr<QuicPacket> packet(ConstructPacket(header, frames));
4143 char buffer[kMaxPacketSize]; 4154 char buffer[kMaxPacketSize];
4144 scoped_ptr<QuicEncryptedPacket> encrypted(framer_.EncryptPayload( 4155 size_t encrypted_length = framer_.EncryptPayload(ENCRYPTION_NONE, 12, *packet,
4145 ENCRYPTION_NONE, 12, *packet, buffer, kMaxPacketSize)); 4156 buffer, kMaxPacketSize);
4146 4157
4147 framer_.set_version(version()); 4158 framer_.set_version(version());
4148 connection_.set_perspective(Perspective::IS_SERVER); 4159 connection_.set_perspective(Perspective::IS_SERVER);
4149 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *encrypted); 4160 connection_.ProcessUdpPacket(
4161 kSelfAddress, kPeerAddress,
4162 QuicEncryptedPacket(buffer, encrypted_length, false));
4150 EXPECT_TRUE(writer_->version_negotiation_packet() != nullptr); 4163 EXPECT_TRUE(writer_->version_negotiation_packet() != nullptr);
4151 4164
4152 size_t num_versions = arraysize(kSupportedQuicVersions); 4165 size_t num_versions = arraysize(kSupportedQuicVersions);
4153 ASSERT_EQ(num_versions, 4166 ASSERT_EQ(num_versions,
4154 writer_->version_negotiation_packet()->versions.size()); 4167 writer_->version_negotiation_packet()->versions.size());
4155 4168
4156 // We expect all versions in kSupportedQuicVersions to be 4169 // We expect all versions in kSupportedQuicVersions to be
4157 // included in the packet. 4170 // included in the packet.
4158 for (size_t i = 0; i < num_versions; ++i) { 4171 for (size_t i = 0; i < num_versions; ++i) {
4159 EXPECT_EQ(kSupportedQuicVersions[i], 4172 EXPECT_EQ(kSupportedQuicVersions[i],
4160 writer_->version_negotiation_packet()->versions[i]); 4173 writer_->version_negotiation_packet()->versions[i]);
4161 } 4174 }
4162 } 4175 }
4163 4176
4164 TEST_P(QuicConnectionTest, ServerSendsVersionNegotiationPacketSocketBlocked) { 4177 TEST_P(QuicConnectionTest, ServerSendsVersionNegotiationPacketSocketBlocked) {
4165 connection_.SetSupportedVersions(QuicSupportedVersions()); 4178 connection_.SetSupportedVersions(QuicSupportedVersions());
4166 framer_.set_version_for_tests(QUIC_VERSION_UNSUPPORTED); 4179 framer_.set_version_for_tests(QUIC_VERSION_UNSUPPORTED);
4167 4180
4168 QuicPacketHeader header; 4181 QuicPacketHeader header;
4169 header.public_header.connection_id = connection_id_; 4182 header.public_header.connection_id = connection_id_;
4170 header.public_header.version_flag = true; 4183 header.public_header.version_flag = true;
4171 header.packet_number = 12; 4184 header.packet_number = 12;
4172 4185
4173 QuicFrames frames; 4186 QuicFrames frames;
4174 frames.push_back(QuicFrame(&frame1_)); 4187 frames.push_back(QuicFrame(&frame1_));
4175 scoped_ptr<QuicPacket> packet(ConstructPacket(header, frames)); 4188 scoped_ptr<QuicPacket> packet(ConstructPacket(header, frames));
4176 char buffer[kMaxPacketSize]; 4189 char buffer[kMaxPacketSize];
4177 scoped_ptr<QuicEncryptedPacket> encrypted(framer_.EncryptPayload( 4190 size_t encrypted_length = framer_.EncryptPayload(ENCRYPTION_NONE, 12, *packet,
4178 ENCRYPTION_NONE, 12, *packet, buffer, kMaxPacketSize)); 4191 buffer, kMaxPacketSize);
4179 4192
4180 framer_.set_version(version()); 4193 framer_.set_version(version());
4181 connection_.set_perspective(Perspective::IS_SERVER); 4194 connection_.set_perspective(Perspective::IS_SERVER);
4182 BlockOnNextWrite(); 4195 BlockOnNextWrite();
4183 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *encrypted); 4196 connection_.ProcessUdpPacket(
4197 kSelfAddress, kPeerAddress,
4198 QuicEncryptedPacket(buffer, encrypted_length, false));
4184 EXPECT_EQ(0u, writer_->last_packet_size()); 4199 EXPECT_EQ(0u, writer_->last_packet_size());
4185 EXPECT_TRUE(connection_.HasQueuedData()); 4200 EXPECT_TRUE(connection_.HasQueuedData());
4186 4201
4187 writer_->SetWritable(); 4202 writer_->SetWritable();
4188 connection_.OnCanWrite(); 4203 connection_.OnCanWrite();
4189 EXPECT_TRUE(writer_->version_negotiation_packet() != nullptr); 4204 EXPECT_TRUE(writer_->version_negotiation_packet() != nullptr);
4190 4205
4191 size_t num_versions = arraysize(kSupportedQuicVersions); 4206 size_t num_versions = arraysize(kSupportedQuicVersions);
4192 ASSERT_EQ(num_versions, 4207 ASSERT_EQ(num_versions,
4193 writer_->version_negotiation_packet()->versions.size()); 4208 writer_->version_negotiation_packet()->versions.size());
(...skipping 13 matching lines...) Expand all
4207 4222
4208 QuicPacketHeader header; 4223 QuicPacketHeader header;
4209 header.public_header.connection_id = connection_id_; 4224 header.public_header.connection_id = connection_id_;
4210 header.public_header.version_flag = true; 4225 header.public_header.version_flag = true;
4211 header.packet_number = 12; 4226 header.packet_number = 12;
4212 4227
4213 QuicFrames frames; 4228 QuicFrames frames;
4214 frames.push_back(QuicFrame(&frame1_)); 4229 frames.push_back(QuicFrame(&frame1_));
4215 scoped_ptr<QuicPacket> packet(ConstructPacket(header, frames)); 4230 scoped_ptr<QuicPacket> packet(ConstructPacket(header, frames));
4216 char buffer[kMaxPacketSize]; 4231 char buffer[kMaxPacketSize];
4217 scoped_ptr<QuicEncryptedPacket> encrypted(framer_.EncryptPayload( 4232 size_t encryped_length = framer_.EncryptPayload(ENCRYPTION_NONE, 12, *packet,
4218 ENCRYPTION_NONE, 12, *packet, buffer, kMaxPacketSize)); 4233 buffer, kMaxPacketSize);
4219 4234
4220 framer_.set_version(version()); 4235 framer_.set_version(version());
4221 connection_.set_perspective(Perspective::IS_SERVER); 4236 connection_.set_perspective(Perspective::IS_SERVER);
4222 BlockOnNextWrite(); 4237 BlockOnNextWrite();
4223 writer_->set_is_write_blocked_data_buffered(true); 4238 writer_->set_is_write_blocked_data_buffered(true);
4224 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *encrypted); 4239 connection_.ProcessUdpPacket(
4240 kSelfAddress, kPeerAddress,
4241 QuicEncryptedPacket(buffer, encryped_length, false));
4225 EXPECT_EQ(0u, writer_->last_packet_size()); 4242 EXPECT_EQ(0u, writer_->last_packet_size());
4226 EXPECT_FALSE(connection_.HasQueuedData()); 4243 EXPECT_FALSE(connection_.HasQueuedData());
4227 } 4244 }
4228 4245
4229 TEST_P(QuicConnectionTest, ClientHandlesVersionNegotiation) { 4246 TEST_P(QuicConnectionTest, ClientHandlesVersionNegotiation) {
4230 // Start out with some unsupported version. 4247 // Start out with some unsupported version.
4231 QuicConnectionPeer::GetFramer(&connection_)->set_version_for_tests( 4248 QuicConnectionPeer::GetFramer(&connection_)->set_version_for_tests(
4232 QUIC_VERSION_UNSUPPORTED); 4249 QUIC_VERSION_UNSUPPORTED);
4233 4250
4234 QuicPacketHeader header; 4251 QuicPacketHeader header;
(...skipping 12 matching lines...) Expand all
4247 header.public_header, supported_versions)); 4264 header.public_header, supported_versions));
4248 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *encrypted); 4265 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *encrypted);
4249 4266
4250 // Now force another packet. The connection should transition into 4267 // Now force another packet. The connection should transition into
4251 // NEGOTIATED_VERSION state and tell the packet creator to StopSendingVersion. 4268 // NEGOTIATED_VERSION state and tell the packet creator to StopSendingVersion.
4252 header.public_header.version_flag = false; 4269 header.public_header.version_flag = false;
4253 QuicFrames frames; 4270 QuicFrames frames;
4254 frames.push_back(QuicFrame(&frame1_)); 4271 frames.push_back(QuicFrame(&frame1_));
4255 scoped_ptr<QuicPacket> packet(ConstructPacket(header, frames)); 4272 scoped_ptr<QuicPacket> packet(ConstructPacket(header, frames));
4256 char buffer[kMaxPacketSize]; 4273 char buffer[kMaxPacketSize];
4257 encrypted.reset(framer_.EncryptPayload(ENCRYPTION_NONE, 12, *packet, buffer, 4274 size_t encrypted_length = framer_.EncryptPayload(ENCRYPTION_NONE, 12, *packet,
4258 kMaxPacketSize)); 4275 buffer, kMaxPacketSize);
4276 ASSERT_NE(0u, encrypted_length);
4259 EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); 4277 EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1);
4260 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 4278 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
4261 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *encrypted); 4279 connection_.ProcessUdpPacket(
4280 kSelfAddress, kPeerAddress,
4281 QuicEncryptedPacket(buffer, encrypted_length, false));
4262 4282
4263 ASSERT_FALSE(QuicPacketCreatorPeer::SendVersionInPacket(creator_)); 4283 ASSERT_FALSE(QuicPacketCreatorPeer::SendVersionInPacket(creator_));
4264 } 4284 }
4265 4285
4266 TEST_P(QuicConnectionTest, BadVersionNegotiation) { 4286 TEST_P(QuicConnectionTest, BadVersionNegotiation) {
4267 QuicPacketHeader header; 4287 QuicPacketHeader header;
4268 header.public_header.connection_id = connection_id_; 4288 header.public_header.connection_id = connection_id_;
4269 header.public_header.version_flag = true; 4289 header.public_header.version_flag = true;
4270 header.packet_number = 12; 4290 header.packet_number = 12;
4271 4291
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
4382 4402
4383 QuicConnectionCloseFrame qccf; 4403 QuicConnectionCloseFrame qccf;
4384 qccf.error_code = QUIC_PEER_GOING_AWAY; 4404 qccf.error_code = QUIC_PEER_GOING_AWAY;
4385 4405
4386 QuicFrames frames; 4406 QuicFrames frames;
4387 frames.push_back(QuicFrame(&frame1_)); 4407 frames.push_back(QuicFrame(&frame1_));
4388 frames.push_back(QuicFrame(&qccf)); 4408 frames.push_back(QuicFrame(&qccf));
4389 scoped_ptr<QuicPacket> packet(ConstructPacket(header, frames)); 4409 scoped_ptr<QuicPacket> packet(ConstructPacket(header, frames));
4390 EXPECT_TRUE(nullptr != packet.get()); 4410 EXPECT_TRUE(nullptr != packet.get());
4391 char buffer[kMaxPacketSize]; 4411 char buffer[kMaxPacketSize];
4392 scoped_ptr<QuicEncryptedPacket> encrypted(framer_.EncryptPayload( 4412 size_t encrypted_length = framer_.EncryptPayload(ENCRYPTION_NONE, 1, *packet,
4393 ENCRYPTION_NONE, 1, *packet, buffer, kMaxPacketSize)); 4413 buffer, kMaxPacketSize);
4394 4414
4395 EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_PEER_GOING_AWAY, true)); 4415 EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_PEER_GOING_AWAY, true));
4396 EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); 4416 EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1);
4397 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 4417 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
4398 4418
4399 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *encrypted); 4419 connection_.ProcessUdpPacket(
4420 kSelfAddress, kPeerAddress,
4421 QuicEncryptedPacket(buffer, encrypted_length, false));
4400 } 4422 }
4401 4423
4402 TEST_P(QuicConnectionTest, SelectMutualVersion) { 4424 TEST_P(QuicConnectionTest, SelectMutualVersion) {
4403 connection_.SetSupportedVersions(QuicSupportedVersions()); 4425 connection_.SetSupportedVersions(QuicSupportedVersions());
4404 // Set the connection to speak the lowest quic version. 4426 // Set the connection to speak the lowest quic version.
4405 connection_.set_version(QuicVersionMin()); 4427 connection_.set_version(QuicVersionMin());
4406 EXPECT_EQ(QuicVersionMin(), connection_.version()); 4428 EXPECT_EQ(QuicVersionMin(), connection_.version());
4407 4429
4408 // Pass in available versions which includes a higher mutually supported 4430 // Pass in available versions which includes a higher mutually supported
4409 // version. The higher mutually supported version should be selected. 4431 // version. The higher mutually supported version should be selected.
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
4623 EXPECT_CALL(*listener, OnPacketAcked(_, _)).Times(1); 4645 EXPECT_CALL(*listener, OnPacketAcked(_, _)).Times(1);
4624 // Send some data, which will register the listener to be notified. 4646 // Send some data, which will register the listener to be notified.
4625 connection_.SendStreamDataWithString(1, "foo", 0, !kFin, listener.get()); 4647 connection_.SendStreamDataWithString(1, "foo", 0, !kFin, listener.get());
4626 connection_.SendStreamDataWithString(2, "bar", 0, !kFin, nullptr); 4648 connection_.SendStreamDataWithString(2, "bar", 0, !kFin, nullptr);
4627 4649
4628 // Process an ACK from the server with a revived packet, which should trigger 4650 // Process an ACK from the server with a revived packet, which should trigger
4629 // the callback. 4651 // the callback.
4630 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); 4652 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _));
4631 QuicAckFrame frame = InitAckFrame(2); 4653 QuicAckFrame frame = InitAckFrame(2);
4632 NackPacket(1, &frame); 4654 NackPacket(1, &frame);
4633 frame.revived_packets.insert(1); 4655 frame.latest_revived_packet = 1;
4634 ProcessAckPacket(&frame); 4656 ProcessAckPacket(&frame);
4635 // If the ack is processed again, the notifier should not be called again. 4657 // If the ack is processed again, the notifier should not be called again.
4636 ProcessAckPacket(&frame); 4658 ProcessAckPacket(&frame);
4637 } 4659 }
4638 4660
4639 TEST_P(QuicConnectionTest, AckNotifierCallbackAfterFECRecovery) { 4661 TEST_P(QuicConnectionTest, AckNotifierCallbackAfterFECRecovery) {
4640 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 4662 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
4641 EXPECT_CALL(visitor_, OnCanWrite()); 4663 EXPECT_CALL(visitor_, OnCanWrite());
4642 4664
4643 // Create a listener which we expect to be called. 4665 // Create a listener which we expect to be called.
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
4819 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(1); 4841 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(1);
4820 connection_.SendGoAway(QUIC_PEER_GOING_AWAY, kHeadersStreamId, "Going Away."); 4842 connection_.SendGoAway(QUIC_PEER_GOING_AWAY, kHeadersStreamId, "Going Away.");
4821 EXPECT_TRUE(connection_.goaway_sent()); 4843 EXPECT_TRUE(connection_.goaway_sent());
4822 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(0); 4844 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(0);
4823 connection_.SendGoAway(QUIC_PEER_GOING_AWAY, kHeadersStreamId, "Going Away."); 4845 connection_.SendGoAway(QUIC_PEER_GOING_AWAY, kHeadersStreamId, "Going Away.");
4824 } 4846 }
4825 4847
4826 } // namespace 4848 } // namespace
4827 } // namespace test 4849 } // namespace test
4828 } // namespace net 4850 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_connection_logger_unittest.cc ('k') | net/quic/quic_crypto_client_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698