Index: net/quic/core/quic_framer_test.cc |
diff --git a/net/quic/core/quic_framer_test.cc b/net/quic/core/quic_framer_test.cc |
index 0ce097352de99b25e06355b2decc2a74e1d64b00..6cd6252016941683637f96d513a1e9a0f1d36694 100644 |
--- a/net/quic/core/quic_framer_test.cc |
+++ b/net/quic/core/quic_framer_test.cc |
@@ -1704,16 +1704,10 @@ TEST_P(QuicFramerTest, InvalidFECGroupOffset) { |
0x10 |
}; |
// clang-format on |
- if (framer_.version() > QUIC_VERSION_31) { |
- CheckProcessingFails(packet, arraysize(packet), |
- "Illegal private flags value.", |
- QUIC_INVALID_PACKET_HEADER); |
- } else { |
- CheckProcessingFails(packet, arraysize(packet), |
- "First fec protected packet offset must be less " |
- "than the packet number.", |
- QUIC_INVALID_PACKET_HEADER); |
- } |
+ CheckProcessingFails(packet, arraysize(packet), |
+ "Illegal private flags value.", |
+ QUIC_INVALID_PACKET_HEADER); |
+ |
}; |
TEST_P(QuicFramerTest, PaddingFrame) { |
@@ -2376,133 +2370,6 @@ TEST_P(QuicFramerTest, RejectPublicHeader) { |
ASSERT_FALSE(visitor_.header_.get()); |
} |
-TEST_P(QuicFramerTest, AckFrameTwoTimestamp) { |
- // clang-format off |
- unsigned char packet[] = { |
- // public flags (8 byte connection_id) |
- 0x38, |
- // connection_id |
- 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, |
- // packet number |
- 0xA8, 0x9A, 0x78, 0x56, 0x34, 0x12, |
- // private flags (entropy) |
- 0x01, |
- |
- // frame type (ack frame) |
- // (has nacks, not truncated, 6 byte largest observed, 1 byte delta) |
- 0x6C, |
- // entropy hash of all received packets. |
- 0xBA, |
- // largest observed packet number |
- 0xBF, 0x9A, 0x78, 0x56, 0x34, 0x12, |
- // Zero delta time. |
- 0x00, 0x00, |
- // Number of timestamps. |
- 0x02, |
- // Delta from largest observed. |
- 0x01, |
- // Delta time. |
- 0x10, 0x32, 0x54, 0x76, |
- // Delta from largest observed. |
- 0x02, |
- // Delta time. |
- 0x10, 0x32, |
- // num missing packets |
- 0x01, |
- // missing packet delta |
- 0x01, |
- // 0 more missing packets in range. |
- 0x00, |
- // Number of revived packets. |
- 0x00, |
- }; |
- // clang-format on |
- |
- if (framer_.version() > QUIC_VERSION_31) { |
- return; |
- } |
- |
- QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); |
- EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
- |
- EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
- ASSERT_TRUE(visitor_.header_.get()); |
- EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId, |
- !kIncludeDiversificationNonce)); |
- |
- EXPECT_EQ(0u, visitor_.stream_frames_.size()); |
- ASSERT_EQ(1u, visitor_.ack_frames_.size()); |
- const QuicAckFrame& frame = *visitor_.ack_frames_[0]; |
- EXPECT_EQ(0xBA, frame.entropy_hash); |
- EXPECT_EQ(kLargestObserved, frame.largest_observed); |
- ASSERT_EQ(1u, frame.packets.NumPacketsSlow()); |
- ASSERT_EQ(2u, frame.received_packet_times.size()); |
- EXPECT_EQ(kMissingPacket, frame.packets.Min()); |
- |
- const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; |
- const size_t kLargestObservedOffset = |
- kReceivedEntropyOffset + kQuicEntropyHashSize; |
- const size_t kMissingDeltaTimeOffset = |
- kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER; |
- const size_t kNumTimestampsOffset = |
- kMissingDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize; |
- const size_t kTimestampDeltaLargestObserved1 = |
- kNumTimestampsOffset + kQuicNumTimestampsSize; |
- const size_t kTimestampTimeDeltaLargestObserved1 = |
- kTimestampDeltaLargestObserved1 + 1; |
- const size_t kTimestampDeltaLargestObserved2 = |
- kTimestampTimeDeltaLargestObserved1 + 4; |
- const size_t kTimestampTimeDeltaLargestObserved2 = |
- kTimestampDeltaLargestObserved2 + 1; |
- const size_t kNumMissingPacketOffset = |
- kTimestampTimeDeltaLargestObserved2 + 2; |
- const size_t kMissingPacketsOffset = |
- kNumMissingPacketOffset + kNumberOfNackRangesSize; |
- const size_t kMissingPacketsRange = |
- kMissingPacketsOffset + PACKET_1BYTE_PACKET_NUMBER; |
- const size_t kRevivedPacketsLength = |
- kMissingPacketsRange + PACKET_1BYTE_PACKET_NUMBER; |
- // Now test framing boundaries. |
- const size_t ack_frame_size = |
- kRevivedPacketsLength + PACKET_1BYTE_PACKET_NUMBER; |
- for (size_t i = kQuicFrameTypeSize; i < ack_frame_size; ++i) { |
- string expected_error; |
- if (i < kLargestObservedOffset) { |
- expected_error = "Unable to read entropy hash for received packets."; |
- } else if (i < kMissingDeltaTimeOffset) { |
- expected_error = "Unable to read largest observed."; |
- } else if (i < kNumTimestampsOffset) { |
- expected_error = "Unable to read ack delay time."; |
- } else if (i < kTimestampDeltaLargestObserved1) { |
- expected_error = "Unable to read num received packets."; |
- } else if (i < kTimestampTimeDeltaLargestObserved1) { |
- expected_error = "Unable to read sequence delta in received packets."; |
- } else if (i < kTimestampDeltaLargestObserved2) { |
- expected_error = "Unable to read time delta in received packets."; |
- } else if (i < kTimestampTimeDeltaLargestObserved2) { |
- expected_error = "Unable to read sequence delta in received packets."; |
- } else if (i < kNumMissingPacketOffset) { |
- expected_error = |
- "Unable to read incremental time delta in received packets."; |
- } else if (i < kMissingPacketsOffset) { |
- expected_error = "Unable to read num missing packet ranges."; |
- } else if (i < kMissingPacketsRange) { |
- expected_error = "Unable to read missing packet number delta."; |
- } else if (i < kRevivedPacketsLength) { |
- expected_error = "Unable to read missing packet number range."; |
- } else { |
- expected_error = "Unable to read num revived packets."; |
- } |
- CheckProcessingFails( |
- packet, |
- i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
- !kIncludeVersion, !kIncludePathId, |
- !kIncludeDiversificationNonce, |
- PACKET_6BYTE_PACKET_NUMBER), |
- expected_error, QUIC_INVALID_ACK_DATA); |
- } |
-} |
- |
TEST_P(QuicFramerTest, AckFrameTwoTimestampVersion32) { |
// clang-format off |
unsigned char packet[] = { |
@@ -2543,8 +2410,7 @@ TEST_P(QuicFramerTest, AckFrameTwoTimestampVersion32) { |
}; |
// clang-format on |
- if (framer_.version() <= QUIC_VERSION_31 || |
- framer_.version() > QUIC_VERSION_33) { |
+ if (framer_.version() > QUIC_VERSION_33) { |
return; |
} |
@@ -2620,11 +2486,11 @@ TEST_P(QuicFramerTest, AckFrameTwoTimestampVersion32) { |
} |
} |
-TEST_P(QuicFramerTest, AckFrameOneTimestamp) { |
+TEST_P(QuicFramerTest, AckFrameOneTimestampVersion32) { |
// clang-format off |
unsigned char packet[] = { |
// public flags (8 byte connection_id) |
- 0x38, |
+ 0x3C, |
// connection_id |
0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, |
// packet number |
@@ -2653,12 +2519,10 @@ TEST_P(QuicFramerTest, AckFrameOneTimestamp) { |
0x01, |
// 0 more missing packets in range. |
0x00, |
- // Number of revived packets. |
- 0x00, |
}; |
// clang-format on |
- if (framer_.version() > QUIC_VERSION_31) { |
+ if (framer_.version() > QUIC_VERSION_33) { |
return; |
} |
@@ -2693,13 +2557,8 @@ TEST_P(QuicFramerTest, AckFrameOneTimestamp) { |
const size_t kNumMissingPacketOffset = kTimestampTimeDeltaLargestObserved + 4; |
const size_t kMissingPacketsOffset = |
kNumMissingPacketOffset + kNumberOfNackRangesSize; |
- const size_t kMissingPacketsRange = |
- kMissingPacketsOffset + PACKET_1BYTE_PACKET_NUMBER; |
- const size_t kRevivedPacketsLength = |
- kMissingPacketsRange + PACKET_1BYTE_PACKET_NUMBER; |
// Now test framing boundaries. |
- const size_t ack_frame_size = |
- kRevivedPacketsLength + PACKET_1BYTE_PACKET_NUMBER; |
+ const size_t ack_frame_size = PACKET_1BYTE_PACKET_NUMBER; |
for (size_t i = kQuicFrameTypeSize; i < ack_frame_size; ++i) { |
string expected_error; |
if (i < kLargestObservedOffset) { |
@@ -2716,12 +2575,8 @@ TEST_P(QuicFramerTest, AckFrameOneTimestamp) { |
expected_error = "Unable to read time delta in received packets."; |
} else if (i < kMissingPacketsOffset) { |
expected_error = "Unable to read num missing packet ranges."; |
- } else if (i < kMissingPacketsRange) { |
- expected_error = "Unable to read missing packet number delta."; |
- } else if (i < kRevivedPacketsLength) { |
- expected_error = "Unable to read missing packet number range."; |
} else { |
- expected_error = "Unable to read num revived packets."; |
+ expected_error = "Unable to read missing packet number delta."; |
} |
CheckProcessingFails( |
packet, |
@@ -2733,7 +2588,7 @@ TEST_P(QuicFramerTest, AckFrameOneTimestamp) { |
} |
} |
-TEST_P(QuicFramerTest, AckFrameOneTimestampVersion32) { |
+TEST_P(QuicFramerTest, NewAckFrameOneAckBlock) { |
// clang-format off |
unsigned char packet[] = { |
// public flags (8 byte connection_id) |
@@ -2741,36 +2596,23 @@ TEST_P(QuicFramerTest, AckFrameOneTimestampVersion32) { |
// connection_id |
0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, |
// packet number |
- 0xA8, 0x9A, 0x78, 0x56, 0x34, 0x12, |
- // private flags (entropy) |
- 0x01, |
+ 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, |
// frame type (ack frame) |
- // (has nacks, not truncated, 6 byte largest observed, 1 byte delta) |
- 0x6C, |
- // entropy hash of all received packets. |
- 0xBA, |
- // largest observed packet number |
- 0xBF, 0x9A, 0x78, 0x56, 0x34, 0x12, |
+ // (one ack block, 2 byte largest observed, 2 byte block length) |
+ 0x45, |
+ // largest acked |
+ 0x34, 0x12, |
// Zero delta time. |
0x00, 0x00, |
- // Number of timestamps. |
- 0x01, |
- // Delta from largest observed. |
- 0x01, |
- // Delta time. |
- 0x10, 0x32, 0x54, 0x76, |
- // num missing packets |
- 0x01, |
- // missing packet delta |
- 0x01, |
- // 0 more missing packets in range. |
+ // first ack block length. |
+ 0x34, 0x12, |
+ // num timestamps. |
0x00, |
}; |
// clang-format on |
- if (framer_.version() <= QUIC_VERSION_31 || |
- framer_.version() > QUIC_VERSION_33) { |
+ if (framer_.version() <= QUIC_VERSION_33) { |
return; |
} |
@@ -2785,46 +2627,30 @@ TEST_P(QuicFramerTest, AckFrameOneTimestampVersion32) { |
EXPECT_EQ(0u, visitor_.stream_frames_.size()); |
ASSERT_EQ(1u, visitor_.ack_frames_.size()); |
const QuicAckFrame& frame = *visitor_.ack_frames_[0]; |
- EXPECT_EQ(0xBA, frame.entropy_hash); |
- EXPECT_EQ(kLargestObserved, frame.largest_observed); |
- ASSERT_EQ(1u, frame.packets.NumPacketsSlow()); |
- ASSERT_EQ(1u, frame.received_packet_times.size()); |
- EXPECT_EQ(kMissingPacket, frame.packets.Min()); |
+ EXPECT_EQ(kSmallLargestObserved, frame.largest_observed); |
+ EXPECT_FALSE(frame.missing); |
+ ASSERT_EQ(4660u, frame.packets.NumPacketsSlow()); |
- const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; |
- const size_t kLargestObservedOffset = |
- kReceivedEntropyOffset + kQuicEntropyHashSize; |
- const size_t kMissingDeltaTimeOffset = |
- kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER; |
+ const size_t kLargestAckedOffset = kQuicFrameTypeSize; |
+ const size_t kLargestAckedDeltaTimeOffset = |
+ kLargestAckedOffset + PACKET_2BYTE_PACKET_NUMBER; |
+ const size_t kFirstAckBlockLengthOffset = |
+ kLargestAckedDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize; |
const size_t kNumTimestampsOffset = |
- kMissingDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize; |
- const size_t kTimestampDeltaLargestObserved = |
- kNumTimestampsOffset + kQuicNumTimestampsSize; |
- const size_t kTimestampTimeDeltaLargestObserved = |
- kTimestampDeltaLargestObserved + 1; |
- const size_t kNumMissingPacketOffset = kTimestampTimeDeltaLargestObserved + 4; |
- const size_t kMissingPacketsOffset = |
- kNumMissingPacketOffset + kNumberOfNackRangesSize; |
+ kFirstAckBlockLengthOffset + PACKET_2BYTE_PACKET_NUMBER; |
// Now test framing boundaries. |
- const size_t ack_frame_size = PACKET_1BYTE_PACKET_NUMBER; |
+ const size_t ack_frame_size = |
+ kFirstAckBlockLengthOffset + PACKET_2BYTE_PACKET_NUMBER; |
for (size_t i = kQuicFrameTypeSize; i < ack_frame_size; ++i) { |
string expected_error; |
- if (i < kLargestObservedOffset) { |
- expected_error = "Unable to read entropy hash for received packets."; |
- } else if (i < kMissingDeltaTimeOffset) { |
- expected_error = "Unable to read largest observed."; |
- } else if (i < kNumTimestampsOffset) { |
+ if (i < kLargestAckedDeltaTimeOffset) { |
+ expected_error = "Unable to read largest acked."; |
+ } else if (i < kFirstAckBlockLengthOffset) { |
expected_error = "Unable to read ack delay time."; |
- } else if (i < kTimestampDeltaLargestObserved) { |
- expected_error = "Unable to read num received packets."; |
- } else if (i < kTimestampTimeDeltaLargestObserved) { |
- expected_error = "Unable to read sequence delta in received packets."; |
- } else if (i < kNumMissingPacketOffset) { |
- expected_error = "Unable to read time delta in received packets."; |
- } else if (i < kMissingPacketsOffset) { |
- expected_error = "Unable to read num missing packet ranges."; |
+ } else if (i < kNumTimestampsOffset) { |
+ expected_error = "Unable to read first ack block length."; |
} else { |
- expected_error = "Unable to read missing packet number delta."; |
+ expected_error = "Unable to read num received packets."; |
} |
CheckProcessingFails( |
packet, |
@@ -2836,7 +2662,7 @@ TEST_P(QuicFramerTest, AckFrameOneTimestampVersion32) { |
} |
} |
-TEST_P(QuicFramerTest, AckFrame) { |
+TEST_P(QuicFramerTest, NewAckFrameTwoTimeStampsMultipleAckBlocks) { |
// clang-format off |
unsigned char packet[] = { |
// public flags (8 byte connection_id) |
@@ -2844,213 +2670,38 @@ TEST_P(QuicFramerTest, AckFrame) { |
// connection_id |
0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, |
// packet number |
- 0xA8, 0x9A, 0x78, 0x56, 0x34, 0x12, |
- // private flags (entropy) |
- 0x01, |
+ 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, |
// frame type (ack frame) |
- // (has nacks, not truncated, 6 byte largest observed, 1 byte delta) |
- 0x6C, |
- // entropy hash of all received packets. |
- 0xBA, |
- // largest observed packet number |
- 0xBF, 0x9A, 0x78, 0x56, 0x34, 0x12, |
+ // (more than one ack block, 2 byte largest observed, 2 byte block length) |
+ 0x65, |
+ // largest acked |
+ 0x34, 0x12, |
// Zero delta time. |
0x00, 0x00, |
- // Number of timestamps. |
- 0x00, |
- // num missing packets |
+ // num ack blocks ranges. |
+ 0x04, |
+ // first ack block length. |
+ 0x01, 0x00, |
+ // gap to next block. |
0x01, |
- // missing packet delta |
- 0x01, |
- // 0 more missing packets in range. |
- 0x00, |
- // Number of revived packets. |
- 0x00, |
- }; |
- // clang-format on |
- |
- if (framer_.version() > QUIC_VERSION_31) { |
- return; |
- } |
- |
- QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); |
- EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
- |
- EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
- ASSERT_TRUE(visitor_.header_.get()); |
- EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId, |
- !kIncludeDiversificationNonce)); |
- |
- EXPECT_EQ(0u, visitor_.stream_frames_.size()); |
- ASSERT_EQ(1u, visitor_.ack_frames_.size()); |
- const QuicAckFrame& frame = *visitor_.ack_frames_[0]; |
- EXPECT_EQ(0xBA, frame.entropy_hash); |
- EXPECT_EQ(kLargestObserved, frame.largest_observed); |
- ASSERT_EQ(1u, frame.packets.NumPacketsSlow()); |
- EXPECT_EQ(kMissingPacket, frame.packets.Min()); |
- |
- const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; |
- const size_t kLargestObservedOffset = |
- kReceivedEntropyOffset + kQuicEntropyHashSize; |
- const size_t kMissingDeltaTimeOffset = |
- kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER; |
- const size_t kNumTimestampsOffset = |
- kMissingDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize; |
- const size_t kNumMissingPacketOffset = |
- kNumTimestampsOffset + kQuicNumTimestampsSize; |
- const size_t kMissingPacketsOffset = |
- kNumMissingPacketOffset + kNumberOfNackRangesSize; |
- const size_t kMissingPacketsRange = |
- kMissingPacketsOffset + PACKET_1BYTE_PACKET_NUMBER; |
- const size_t kRevivedPacketsLength = |
- kMissingPacketsRange + PACKET_1BYTE_PACKET_NUMBER; |
- // Now test framing boundaries. |
- const size_t ack_frame_size = |
- kRevivedPacketsLength + PACKET_1BYTE_PACKET_NUMBER; |
- for (size_t i = kQuicFrameTypeSize; i < ack_frame_size; ++i) { |
- string expected_error; |
- if (i < kLargestObservedOffset) { |
- expected_error = "Unable to read entropy hash for received packets."; |
- } else if (i < kMissingDeltaTimeOffset) { |
- expected_error = "Unable to read largest observed."; |
- } else if (i < kNumTimestampsOffset) { |
- expected_error = "Unable to read ack delay time."; |
- } else if (i < kNumMissingPacketOffset) { |
- expected_error = "Unable to read num received packets."; |
- } else if (i < kMissingPacketsOffset) { |
- expected_error = "Unable to read num missing packet ranges."; |
- } else if (i < kMissingPacketsRange) { |
- expected_error = "Unable to read missing packet number delta."; |
- } else if (i < kRevivedPacketsLength) { |
- expected_error = "Unable to read missing packet number range."; |
- } else { |
- expected_error = "Unable to read num revived packets."; |
- } |
- CheckProcessingFails( |
- packet, |
- i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
- !kIncludeVersion, !kIncludePathId, |
- !kIncludeDiversificationNonce, |
- PACKET_6BYTE_PACKET_NUMBER), |
- expected_error, QUIC_INVALID_ACK_DATA); |
- } |
-} |
- |
-TEST_P(QuicFramerTest, NewAckFrameOneAckBlock) { |
- // clang-format off |
- unsigned char packet[] = { |
- // public flags (8 byte connection_id) |
- 0x3C, |
- // connection_id |
- 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, |
- // packet number |
- 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, |
- |
- // frame type (ack frame) |
- // (one ack block, 2 byte largest observed, 2 byte block length) |
- 0x45, |
- // largest acked |
- 0x34, 0x12, |
- // Zero delta time. |
- 0x00, 0x00, |
- // first ack block length. |
- 0x34, 0x12, |
- // num timestamps. |
- 0x00, |
- }; |
- // clang-format on |
- |
- if (framer_.version() <= QUIC_VERSION_33) { |
- return; |
- } |
- |
- QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); |
- EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
- |
- EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
- ASSERT_TRUE(visitor_.header_.get()); |
- EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId, |
- !kIncludeDiversificationNonce)); |
- |
- EXPECT_EQ(0u, visitor_.stream_frames_.size()); |
- ASSERT_EQ(1u, visitor_.ack_frames_.size()); |
- const QuicAckFrame& frame = *visitor_.ack_frames_[0]; |
- EXPECT_EQ(kSmallLargestObserved, frame.largest_observed); |
- EXPECT_FALSE(frame.missing); |
- ASSERT_EQ(4660u, frame.packets.NumPacketsSlow()); |
- |
- const size_t kLargestAckedOffset = kQuicFrameTypeSize; |
- const size_t kLargestAckedDeltaTimeOffset = |
- kLargestAckedOffset + PACKET_2BYTE_PACKET_NUMBER; |
- const size_t kFirstAckBlockLengthOffset = |
- kLargestAckedDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize; |
- const size_t kNumTimestampsOffset = |
- kFirstAckBlockLengthOffset + PACKET_2BYTE_PACKET_NUMBER; |
- // Now test framing boundaries. |
- const size_t ack_frame_size = |
- kFirstAckBlockLengthOffset + PACKET_2BYTE_PACKET_NUMBER; |
- for (size_t i = kQuicFrameTypeSize; i < ack_frame_size; ++i) { |
- string expected_error; |
- if (i < kLargestAckedDeltaTimeOffset) { |
- expected_error = "Unable to read largest acked."; |
- } else if (i < kFirstAckBlockLengthOffset) { |
- expected_error = "Unable to read ack delay time."; |
- } else if (i < kNumTimestampsOffset) { |
- expected_error = "Unable to read first ack block length."; |
- } else { |
- expected_error = "Unable to read num received packets."; |
- } |
- CheckProcessingFails( |
- packet, |
- i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
- !kIncludeVersion, !kIncludePathId, |
- !kIncludeDiversificationNonce, |
- PACKET_6BYTE_PACKET_NUMBER), |
- expected_error, QUIC_INVALID_ACK_DATA); |
- } |
-} |
- |
-TEST_P(QuicFramerTest, NewAckFrameTwoTimeStampsMultipleAckBlocks) { |
- // clang-format off |
- unsigned char packet[] = { |
- // public flags (8 byte connection_id) |
- 0x3C, |
- // connection_id |
- 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, |
- // packet number |
- 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, |
- |
- // frame type (ack frame) |
- // (more than one ack block, 2 byte largest observed, 2 byte block length) |
- 0x65, |
- // largest acked |
- 0x34, 0x12, |
- // Zero delta time. |
- 0x00, 0x00, |
- // num ack blocks ranges. |
- 0x04, |
- // first ack block length. |
- 0x01, 0x00, |
- // gap to next block. |
- 0x01, |
- // ack block length. |
- 0xaf, 0x0e, |
- // gap to next block. |
- 0xff, |
- // ack block length. |
- 0x00, 0x00, |
- // gap to next block. |
- 0x91, |
- // ack block length. |
- 0xea, 0x01, |
- // gap to next block. |
- 0x05, |
- // ack block length. |
- 0x04, 0x00, |
- // Number of timestamps. |
- 0x02, |
- // Delta from largest observed. |
+ // ack block length. |
+ 0xaf, 0x0e, |
+ // gap to next block. |
+ 0xff, |
+ // ack block length. |
+ 0x00, 0x00, |
+ // gap to next block. |
+ 0x91, |
+ // ack block length. |
+ 0xea, 0x01, |
+ // gap to next block. |
+ 0x05, |
+ // ack block length. |
+ 0x04, 0x00, |
+ // Number of timestamps. |
+ 0x02, |
+ // Delta from largest observed. |
0x01, |
// Delta time. |
0x10, 0x32, 0x54, 0x76, |
@@ -3140,292 +2791,33 @@ TEST_P(QuicFramerTest, NewAckFrameTwoTimeStampsMultipleAckBlocks) { |
} else if (i < kNumTimestampsOffset) { |
expected_error = "Unable to ack block length."; |
} else if (i < kTimestampDeltaLargestObserved1) { |
- expected_error = "Unable to read num received packets."; |
- } else if (i < kTimestampTimeDeltaLargestObserved1) { |
- expected_error = "Unable to read sequence delta in received packets."; |
- } else if (i < kTimestampDeltaLargestObserved2) { |
- expected_error = "Unable to read time delta in received packets."; |
- } else if (i < kTimestampTimeDeltaLargestObserved2) { |
- expected_error = "Unable to read sequence delta in received packets."; |
- } else { |
- expected_error = |
- "Unable to read incremental time delta in received packets."; |
- } |
- |
- CheckProcessingFails( |
- packet, |
- i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
- !kIncludeVersion, !kIncludePathId, |
- !kIncludeDiversificationNonce, |
- PACKET_6BYTE_PACKET_NUMBER), |
- expected_error, QUIC_INVALID_ACK_DATA); |
- } |
-} |
- |
-TEST_P(QuicFramerTest, AckFrameVersion32) { |
- // clang-format off |
- unsigned char packet[] = { |
- // public flags (8 byte connection_id) |
- 0x38, |
- // connection_id |
- 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, |
- // packet number |
- 0xA8, 0x9A, 0x78, 0x56, 0x34, 0x12, |
- // private flags (entropy) |
- 0x01, |
- |
- // frame type (ack frame) |
- // (has nacks, not truncated, 6 byte largest observed, 1 byte delta) |
- 0x6C, |
- // entropy hash of all received packets. |
- 0xBA, |
- // largest observed packet number |
- 0xBF, 0x9A, 0x78, 0x56, 0x34, 0x12, |
- // Zero delta time. |
- 0x00, 0x00, |
- // Number of timestamps. |
- 0x00, |
- // num missing packets |
- 0x01, |
- // missing packet delta |
- 0x01, |
- // 0 more missing packets in range. |
- 0x00, |
- }; |
- // clang-format on |
- |
- if (framer_.version() <= QUIC_VERSION_31 || |
- framer_.version() > QUIC_VERSION_33) { |
- return; |
- } |
- |
- QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); |
- EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
- |
- EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
- ASSERT_TRUE(visitor_.header_.get()); |
- EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId, |
- !kIncludeDiversificationNonce)); |
- |
- EXPECT_EQ(0u, visitor_.stream_frames_.size()); |
- ASSERT_EQ(1u, visitor_.ack_frames_.size()); |
- const QuicAckFrame& frame = *visitor_.ack_frames_[0]; |
- EXPECT_EQ(0xBA, frame.entropy_hash); |
- EXPECT_EQ(kLargestObserved, frame.largest_observed); |
- ASSERT_EQ(1u, frame.packets.NumPacketsSlow()); |
- EXPECT_EQ(kMissingPacket, frame.packets.Min()); |
- |
- const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; |
- const size_t kLargestObservedOffset = |
- kReceivedEntropyOffset + kQuicEntropyHashSize; |
- const size_t kMissingDeltaTimeOffset = |
- kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER; |
- const size_t kNumTimestampsOffset = |
- kMissingDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize; |
- const size_t kNumMissingPacketOffset = |
- kNumTimestampsOffset + kQuicNumTimestampsSize; |
- const size_t kMissingPacketsOffset = |
- kNumMissingPacketOffset + kNumberOfNackRangesSize; |
- // Now test framing boundaries. |
- const size_t ack_frame_size = PACKET_1BYTE_PACKET_NUMBER; |
- for (size_t i = kQuicFrameTypeSize; i < ack_frame_size; ++i) { |
- string expected_error; |
- if (i < kLargestObservedOffset) { |
- expected_error = "Unable to read entropy hash for received packets."; |
- } else if (i < kMissingDeltaTimeOffset) { |
- expected_error = "Unable to read largest observed."; |
- } else if (i < kNumTimestampsOffset) { |
- expected_error = "Unable to read ack delay time."; |
- } else if (i < kNumMissingPacketOffset) { |
- expected_error = "Unable to read num received packets."; |
- } else if (i < kMissingPacketsOffset) { |
- expected_error = "Unable to read num missing packet ranges."; |
- } else { |
- expected_error = "Unable to read missing packet number delta."; |
- } |
- CheckProcessingFails( |
- packet, |
- i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
- !kIncludeVersion, !kIncludePathId, |
- !kIncludeDiversificationNonce, |
- PACKET_6BYTE_PACKET_NUMBER), |
- expected_error, QUIC_INVALID_ACK_DATA); |
- } |
-} |
- |
-TEST_P(QuicFramerTest, AckFrameRevivedPackets) { |
- // clang-format off |
- unsigned char packet[] = { |
- // public flags (8 byte connection_id) |
- 0x38, |
- // connection_id |
- 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, |
- // packet number |
- 0xA8, 0x9A, 0x78, 0x56, 0x34, 0x12, |
- // private flags (entropy) |
- 0x01, |
- |
- // frame type (ack frame) |
- // (has nacks, not truncated, 6 byte largest observed, 1 byte delta) |
- 0x6C, |
- // entropy hash of all received packets. |
- 0xBA, |
- // largest observed packet number |
- 0xBF, 0x9A, 0x78, 0x56, 0x34, 0x12, |
- // Zero delta time. |
- 0x00, 0x00, |
- // num received packets. |
- 0x00, |
- // num missing packets |
- 0x01, |
- // missing packet delta |
- 0x01, |
- // 0 more missing packets in range. |
- 0x00, |
- // Number of revived packets. |
- 0x01, |
- // Revived packet number. |
- 0xBE, 0x9A, 0x78, 0x56, 0x34, 0x12, |
- // Number of revived packets. |
- 0x00, |
- }; |
- // clang-format on |
- |
- if (framer_.version() > QUIC_VERSION_31) { |
- return; |
- } |
- |
- QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); |
- EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
- |
- EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
- ASSERT_TRUE(visitor_.header_.get()); |
- EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId, |
- !kIncludeDiversificationNonce)); |
- |
- EXPECT_EQ(0u, visitor_.stream_frames_.size()); |
- ASSERT_EQ(1u, visitor_.ack_frames_.size()); |
- const QuicAckFrame& frame = *visitor_.ack_frames_[0]; |
- EXPECT_EQ(0xBA, frame.entropy_hash); |
- EXPECT_EQ(kLargestObserved, frame.largest_observed); |
- ASSERT_EQ(1u, frame.packets.NumPacketsSlow()); |
- EXPECT_EQ(kMissingPacket, frame.packets.Min()); |
- |
- const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; |
- const size_t kLargestObservedOffset = |
- kReceivedEntropyOffset + kQuicEntropyHashSize; |
- const size_t kMissingDeltaTimeOffset = |
- kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER; |
- const size_t kNumTimestampsOffset = |
- kMissingDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize; |
- const size_t kNumMissingPacketOffset = |
- kNumTimestampsOffset + kQuicNumTimestampsSize; |
- const size_t kMissingPacketsOffset = |
- kNumMissingPacketOffset + kNumberOfNackRangesSize; |
- const size_t kMissingPacketsRange = |
- kMissingPacketsOffset + PACKET_1BYTE_PACKET_NUMBER; |
- const size_t kRevivedPacketsLength = |
- kMissingPacketsRange + PACKET_1BYTE_PACKET_NUMBER; |
- const size_t kRevivedPacketSequenceNumberLength = |
- kRevivedPacketsLength + PACKET_1BYTE_PACKET_NUMBER; |
- // Now test framing boundaries. |
- const size_t ack_frame_size = |
- kRevivedPacketSequenceNumberLength + PACKET_6BYTE_PACKET_NUMBER; |
- for (size_t i = kQuicFrameTypeSize; i < ack_frame_size; ++i) { |
- string expected_error; |
- if (i < kReceivedEntropyOffset) { |
- expected_error = "Unable to read least unacked delta."; |
- } else if (i < kLargestObservedOffset) { |
- expected_error = "Unable to read entropy hash for received packets."; |
- } else if (i < kMissingDeltaTimeOffset) { |
- expected_error = "Unable to read largest observed."; |
- } else if (i < kNumTimestampsOffset) { |
- expected_error = "Unable to read ack delay time."; |
- } else if (i < kNumMissingPacketOffset) { |
- expected_error = "Unable to read num received packets."; |
- } else if (i < kMissingPacketsOffset) { |
- expected_error = "Unable to read num missing packet ranges."; |
- } else if (i < kMissingPacketsRange) { |
- expected_error = "Unable to read missing packet number delta."; |
- } else if (i < kRevivedPacketsLength) { |
- expected_error = "Unable to read missing packet number range."; |
- } else if (i < kRevivedPacketSequenceNumberLength) { |
- expected_error = "Unable to read num revived packets."; |
- } else { |
- expected_error = "Unable to read revived packet."; |
- } |
- CheckProcessingFails( |
- packet, |
- i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
- !kIncludeVersion, !kIncludePathId, |
- !kIncludeDiversificationNonce, |
- PACKET_6BYTE_PACKET_NUMBER), |
- expected_error, QUIC_INVALID_ACK_DATA); |
- } |
-} |
- |
-TEST_P(QuicFramerTest, AckFrameNoNacks) { |
- // clang-format off |
- unsigned char packet[] = { |
- // public flags (8 byte connection_id) |
- static_cast<unsigned char>( |
- framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C), |
- // connection_id |
- 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, |
- // packet number |
- 0xA8, 0x9A, 0x78, 0x56, 0x34, 0x12, |
- // private flags (entropy) |
- 0x01, |
- |
- // frame type (ack frame) |
- // (no nacks, not truncated, 6 byte largest observed, 1 byte delta) |
- 0x4C, |
- // entropy hash of all received packets. |
- 0xBA, |
- // largest observed packet number |
- 0xBF, 0x9A, 0x78, 0x56, 0x34, 0x12, |
- // Zero delta time. |
- 0x00, 0x00, |
- // Number of received packets. |
- 0x00, |
- }; |
- // clang-format on |
- if (framer_.version() >= QUIC_VERSION_31) { |
- return; |
- } |
- |
- QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); |
- EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
- |
- EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
- ASSERT_TRUE(visitor_.header_.get()); |
- EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId, |
- !kIncludeDiversificationNonce)); |
- |
- EXPECT_EQ(0u, visitor_.stream_frames_.size()); |
- ASSERT_EQ(1u, visitor_.ack_frames_.size()); |
- QuicAckFrame* frame = visitor_.ack_frames_[0]; |
- EXPECT_EQ(0xBA, frame->entropy_hash); |
- EXPECT_EQ(kLargestObserved, frame->largest_observed); |
- ASSERT_TRUE(frame->packets.Empty()); |
- |
- // Verify that the packet re-serializes identically. |
- QuicFrames frames; |
- frames.push_back(QuicFrame(frame)); |
- std::unique_ptr<QuicPacket> data(BuildDataPacket(*visitor_.header_, frames)); |
- ASSERT_TRUE(data != nullptr); |
+ expected_error = "Unable to read num received packets."; |
+ } else if (i < kTimestampTimeDeltaLargestObserved1) { |
+ expected_error = "Unable to read sequence delta in received packets."; |
+ } else if (i < kTimestampDeltaLargestObserved2) { |
+ expected_error = "Unable to read time delta in received packets."; |
+ } else if (i < kTimestampTimeDeltaLargestObserved2) { |
+ expected_error = "Unable to read sequence delta in received packets."; |
+ } else { |
+ expected_error = |
+ "Unable to read incremental time delta in received packets."; |
+ } |
- test::CompareCharArraysWithHexError("constructed packet", data->data(), |
- data->length(), AsChars(packet), |
- arraysize(packet)); |
+ CheckProcessingFails( |
+ packet, |
+ i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
+ !kIncludeVersion, !kIncludePathId, |
+ !kIncludeDiversificationNonce, |
+ PACKET_6BYTE_PACKET_NUMBER), |
+ expected_error, QUIC_INVALID_ACK_DATA); |
+ } |
} |
-TEST_P(QuicFramerTest, AckFrame500Nacks) { |
+TEST_P(QuicFramerTest, AckFrameVersion32) { |
// clang-format off |
unsigned char packet[] = { |
// public flags (8 byte connection_id) |
- static_cast<unsigned char>( |
- framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C), |
+ 0x38, |
// connection_id |
0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, |
// packet number |
@@ -3442,26 +2834,18 @@ TEST_P(QuicFramerTest, AckFrame500Nacks) { |
0xBF, 0x9A, 0x78, 0x56, 0x34, 0x12, |
// Zero delta time. |
0x00, 0x00, |
- // No received packets. |
+ // Number of timestamps. |
0x00, |
- // num missing packet ranges |
- 0x02, |
+ // num missing packets |
+ 0x01, |
// missing packet delta |
0x01, |
- // 243 more missing packets in range. |
- // The ranges are listed in this order so the re-constructed packet |
- // matches. |
- 0xF3, |
- // No gap between ranges |
- 0x00, |
- // 255 more missing packets in range. |
- 0xFF, |
- // No revived packets. |
+ // 0 more missing packets in range. |
0x00, |
}; |
// clang-format on |
- if (framer_.version() > QUIC_VERSION_31) { |
+ if (framer_.version() > QUIC_VERSION_33) { |
return; |
} |
@@ -3475,22 +2859,48 @@ TEST_P(QuicFramerTest, AckFrame500Nacks) { |
EXPECT_EQ(0u, visitor_.stream_frames_.size()); |
ASSERT_EQ(1u, visitor_.ack_frames_.size()); |
- QuicAckFrame* frame = visitor_.ack_frames_[0]; |
- EXPECT_EQ(0xBA, frame->entropy_hash); |
- EXPECT_EQ(kLargestObserved, frame->largest_observed); |
- ASSERT_EQ(500u, frame->packets.NumPacketsSlow()); |
- EXPECT_EQ(kMissingPacket - 499, frame->packets.Min()); |
- EXPECT_EQ(kMissingPacket, frame->packets.Max()); |
- |
- // Verify that the packet re-serializes identically. |
- QuicFrames frames; |
- frames.push_back(QuicFrame(frame)); |
- std::unique_ptr<QuicPacket> data(BuildDataPacket(*visitor_.header_, frames)); |
- ASSERT_TRUE(data != nullptr); |
+ const QuicAckFrame& frame = *visitor_.ack_frames_[0]; |
+ EXPECT_EQ(0xBA, frame.entropy_hash); |
+ EXPECT_EQ(kLargestObserved, frame.largest_observed); |
+ ASSERT_EQ(1u, frame.packets.NumPacketsSlow()); |
+ EXPECT_EQ(kMissingPacket, frame.packets.Min()); |
- test::CompareCharArraysWithHexError("constructed packet", data->data(), |
- data->length(), AsChars(packet), |
- arraysize(packet)); |
+ const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; |
+ const size_t kLargestObservedOffset = |
+ kReceivedEntropyOffset + kQuicEntropyHashSize; |
+ const size_t kMissingDeltaTimeOffset = |
+ kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER; |
+ const size_t kNumTimestampsOffset = |
+ kMissingDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize; |
+ const size_t kNumMissingPacketOffset = |
+ kNumTimestampsOffset + kQuicNumTimestampsSize; |
+ const size_t kMissingPacketsOffset = |
+ kNumMissingPacketOffset + kNumberOfNackRangesSize; |
+ // Now test framing boundaries. |
+ const size_t ack_frame_size = PACKET_1BYTE_PACKET_NUMBER; |
+ for (size_t i = kQuicFrameTypeSize; i < ack_frame_size; ++i) { |
+ string expected_error; |
+ if (i < kLargestObservedOffset) { |
+ expected_error = "Unable to read entropy hash for received packets."; |
+ } else if (i < kMissingDeltaTimeOffset) { |
+ expected_error = "Unable to read largest observed."; |
+ } else if (i < kNumTimestampsOffset) { |
+ expected_error = "Unable to read ack delay time."; |
+ } else if (i < kNumMissingPacketOffset) { |
+ expected_error = "Unable to read num received packets."; |
+ } else if (i < kMissingPacketsOffset) { |
+ expected_error = "Unable to read num missing packet ranges."; |
+ } else { |
+ expected_error = "Unable to read missing packet number delta."; |
+ } |
+ CheckProcessingFails( |
+ packet, |
+ i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, |
+ !kIncludeVersion, !kIncludePathId, |
+ !kIncludeDiversificationNonce, |
+ PACKET_6BYTE_PACKET_NUMBER), |
+ expected_error, QUIC_INVALID_ACK_DATA); |
+ } |
} |
TEST_P(QuicFramerTest, AckFrame500NacksVersion32) { |
@@ -3532,8 +2942,7 @@ TEST_P(QuicFramerTest, AckFrame500NacksVersion32) { |
}; |
// clang-format on |
- if (framer_.version() <= QUIC_VERSION_31 || |
- framer_.version() > QUIC_VERSION_33) { |
+ if (framer_.version() > QUIC_VERSION_33) { |
return; |
} |
@@ -4539,13 +3948,8 @@ TEST_P(QuicFramerTest, DropFecPacket) { |
return; |
} |
QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); |
- if (framer_.version() <= QUIC_VERSION_31) { |
- EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
- EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
- } else { |
- EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
- EXPECT_EQ(QUIC_INVALID_PACKET_HEADER, framer_.error()); |
- } |
+ EXPECT_FALSE(framer_.ProcessPacket(encrypted)); |
+ EXPECT_EQ(QUIC_INVALID_PACKET_HEADER, framer_.error()); |
EXPECT_FALSE(visitor_.header_.get()); |
} |
@@ -5168,39 +4572,6 @@ TEST_P(QuicFramerTest, BuildAckFramePacket) { |
// clang-format off |
unsigned char packet[] = { |
// public flags (8 byte connection_id) |
- 0x3C, |
- // connection_id |
- 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, |
- // packet number |
- 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, |
- // private flags (entropy) |
- 0x01, |
- |
- // frame type (ack frame) |
- // (has nacks, not truncated, 6 byte largest observed, 1 byte delta) |
- 0x6C, |
- // entropy hash of all received packets. |
- 0x43, |
- // largest observed packet number |
- 0xBF, 0x9A, 0x78, 0x56, 0x34, 0x12, |
- // Zero delta time. |
- 0x00, 0x00, |
- // num received packets. |
- 0x00, |
- // num missing packet ranges |
- 0x01, |
- // missing packet delta |
- 0x01, |
- // 0 more missing packets in range. |
- 0x00, |
- // 0 revived packets. |
- 0x00, |
- }; |
- // clang-format on |
- |
- // clang-format off |
- unsigned char packet_version32[] = { |
- // public flags (8 byte connection_id) |
static_cast<unsigned char>( |
framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C), |
// connection_id |
@@ -5233,15 +4604,9 @@ TEST_P(QuicFramerTest, BuildAckFramePacket) { |
std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
ASSERT_TRUE(data != nullptr); |
- if (framer_.version() <= QUIC_VERSION_31) { |
- test::CompareCharArraysWithHexError("constructed packet", data->data(), |
- data->length(), AsChars(packet), |
- arraysize(packet)); |
- } else { |
- test::CompareCharArraysWithHexError( |
- "constructed packet", data->data(), data->length(), |
- AsChars(packet_version32), arraysize(packet_version32)); |
- } |
+ test::CompareCharArraysWithHexError( |
+ "constructed packet", data->data(), data->length(), |
+ AsChars(packet), arraysize(packet)); |
} |
// TODO(jri): Add test for tuncated packets in which the original ack frame had |
@@ -5277,85 +4642,6 @@ TEST_P(QuicFramerTest, BuildTruncatedAckFrameLargePacket) { |
// clang-format off |
unsigned char packet[] = { |
// public flags (8 byte connection_id) |
- 0x3C, |
- // connection_id |
- 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, |
- // packet number |
- 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, |
- // private flags (entropy) |
- 0x01, |
- |
- // frame type (ack frame) |
- // (has nacks, is truncated, 2 byte largest observed, 1 byte delta) |
- 0x74, |
- // entropy hash of all received packets, set to 1 by TestEntropyCalculator |
- // since ack is truncated. |
- 0x01, |
- // 2-byte largest observed packet number. |
- // Expected to be 510 (0x1FE), since only 255 nack ranges can fit. |
- 0xFE, 0x01, |
- // Zero delta time. |
- 0x00, 0x00, |
- // num missing packet ranges (limited to 255 by size of this field). |
- 0xFF, |
- // {missing packet delta, further missing packets in range} |
- // 6 nack ranges x 42 + 3 nack ranges |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- |
- // 0 revived packets. |
- 0x00, |
- }; |
- // clang-format on |
- |
- // clang-format off |
- unsigned char packet_version32[] = { |
- // public flags (8 byte connection_id) |
static_cast<unsigned char>( |
framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C), |
// connection_id |
@@ -5433,15 +4719,9 @@ TEST_P(QuicFramerTest, BuildTruncatedAckFrameLargePacket) { |
std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
ASSERT_TRUE(data != nullptr); |
- if (framer_.version() <= QUIC_VERSION_31) { |
- test::CompareCharArraysWithHexError("constructed packet", data->data(), |
- data->length(), AsChars(packet), |
- arraysize(packet)); |
- } else { |
- test::CompareCharArraysWithHexError( |
- "constructed packet", data->data(), data->length(), |
- AsChars(packet_version32), arraysize(packet_version32)); |
- } |
+ test::CompareCharArraysWithHexError( |
+ "constructed packet", data->data(), data->length(), |
+ AsChars(packet), arraysize(packet)); |
} |
TEST_P(QuicFramerTest, BuildTruncatedAckFrameSmallPacket) { |
@@ -5474,38 +4754,6 @@ TEST_P(QuicFramerTest, BuildTruncatedAckFrameSmallPacket) { |
// clang-format off |
unsigned char packet[] = { |
// public flags (8 byte connection_id) |
- 0x3C, |
- // connection_id |
- 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, |
- // packet number |
- 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, |
- // private flags (entropy) |
- 0x01, |
- |
- // frame type (ack frame) |
- // (has nacks, is truncated, 2 byte largest observed, 1 byte delta) |
- 0x74, |
- // entropy hash of all received packets, set to 1 by TestEntropyCalculator |
- // since ack is truncated. |
- 0x01, |
- // 2-byte largest observed packet number. |
- // Expected to be 12 (0x0C), since only 6 nack ranges can fit. |
- 0x0C, 0x00, |
- // Zero delta time. |
- 0x00, 0x00, |
- // num missing packet ranges (limited to 6 by packet size of 37). |
- 0x06, |
- // {missing packet delta, further missing packets in range} |
- // 6 nack ranges |
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, |
- // 0 revived packets. |
- 0x00, |
- }; |
- // clang-format on |
- |
- // clang-format off |
- unsigned char packet_version32[] = { |
- // public flags (8 byte connection_id) |
static_cast<unsigned char>( |
framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C), |
// connection_id |
@@ -5534,23 +4782,13 @@ TEST_P(QuicFramerTest, BuildTruncatedAckFrameSmallPacket) { |
}; |
// clang-format on |
- if (framer_.version() <= QUIC_VERSION_31) { |
- std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames, 37u)); |
- ASSERT_TRUE(data != nullptr); |
- // Expect 1 byte unused since at least 2 bytes are needed to fit more nacks. |
- EXPECT_EQ(36u, data->length()); |
- test::CompareCharArraysWithHexError("constructed packet", data->data(), |
- data->length(), AsChars(packet), |
- arraysize(packet)); |
- } else { |
- std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames, 36u)); |
- ASSERT_TRUE(data != nullptr); |
- // Expect 1 byte unused since at least 2 bytes are needed to fit more nacks. |
- EXPECT_EQ(35u, data->length()); |
- test::CompareCharArraysWithHexError( |
- "constructed packet", data->data(), data->length(), |
- AsChars(packet_version32), arraysize(packet_version32)); |
- } |
+ std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames, 36u)); |
+ ASSERT_TRUE(data != nullptr); |
+ // Expect 1 byte unused since at least 2 bytes are needed to fit more nacks. |
+ EXPECT_EQ(35u, data->length()); |
+ test::CompareCharArraysWithHexError( |
+ "constructed packet", data->data(), data->length(), |
+ AsChars(packet), arraysize(packet)); |
} |
TEST_P(QuicFramerTest, BuildNewAckFramePacketOneAckBlock) { |