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

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

Issue 424003002: Inline the members of QUIC's ReceivedPacketInfo into QuicAckFrame now (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@remove_FixRate_congestion_type_71746617
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/quic_framer.cc ('k') | net/quic/quic_packet_creator.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_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 1708 matching lines...) Expand 10 before | Expand all | Expand 10 after
1719 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 1719 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
1720 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 1720 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
1721 1721
1722 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 1722 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
1723 ASSERT_TRUE(visitor_.header_.get()); 1723 ASSERT_TRUE(visitor_.header_.get());
1724 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion)); 1724 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion));
1725 1725
1726 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 1726 EXPECT_EQ(0u, visitor_.stream_frames_.size());
1727 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 1727 ASSERT_EQ(1u, visitor_.ack_frames_.size());
1728 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; 1728 const QuicAckFrame& frame = *visitor_.ack_frames_[0];
1729 EXPECT_EQ(0xBA, frame.received_info.entropy_hash); 1729 EXPECT_EQ(0xBA, frame.entropy_hash);
1730 EXPECT_EQ(GG_UINT64_C(0x0123456789ABF), frame.received_info.largest_observed); 1730 EXPECT_EQ(GG_UINT64_C(0x0123456789ABF), frame.largest_observed);
1731 ASSERT_EQ(1u, frame.received_info.missing_packets.size()); 1731 ASSERT_EQ(1u, frame.missing_packets.size());
1732 SequenceNumberSet::const_iterator missing_iter = 1732 SequenceNumberSet::const_iterator missing_iter =
1733 frame.received_info.missing_packets.begin(); 1733 frame.missing_packets.begin();
1734 EXPECT_EQ(GG_UINT64_C(0x0123456789ABE), *missing_iter); 1734 EXPECT_EQ(GG_UINT64_C(0x0123456789ABE), *missing_iter);
1735 1735
1736 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; 1736 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize;
1737 const size_t kLargestObservedOffset = kReceivedEntropyOffset + 1737 const size_t kLargestObservedOffset = kReceivedEntropyOffset +
1738 kQuicEntropyHashSize; 1738 kQuicEntropyHashSize;
1739 const size_t kMissingDeltaTimeOffset = kLargestObservedOffset + 1739 const size_t kMissingDeltaTimeOffset = kLargestObservedOffset +
1740 PACKET_6BYTE_SEQUENCE_NUMBER; 1740 PACKET_6BYTE_SEQUENCE_NUMBER;
1741 const size_t kNumMissingPacketOffset = kMissingDeltaTimeOffset + 1741 const size_t kNumMissingPacketOffset = kMissingDeltaTimeOffset +
1742 kQuicDeltaTimeLargestObservedSize; 1742 kQuicDeltaTimeLargestObservedSize;
1743 const size_t kMissingPacketsOffset = kNumMissingPacketOffset + 1743 const size_t kMissingPacketsOffset = kNumMissingPacketOffset +
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1813 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 1813 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
1814 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 1814 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
1815 1815
1816 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 1816 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
1817 ASSERT_TRUE(visitor_.header_.get()); 1817 ASSERT_TRUE(visitor_.header_.get());
1818 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion)); 1818 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion));
1819 1819
1820 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 1820 EXPECT_EQ(0u, visitor_.stream_frames_.size());
1821 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 1821 ASSERT_EQ(1u, visitor_.ack_frames_.size());
1822 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; 1822 const QuicAckFrame& frame = *visitor_.ack_frames_[0];
1823 EXPECT_EQ(0xBA, frame.received_info.entropy_hash); 1823 EXPECT_EQ(0xBA, frame.entropy_hash);
1824 EXPECT_EQ(GG_UINT64_C(0x0123456789ABF), frame.received_info.largest_observed); 1824 EXPECT_EQ(GG_UINT64_C(0x0123456789ABF), frame.largest_observed);
1825 ASSERT_EQ(1u, frame.received_info.missing_packets.size()); 1825 ASSERT_EQ(1u, frame.missing_packets.size());
1826 SequenceNumberSet::const_iterator missing_iter = 1826 SequenceNumberSet::const_iterator missing_iter =
1827 frame.received_info.missing_packets.begin(); 1827 frame.missing_packets.begin();
1828 EXPECT_EQ(GG_UINT64_C(0x0123456789ABE), *missing_iter); 1828 EXPECT_EQ(GG_UINT64_C(0x0123456789ABE), *missing_iter);
1829 1829
1830 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; 1830 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize;
1831 const size_t kLargestObservedOffset = kReceivedEntropyOffset + 1831 const size_t kLargestObservedOffset = kReceivedEntropyOffset +
1832 kQuicEntropyHashSize; 1832 kQuicEntropyHashSize;
1833 const size_t kMissingDeltaTimeOffset = kLargestObservedOffset + 1833 const size_t kMissingDeltaTimeOffset = kLargestObservedOffset +
1834 PACKET_6BYTE_SEQUENCE_NUMBER; 1834 PACKET_6BYTE_SEQUENCE_NUMBER;
1835 const size_t kNumMissingPacketOffset = kMissingDeltaTimeOffset + 1835 const size_t kNumMissingPacketOffset = kMissingDeltaTimeOffset +
1836 kQuicDeltaTimeLargestObservedSize; 1836 kQuicDeltaTimeLargestObservedSize;
1837 const size_t kMissingPacketsOffset = kNumMissingPacketOffset + 1837 const size_t kMissingPacketsOffset = kNumMissingPacketOffset +
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
1902 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 1902 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
1903 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 1903 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
1904 1904
1905 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 1905 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
1906 ASSERT_TRUE(visitor_.header_.get()); 1906 ASSERT_TRUE(visitor_.header_.get());
1907 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion)); 1907 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion));
1908 1908
1909 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 1909 EXPECT_EQ(0u, visitor_.stream_frames_.size());
1910 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 1910 ASSERT_EQ(1u, visitor_.ack_frames_.size());
1911 QuicAckFrame* frame = visitor_.ack_frames_[0]; 1911 QuicAckFrame* frame = visitor_.ack_frames_[0];
1912 EXPECT_EQ(0xBA, frame->received_info.entropy_hash); 1912 EXPECT_EQ(0xBA, frame->entropy_hash);
1913 EXPECT_EQ(GG_UINT64_C(0x0123456789ABF), 1913 EXPECT_EQ(GG_UINT64_C(0x0123456789ABF), frame->largest_observed);
1914 frame->received_info.largest_observed); 1914 ASSERT_EQ(0u, frame->missing_packets.size());
1915 ASSERT_EQ(0u, frame->received_info.missing_packets.size());
1916 1915
1917 // Verify that the packet re-serializes identically. 1916 // Verify that the packet re-serializes identically.
1918 QuicFrames frames; 1917 QuicFrames frames;
1919 frames.push_back(QuicFrame(frame)); 1918 frames.push_back(QuicFrame(frame));
1920 scoped_ptr<QuicPacket> data(BuildDataPacket(*visitor_.header_, frames)); 1919 scoped_ptr<QuicPacket> data(BuildDataPacket(*visitor_.header_, frames));
1921 ASSERT_TRUE(data != NULL); 1920 ASSERT_TRUE(data != NULL);
1922 1921
1923 test::CompareCharArraysWithHexError("constructed packet", 1922 test::CompareCharArraysWithHexError("constructed packet",
1924 data->data(), data->length(), 1923 data->data(), data->length(),
1925 AsChars(packet), arraysize(packet)); 1924 AsChars(packet), arraysize(packet));
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1966 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 1965 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
1967 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 1966 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
1968 1967
1969 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 1968 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
1970 ASSERT_TRUE(visitor_.header_.get()); 1969 ASSERT_TRUE(visitor_.header_.get());
1971 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion)); 1970 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion));
1972 1971
1973 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 1972 EXPECT_EQ(0u, visitor_.stream_frames_.size());
1974 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 1973 ASSERT_EQ(1u, visitor_.ack_frames_.size());
1975 QuicAckFrame* frame = visitor_.ack_frames_[0]; 1974 QuicAckFrame* frame = visitor_.ack_frames_[0];
1976 EXPECT_EQ(0xBA, frame->received_info.entropy_hash); 1975 EXPECT_EQ(0xBA, frame->entropy_hash);
1977 EXPECT_EQ(GG_UINT64_C(0x0123456789ABF), 1976 EXPECT_EQ(GG_UINT64_C(0x0123456789ABF), frame->largest_observed);
1978 frame->received_info.largest_observed); 1977 EXPECT_EQ(0u, frame->revived_packets.size());
1979 EXPECT_EQ(0u, frame->received_info.revived_packets.size()); 1978 ASSERT_EQ(500u, frame->missing_packets.size());
1980 ASSERT_EQ(500u, frame->received_info.missing_packets.size());
1981 SequenceNumberSet::const_iterator first_missing_iter = 1979 SequenceNumberSet::const_iterator first_missing_iter =
1982 frame->received_info.missing_packets.begin(); 1980 frame->missing_packets.begin();
1983 EXPECT_EQ(GG_UINT64_C(0x0123456789ABE) - 499, *first_missing_iter); 1981 EXPECT_EQ(GG_UINT64_C(0x0123456789ABE) - 499, *first_missing_iter);
1984 SequenceNumberSet::const_reverse_iterator last_missing_iter = 1982 SequenceNumberSet::const_reverse_iterator last_missing_iter =
1985 frame->received_info.missing_packets.rbegin(); 1983 frame->missing_packets.rbegin();
1986 EXPECT_EQ(GG_UINT64_C(0x0123456789ABE), *last_missing_iter); 1984 EXPECT_EQ(GG_UINT64_C(0x0123456789ABE), *last_missing_iter);
1987 1985
1988 // Verify that the packet re-serializes identically. 1986 // Verify that the packet re-serializes identically.
1989 QuicFrames frames; 1987 QuicFrames frames;
1990 frames.push_back(QuicFrame(frame)); 1988 frames.push_back(QuicFrame(frame));
1991 scoped_ptr<QuicPacket> data(BuildDataPacket(*visitor_.header_, frames)); 1989 scoped_ptr<QuicPacket> data(BuildDataPacket(*visitor_.header_, frames));
1992 ASSERT_TRUE(data != NULL); 1990 ASSERT_TRUE(data != NULL);
1993 1991
1994 test::CompareCharArraysWithHexError("constructed packet", 1992 test::CompareCharArraysWithHexError("constructed packet",
1995 data->data(), data->length(), 1993 data->data(), data->length(),
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
2258 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion)); 2256 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion));
2259 2257
2260 EXPECT_EQ(GG_UINT64_C(0x01020304), visitor_.rst_stream_frame_.stream_id); 2258 EXPECT_EQ(GG_UINT64_C(0x01020304), visitor_.rst_stream_frame_.stream_id);
2261 EXPECT_EQ(0x01, visitor_.rst_stream_frame_.error_code); 2259 EXPECT_EQ(0x01, visitor_.rst_stream_frame_.error_code);
2262 EXPECT_EQ("because I can", visitor_.rst_stream_frame_.error_details); 2260 EXPECT_EQ("because I can", visitor_.rst_stream_frame_.error_details);
2263 EXPECT_EQ(GG_UINT64_C(0x0807060504030201), 2261 EXPECT_EQ(GG_UINT64_C(0x0807060504030201),
2264 visitor_.rst_stream_frame_.byte_offset); 2262 visitor_.rst_stream_frame_.byte_offset);
2265 2263
2266 // Now test framing boundaries 2264 // Now test framing boundaries
2267 for (size_t i = kQuicFrameTypeSize; 2265 for (size_t i = kQuicFrameTypeSize;
2268 i < QuicFramer::GetMinRstStreamFrameSize(version_); ++i) { 2266 i < QuicFramer::GetMinRstStreamFrameSize(); ++i) {
2269 string expected_error; 2267 string expected_error;
2270 if (i < kQuicFrameTypeSize + kQuicMaxStreamIdSize) { 2268 if (i < kQuicFrameTypeSize + kQuicMaxStreamIdSize) {
2271 expected_error = "Unable to read stream_id."; 2269 expected_error = "Unable to read stream_id.";
2272 } else if (i < kQuicFrameTypeSize + kQuicMaxStreamIdSize + 2270 } else if (i < kQuicFrameTypeSize + kQuicMaxStreamIdSize +
2273 + kQuicMaxStreamOffsetSize) { 2271 + kQuicMaxStreamOffsetSize) {
2274 expected_error = "Unable to read rst stream sent byte offset."; 2272 expected_error = "Unable to read rst stream sent byte offset.";
2275 } else if (i < kQuicFrameTypeSize + kQuicMaxStreamIdSize + 2273 } else if (i < kQuicFrameTypeSize + kQuicMaxStreamIdSize +
2276 + kQuicMaxStreamOffsetSize + kQuicErrorCodeSize) { 2274 + kQuicMaxStreamOffsetSize + kQuicErrorCodeSize) {
2277 expected_error = "Unable to read rst stream error code."; 2275 expected_error = "Unable to read rst stream error code.";
2278 } else { 2276 } else {
(...skipping 870 matching lines...) Expand 10 before | Expand all | Expand 10 after
3149 QuicPacketHeader header; 3147 QuicPacketHeader header;
3150 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); 3148 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210);
3151 header.public_header.reset_flag = false; 3149 header.public_header.reset_flag = false;
3152 header.public_header.version_flag = false; 3150 header.public_header.version_flag = false;
3153 header.fec_flag = false; 3151 header.fec_flag = false;
3154 header.entropy_flag = true; 3152 header.entropy_flag = true;
3155 header.packet_sequence_number = GG_UINT64_C(0x770123456789AA8); 3153 header.packet_sequence_number = GG_UINT64_C(0x770123456789AA8);
3156 header.fec_group = 0; 3154 header.fec_group = 0;
3157 3155
3158 QuicAckFrame ack_frame; 3156 QuicAckFrame ack_frame;
3159 ack_frame.received_info.entropy_hash = 0x43; 3157 ack_frame.entropy_hash = 0x43;
3160 ack_frame.received_info.largest_observed = GG_UINT64_C(0x770123456789ABF); 3158 ack_frame.largest_observed = GG_UINT64_C(0x770123456789ABF);
3161 ack_frame.received_info.delta_time_largest_observed = QuicTime::Delta::Zero(); 3159 ack_frame.delta_time_largest_observed = QuicTime::Delta::Zero();
3162 ack_frame.received_info.missing_packets.insert( 3160 ack_frame.missing_packets.insert(
3163 GG_UINT64_C(0x770123456789ABE)); 3161 GG_UINT64_C(0x770123456789ABE));
3164 3162
3165 QuicFrames frames; 3163 QuicFrames frames;
3166 frames.push_back(QuicFrame(&ack_frame)); 3164 frames.push_back(QuicFrame(&ack_frame));
3167 3165
3168 unsigned char packet[] = { 3166 unsigned char packet[] = {
3169 // public flags (8 byte connection_id) 3167 // public flags (8 byte connection_id)
3170 0x3C, 3168 0x3C,
3171 // connection_id 3169 // connection_id
3172 0x10, 0x32, 0x54, 0x76, 3170 0x10, 0x32, 0x54, 0x76,
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
3214 header.public_header.version_flag = false; 3212 header.public_header.version_flag = false;
3215 header.fec_flag = false; 3213 header.fec_flag = false;
3216 header.entropy_flag = true; 3214 header.entropy_flag = true;
3217 header.packet_sequence_number = GG_UINT64_C(0x770123456789AA8); 3215 header.packet_sequence_number = GG_UINT64_C(0x770123456789AA8);
3218 header.fec_group = 0; 3216 header.fec_group = 0;
3219 3217
3220 QuicAckFrame ack_frame; 3218 QuicAckFrame ack_frame;
3221 // This entropy hash is different from what shows up in the packet below, 3219 // This entropy hash is different from what shows up in the packet below,
3222 // since entropy is recomputed by the framer on ack truncation (by 3220 // since entropy is recomputed by the framer on ack truncation (by
3223 // TestEntropyCalculator for this test.) 3221 // TestEntropyCalculator for this test.)
3224 ack_frame.received_info.entropy_hash = 0x43; 3222 ack_frame.entropy_hash = 0x43;
3225 ack_frame.received_info.largest_observed = 2 * 300; 3223 ack_frame.largest_observed = 2 * 300;
3226 ack_frame.received_info.delta_time_largest_observed = QuicTime::Delta::Zero(); 3224 ack_frame.delta_time_largest_observed = QuicTime::Delta::Zero();
3227 for (size_t i = 1; i < 2 * 300; i += 2) { 3225 for (size_t i = 1; i < 2 * 300; i += 2) {
3228 ack_frame.received_info.missing_packets.insert(i); 3226 ack_frame.missing_packets.insert(i);
3229 } 3227 }
3230 3228
3231 QuicFrames frames; 3229 QuicFrames frames;
3232 frames.push_back(QuicFrame(&ack_frame)); 3230 frames.push_back(QuicFrame(&ack_frame));
3233 3231
3234 unsigned char packet[] = { 3232 unsigned char packet[] = {
3235 // public flags (8 byte connection_id) 3233 // public flags (8 byte connection_id)
3236 0x3C, 3234 0x3C,
3237 // connection_id 3235 // connection_id
3238 0x10, 0x32, 0x54, 0x76, 3236 0x10, 0x32, 0x54, 0x76,
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
3327 header.public_header.version_flag = false; 3325 header.public_header.version_flag = false;
3328 header.fec_flag = false; 3326 header.fec_flag = false;
3329 header.entropy_flag = true; 3327 header.entropy_flag = true;
3330 header.packet_sequence_number = GG_UINT64_C(0x770123456789AA8); 3328 header.packet_sequence_number = GG_UINT64_C(0x770123456789AA8);
3331 header.fec_group = 0; 3329 header.fec_group = 0;
3332 3330
3333 QuicAckFrame ack_frame; 3331 QuicAckFrame ack_frame;
3334 // This entropy hash is different from what shows up in the packet below, 3332 // This entropy hash is different from what shows up in the packet below,
3335 // since entropy is recomputed by the framer on ack truncation (by 3333 // since entropy is recomputed by the framer on ack truncation (by
3336 // TestEntropyCalculator for this test.) 3334 // TestEntropyCalculator for this test.)
3337 ack_frame.received_info.entropy_hash = 0x43; 3335 ack_frame.entropy_hash = 0x43;
3338 ack_frame.received_info.largest_observed = 2 * 300; 3336 ack_frame.largest_observed = 2 * 300;
3339 ack_frame.received_info.delta_time_largest_observed = QuicTime::Delta::Zero(); 3337 ack_frame.delta_time_largest_observed = QuicTime::Delta::Zero();
3340 for (size_t i = 1; i < 2 * 300; i += 2) { 3338 for (size_t i = 1; i < 2 * 300; i += 2) {
3341 ack_frame.received_info.missing_packets.insert(i); 3339 ack_frame.missing_packets.insert(i);
3342 } 3340 }
3343 3341
3344 QuicFrames frames; 3342 QuicFrames frames;
3345 frames.push_back(QuicFrame(&ack_frame)); 3343 frames.push_back(QuicFrame(&ack_frame));
3346 3344
3347 unsigned char packet[] = { 3345 unsigned char packet[] = {
3348 // public flags (8 byte connection_id) 3346 // public flags (8 byte connection_id)
3349 0x3C, 3347 0x3C,
3350 // connection_id 3348 // connection_id
3351 0x10, 0x32, 0x54, 0x76, 3349 0x10, 0x32, 0x54, 0x76,
(...skipping 745 matching lines...) Expand 10 before | Expand all | Expand 10 after
4097 scoped_ptr<QuicPacket> raw_ack_packet( 4095 scoped_ptr<QuicPacket> raw_ack_packet(
4098 framer_.BuildDataPacket(header, frames, kMaxPacketSize).packet); 4096 framer_.BuildDataPacket(header, frames, kMaxPacketSize).packet);
4099 ASSERT_TRUE(raw_ack_packet != NULL); 4097 ASSERT_TRUE(raw_ack_packet != NULL);
4100 scoped_ptr<QuicEncryptedPacket> ack_packet( 4098 scoped_ptr<QuicEncryptedPacket> ack_packet(
4101 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number, 4099 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number,
4102 *raw_ack_packet)); 4100 *raw_ack_packet));
4103 // Now make sure we can turn our ack packet back into an ack frame. 4101 // Now make sure we can turn our ack packet back into an ack frame.
4104 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet)); 4102 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet));
4105 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 4103 ASSERT_EQ(1u, visitor_.ack_frames_.size());
4106 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0]; 4104 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0];
4107 EXPECT_TRUE(processed_ack_frame.received_info.is_truncated); 4105 EXPECT_TRUE(processed_ack_frame.is_truncated);
4108 EXPECT_EQ(510u, processed_ack_frame.received_info.largest_observed); 4106 EXPECT_EQ(510u, processed_ack_frame.largest_observed);
4109 ASSERT_EQ(255u, processed_ack_frame.received_info.missing_packets.size()); 4107 ASSERT_EQ(255u, processed_ack_frame.missing_packets.size());
4110 SequenceNumberSet::const_iterator missing_iter = 4108 SequenceNumberSet::const_iterator missing_iter =
4111 processed_ack_frame.received_info.missing_packets.begin(); 4109 processed_ack_frame.missing_packets.begin();
4112 EXPECT_EQ(1u, *missing_iter); 4110 EXPECT_EQ(1u, *missing_iter);
4113 SequenceNumberSet::const_reverse_iterator last_missing_iter = 4111 SequenceNumberSet::const_reverse_iterator last_missing_iter =
4114 processed_ack_frame.received_info.missing_packets.rbegin(); 4112 processed_ack_frame.missing_packets.rbegin();
4115 EXPECT_EQ(509u, *last_missing_iter); 4113 EXPECT_EQ(509u, *last_missing_iter);
4116 } 4114 }
4117 4115
4118 TEST_P(QuicFramerTest, AckTruncationSmallPacket) { 4116 TEST_P(QuicFramerTest, AckTruncationSmallPacket) {
4119 QuicPacketHeader header; 4117 QuicPacketHeader header;
4120 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); 4118 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210);
4121 header.public_header.reset_flag = false; 4119 header.public_header.reset_flag = false;
4122 header.public_header.version_flag = false; 4120 header.public_header.version_flag = false;
4123 header.fec_flag = false; 4121 header.fec_flag = false;
4124 header.entropy_flag = false; 4122 header.entropy_flag = false;
(...skipping 12 matching lines...) Expand all
4137 scoped_ptr<QuicPacket> raw_ack_packet( 4135 scoped_ptr<QuicPacket> raw_ack_packet(
4138 framer_.BuildDataPacket(header, frames, 500).packet); 4136 framer_.BuildDataPacket(header, frames, 500).packet);
4139 ASSERT_TRUE(raw_ack_packet != NULL); 4137 ASSERT_TRUE(raw_ack_packet != NULL);
4140 scoped_ptr<QuicEncryptedPacket> ack_packet( 4138 scoped_ptr<QuicEncryptedPacket> ack_packet(
4141 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number, 4139 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number,
4142 *raw_ack_packet)); 4140 *raw_ack_packet));
4143 // Now make sure we can turn our ack packet back into an ack frame. 4141 // Now make sure we can turn our ack packet back into an ack frame.
4144 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet)); 4142 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet));
4145 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 4143 ASSERT_EQ(1u, visitor_.ack_frames_.size());
4146 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0]; 4144 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0];
4147 EXPECT_TRUE(processed_ack_frame.received_info.is_truncated); 4145 EXPECT_TRUE(processed_ack_frame.is_truncated);
4148 EXPECT_EQ(476u, processed_ack_frame.received_info.largest_observed); 4146 EXPECT_EQ(476u, processed_ack_frame.largest_observed);
4149 ASSERT_EQ(238u, processed_ack_frame.received_info.missing_packets.size()); 4147 ASSERT_EQ(238u, processed_ack_frame.missing_packets.size());
4150 SequenceNumberSet::const_iterator missing_iter = 4148 SequenceNumberSet::const_iterator missing_iter =
4151 processed_ack_frame.received_info.missing_packets.begin(); 4149 processed_ack_frame.missing_packets.begin();
4152 EXPECT_EQ(1u, *missing_iter); 4150 EXPECT_EQ(1u, *missing_iter);
4153 SequenceNumberSet::const_reverse_iterator last_missing_iter = 4151 SequenceNumberSet::const_reverse_iterator last_missing_iter =
4154 processed_ack_frame.received_info.missing_packets.rbegin(); 4152 processed_ack_frame.missing_packets.rbegin();
4155 EXPECT_EQ(475u, *last_missing_iter); 4153 EXPECT_EQ(475u, *last_missing_iter);
4156 } 4154 }
4157 4155
4158 TEST_P(QuicFramerTest, CleanTruncation) { 4156 TEST_P(QuicFramerTest, CleanTruncation) {
4159 QuicPacketHeader header; 4157 QuicPacketHeader header;
4160 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); 4158 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210);
4161 header.public_header.reset_flag = false; 4159 header.public_header.reset_flag = false;
4162 header.public_header.version_flag = false; 4160 header.public_header.version_flag = false;
4163 header.fec_flag = false; 4161 header.fec_flag = false;
4164 header.entropy_flag = true; 4162 header.entropy_flag = true;
4165 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); 4163 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC);
4166 header.fec_group = 0; 4164 header.fec_group = 0;
4167 4165
4168 QuicAckFrame ack_frame; 4166 QuicAckFrame ack_frame;
4169 ack_frame.received_info.largest_observed = 201; 4167 ack_frame.largest_observed = 201;
4170 for (uint64 i = 1; i < ack_frame.received_info.largest_observed; ++i) { 4168 for (uint64 i = 1; i < ack_frame.largest_observed; ++i) {
4171 ack_frame.received_info.missing_packets.insert(i); 4169 ack_frame.missing_packets.insert(i);
4172 } 4170 }
4173 4171
4174 // Create a packet with just the ack. 4172 // Create a packet with just the ack.
4175 QuicFrame frame; 4173 QuicFrame frame;
4176 frame.type = ACK_FRAME; 4174 frame.type = ACK_FRAME;
4177 frame.ack_frame = &ack_frame; 4175 frame.ack_frame = &ack_frame;
4178 QuicFrames frames; 4176 QuicFrames frames;
4179 frames.push_back(frame); 4177 frames.push_back(frame);
4180 4178
4181 scoped_ptr<QuicPacket> raw_ack_packet(BuildDataPacket(header, frames)); 4179 scoped_ptr<QuicPacket> raw_ack_packet(BuildDataPacket(header, frames));
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
4329 EXPECT_CALL(visitor, OnPacketComplete()); 4327 EXPECT_CALL(visitor, OnPacketComplete());
4330 EXPECT_CALL(visitor, OnUnauthenticatedPublicHeader(_)).WillOnce(Return(true)); 4328 EXPECT_CALL(visitor, OnUnauthenticatedPublicHeader(_)).WillOnce(Return(true));
4331 4329
4332 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 4330 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
4333 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 4331 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
4334 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 4332 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
4335 } 4333 }
4336 4334
4337 } // namespace test 4335 } // namespace test
4338 } // namespace net 4336 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_framer.cc ('k') | net/quic/quic_packet_creator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698