| 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/quic_framer.h" | 5 #include "net/quic/quic_framer.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <map> | 8 #include <map> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 &framer_, PACKET_6BYTE_SEQUENCE_NUMBER, wire_sequence_number)) | 472 &framer_, PACKET_6BYTE_SEQUENCE_NUMBER, wire_sequence_number)) |
| 473 << "last_sequence_number: " << last_sequence_number | 473 << "last_sequence_number: " << last_sequence_number |
| 474 << " wire_sequence_number: " << wire_sequence_number; | 474 << " wire_sequence_number: " << wire_sequence_number; |
| 475 } | 475 } |
| 476 | 476 |
| 477 QuicPacket* BuildDataPacket(const QuicPacketHeader& header, | 477 QuicPacket* BuildDataPacket(const QuicPacketHeader& header, |
| 478 const QuicFrames& frames) { | 478 const QuicFrames& frames) { |
| 479 return BuildUnsizedDataPacket(&framer_, header, frames); | 479 return BuildUnsizedDataPacket(&framer_, header, frames); |
| 480 } | 480 } |
| 481 | 481 |
| 482 QuicPacket* BuildDataPacket(const QuicPacketHeader& header, |
| 483 const QuicFrames& frames, |
| 484 size_t packet_size) { |
| 485 return BuildUnsizedDataPacket(&framer_, header, frames, packet_size); |
| 486 } |
| 487 |
| 482 test::TestEncrypter* encrypter_; | 488 test::TestEncrypter* encrypter_; |
| 483 test::TestDecrypter* decrypter_; | 489 test::TestDecrypter* decrypter_; |
| 484 QuicVersion version_; | 490 QuicVersion version_; |
| 485 QuicTime start_; | 491 QuicTime start_; |
| 486 QuicFramer framer_; | 492 QuicFramer framer_; |
| 487 test::TestQuicVisitor visitor_; | 493 test::TestQuicVisitor visitor_; |
| 488 test::TestEntropyCalculator entropy_calculator_; | 494 test::TestEntropyCalculator entropy_calculator_; |
| 489 }; | 495 }; |
| 490 | 496 |
| 491 // Run all framer tests with all supported versions of QUIC. | 497 // Run all framer tests with all supported versions of QUIC. |
| (...skipping 2894 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3386 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, | 3392 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3387 | 3393 |
| 3388 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, | 3394 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3389 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, | 3395 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3390 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, | 3396 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3391 | 3397 |
| 3392 // 0 revived packets. | 3398 // 0 revived packets. |
| 3393 0x00, | 3399 0x00, |
| 3394 }; | 3400 }; |
| 3395 | 3401 |
| 3396 scoped_ptr<QuicPacket> data( | 3402 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
| 3397 framer_.BuildDataPacket(header, frames, kMaxPacketSize)); | |
| 3398 ASSERT_TRUE(data != nullptr); | 3403 ASSERT_TRUE(data != nullptr); |
| 3399 | 3404 |
| 3400 test::CompareCharArraysWithHexError("constructed packet", | 3405 test::CompareCharArraysWithHexError("constructed packet", |
| 3401 data->data(), data->length(), | 3406 data->data(), data->length(), |
| 3402 AsChars(packet), arraysize(packet)); | 3407 AsChars(packet), arraysize(packet)); |
| 3403 } | 3408 } |
| 3404 | 3409 |
| 3405 TEST_P(QuicFramerTest, BuildTruncatedAckFrameSmallPacket) { | 3410 TEST_P(QuicFramerTest, BuildTruncatedAckFrameSmallPacket) { |
| 3406 QuicPacketHeader header; | 3411 QuicPacketHeader header; |
| 3407 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); | 3412 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3449 0x00, 0x00, | 3454 0x00, 0x00, |
| 3450 // num missing packet ranges (limited to 6 by packet size of 37). | 3455 // num missing packet ranges (limited to 6 by packet size of 37). |
| 3451 0x06, | 3456 0x06, |
| 3452 // {missing packet delta, further missing packets in range} | 3457 // {missing packet delta, further missing packets in range} |
| 3453 // 6 nack ranges | 3458 // 6 nack ranges |
| 3454 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, | 3459 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
| 3455 // 0 revived packets. | 3460 // 0 revived packets. |
| 3456 0x00, | 3461 0x00, |
| 3457 }; | 3462 }; |
| 3458 | 3463 |
| 3459 scoped_ptr<QuicPacket> data(framer_.BuildDataPacket(header, frames, 37u)); | 3464 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames, 37u)); |
| 3460 ASSERT_TRUE(data != nullptr); | 3465 ASSERT_TRUE(data != nullptr); |
| 3461 // Expect 1 byte unused since at least 2 bytes are needed to fit more nacks. | 3466 // Expect 1 byte unused since at least 2 bytes are needed to fit more nacks. |
| 3462 EXPECT_EQ(36u, data->length()); | 3467 EXPECT_EQ(36u, data->length()); |
| 3463 test::CompareCharArraysWithHexError("constructed packet", | 3468 test::CompareCharArraysWithHexError("constructed packet", |
| 3464 data->data(), data->length(), | 3469 data->data(), data->length(), |
| 3465 AsChars(packet), arraysize(packet)); | 3470 AsChars(packet), arraysize(packet)); |
| 3466 } | 3471 } |
| 3467 | 3472 |
| 3468 TEST_P(QuicFramerTest, BuildStopWaitingPacket) { | 3473 TEST_P(QuicFramerTest, BuildStopWaitingPacket) { |
| 3469 QuicPacketHeader header; | 3474 QuicPacketHeader header; |
| (...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4017 | 4022 |
| 4018 // Create a packet with just the ack. | 4023 // Create a packet with just the ack. |
| 4019 QuicAckFrame ack_frame = MakeAckFrameWithNackRanges(300, 0u); | 4024 QuicAckFrame ack_frame = MakeAckFrameWithNackRanges(300, 0u); |
| 4020 QuicFrame frame; | 4025 QuicFrame frame; |
| 4021 frame.type = ACK_FRAME; | 4026 frame.type = ACK_FRAME; |
| 4022 frame.ack_frame = &ack_frame; | 4027 frame.ack_frame = &ack_frame; |
| 4023 QuicFrames frames; | 4028 QuicFrames frames; |
| 4024 frames.push_back(frame); | 4029 frames.push_back(frame); |
| 4025 | 4030 |
| 4026 // Build an ack packet with truncation due to limit in number of nack ranges. | 4031 // Build an ack packet with truncation due to limit in number of nack ranges. |
| 4027 scoped_ptr<QuicPacket> raw_ack_packet( | 4032 scoped_ptr<QuicPacket> raw_ack_packet(BuildDataPacket(header, frames)); |
| 4028 framer_.BuildDataPacket(header, frames, kMaxPacketSize)); | |
| 4029 ASSERT_TRUE(raw_ack_packet != nullptr); | 4033 ASSERT_TRUE(raw_ack_packet != nullptr); |
| 4030 scoped_ptr<QuicEncryptedPacket> ack_packet( | 4034 scoped_ptr<QuicEncryptedPacket> ack_packet( |
| 4031 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number, | 4035 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number, |
| 4032 *raw_ack_packet)); | 4036 *raw_ack_packet)); |
| 4033 // Now make sure we can turn our ack packet back into an ack frame. | 4037 // Now make sure we can turn our ack packet back into an ack frame. |
| 4034 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet)); | 4038 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet)); |
| 4035 ASSERT_EQ(1u, visitor_.ack_frames_.size()); | 4039 ASSERT_EQ(1u, visitor_.ack_frames_.size()); |
| 4036 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0]; | 4040 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0]; |
| 4037 EXPECT_TRUE(processed_ack_frame.is_truncated); | 4041 EXPECT_TRUE(processed_ack_frame.is_truncated); |
| 4038 EXPECT_EQ(510u, processed_ack_frame.largest_observed); | 4042 EXPECT_EQ(510u, processed_ack_frame.largest_observed); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 4057 | 4061 |
| 4058 // Create a packet with just the ack. | 4062 // Create a packet with just the ack. |
| 4059 QuicAckFrame ack_frame = MakeAckFrameWithNackRanges(300, 0u); | 4063 QuicAckFrame ack_frame = MakeAckFrameWithNackRanges(300, 0u); |
| 4060 QuicFrame frame; | 4064 QuicFrame frame; |
| 4061 frame.type = ACK_FRAME; | 4065 frame.type = ACK_FRAME; |
| 4062 frame.ack_frame = &ack_frame; | 4066 frame.ack_frame = &ack_frame; |
| 4063 QuicFrames frames; | 4067 QuicFrames frames; |
| 4064 frames.push_back(frame); | 4068 frames.push_back(frame); |
| 4065 | 4069 |
| 4066 // Build an ack packet with truncation due to limit in number of nack ranges. | 4070 // Build an ack packet with truncation due to limit in number of nack ranges. |
| 4067 scoped_ptr<QuicPacket> raw_ack_packet( | 4071 scoped_ptr<QuicPacket> raw_ack_packet(BuildDataPacket(header, frames, 500)); |
| 4068 framer_.BuildDataPacket(header, frames, 500)); | |
| 4069 ASSERT_TRUE(raw_ack_packet != nullptr); | 4072 ASSERT_TRUE(raw_ack_packet != nullptr); |
| 4070 scoped_ptr<QuicEncryptedPacket> ack_packet( | 4073 scoped_ptr<QuicEncryptedPacket> ack_packet( |
| 4071 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number, | 4074 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number, |
| 4072 *raw_ack_packet)); | 4075 *raw_ack_packet)); |
| 4073 // Now make sure we can turn our ack packet back into an ack frame. | 4076 // Now make sure we can turn our ack packet back into an ack frame. |
| 4074 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet)); | 4077 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet)); |
| 4075 ASSERT_EQ(1u, visitor_.ack_frames_.size()); | 4078 ASSERT_EQ(1u, visitor_.ack_frames_.size()); |
| 4076 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0]; | 4079 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0]; |
| 4077 EXPECT_TRUE(processed_ack_frame.is_truncated); | 4080 EXPECT_TRUE(processed_ack_frame.is_truncated); |
| 4078 EXPECT_EQ(476u, processed_ack_frame.largest_observed); | 4081 EXPECT_EQ(476u, processed_ack_frame.largest_observed); |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4259 EXPECT_CALL(visitor, OnPacketComplete()); | 4262 EXPECT_CALL(visitor, OnPacketComplete()); |
| 4260 EXPECT_CALL(visitor, OnUnauthenticatedPublicHeader(_)).WillOnce(Return(true)); | 4263 EXPECT_CALL(visitor, OnUnauthenticatedPublicHeader(_)).WillOnce(Return(true)); |
| 4261 | 4264 |
| 4262 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); | 4265 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); |
| 4263 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 4266 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 4264 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 4267 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 4265 } | 4268 } |
| 4266 | 4269 |
| 4267 } // namespace test | 4270 } // namespace test |
| 4268 } // namespace net | 4271 } // namespace net |
| OLD | NEW |