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

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

Issue 2808273006: Landing Recent QUIC changes until Sun Apr 9 16:12:55 (Closed)
Patch Set: increment enabled_options in e2e test Created 3 years, 8 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/core/quic_connection.cc ('k') | net/quic/core/quic_crypto_client_stream_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/core/quic_connection.h" 5 #include "net/quic/core/quic_connection.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <memory> 8 #include <memory>
9 #include <ostream> 9 #include <ostream>
10 #include <utility> 10 #include <utility>
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 framer_(SupportedVersions(version()), 683 framer_(SupportedVersions(version()),
684 QuicTime::Zero(), 684 QuicTime::Zero(),
685 Perspective::IS_CLIENT), 685 Perspective::IS_CLIENT),
686 send_algorithm_(new StrictMock<MockSendAlgorithm>), 686 send_algorithm_(new StrictMock<MockSendAlgorithm>),
687 loss_algorithm_(new MockLossAlgorithm()), 687 loss_algorithm_(new MockLossAlgorithm()),
688 helper_(new TestConnectionHelper(&clock_, &random_generator_)), 688 helper_(new TestConnectionHelper(&clock_, &random_generator_)),
689 alarm_factory_(new TestAlarmFactory()), 689 alarm_factory_(new TestAlarmFactory()),
690 peer_framer_(SupportedVersions(version()), 690 peer_framer_(SupportedVersions(version()),
691 QuicTime::Zero(), 691 QuicTime::Zero(),
692 Perspective::IS_SERVER), 692 Perspective::IS_SERVER),
693 peer_creator_(connection_id_, 693 peer_creator_(GetPeerInMemoryConnectionId(connection_id_),
694 &peer_framer_, 694 &peer_framer_,
695 &buffer_allocator_, 695 &buffer_allocator_,
696 /*delegate=*/nullptr), 696 /*delegate=*/nullptr),
697 writer_(new TestPacketWriter(version(), &clock_)), 697 writer_(new TestPacketWriter(version(), &clock_)),
698 connection_(connection_id_, 698 connection_(connection_id_,
699 kPeerAddress, 699 kPeerAddress,
700 helper_.get(), 700 helper_.get(),
701 alarm_factory_.get(), 701 alarm_factory_.get(),
702 writer_.get(), 702 writer_.get(),
703 Perspective::IS_CLIENT, 703 Perspective::IS_CLIENT,
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
825 825
826 connection_.ProcessUdpPacket( 826 connection_.ProcessUdpPacket(
827 kSelfAddress, kPeerAddress, 827 kSelfAddress, kPeerAddress,
828 QuicReceivedPacket(encrypted_buffer, encrypted_length, clock_.Now())); 828 QuicReceivedPacket(encrypted_buffer, encrypted_length, clock_.Now()));
829 } 829 }
830 830
831 size_t ProcessFramePacketAtLevel(QuicPacketNumber number, 831 size_t ProcessFramePacketAtLevel(QuicPacketNumber number,
832 QuicFrame frame, 832 QuicFrame frame,
833 EncryptionLevel level) { 833 EncryptionLevel level) {
834 QuicPacketHeader header; 834 QuicPacketHeader header;
835 header.public_header.connection_id = connection_id_; 835 header.public_header.connection_id =
836 GetPeerInMemoryConnectionId(connection_id_);
836 header.public_header.packet_number_length = packet_number_length_; 837 header.public_header.packet_number_length = packet_number_length_;
837 header.public_header.connection_id_length = connection_id_length_; 838 header.public_header.connection_id_length = connection_id_length_;
838 header.public_header.multipath_flag = false; 839 header.public_header.multipath_flag = false;
839 header.packet_number = number; 840 header.packet_number = number;
840 QuicFrames frames; 841 QuicFrames frames;
841 frames.push_back(frame); 842 frames.push_back(frame);
842 std::unique_ptr<QuicPacket> packet(ConstructPacket(header, frames)); 843 std::unique_ptr<QuicPacket> packet(ConstructPacket(header, frames));
843 844
844 char buffer[kMaxPacketSize]; 845 char buffer[kMaxPacketSize];
845 size_t encrypted_length = 846 size_t encrypted_length =
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
935 936
936 QuicPacket* ConstructPacket(QuicPacketHeader header, QuicFrames frames) { 937 QuicPacket* ConstructPacket(QuicPacketHeader header, QuicFrames frames) {
937 QuicPacket* packet = BuildUnsizedDataPacket(&peer_framer_, header, frames); 938 QuicPacket* packet = BuildUnsizedDataPacket(&peer_framer_, header, frames);
938 EXPECT_NE(nullptr, packet); 939 EXPECT_NE(nullptr, packet);
939 return packet; 940 return packet;
940 } 941 }
941 942
942 QuicPacket* ConstructDataPacket(QuicPacketNumber number, 943 QuicPacket* ConstructDataPacket(QuicPacketNumber number,
943 bool has_stop_waiting) { 944 bool has_stop_waiting) {
944 QuicPacketHeader header; 945 QuicPacketHeader header;
945 header.public_header.connection_id = connection_id_; 946 // Set connection_id to peer's in memory representation as this data packet
947 // is created by peer_framer.
948 header.public_header.connection_id =
949 GetPeerInMemoryConnectionId(connection_id_);
946 header.public_header.packet_number_length = packet_number_length_; 950 header.public_header.packet_number_length = packet_number_length_;
947 header.public_header.connection_id_length = connection_id_length_; 951 header.public_header.connection_id_length = connection_id_length_;
948 header.public_header.multipath_flag = false; 952 header.public_header.multipath_flag = false;
949 header.packet_number = number; 953 header.packet_number = number;
950 954
951 QuicFrames frames; 955 QuicFrames frames;
952 frames.push_back(QuicFrame(&frame1_)); 956 frames.push_back(QuicFrame(&frame1_));
953 if (has_stop_waiting) { 957 if (has_stop_waiting) {
954 frames.push_back(QuicFrame(&stop_waiting_)); 958 frames.push_back(QuicFrame(&stop_waiting_));
955 } 959 }
956 return ConstructPacket(header, frames); 960 return ConstructPacket(header, frames);
957 } 961 }
958 962
959 QuicPacket* ConstructClosePacket(QuicPacketNumber number) { 963 QuicPacket* ConstructClosePacket(QuicPacketNumber number) {
960 QuicPacketHeader header; 964 QuicPacketHeader header;
961 header.public_header.connection_id = connection_id_; 965 // Set connection_id to peer's in memory representation as this connection
966 // close packet is created by peer_framer.
967 header.public_header.connection_id =
968 GetPeerInMemoryConnectionId(connection_id_);
962 header.packet_number = number; 969 header.packet_number = number;
963 970
964 QuicConnectionCloseFrame qccf; 971 QuicConnectionCloseFrame qccf;
965 qccf.error_code = QUIC_PEER_GOING_AWAY; 972 qccf.error_code = QUIC_PEER_GOING_AWAY;
966 973
967 QuicFrames frames; 974 QuicFrames frames;
968 frames.push_back(QuicFrame(&qccf)); 975 frames.push_back(QuicFrame(&qccf));
969 return ConstructPacket(header, frames); 976 return ConstructPacket(header, frames);
970 } 977 }
971 978
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
1192 EXPECT_EQ(1000u, connection.max_packet_length()); 1199 EXPECT_EQ(1000u, connection.max_packet_length());
1193 } 1200 }
1194 1201
1195 TEST_P(QuicConnectionTest, IncreaseServerMaxPacketSize) { 1202 TEST_P(QuicConnectionTest, IncreaseServerMaxPacketSize) {
1196 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 1203 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
1197 1204
1198 set_perspective(Perspective::IS_SERVER); 1205 set_perspective(Perspective::IS_SERVER);
1199 connection_.SetMaxPacketLength(1000); 1206 connection_.SetMaxPacketLength(1000);
1200 1207
1201 QuicPacketHeader header; 1208 QuicPacketHeader header;
1202 header.public_header.connection_id = connection_id_; 1209 header.public_header.connection_id =
1210 GetPeerInMemoryConnectionId(connection_id_);
1203 header.public_header.version_flag = true; 1211 header.public_header.version_flag = true;
1204 header.packet_number = 1; 1212 header.packet_number = 1;
1205 1213
1206 QuicFrames frames; 1214 QuicFrames frames;
1207 QuicPaddingFrame padding; 1215 QuicPaddingFrame padding;
1208 frames.push_back(QuicFrame(&frame1_)); 1216 frames.push_back(QuicFrame(&frame1_));
1209 frames.push_back(QuicFrame(padding)); 1217 frames.push_back(QuicFrame(padding));
1210 std::unique_ptr<QuicPacket> packet(ConstructPacket(header, frames)); 1218 std::unique_ptr<QuicPacket> packet(ConstructPacket(header, frames));
1211 char buffer[kMaxPacketSize]; 1219 char buffer[kMaxPacketSize];
1212 size_t encrypted_length = peer_framer_.EncryptPayload( 1220 size_t encrypted_length = peer_framer_.EncryptPayload(
(...skipping 12 matching lines...) Expand all
1225 TEST_P(QuicConnectionTest, IncreaseServerMaxPacketSizeWhileWriterLimited) { 1233 TEST_P(QuicConnectionTest, IncreaseServerMaxPacketSizeWhileWriterLimited) {
1226 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 1234 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
1227 1235
1228 const QuicByteCount lower_max_packet_size = 1240; 1236 const QuicByteCount lower_max_packet_size = 1240;
1229 writer_->set_max_packet_size(lower_max_packet_size); 1237 writer_->set_max_packet_size(lower_max_packet_size);
1230 set_perspective(Perspective::IS_SERVER); 1238 set_perspective(Perspective::IS_SERVER);
1231 connection_.SetMaxPacketLength(1000); 1239 connection_.SetMaxPacketLength(1000);
1232 EXPECT_EQ(1000u, connection_.max_packet_length()); 1240 EXPECT_EQ(1000u, connection_.max_packet_length());
1233 1241
1234 QuicPacketHeader header; 1242 QuicPacketHeader header;
1235 header.public_header.connection_id = connection_id_; 1243 header.public_header.connection_id =
1244 GetPeerInMemoryConnectionId(connection_id_);
1236 header.public_header.version_flag = true; 1245 header.public_header.version_flag = true;
1237 header.packet_number = 1; 1246 header.packet_number = 1;
1238 1247
1239 QuicFrames frames; 1248 QuicFrames frames;
1240 QuicPaddingFrame padding; 1249 QuicPaddingFrame padding;
1241 frames.push_back(QuicFrame(&frame1_)); 1250 frames.push_back(QuicFrame(&frame1_));
1242 frames.push_back(QuicFrame(padding)); 1251 frames.push_back(QuicFrame(padding));
1243 std::unique_ptr<QuicPacket> packet(ConstructPacket(header, frames)); 1252 std::unique_ptr<QuicPacket> packet(ConstructPacket(header, frames));
1244 char buffer[kMaxPacketSize]; 1253 char buffer[kMaxPacketSize];
1245 size_t encrypted_length = peer_framer_.EncryptPayload( 1254 size_t encrypted_length = peer_framer_.EncryptPayload(
(...skipping 3070 matching lines...) Expand 10 before | Expand all | Expand 10 after
4316 EXPECT_FALSE(connection_.connected()); 4325 EXPECT_FALSE(connection_.connected());
4317 EXPECT_FALSE(connection_.CanWriteStreamData()); 4326 EXPECT_FALSE(connection_.CanWriteStreamData());
4318 QuicPacket* packet = ConstructDataPacket(1, !kHasStopWaiting); 4327 QuicPacket* packet = ConstructDataPacket(1, !kHasStopWaiting);
4319 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, 1, _, _)).Times(0); 4328 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, 1, _, _)).Times(0);
4320 connection_.SendPacket(ENCRYPTION_NONE, 1, packet, HAS_RETRANSMITTABLE_DATA, 4329 connection_.SendPacket(ENCRYPTION_NONE, 1, packet, HAS_RETRANSMITTABLE_DATA,
4321 false, false); 4330 false, false);
4322 } 4331 }
4323 4332
4324 TEST_P(QuicConnectionTest, PublicReset) { 4333 TEST_P(QuicConnectionTest, PublicReset) {
4325 QuicPublicResetPacket header; 4334 QuicPublicResetPacket header;
4326 header.public_header.connection_id = connection_id_; 4335 // Public reset packet in only built by server.
4336 header.public_header.connection_id =
4337 GetPeerInMemoryConnectionId(connection_id_);
4327 header.public_header.reset_flag = true; 4338 header.public_header.reset_flag = true;
4328 header.public_header.version_flag = false; 4339 header.public_header.version_flag = false;
4329 header.rejected_packet_number = 10101; 4340 header.rejected_packet_number = 10101;
4330 std::unique_ptr<QuicEncryptedPacket> packet( 4341 std::unique_ptr<QuicEncryptedPacket> packet(
4331 framer_.BuildPublicResetPacket(header)); 4342 framer_.BuildPublicResetPacket(header));
4332 std::unique_ptr<QuicReceivedPacket> received( 4343 std::unique_ptr<QuicReceivedPacket> received(
4333 ConstructReceivedPacket(*packet, QuicTime::Zero())); 4344 ConstructReceivedPacket(*packet, QuicTime::Zero()));
4334 EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_PUBLIC_RESET, _, 4345 EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_PUBLIC_RESET, _,
4335 ConnectionCloseSource::FROM_PEER)); 4346 ConnectionCloseSource::FROM_PEER));
4336 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *received); 4347 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *received);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
4383 ProcessStopWaitingPacket(&frame); 4394 ProcessStopWaitingPacket(&frame);
4384 EXPECT_FALSE(outgoing_ack()->packets.Empty()); 4395 EXPECT_FALSE(outgoing_ack()->packets.Empty());
4385 } 4396 }
4386 4397
4387 TEST_P(QuicConnectionTest, ServerSendsVersionNegotiationPacket) { 4398 TEST_P(QuicConnectionTest, ServerSendsVersionNegotiationPacket) {
4388 connection_.SetSupportedVersions(AllSupportedVersions()); 4399 connection_.SetSupportedVersions(AllSupportedVersions());
4389 set_perspective(Perspective::IS_SERVER); 4400 set_perspective(Perspective::IS_SERVER);
4390 peer_framer_.set_version_for_tests(QUIC_VERSION_UNSUPPORTED); 4401 peer_framer_.set_version_for_tests(QUIC_VERSION_UNSUPPORTED);
4391 4402
4392 QuicPacketHeader header; 4403 QuicPacketHeader header;
4393 header.public_header.connection_id = connection_id_; 4404 header.public_header.connection_id =
4405 GetPeerInMemoryConnectionId(connection_id_);
4394 header.public_header.version_flag = true; 4406 header.public_header.version_flag = true;
4395 header.packet_number = 12; 4407 header.packet_number = 12;
4396 4408
4397 QuicFrames frames; 4409 QuicFrames frames;
4398 frames.push_back(QuicFrame(&frame1_)); 4410 frames.push_back(QuicFrame(&frame1_));
4399 std::unique_ptr<QuicPacket> packet(ConstructPacket(header, frames)); 4411 std::unique_ptr<QuicPacket> packet(ConstructPacket(header, frames));
4400 char buffer[kMaxPacketSize]; 4412 char buffer[kMaxPacketSize];
4401 size_t encrypted_length = framer_.EncryptPayload(ENCRYPTION_NONE, 12, *packet, 4413 size_t encrypted_length = framer_.EncryptPayload(ENCRYPTION_NONE, 12, *packet,
4402 buffer, kMaxPacketSize); 4414 buffer, kMaxPacketSize);
4403 4415
(...skipping 14 matching lines...) Expand all
4418 writer_->version_negotiation_packet()->versions[i]); 4430 writer_->version_negotiation_packet()->versions[i]);
4419 } 4431 }
4420 } 4432 }
4421 4433
4422 TEST_P(QuicConnectionTest, ServerSendsVersionNegotiationPacketSocketBlocked) { 4434 TEST_P(QuicConnectionTest, ServerSendsVersionNegotiationPacketSocketBlocked) {
4423 connection_.SetSupportedVersions(AllSupportedVersions()); 4435 connection_.SetSupportedVersions(AllSupportedVersions());
4424 set_perspective(Perspective::IS_SERVER); 4436 set_perspective(Perspective::IS_SERVER);
4425 peer_framer_.set_version_for_tests(QUIC_VERSION_UNSUPPORTED); 4437 peer_framer_.set_version_for_tests(QUIC_VERSION_UNSUPPORTED);
4426 4438
4427 QuicPacketHeader header; 4439 QuicPacketHeader header;
4428 header.public_header.connection_id = connection_id_; 4440 header.public_header.connection_id =
4441 GetPeerInMemoryConnectionId(connection_id_);
4429 header.public_header.version_flag = true; 4442 header.public_header.version_flag = true;
4430 header.packet_number = 12; 4443 header.packet_number = 12;
4431 4444
4432 QuicFrames frames; 4445 QuicFrames frames;
4433 frames.push_back(QuicFrame(&frame1_)); 4446 frames.push_back(QuicFrame(&frame1_));
4434 std::unique_ptr<QuicPacket> packet(ConstructPacket(header, frames)); 4447 std::unique_ptr<QuicPacket> packet(ConstructPacket(header, frames));
4435 char buffer[kMaxPacketSize]; 4448 char buffer[kMaxPacketSize];
4436 size_t encrypted_length = framer_.EncryptPayload(ENCRYPTION_NONE, 12, *packet, 4449 size_t encrypted_length = framer_.EncryptPayload(ENCRYPTION_NONE, 12, *packet,
4437 buffer, kMaxPacketSize); 4450 buffer, kMaxPacketSize);
4438 4451
(...skipping 21 matching lines...) Expand all
4460 } 4473 }
4461 } 4474 }
4462 4475
4463 TEST_P(QuicConnectionTest, 4476 TEST_P(QuicConnectionTest,
4464 ServerSendsVersionNegotiationPacketSocketBlockedDataBuffered) { 4477 ServerSendsVersionNegotiationPacketSocketBlockedDataBuffered) {
4465 connection_.SetSupportedVersions(AllSupportedVersions()); 4478 connection_.SetSupportedVersions(AllSupportedVersions());
4466 set_perspective(Perspective::IS_SERVER); 4479 set_perspective(Perspective::IS_SERVER);
4467 peer_framer_.set_version_for_tests(QUIC_VERSION_UNSUPPORTED); 4480 peer_framer_.set_version_for_tests(QUIC_VERSION_UNSUPPORTED);
4468 4481
4469 QuicPacketHeader header; 4482 QuicPacketHeader header;
4470 header.public_header.connection_id = connection_id_; 4483 header.public_header.connection_id =
4484 GetPeerInMemoryConnectionId(connection_id_);
4471 header.public_header.version_flag = true; 4485 header.public_header.version_flag = true;
4472 header.packet_number = 12; 4486 header.packet_number = 12;
4473 4487
4474 QuicFrames frames; 4488 QuicFrames frames;
4475 frames.push_back(QuicFrame(&frame1_)); 4489 frames.push_back(QuicFrame(&frame1_));
4476 std::unique_ptr<QuicPacket> packet(ConstructPacket(header, frames)); 4490 std::unique_ptr<QuicPacket> packet(ConstructPacket(header, frames));
4477 char buffer[kMaxPacketSize]; 4491 char buffer[kMaxPacketSize];
4478 size_t encryped_length = framer_.EncryptPayload(ENCRYPTION_NONE, 12, *packet, 4492 size_t encryped_length = framer_.EncryptPayload(ENCRYPTION_NONE, 12, *packet,
4479 buffer, kMaxPacketSize); 4493 buffer, kMaxPacketSize);
4480 4494
4481 framer_.set_version(version()); 4495 framer_.set_version(version());
4482 set_perspective(Perspective::IS_SERVER); 4496 set_perspective(Perspective::IS_SERVER);
4483 BlockOnNextWrite(); 4497 BlockOnNextWrite();
4484 writer_->set_is_write_blocked_data_buffered(true); 4498 writer_->set_is_write_blocked_data_buffered(true);
4485 connection_.ProcessUdpPacket( 4499 connection_.ProcessUdpPacket(
4486 kSelfAddress, kPeerAddress, 4500 kSelfAddress, kPeerAddress,
4487 QuicReceivedPacket(buffer, encryped_length, QuicTime::Zero(), false)); 4501 QuicReceivedPacket(buffer, encryped_length, QuicTime::Zero(), false));
4488 EXPECT_EQ(0u, writer_->last_packet_size()); 4502 EXPECT_EQ(0u, writer_->last_packet_size());
4489 EXPECT_FALSE(connection_.HasQueuedData()); 4503 EXPECT_FALSE(connection_.HasQueuedData());
4490 } 4504 }
4491 4505
4492 TEST_P(QuicConnectionTest, ClientHandlesVersionNegotiation) { 4506 TEST_P(QuicConnectionTest, ClientHandlesVersionNegotiation) {
4493 // Start out with some unsupported version. 4507 // Start out with some unsupported version.
4494 QuicConnectionPeer::GetFramer(&connection_) 4508 QuicConnectionPeer::GetFramer(&connection_)
4495 ->set_version_for_tests(QUIC_VERSION_UNSUPPORTED); 4509 ->set_version_for_tests(QUIC_VERSION_UNSUPPORTED);
4496 4510
4497 // Send a version negotiation packet. 4511 // Send a version negotiation packet.
4498 std::unique_ptr<QuicEncryptedPacket> encrypted( 4512 std::unique_ptr<QuicEncryptedPacket> encrypted(
4499 peer_framer_.BuildVersionNegotiationPacket(connection_id_, 4513 peer_framer_.BuildVersionNegotiationPacket(
4500 AllSupportedVersions())); 4514 GetPeerInMemoryConnectionId(connection_id_), AllSupportedVersions()));
4501 std::unique_ptr<QuicReceivedPacket> received( 4515 std::unique_ptr<QuicReceivedPacket> received(
4502 ConstructReceivedPacket(*encrypted, QuicTime::Zero())); 4516 ConstructReceivedPacket(*encrypted, QuicTime::Zero()));
4503 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *received); 4517 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *received);
4504 4518
4505 // Now force another packet. The connection should transition into 4519 // Now force another packet. The connection should transition into
4506 // NEGOTIATED_VERSION state and tell the packet creator to StopSendingVersion. 4520 // NEGOTIATED_VERSION state and tell the packet creator to StopSendingVersion.
4507 QuicPacketHeader header; 4521 QuicPacketHeader header;
4508 header.public_header.connection_id = connection_id_; 4522 header.public_header.connection_id =
4523 GetPeerInMemoryConnectionId(connection_id_);
4509 header.packet_number = 12; 4524 header.packet_number = 12;
4510 header.public_header.version_flag = false; 4525 header.public_header.version_flag = false;
4511 QuicFrames frames; 4526 QuicFrames frames;
4512 frames.push_back(QuicFrame(&frame1_)); 4527 frames.push_back(QuicFrame(&frame1_));
4513 std::unique_ptr<QuicPacket> packet(ConstructPacket(header, frames)); 4528 std::unique_ptr<QuicPacket> packet(ConstructPacket(header, frames));
4514 char buffer[kMaxPacketSize]; 4529 char buffer[kMaxPacketSize];
4515 size_t encrypted_length = peer_framer_.EncryptPayload( 4530 size_t encrypted_length = peer_framer_.EncryptPayload(
4516 ENCRYPTION_NONE, 12, *packet, buffer, kMaxPacketSize); 4531 ENCRYPTION_NONE, 12, *packet, buffer, kMaxPacketSize);
4517 ASSERT_NE(0u, encrypted_length); 4532 ASSERT_NE(0u, encrypted_length);
4518 EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); 4533 EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1);
4519 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 4534 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
4520 connection_.ProcessUdpPacket( 4535 connection_.ProcessUdpPacket(
4521 kSelfAddress, kPeerAddress, 4536 kSelfAddress, kPeerAddress,
4522 QuicReceivedPacket(buffer, encrypted_length, QuicTime::Zero(), false)); 4537 QuicReceivedPacket(buffer, encrypted_length, QuicTime::Zero(), false));
4523 4538
4524 ASSERT_FALSE(QuicPacketCreatorPeer::SendVersionInPacket(creator_)); 4539 ASSERT_FALSE(QuicPacketCreatorPeer::SendVersionInPacket(creator_));
4525 } 4540 }
4526 4541
4527 TEST_P(QuicConnectionTest, BadVersionNegotiation) { 4542 TEST_P(QuicConnectionTest, BadVersionNegotiation) {
4528 // Send a version negotiation packet with the version the client started with. 4543 // Send a version negotiation packet with the version the client started with.
4529 // It should be rejected. 4544 // It should be rejected.
4530 EXPECT_CALL(visitor_, 4545 EXPECT_CALL(visitor_,
4531 OnConnectionClosed(QUIC_INVALID_VERSION_NEGOTIATION_PACKET, _, 4546 OnConnectionClosed(QUIC_INVALID_VERSION_NEGOTIATION_PACKET, _,
4532 ConnectionCloseSource::FROM_SELF)); 4547 ConnectionCloseSource::FROM_SELF));
4533 std::unique_ptr<QuicEncryptedPacket> encrypted( 4548 std::unique_ptr<QuicEncryptedPacket> encrypted(
4534 framer_.BuildVersionNegotiationPacket(connection_id_, 4549 framer_.BuildVersionNegotiationPacket(
4535 AllSupportedVersions())); 4550 GetPeerInMemoryConnectionId(connection_id_), AllSupportedVersions()));
4536 std::unique_ptr<QuicReceivedPacket> received( 4551 std::unique_ptr<QuicReceivedPacket> received(
4537 ConstructReceivedPacket(*encrypted, QuicTime::Zero())); 4552 ConstructReceivedPacket(*encrypted, QuicTime::Zero()));
4538 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *received); 4553 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *received);
4539 } 4554 }
4540 4555
4541 TEST_P(QuicConnectionTest, CheckSendStats) { 4556 TEST_P(QuicConnectionTest, CheckSendStats) {
4542 connection_.SetMaxTailLossProbes(0); 4557 connection_.SetMaxTailLossProbes(0);
4543 4558
4544 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)); 4559 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _));
4545 connection_.SendStreamDataWithString(3, "first", 0, !kFin, nullptr); 4560 connection_.SendStreamDataWithString(3, "first", 0, !kFin, nullptr);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
4581 EXPECT_EQ(2 * first_packet_size + second_packet_size - kQuicVersionSize, 4596 EXPECT_EQ(2 * first_packet_size + second_packet_size - kQuicVersionSize,
4582 stats.bytes_retransmitted); 4597 stats.bytes_retransmitted);
4583 EXPECT_EQ(3u, stats.packets_retransmitted); 4598 EXPECT_EQ(3u, stats.packets_retransmitted);
4584 EXPECT_EQ(1u, stats.rto_count); 4599 EXPECT_EQ(1u, stats.rto_count);
4585 EXPECT_EQ(kDefaultMaxPacketSize, stats.max_packet_size); 4600 EXPECT_EQ(kDefaultMaxPacketSize, stats.max_packet_size);
4586 } 4601 }
4587 4602
4588 TEST_P(QuicConnectionTest, ProcessFramesIfPacketClosedConnection) { 4603 TEST_P(QuicConnectionTest, ProcessFramesIfPacketClosedConnection) {
4589 // Construct a packet with stream frame and connection close frame. 4604 // Construct a packet with stream frame and connection close frame.
4590 QuicPacketHeader header; 4605 QuicPacketHeader header;
4591 header.public_header.connection_id = connection_id_; 4606 header.public_header.connection_id =
4607 GetPeerInMemoryConnectionId(connection_id_);
4592 header.packet_number = 1; 4608 header.packet_number = 1;
4593 header.public_header.version_flag = false; 4609 header.public_header.version_flag = false;
4594 4610
4595 QuicConnectionCloseFrame qccf; 4611 QuicConnectionCloseFrame qccf;
4596 qccf.error_code = QUIC_PEER_GOING_AWAY; 4612 qccf.error_code = QUIC_PEER_GOING_AWAY;
4597 4613
4598 QuicFrames frames; 4614 QuicFrames frames;
4599 frames.push_back(QuicFrame(&frame1_)); 4615 frames.push_back(QuicFrame(&frame1_));
4600 frames.push_back(QuicFrame(&qccf)); 4616 frames.push_back(QuicFrame(&qccf));
4601 std::unique_ptr<QuicPacket> packet(ConstructPacket(header, frames)); 4617 std::unique_ptr<QuicPacket> packet(ConstructPacket(header, frames));
(...skipping 530 matching lines...) Expand 10 before | Expand all | Expand 10 after
5132 error_details, ConnectionCloseSource::FROM_PEER)); 5148 error_details, ConnectionCloseSource::FROM_PEER));
5133 connection_.set_perspective(Perspective::IS_CLIENT); 5149 connection_.set_perspective(Perspective::IS_CLIENT);
5134 connection_.CloseConnection(QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT, 5150 connection_.CloseConnection(QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT,
5135 error_details, 5151 error_details,
5136 ConnectionCloseBehavior::SILENT_CLOSE); 5152 ConnectionCloseBehavior::SILENT_CLOSE);
5137 } 5153 }
5138 5154
5139 } // namespace 5155 } // namespace
5140 } // namespace test 5156 } // namespace test
5141 } // namespace net 5157 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/quic_connection.cc ('k') | net/quic/core/quic_crypto_client_stream_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698