| 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 |