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

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

Issue 1330973002: relnote: Refactor QuicAckFrame::missing_packets to support a change to a (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@Tidy_up_DLOG_messages_101773586
Patch Set: Created 5 years, 3 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
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 <stdint.h> 7 #include <stdint.h>
8 #include <algorithm> 8 #include <algorithm>
9 #include <map> 9 #include <map>
10 #include <string> 10 #include <string>
(...skipping 1705 matching lines...) Expand 10 before | Expand all | Expand 10 after
1716 1716
1717 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 1717 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
1718 ASSERT_TRUE(visitor_.header_.get()); 1718 ASSERT_TRUE(visitor_.header_.get());
1719 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion)); 1719 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion));
1720 1720
1721 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 1721 EXPECT_EQ(0u, visitor_.stream_frames_.size());
1722 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 1722 ASSERT_EQ(1u, visitor_.ack_frames_.size());
1723 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; 1723 const QuicAckFrame& frame = *visitor_.ack_frames_[0];
1724 EXPECT_EQ(0xBA, frame.entropy_hash); 1724 EXPECT_EQ(0xBA, frame.entropy_hash);
1725 EXPECT_EQ(UINT64_C(0x0123456789ABF), frame.largest_observed); 1725 EXPECT_EQ(UINT64_C(0x0123456789ABF), frame.largest_observed);
1726 ASSERT_EQ(1u, frame.missing_packets.size()); 1726 ASSERT_EQ(1u, frame.missing_packets.NumPackets());
1727 ASSERT_EQ(2u, frame.received_packet_times.size()); 1727 ASSERT_EQ(2u, frame.received_packet_times.size());
1728 PacketNumberSet::const_iterator missing_iter = frame.missing_packets.begin(); 1728 EXPECT_EQ(UINT64_C(0x0123456789ABE), frame.missing_packets.Min());
1729 EXPECT_EQ(UINT64_C(0x0123456789ABE), *missing_iter);
1730 1729
1731 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; 1730 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize;
1732 const size_t kLargestObservedOffset = kReceivedEntropyOffset + 1731 const size_t kLargestObservedOffset = kReceivedEntropyOffset +
1733 kQuicEntropyHashSize; 1732 kQuicEntropyHashSize;
1734 const size_t kMissingDeltaTimeOffset = 1733 const size_t kMissingDeltaTimeOffset =
1735 kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER; 1734 kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER;
1736 const size_t kNumTimestampsOffset = 1735 const size_t kNumTimestampsOffset =
1737 kMissingDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize; 1736 kMissingDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize;
1738 const size_t kTimestampDeltaLargestObserved1 = 1737 const size_t kTimestampDeltaLargestObserved1 =
1739 kNumTimestampsOffset + kQuicNumTimestampsSize; 1738 kNumTimestampsOffset + kQuicNumTimestampsSize;
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
1833 1832
1834 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 1833 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
1835 ASSERT_TRUE(visitor_.header_.get()); 1834 ASSERT_TRUE(visitor_.header_.get());
1836 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion)); 1835 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion));
1837 1836
1838 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 1837 EXPECT_EQ(0u, visitor_.stream_frames_.size());
1839 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 1838 ASSERT_EQ(1u, visitor_.ack_frames_.size());
1840 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; 1839 const QuicAckFrame& frame = *visitor_.ack_frames_[0];
1841 EXPECT_EQ(0xBA, frame.entropy_hash); 1840 EXPECT_EQ(0xBA, frame.entropy_hash);
1842 EXPECT_EQ(UINT64_C(0x0123456789ABF), frame.largest_observed); 1841 EXPECT_EQ(UINT64_C(0x0123456789ABF), frame.largest_observed);
1843 ASSERT_EQ(1u, frame.missing_packets.size()); 1842 ASSERT_EQ(1u, frame.missing_packets.NumPackets());
1844 ASSERT_EQ(1u, frame.received_packet_times.size()); 1843 ASSERT_EQ(1u, frame.received_packet_times.size());
1845 PacketNumberSet::const_iterator missing_iter = frame.missing_packets.begin(); 1844 EXPECT_EQ(UINT64_C(0x0123456789ABE), frame.missing_packets.Min());
1846 EXPECT_EQ(UINT64_C(0x0123456789ABE), *missing_iter);
1847 1845
1848 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; 1846 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize;
1849 const size_t kLargestObservedOffset = 1847 const size_t kLargestObservedOffset =
1850 kReceivedEntropyOffset + kQuicEntropyHashSize; 1848 kReceivedEntropyOffset + kQuicEntropyHashSize;
1851 const size_t kMissingDeltaTimeOffset = 1849 const size_t kMissingDeltaTimeOffset =
1852 kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER; 1850 kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER;
1853 const size_t kNumTimestampsOffset = 1851 const size_t kNumTimestampsOffset =
1854 kMissingDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize; 1852 kMissingDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize;
1855 const size_t kTimestampDeltaLargestObserved = 1853 const size_t kTimestampDeltaLargestObserved =
1856 kNumTimestampsOffset + kQuicNumTimestampsSize; 1854 kNumTimestampsOffset + kQuicNumTimestampsSize;
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
1936 1934
1937 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 1935 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
1938 ASSERT_TRUE(visitor_.header_.get()); 1936 ASSERT_TRUE(visitor_.header_.get());
1939 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion)); 1937 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion));
1940 1938
1941 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 1939 EXPECT_EQ(0u, visitor_.stream_frames_.size());
1942 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 1940 ASSERT_EQ(1u, visitor_.ack_frames_.size());
1943 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; 1941 const QuicAckFrame& frame = *visitor_.ack_frames_[0];
1944 EXPECT_EQ(0xBA, frame.entropy_hash); 1942 EXPECT_EQ(0xBA, frame.entropy_hash);
1945 EXPECT_EQ(UINT64_C(0x0123456789ABF), frame.largest_observed); 1943 EXPECT_EQ(UINT64_C(0x0123456789ABF), frame.largest_observed);
1946 ASSERT_EQ(1u, frame.missing_packets.size()); 1944 ASSERT_EQ(1u, frame.missing_packets.NumPackets());
1947 PacketNumberSet::const_iterator missing_iter = frame.missing_packets.begin(); 1945 EXPECT_EQ(UINT64_C(0x0123456789ABE), frame.missing_packets.Min());
1948 EXPECT_EQ(UINT64_C(0x0123456789ABE), *missing_iter);
1949 1946
1950 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; 1947 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize;
1951 const size_t kLargestObservedOffset = kReceivedEntropyOffset + 1948 const size_t kLargestObservedOffset = kReceivedEntropyOffset +
1952 kQuicEntropyHashSize; 1949 kQuicEntropyHashSize;
1953 const size_t kMissingDeltaTimeOffset = 1950 const size_t kMissingDeltaTimeOffset =
1954 kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER; 1951 kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER;
1955 const size_t kNumTimestampsOffset = kMissingDeltaTimeOffset + 1952 const size_t kNumTimestampsOffset = kMissingDeltaTimeOffset +
1956 kQuicDeltaTimeLargestObservedSize; 1953 kQuicDeltaTimeLargestObservedSize;
1957 const size_t kNumMissingPacketOffset = kNumTimestampsOffset + 1954 const size_t kNumMissingPacketOffset = kNumTimestampsOffset +
1958 kQuicNumTimestampsSize; 1955 kQuicNumTimestampsSize;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
2035 2032
2036 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 2033 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
2037 ASSERT_TRUE(visitor_.header_.get()); 2034 ASSERT_TRUE(visitor_.header_.get());
2038 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion)); 2035 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion));
2039 2036
2040 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 2037 EXPECT_EQ(0u, visitor_.stream_frames_.size());
2041 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 2038 ASSERT_EQ(1u, visitor_.ack_frames_.size());
2042 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; 2039 const QuicAckFrame& frame = *visitor_.ack_frames_[0];
2043 EXPECT_EQ(0xBA, frame.entropy_hash); 2040 EXPECT_EQ(0xBA, frame.entropy_hash);
2044 EXPECT_EQ(UINT64_C(0x0123456789ABF), frame.largest_observed); 2041 EXPECT_EQ(UINT64_C(0x0123456789ABF), frame.largest_observed);
2045 ASSERT_EQ(1u, frame.missing_packets.size()); 2042 ASSERT_EQ(1u, frame.missing_packets.NumPackets());
2046 PacketNumberSet::const_iterator missing_iter = frame.missing_packets.begin(); 2043 EXPECT_EQ(UINT64_C(0x0123456789ABE), frame.missing_packets.Min());
2047 EXPECT_EQ(UINT64_C(0x0123456789ABE), *missing_iter);
2048 2044
2049 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; 2045 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize;
2050 const size_t kLargestObservedOffset = kReceivedEntropyOffset + 2046 const size_t kLargestObservedOffset = kReceivedEntropyOffset +
2051 kQuicEntropyHashSize; 2047 kQuicEntropyHashSize;
2052 const size_t kMissingDeltaTimeOffset = 2048 const size_t kMissingDeltaTimeOffset =
2053 kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER; 2049 kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER;
2054 const size_t kNumTimestampsOffset = kMissingDeltaTimeOffset + 2050 const size_t kNumTimestampsOffset = kMissingDeltaTimeOffset +
2055 kQuicDeltaTimeLargestObservedSize; 2051 kQuicDeltaTimeLargestObservedSize;
2056 const size_t kNumMissingPacketOffset = kNumTimestampsOffset + 2052 const size_t kNumMissingPacketOffset = kNumTimestampsOffset +
2057 kQuicNumTimestampsSize; 2053 kQuicNumTimestampsSize;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
2128 2124
2129 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 2125 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
2130 ASSERT_TRUE(visitor_.header_.get()); 2126 ASSERT_TRUE(visitor_.header_.get());
2131 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion)); 2127 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion));
2132 2128
2133 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 2129 EXPECT_EQ(0u, visitor_.stream_frames_.size());
2134 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 2130 ASSERT_EQ(1u, visitor_.ack_frames_.size());
2135 QuicAckFrame* frame = visitor_.ack_frames_[0]; 2131 QuicAckFrame* frame = visitor_.ack_frames_[0];
2136 EXPECT_EQ(0xBA, frame->entropy_hash); 2132 EXPECT_EQ(0xBA, frame->entropy_hash);
2137 EXPECT_EQ(UINT64_C(0x0123456789ABF), frame->largest_observed); 2133 EXPECT_EQ(UINT64_C(0x0123456789ABF), frame->largest_observed);
2138 ASSERT_EQ(0u, frame->missing_packets.size()); 2134 ASSERT_TRUE(frame->missing_packets.Empty());
2139 2135
2140 // Verify that the packet re-serializes identically. 2136 // Verify that the packet re-serializes identically.
2141 QuicFrames frames; 2137 QuicFrames frames;
2142 frames.push_back(QuicFrame(frame)); 2138 frames.push_back(QuicFrame(frame));
2143 scoped_ptr<QuicPacket> data(BuildDataPacket(*visitor_.header_, frames)); 2139 scoped_ptr<QuicPacket> data(BuildDataPacket(*visitor_.header_, frames));
2144 ASSERT_TRUE(data != nullptr); 2140 ASSERT_TRUE(data != nullptr);
2145 2141
2146 test::CompareCharArraysWithHexError("constructed packet", data->data(), 2142 test::CompareCharArraysWithHexError("constructed packet", data->data(),
2147 data->length(), AsChars(packet), 2143 data->length(), AsChars(packet),
2148 arraysize(packet)); 2144 arraysize(packet));
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
2194 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 2190 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
2195 ASSERT_TRUE(visitor_.header_.get()); 2191 ASSERT_TRUE(visitor_.header_.get());
2196 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion)); 2192 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion));
2197 2193
2198 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 2194 EXPECT_EQ(0u, visitor_.stream_frames_.size());
2199 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 2195 ASSERT_EQ(1u, visitor_.ack_frames_.size());
2200 QuicAckFrame* frame = visitor_.ack_frames_[0]; 2196 QuicAckFrame* frame = visitor_.ack_frames_[0];
2201 EXPECT_EQ(0xBA, frame->entropy_hash); 2197 EXPECT_EQ(0xBA, frame->entropy_hash);
2202 EXPECT_EQ(UINT64_C(0x0123456789ABF), frame->largest_observed); 2198 EXPECT_EQ(UINT64_C(0x0123456789ABF), frame->largest_observed);
2203 EXPECT_EQ(0u, frame->revived_packets.size()); 2199 EXPECT_EQ(0u, frame->revived_packets.size());
2204 ASSERT_EQ(500u, frame->missing_packets.size()); 2200 ASSERT_EQ(500u, frame->missing_packets.NumPackets());
2205 PacketNumberSet::const_iterator first_missing_iter = 2201 EXPECT_EQ(UINT64_C(0x0123456789ABE) - 499, frame->missing_packets.Min());
2206 frame->missing_packets.begin(); 2202 EXPECT_EQ(UINT64_C(0x0123456789ABE), frame->missing_packets.Max());
2207 EXPECT_EQ(UINT64_C(0x0123456789ABE) - 499, *first_missing_iter);
2208 PacketNumberSet::const_reverse_iterator last_missing_iter =
2209 frame->missing_packets.rbegin();
2210 EXPECT_EQ(UINT64_C(0x0123456789ABE), *last_missing_iter);
2211 2203
2212 // Verify that the packet re-serializes identically. 2204 // Verify that the packet re-serializes identically.
2213 QuicFrames frames; 2205 QuicFrames frames;
2214 frames.push_back(QuicFrame(frame)); 2206 frames.push_back(QuicFrame(frame));
2215 scoped_ptr<QuicPacket> data(BuildDataPacket(*visitor_.header_, frames)); 2207 scoped_ptr<QuicPacket> data(BuildDataPacket(*visitor_.header_, frames));
2216 ASSERT_TRUE(data != nullptr); 2208 ASSERT_TRUE(data != nullptr);
2217 2209
2218 test::CompareCharArraysWithHexError("constructed packet", 2210 test::CompareCharArraysWithHexError("constructed packet",
2219 data->data(), data->length(), 2211 data->data(), data->length(),
2220 AsChars(packet), arraysize(packet)); 2212 AsChars(packet), arraysize(packet));
(...skipping 1119 matching lines...) Expand 10 before | Expand all | Expand 10 after
3340 header.public_header.version_flag = false; 3332 header.public_header.version_flag = false;
3341 header.fec_flag = false; 3333 header.fec_flag = false;
3342 header.entropy_flag = true; 3334 header.entropy_flag = true;
3343 header.packet_packet_number = UINT64_C(0x770123456789AA8); 3335 header.packet_packet_number = UINT64_C(0x770123456789AA8);
3344 header.fec_group = 0; 3336 header.fec_group = 0;
3345 3337
3346 QuicAckFrame ack_frame; 3338 QuicAckFrame ack_frame;
3347 ack_frame.entropy_hash = 0x43; 3339 ack_frame.entropy_hash = 0x43;
3348 ack_frame.largest_observed = UINT64_C(0x770123456789ABF); 3340 ack_frame.largest_observed = UINT64_C(0x770123456789ABF);
3349 ack_frame.delta_time_largest_observed = QuicTime::Delta::Zero(); 3341 ack_frame.delta_time_largest_observed = QuicTime::Delta::Zero();
3350 ack_frame.missing_packets.insert(UINT64_C(0x770123456789ABE)); 3342 ack_frame.missing_packets.Add(UINT64_C(0x770123456789ABE));
3351 3343
3352 QuicFrames frames; 3344 QuicFrames frames;
3353 frames.push_back(QuicFrame(&ack_frame)); 3345 frames.push_back(QuicFrame(&ack_frame));
3354 3346
3355 // clang-format off 3347 // clang-format off
3356 unsigned char packet[] = { 3348 unsigned char packet[] = {
3357 // public flags (8 byte connection_id) 3349 // public flags (8 byte connection_id)
3358 0x3C, 3350 0x3C,
3359 // connection_id 3351 // connection_id
3360 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, 3352 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
3407 header.fec_group = 0; 3399 header.fec_group = 0;
3408 3400
3409 QuicAckFrame ack_frame; 3401 QuicAckFrame ack_frame;
3410 // This entropy hash is different from what shows up in the packet below, 3402 // This entropy hash is different from what shows up in the packet below,
3411 // since entropy is recomputed by the framer on ack truncation (by 3403 // since entropy is recomputed by the framer on ack truncation (by
3412 // TestEntropyCalculator for this test.) 3404 // TestEntropyCalculator for this test.)
3413 ack_frame.entropy_hash = 0x43; 3405 ack_frame.entropy_hash = 0x43;
3414 ack_frame.largest_observed = 2 * 300; 3406 ack_frame.largest_observed = 2 * 300;
3415 ack_frame.delta_time_largest_observed = QuicTime::Delta::Zero(); 3407 ack_frame.delta_time_largest_observed = QuicTime::Delta::Zero();
3416 for (size_t i = 1; i < 2 * 300; i += 2) { 3408 for (size_t i = 1; i < 2 * 300; i += 2) {
3417 ack_frame.missing_packets.insert(i); 3409 ack_frame.missing_packets.Add(i);
3418 } 3410 }
3419 3411
3420 QuicFrames frames; 3412 QuicFrames frames;
3421 frames.push_back(QuicFrame(&ack_frame)); 3413 frames.push_back(QuicFrame(&ack_frame));
3422 3414
3423 // clang-format off 3415 // clang-format off
3424 unsigned char packet[] = { 3416 unsigned char packet[] = {
3425 // public flags (8 byte connection_id) 3417 // public flags (8 byte connection_id)
3426 0x3C, 3418 0x3C,
3427 // connection_id 3419 // connection_id
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
3518 header.fec_group = 0; 3510 header.fec_group = 0;
3519 3511
3520 QuicAckFrame ack_frame; 3512 QuicAckFrame ack_frame;
3521 // This entropy hash is different from what shows up in the packet below, 3513 // This entropy hash is different from what shows up in the packet below,
3522 // since entropy is recomputed by the framer on ack truncation (by 3514 // since entropy is recomputed by the framer on ack truncation (by
3523 // TestEntropyCalculator for this test.) 3515 // TestEntropyCalculator for this test.)
3524 ack_frame.entropy_hash = 0x43; 3516 ack_frame.entropy_hash = 0x43;
3525 ack_frame.largest_observed = 2 * 300; 3517 ack_frame.largest_observed = 2 * 300;
3526 ack_frame.delta_time_largest_observed = QuicTime::Delta::Zero(); 3518 ack_frame.delta_time_largest_observed = QuicTime::Delta::Zero();
3527 for (size_t i = 1; i < 2 * 300; i += 2) { 3519 for (size_t i = 1; i < 2 * 300; i += 2) {
3528 ack_frame.missing_packets.insert(i); 3520 ack_frame.missing_packets.Add(i);
3529 } 3521 }
3530 3522
3531 QuicFrames frames; 3523 QuicFrames frames;
3532 frames.push_back(QuicFrame(&ack_frame)); 3524 frames.push_back(QuicFrame(&ack_frame));
3533 3525
3534 // clang-format off 3526 // clang-format off
3535 unsigned char packet[] = { 3527 unsigned char packet[] = {
3536 // public flags (8 byte connection_id) 3528 // public flags (8 byte connection_id)
3537 0x3C, 3529 0x3C,
3538 // connection_id 3530 // connection_id
(...skipping 726 matching lines...) Expand 10 before | Expand all | Expand 10 after
4265 char buffer[kMaxPacketSize]; 4257 char buffer[kMaxPacketSize];
4266 scoped_ptr<QuicEncryptedPacket> ack_packet( 4258 scoped_ptr<QuicEncryptedPacket> ack_packet(
4267 framer_.EncryptPayload(ENCRYPTION_NONE, header.packet_packet_number, 4259 framer_.EncryptPayload(ENCRYPTION_NONE, header.packet_packet_number,
4268 *raw_ack_packet, buffer, kMaxPacketSize)); 4260 *raw_ack_packet, buffer, kMaxPacketSize));
4269 // Now make sure we can turn our ack packet back into an ack frame. 4261 // Now make sure we can turn our ack packet back into an ack frame.
4270 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet)); 4262 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet));
4271 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 4263 ASSERT_EQ(1u, visitor_.ack_frames_.size());
4272 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0]; 4264 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0];
4273 EXPECT_TRUE(processed_ack_frame.is_truncated); 4265 EXPECT_TRUE(processed_ack_frame.is_truncated);
4274 EXPECT_EQ(510u, processed_ack_frame.largest_observed); 4266 EXPECT_EQ(510u, processed_ack_frame.largest_observed);
4275 ASSERT_EQ(255u, processed_ack_frame.missing_packets.size()); 4267 ASSERT_EQ(255u, processed_ack_frame.missing_packets.NumPackets());
4276 PacketNumberSet::const_iterator missing_iter = 4268 EXPECT_EQ(1u, processed_ack_frame.missing_packets.Min());
4277 processed_ack_frame.missing_packets.begin(); 4269 EXPECT_EQ(509u, processed_ack_frame.missing_packets.Max());
4278 EXPECT_EQ(1u, *missing_iter);
4279 PacketNumberSet::const_reverse_iterator last_missing_iter =
4280 processed_ack_frame.missing_packets.rbegin();
4281 EXPECT_EQ(509u, *last_missing_iter);
4282 } 4270 }
4283 4271
4284 TEST_P(QuicFramerTest, AckTruncationSmallPacket) { 4272 TEST_P(QuicFramerTest, AckTruncationSmallPacket) {
4285 QuicPacketHeader header; 4273 QuicPacketHeader header;
4286 header.public_header.connection_id = UINT64_C(0xFEDCBA9876543210); 4274 header.public_header.connection_id = UINT64_C(0xFEDCBA9876543210);
4287 header.public_header.reset_flag = false; 4275 header.public_header.reset_flag = false;
4288 header.public_header.version_flag = false; 4276 header.public_header.version_flag = false;
4289 header.fec_flag = false; 4277 header.fec_flag = false;
4290 header.entropy_flag = false; 4278 header.entropy_flag = false;
4291 header.packet_packet_number = UINT64_C(0x123456789ABC); 4279 header.packet_packet_number = UINT64_C(0x123456789ABC);
(...skipping 13 matching lines...) Expand all
4305 char buffer[kMaxPacketSize]; 4293 char buffer[kMaxPacketSize];
4306 scoped_ptr<QuicEncryptedPacket> ack_packet( 4294 scoped_ptr<QuicEncryptedPacket> ack_packet(
4307 framer_.EncryptPayload(ENCRYPTION_NONE, header.packet_packet_number, 4295 framer_.EncryptPayload(ENCRYPTION_NONE, header.packet_packet_number,
4308 *raw_ack_packet, buffer, kMaxPacketSize)); 4296 *raw_ack_packet, buffer, kMaxPacketSize));
4309 // Now make sure we can turn our ack packet back into an ack frame. 4297 // Now make sure we can turn our ack packet back into an ack frame.
4310 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet)); 4298 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet));
4311 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 4299 ASSERT_EQ(1u, visitor_.ack_frames_.size());
4312 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0]; 4300 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0];
4313 EXPECT_TRUE(processed_ack_frame.is_truncated); 4301 EXPECT_TRUE(processed_ack_frame.is_truncated);
4314 EXPECT_EQ(476u, processed_ack_frame.largest_observed); 4302 EXPECT_EQ(476u, processed_ack_frame.largest_observed);
4315 ASSERT_EQ(238u, processed_ack_frame.missing_packets.size()); 4303 ASSERT_EQ(238u, processed_ack_frame.missing_packets.NumPackets());
4316 PacketNumberSet::const_iterator missing_iter = 4304 EXPECT_EQ(1u, processed_ack_frame.missing_packets.Min());
4317 processed_ack_frame.missing_packets.begin(); 4305 EXPECT_EQ(475u, processed_ack_frame.missing_packets.Max());
4318 EXPECT_EQ(1u, *missing_iter);
4319 PacketNumberSet::const_reverse_iterator last_missing_iter =
4320 processed_ack_frame.missing_packets.rbegin();
4321 EXPECT_EQ(475u, *last_missing_iter);
4322 } 4306 }
4323 4307
4324 TEST_P(QuicFramerTest, CleanTruncation) { 4308 TEST_P(QuicFramerTest, CleanTruncation) {
4325 QuicPacketHeader header; 4309 QuicPacketHeader header;
4326 header.public_header.connection_id = UINT64_C(0xFEDCBA9876543210); 4310 header.public_header.connection_id = UINT64_C(0xFEDCBA9876543210);
4327 header.public_header.reset_flag = false; 4311 header.public_header.reset_flag = false;
4328 header.public_header.version_flag = false; 4312 header.public_header.version_flag = false;
4329 header.fec_flag = false; 4313 header.fec_flag = false;
4330 header.entropy_flag = true; 4314 header.entropy_flag = true;
4331 header.packet_packet_number = UINT64_C(0x123456789ABC); 4315 header.packet_packet_number = UINT64_C(0x123456789ABC);
4332 header.fec_group = 0; 4316 header.fec_group = 0;
4333 4317
4334 QuicAckFrame ack_frame; 4318 QuicAckFrame ack_frame;
4335 ack_frame.largest_observed = 201; 4319 ack_frame.largest_observed = 201;
4336 for (uint64 i = 1; i < ack_frame.largest_observed; ++i) { 4320 ack_frame.missing_packets.Add(1, ack_frame.largest_observed);
4337 ack_frame.missing_packets.insert(i);
4338 }
4339 4321
4340 // Create a packet with just the ack. 4322 // Create a packet with just the ack.
4341 QuicFrame frame; 4323 QuicFrame frame;
4342 frame.type = ACK_FRAME; 4324 frame.type = ACK_FRAME;
4343 frame.ack_frame = &ack_frame; 4325 frame.ack_frame = &ack_frame;
4344 QuicFrames frames; 4326 QuicFrames frames;
4345 frames.push_back(frame); 4327 frames.push_back(frame);
4346 4328
4347 scoped_ptr<QuicPacket> raw_ack_packet(BuildDataPacket(header, frames)); 4329 scoped_ptr<QuicPacket> raw_ack_packet(BuildDataPacket(header, frames));
4348 ASSERT_TRUE(raw_ack_packet != nullptr); 4330 ASSERT_TRUE(raw_ack_packet != nullptr);
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
4578 EXPECT_CALL(visitor, OnStreamFrame(_)).Times(0); 4560 EXPECT_CALL(visitor, OnStreamFrame(_)).Times(0);
4579 EXPECT_CALL(visitor, OnAckFrame(_)).Times(0); 4561 EXPECT_CALL(visitor, OnAckFrame(_)).Times(0);
4580 EXPECT_CALL(visitor, OnPacketComplete()).Times(0); 4562 EXPECT_CALL(visitor, OnPacketComplete()).Times(0);
4581 4563
4582 EXPECT_FALSE(framer_.ProcessPacket(*packet)); 4564 EXPECT_FALSE(framer_.ProcessPacket(*packet));
4583 EXPECT_EQ(QUIC_INVALID_PACKET_HEADER, framer_.error()); 4565 EXPECT_EQ(QUIC_INVALID_PACKET_HEADER, framer_.error());
4584 } 4566 }
4585 4567
4586 } // namespace test 4568 } // namespace test
4587 } // namespace net 4569 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698