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 <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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |