| 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 b3d5d8dab7dd213c2f2484c818eed14905bbf5ac..c2864da8cfba1b860ab14519c350cc66c89e41de 100644
|
| --- a/net/quic/core/quic_framer_test.cc
|
| +++ b/net/quic/core/quic_framer_test.cc
|
| @@ -45,9 +45,7 @@ const QuicPacketNumber kMask = kEpoch - 1;
|
| const QuicConnectionId kConnectionId = UINT64_C(0xFEDCBA9876543210);
|
| const QuicPathId kPathId = 0x42;
|
| const QuicPacketNumber kPacketNumber = UINT64_C(0x123456789ABC);
|
| -const QuicPacketNumber kLargestObserved = UINT64_C(0x0123456789ABF);
|
| const QuicPacketNumber kSmallLargestObserved = UINT16_C(0x1234);
|
| -const QuicPacketNumber kMissingPacket = UINT64_C(0x0123456789ABE);
|
| const QuicPacketNumber kSmallMissingPacket = UINT16_C(0x1233);
|
| const QuicPacketNumber kLeastUnacked = UINT64_C(0x0123456789AA0);
|
| const QuicStreamId kStreamId = UINT64_C(0x01020304);
|
| @@ -348,7 +346,6 @@ class QuicFramerTest : public ::testing::TestWithParam<QuicVersion> {
|
| framer_.SetDecrypter(ENCRYPTION_NONE, decrypter_);
|
| framer_.SetEncrypter(ENCRYPTION_NONE, encrypter_);
|
| framer_.set_visitor(&visitor_);
|
| - framer_.set_received_entropy_calculator(&entropy_calculator_);
|
| }
|
|
|
| // Helper function to get unsigned char representation of digit in the
|
| @@ -495,7 +492,6 @@ class QuicFramerTest : public ::testing::TestWithParam<QuicVersion> {
|
| QuicTime start_;
|
| QuicFramer framer_;
|
| test::TestQuicVisitor visitor_;
|
| - test::TestEntropyCalculator entropy_calculator_;
|
| };
|
|
|
| // Run all framer tests with all supported versions of QUIC.
|
| @@ -651,24 +647,10 @@ TEST_P(QuicFramerTest, PacketHeader) {
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id)
|
| - 0x38,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_FALSE(framer_.ProcessPacket(encrypted));
|
| EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| @@ -676,8 +658,6 @@ TEST_P(QuicFramerTest, PacketHeader) {
|
| EXPECT_FALSE(visitor_.header_->public_header.multipath_flag);
|
| EXPECT_FALSE(visitor_.header_->public_header.reset_flag);
|
| EXPECT_FALSE(visitor_.header_->public_header.version_flag);
|
| - EXPECT_FALSE(visitor_.header_->entropy_flag);
|
| - EXPECT_EQ(0, visitor_.header_->entropy_hash);
|
| EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number);
|
|
|
| // Now test framing boundaries.
|
| @@ -693,19 +673,9 @@ TEST_P(QuicFramerTest, PacketHeader) {
|
| } else if (i < GetPacketNumberOffset(!kIncludeVersion, !kIncludePathId)) {
|
| expected_error = "Unable to read ConnectionId.";
|
| } else {
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - if (i < GetPrivateFlagsOffset(!kIncludeVersion, !kIncludePathId)) {
|
| - expected_error = "Unable to read packet number.";
|
| - } else {
|
| - expected_error = "Unable to read private flags.";
|
| - }
|
| - } else {
|
| - expected_error = "Unable to read packet number.";
|
| - }
|
| + expected_error = "Unable to read packet number.";
|
| }
|
| - CheckProcessingFails(
|
| - framer_.version() <= QUIC_VERSION_33 ? packet : packet_34, i,
|
| - expected_error, QUIC_INVALID_PACKET_HEADER);
|
| + CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER);
|
| }
|
| }
|
|
|
| @@ -720,24 +690,10 @@ TEST_P(QuicFramerTest, PacketHeaderWith0ByteConnectionId) {
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56,
|
| 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (0 byte connection_id)
|
| - 0x30,
|
| - // connection_id
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_FALSE(framer_.ProcessPacket(encrypted));
|
| EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| @@ -745,8 +701,6 @@ TEST_P(QuicFramerTest, PacketHeaderWith0ByteConnectionId) {
|
| EXPECT_FALSE(visitor_.header_->public_header.multipath_flag);
|
| EXPECT_FALSE(visitor_.header_->public_header.reset_flag);
|
| EXPECT_FALSE(visitor_.header_->public_header.version_flag);
|
| - EXPECT_FALSE(visitor_.header_->entropy_flag);
|
| - EXPECT_EQ(0, visitor_.header_->entropy_hash);
|
| EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number);
|
|
|
| // Now test framing boundaries.
|
| @@ -763,20 +717,9 @@ TEST_P(QuicFramerTest, PacketHeaderWith0ByteConnectionId) {
|
| !kIncludeVersion, !kIncludePathId)) {
|
| expected_error = "Unable to read ConnectionId.";
|
| } else {
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - if (i < GetPrivateFlagsOffset(PACKET_0BYTE_CONNECTION_ID,
|
| - !kIncludeVersion, !kIncludePathId)) {
|
| - expected_error = "Unable to read packet number.";
|
| - } else {
|
| - expected_error = "Unable to read private flags.";
|
| - }
|
| - } else {
|
| - expected_error = "Unable to read packet number.";
|
| - }
|
| + expected_error = "Unable to read packet number.";
|
| }
|
| - CheckProcessingFails(
|
| - framer_.version() <= QUIC_VERSION_33 ? packet : packet_34, i,
|
| - expected_error, QUIC_INVALID_PACKET_HEADER);
|
| + CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER);
|
| }
|
| }
|
|
|
| @@ -791,26 +734,10 @@ TEST_P(QuicFramerTest, PacketHeaderWithVersionFlag) {
|
| 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(),
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (version)
|
| - 0x39,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| - // version tag
|
| - 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(),
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_FALSE(framer_.ProcessPacket(encrypted));
|
| EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| @@ -819,8 +746,6 @@ TEST_P(QuicFramerTest, PacketHeaderWithVersionFlag) {
|
| EXPECT_FALSE(visitor_.header_->public_header.reset_flag);
|
| EXPECT_TRUE(visitor_.header_->public_header.version_flag);
|
| EXPECT_EQ(GetParam(), visitor_.header_->public_header.versions[0]);
|
| - EXPECT_FALSE(visitor_.header_->entropy_flag);
|
| - EXPECT_EQ(0, visitor_.header_->entropy_hash);
|
| EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number);
|
|
|
| // Now test framing boundaries.
|
| @@ -838,19 +763,9 @@ TEST_P(QuicFramerTest, PacketHeaderWithVersionFlag) {
|
| } else if (i < GetPacketNumberOffset(kIncludeVersion, !kIncludePathId)) {
|
| expected_error = "Unable to read protocol version.";
|
| } else {
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - if (i < GetPrivateFlagsOffset(kIncludeVersion, !kIncludePathId)) {
|
| - expected_error = "Unable to read packet number.";
|
| - } else {
|
| - expected_error = "Unable to read private flags.";
|
| - }
|
| - } else {
|
| - expected_error = "Unable to read packet number.";
|
| - }
|
| + expected_error = "Unable to read packet number.";
|
| }
|
| - CheckProcessingFails(
|
| - framer_.version() <= QUIC_VERSION_33 ? packet : packet_34, i,
|
| - expected_error, QUIC_INVALID_PACKET_HEADER);
|
| + CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER);
|
| }
|
| }
|
|
|
| @@ -865,26 +780,10 @@ TEST_P(QuicFramerTest, PacketHeaderWithMultipathFlag) {
|
| 0x42,
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (version)
|
| - 0x78,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| - // path_id
|
| - 0x42,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_FALSE(framer_.ProcessPacket(encrypted));
|
| EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| @@ -894,8 +793,6 @@ TEST_P(QuicFramerTest, PacketHeaderWithMultipathFlag) {
|
| EXPECT_TRUE(visitor_.header_->public_header.multipath_flag);
|
| EXPECT_FALSE(visitor_.header_->public_header.reset_flag);
|
| EXPECT_FALSE(visitor_.header_->public_header.version_flag);
|
| - EXPECT_FALSE(visitor_.header_->entropy_flag);
|
| - EXPECT_EQ(0, visitor_.header_->entropy_hash);
|
| EXPECT_EQ(kPathId, visitor_.header_->path_id);
|
| EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number);
|
|
|
| @@ -915,19 +812,9 @@ TEST_P(QuicFramerTest, PacketHeaderWithMultipathFlag) {
|
| } else if (i < GetPacketNumberOffset(!kIncludeVersion, kIncludePathId)) {
|
| expected_error = "Unable to read path id.";
|
| } else {
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - if (i < GetPrivateFlagsOffset(!kIncludeVersion, kIncludePathId)) {
|
| - expected_error = "Unable to read packet number.";
|
| - } else {
|
| - expected_error = "Unable to read private flags.";
|
| - }
|
| - } else {
|
| - expected_error = "Unable to read packet number.";
|
| - }
|
| + expected_error = "Unable to read packet number.";
|
| }
|
| - CheckProcessingFails(
|
| - framer_.version() <= QUIC_VERSION_33 ? packet : packet_34, i,
|
| - expected_error, QUIC_INVALID_PACKET_HEADER);
|
| + CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER);
|
| }
|
| }
|
|
|
| @@ -944,28 +831,10 @@ TEST_P(QuicFramerTest, PacketHeaderWithBothVersionFlagAndMultipathFlag) {
|
| 0x42,
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (version)
|
| - 0x79,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| - // version tag
|
| - 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(),
|
| - // path_id
|
| - 0x42,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_FALSE(framer_.ProcessPacket(encrypted));
|
| EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| @@ -976,8 +845,6 @@ TEST_P(QuicFramerTest, PacketHeaderWithBothVersionFlagAndMultipathFlag) {
|
| EXPECT_FALSE(visitor_.header_->public_header.reset_flag);
|
| EXPECT_TRUE(visitor_.header_->public_header.version_flag);
|
| EXPECT_EQ(GetParam(), visitor_.header_->public_header.versions[0]);
|
| - EXPECT_FALSE(visitor_.header_->entropy_flag);
|
| - EXPECT_EQ(0, visitor_.header_->entropy_hash);
|
| EXPECT_EQ(kPathId, visitor_.header_->path_id);
|
| EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number);
|
|
|
| @@ -999,19 +866,9 @@ TEST_P(QuicFramerTest, PacketHeaderWithBothVersionFlagAndMultipathFlag) {
|
| } else if (i < GetPacketNumberOffset(kIncludeVersion, kIncludePathId)) {
|
| expected_error = "Unable to read path id.";
|
| } else {
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - if (i < GetPrivateFlagsOffset(kIncludeVersion, kIncludePathId)) {
|
| - expected_error = "Unable to read packet number.";
|
| - } else {
|
| - expected_error = "Unable to read private flags.";
|
| - }
|
| - } else {
|
| - expected_error = "Unable to read packet number.";
|
| - }
|
| + expected_error = "Unable to read packet number.";
|
| }
|
| - CheckProcessingFails(
|
| - framer_.version() <= QUIC_VERSION_33 ? packet : packet_34, i,
|
| - expected_error, QUIC_INVALID_PACKET_HEADER);
|
| + CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER);
|
| }
|
| }
|
|
|
| @@ -1027,28 +884,12 @@ TEST_P(QuicFramerTest, PacketHeaderWithPathChange) {
|
| 0x42,
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| - };
|
| - unsigned char packet1_34[] = {
|
| - // public flags (version)
|
| - 0x78,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| - // path_id
|
| - 0x42,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| };
|
| // clang-format on
|
|
|
| EXPECT_EQ(0u, QuicFramerPeer::GetLastPacketNumber(&framer_));
|
| EXPECT_EQ(kInvalidPathId, QuicFramerPeer::GetLastPathId(&framer_));
|
| - QuicEncryptedPacket encrypted1(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet1 : packet1_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet1)
|
| - : arraysize(packet1_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted1(AsChars(packet1), arraysize(packet1), false);
|
| EXPECT_FALSE(framer_.ProcessPacket(encrypted1));
|
| EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| @@ -1069,26 +910,10 @@ TEST_P(QuicFramerTest, PacketHeaderWithPathChange) {
|
| 0x00,
|
| // packet number
|
| 0xCC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| - };
|
| - unsigned char packet2_34[] = {
|
| - // public flags (version)
|
| - 0x78,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| - // path_id
|
| - 0x00,
|
| - // packet number
|
| - 0xCC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted2(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet2 : packet2_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet2)
|
| - : arraysize(packet2_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted2(AsChars(packet2), arraysize(packet2), false);
|
| EXPECT_FALSE(framer_.ProcessPacket(encrypted2));
|
| EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| @@ -1109,26 +934,10 @@ TEST_P(QuicFramerTest, PacketHeaderWithPathChange) {
|
| 0x42,
|
| // packet number
|
| 0xBD, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| - };
|
| - unsigned char packet3_34[] = {
|
| - // public flags (version)
|
| - 0x78,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| - // path_id
|
| - 0x42,
|
| - // packet number
|
| - 0xBD, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted3(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet3 : packet3_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet3)
|
| - : arraysize(packet3_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted3(AsChars(packet3), arraysize(packet3), false);
|
| EXPECT_FALSE(framer_.ProcessPacket(encrypted3));
|
| EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| @@ -1154,26 +963,10 @@ TEST_P(QuicFramerTest, ReceivedPacketOnClosedPath) {
|
| // private flags
|
| 0x00,
|
| };
|
| - unsigned char packet_34[] = {
|
| - // public flags (version)
|
| - 0x78,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| - // path_id
|
| - 0x42,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| - };
|
| // clang-format on
|
|
|
| framer_.OnPathClosed(kPathId);
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_FALSE(framer_.ProcessPacket(encrypted));
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| EXPECT_EQ(0u, QuicFramerPeer::GetLastPacketNumber(&framer_));
|
| @@ -1191,24 +984,10 @@ TEST_P(QuicFramerTest, PacketHeaderWith4BytePacketNumber) {
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56,
|
| - // private flags
|
| - 0x00,
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id and 4 byte packet number)
|
| - 0x28,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_FALSE(framer_.ProcessPacket(encrypted));
|
| EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| @@ -1216,8 +995,6 @@ TEST_P(QuicFramerTest, PacketHeaderWith4BytePacketNumber) {
|
| EXPECT_FALSE(visitor_.header_->public_header.multipath_flag);
|
| EXPECT_FALSE(visitor_.header_->public_header.reset_flag);
|
| EXPECT_FALSE(visitor_.header_->public_header.version_flag);
|
| - EXPECT_FALSE(visitor_.header_->entropy_flag);
|
| - EXPECT_EQ(0, visitor_.header_->entropy_hash);
|
| EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number);
|
|
|
| // Now test framing boundaries.
|
| @@ -1233,20 +1010,9 @@ TEST_P(QuicFramerTest, PacketHeaderWith4BytePacketNumber) {
|
| } else if (i < GetPacketNumberOffset(!kIncludeVersion, !kIncludePathId)) {
|
| expected_error = "Unable to read ConnectionId.";
|
| } else {
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - if (i < GetPrivateFlagsOffset(!kIncludeVersion, !kIncludePathId,
|
| - PACKET_4BYTE_PACKET_NUMBER)) {
|
| - expected_error = "Unable to read packet number.";
|
| - } else {
|
| - expected_error = "Unable to read private flags.";
|
| - }
|
| - } else {
|
| - expected_error = "Unable to read packet number.";
|
| - }
|
| + expected_error = "Unable to read packet number.";
|
| }
|
| - CheckProcessingFails(
|
| - framer_.version() <= QUIC_VERSION_33 ? packet : packet_34, i,
|
| - expected_error, QUIC_INVALID_PACKET_HEADER);
|
| + CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER);
|
| }
|
| }
|
|
|
| @@ -1261,24 +1027,10 @@ TEST_P(QuicFramerTest, PacketHeaderWith2BytePacketNumber) {
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| 0xBC, 0x9A,
|
| - // private flags
|
| - 0x00,
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id and 2 byte packet number)
|
| - 0x18,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| - // packet number
|
| - 0xBC, 0x9A,
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_FALSE(framer_.ProcessPacket(encrypted));
|
| EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| @@ -1288,8 +1040,6 @@ TEST_P(QuicFramerTest, PacketHeaderWith2BytePacketNumber) {
|
| EXPECT_FALSE(visitor_.header_->public_header.version_flag);
|
| EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER,
|
| visitor_.header_->public_header.packet_number_length);
|
| - EXPECT_FALSE(visitor_.header_->entropy_flag);
|
| - EXPECT_EQ(0, visitor_.header_->entropy_hash);
|
| EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number);
|
|
|
| // Now test framing boundaries.
|
| @@ -1305,20 +1055,9 @@ TEST_P(QuicFramerTest, PacketHeaderWith2BytePacketNumber) {
|
| } else if (i < GetPacketNumberOffset(!kIncludeVersion, !kIncludePathId)) {
|
| expected_error = "Unable to read ConnectionId.";
|
| } else {
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - if (i < GetPrivateFlagsOffset(!kIncludeVersion, !kIncludePathId,
|
| - PACKET_2BYTE_PACKET_NUMBER)) {
|
| - expected_error = "Unable to read packet number.";
|
| - } else {
|
| - expected_error = "Unable to read private flags.";
|
| - }
|
| - } else {
|
| - expected_error = "Unable to read packet number.";
|
| - }
|
| + expected_error = "Unable to read packet number.";
|
| }
|
| - CheckProcessingFails(
|
| - framer_.version() <= QUIC_VERSION_33 ? packet : packet_34, i,
|
| - expected_error, QUIC_INVALID_PACKET_HEADER);
|
| + CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER);
|
| }
|
| }
|
|
|
| @@ -1333,24 +1072,10 @@ TEST_P(QuicFramerTest, PacketHeaderWith1BytePacketNumber) {
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| 0xBC,
|
| - // private flags
|
| - 0x00,
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id and 1 byte packet number)
|
| - 0x08,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| - // packet number
|
| - 0xBC,
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_FALSE(framer_.ProcessPacket(encrypted));
|
| EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| @@ -1360,8 +1085,6 @@ TEST_P(QuicFramerTest, PacketHeaderWith1BytePacketNumber) {
|
| EXPECT_FALSE(visitor_.header_->public_header.version_flag);
|
| EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
|
| visitor_.header_->public_header.packet_number_length);
|
| - EXPECT_FALSE(visitor_.header_->entropy_flag);
|
| - EXPECT_EQ(0, visitor_.header_->entropy_hash);
|
| EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number);
|
|
|
| // Now test framing boundaries.
|
| @@ -1377,20 +1100,9 @@ TEST_P(QuicFramerTest, PacketHeaderWith1BytePacketNumber) {
|
| } else if (i < GetPacketNumberOffset(!kIncludeVersion, !kIncludePathId)) {
|
| expected_error = "Unable to read ConnectionId.";
|
| } else {
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - if (i < GetPrivateFlagsOffset(!kIncludeVersion, !kIncludePathId,
|
| - PACKET_1BYTE_PACKET_NUMBER)) {
|
| - expected_error = "Unable to read packet number.";
|
| - } else {
|
| - expected_error = "Unable to read private flags.";
|
| - }
|
| - } else {
|
| - expected_error = "Unable to read packet number.";
|
| - }
|
| + expected_error = "Unable to read packet number.";
|
| }
|
| - CheckProcessingFails(
|
| - framer_.version() <= QUIC_VERSION_33 ? packet : packet_34, i,
|
| - expected_error, QUIC_INVALID_PACKET_HEADER);
|
| + CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER);
|
| }
|
| }
|
|
|
| @@ -1401,7 +1113,6 @@ TEST_P(QuicFramerTest, PacketNumberDecreasesThenIncreases) {
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| header.public_header.version_flag = false;
|
| - header.entropy_flag = false;
|
| header.packet_number = kPacketNumber - 2;
|
|
|
| QuicPaddingFrame padding_frame;
|
| @@ -1455,36 +1166,6 @@ TEST_P(QuicFramerTest, PacketNumberDecreasesThenIncreases) {
|
| EXPECT_EQ(kPacketNumber - 1, visitor_.header_->packet_number);
|
| }
|
|
|
| -TEST_P(QuicFramerTest, InvalidPublicFlag) {
|
| - if (framer_.version() > QUIC_VERSION_33) {
|
| - return;
|
| - }
|
| - // clang-format off
|
| - unsigned char packet[] = {
|
| - // public flags: all flags set but the public reset flag and version flag.
|
| - 0xF8,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (padding)
|
| - 0x00,
|
| - 0x00, 0x00, 0x00, 0x00
|
| - };
|
| - // clang-format on
|
| -
|
| - CheckProcessingFails(packet, arraysize(packet), "Illegal public flags value.",
|
| - QUIC_INVALID_PACKET_HEADER);
|
| -
|
| - // Now turn off validation.
|
| - framer_.set_validate_flags(false);
|
| - QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| - EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
| -};
|
| -
|
| TEST_P(QuicFramerTest, PacketWithDiversificationNonce) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| @@ -1499,25 +1180,6 @@ TEST_P(QuicFramerTest, PacketWithDiversificationNonce) {
|
| 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (padding)
|
| - 0x00,
|
| - 0x00, 0x00, 0x00, 0x00
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags: includes nonce flag
|
| - 0x7C,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| - // nonce
|
| - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
| - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
|
| - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
|
| - 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
|
|
| // frame type (padding)
|
| 0x00,
|
| @@ -1525,55 +1187,13 @@ TEST_P(QuicFramerTest, PacketWithDiversificationNonce) {
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT);
|
| - if (framer_.version() > QUIC_VERSION_32) {
|
| - EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
| - ASSERT_TRUE(visitor_.public_header_->nonce != nullptr);
|
| - for (char i = 0; i < 32; ++i) {
|
| - EXPECT_EQ(i, (*visitor_.public_header_->nonce)[static_cast<int>(i)]);
|
| - }
|
| - } else if (framer_.version() < QUIC_VERSION_32) {
|
| - // Packet is successfully parsed by accident.
|
| - EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
| - ASSERT_TRUE(visitor_.public_header_ != nullptr);
|
| - } else {
|
| - EXPECT_FALSE(framer_.ProcessPacket(encrypted));
|
| - EXPECT_EQ(QUIC_INVALID_PACKET_HEADER, framer_.error());
|
| - EXPECT_EQ("Illegal private flags value.", framer_.detailed_error());
|
| - }
|
| -};
|
| -
|
| -TEST_P(QuicFramerTest, InvalidPublicFlagWithMatchingVersions) {
|
| - if (framer_.version() > QUIC_VERSION_33) {
|
| - return;
|
| + EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
| + ASSERT_TRUE(visitor_.public_header_->nonce != nullptr);
|
| + for (char i = 0; i < 32; ++i) {
|
| + EXPECT_EQ(i, (*visitor_.public_header_->nonce)[static_cast<int>(i)]);
|
| }
|
| - // clang-format off
|
| - unsigned char packet[] = {
|
| - // public flags (8 byte connection_id and version flag and an unknown flag)
|
| - 0x8D,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // version tag
|
| - 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(),
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (padding)
|
| - 0x00,
|
| - 0x00, 0x00, 0x00, 0x00
|
| - };
|
| - // clang-format on
|
| - CheckProcessingFails(packet, arraysize(packet), "Illegal public flags value.",
|
| - QUIC_INVALID_PACKET_HEADER);
|
| };
|
|
|
| TEST_P(QuicFramerTest, LargePublicFlagWithMismatchedVersions) {
|
| @@ -1589,35 +1209,13 @@ TEST_P(QuicFramerTest, LargePublicFlagWithMismatchedVersions) {
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56,
|
| 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (padding frame)
|
| - 0x00,
|
| - 0x00, 0x00, 0x00, 0x00
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id, version flag and an unknown flag)
|
| - 0x79,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // version tag
|
| - 'Q', '0', '0', '0',
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
|
|
| // frame type (padding frame)
|
| 0x00,
|
| 0x00, 0x00, 0x00, 0x00
|
| };
|
| // clang-format on
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| @@ -1625,10 +1223,7 @@ TEST_P(QuicFramerTest, LargePublicFlagWithMismatchedVersions) {
|
| EXPECT_EQ(1, visitor_.version_mismatch_);
|
| };
|
|
|
| -TEST_P(QuicFramerTest, InvalidPrivateFlag) {
|
| - if (framer_.version() > QUIC_VERSION_33) {
|
| - return;
|
| - }
|
| +TEST_P(QuicFramerTest, PaddingFrame) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| @@ -1639,61 +1234,8 @@ TEST_P(QuicFramerTest, InvalidPrivateFlag) {
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56,
|
| 0x34, 0x12,
|
| - // private flags
|
| - 0x10,
|
|
|
| - // frame type (padding)
|
| - 0x00,
|
| - 0x00, 0x00, 0x00, 0x00
|
| - };
|
| - // clang-format on
|
| - CheckProcessingFails(packet, arraysize(packet),
|
| - "Illegal private flags value.",
|
| - QUIC_INVALID_PACKET_HEADER);
|
| -};
|
| -
|
| -TEST_P(QuicFramerTest, PaddingFrame) {
|
| - // 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
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (padding frame)
|
| - 0x00,
|
| - // Ignored data (which in this case is a stream frame)
|
| - // frame type (stream frame with fin)
|
| - 0xFF,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| - // offset
|
| - 0x54, 0x76, 0x10, 0x32,
|
| - 0xDC, 0xFE, 0x98, 0xBA,
|
| - // data length
|
| - 0x0c, 0x00,
|
| - // data
|
| - 'h', 'e', 'l', 'l',
|
| - 'o', ' ', 'w', 'o',
|
| - 'r', 'l', 'd', '!',
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id)
|
| - 0x38,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| -
|
| - // frame type (padding frame)
|
| + // frame type (padding frame)
|
| 0x00,
|
| // Ignored data (which in this case is a stream frame)
|
| // frame type (stream frame with fin)
|
| @@ -1712,11 +1254,7 @@ TEST_P(QuicFramerTest, PaddingFrame) {
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| @@ -1737,32 +1275,6 @@ TEST_P(QuicFramerTest, PaddingFrame) {
|
| TEST_P(QuicFramerTest, StreamFrame) {
|
| // 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
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (stream frame with fin)
|
| - 0xFF,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| - // offset
|
| - 0x54, 0x76, 0x10, 0x32,
|
| - 0xDC, 0xFE, 0x98, 0xBA,
|
| - // data length
|
| - 0x0c, 0x00,
|
| - // data
|
| - 'h', 'e', 'l', 'l',
|
| - 'o', ' ', 'w', 'o',
|
| - 'r', 'l', 'd', '!',
|
| - };
|
| - unsigned char packet_34[] = {
|
| // public flags (8 byte connection_id)
|
| 0x38,
|
| // connection_id
|
| @@ -1788,11 +1300,7 @@ TEST_P(QuicFramerTest, StreamFrame) {
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| @@ -1808,9 +1316,7 @@ TEST_P(QuicFramerTest, StreamFrame) {
|
| CheckStreamFrameData("hello world!", visitor_.stream_frames_[0].get());
|
|
|
| // Now test framing boundaries.
|
| - CheckStreamFrameBoundaries(
|
| - framer_.version() <= QUIC_VERSION_33 ? packet : packet_34,
|
| - kQuicMaxStreamIdSize, !kIncludeVersion);
|
| + CheckStreamFrameBoundaries(packet, kQuicMaxStreamIdSize, !kIncludeVersion);
|
| }
|
|
|
| TEST_P(QuicFramerTest, MissingDiversificationNonce) {
|
| @@ -1821,32 +1327,6 @@ TEST_P(QuicFramerTest, MissingDiversificationNonce) {
|
|
|
| // 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
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (stream frame with fin)
|
| - 0xFF,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| - // offset
|
| - 0x54, 0x76, 0x10, 0x32,
|
| - 0xDC, 0xFE, 0x98, 0xBA,
|
| - // data length
|
| - 0x0c, 0x00,
|
| - // data
|
| - 'h', 'e', 'l', 'l',
|
| - 'o', ' ', 'w', 'o',
|
| - 'r', 'l', 'd', '!',
|
| - };
|
| - unsigned char packet_34[] = {
|
| // public flags (8 byte connection_id)
|
| 0x38,
|
| // connection_id
|
| @@ -1872,23 +1352,9 @@ TEST_P(QuicFramerTest, MissingDiversificationNonce) {
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| - if (framer_.version() > QUIC_VERSION_32) {
|
| - EXPECT_FALSE(framer_.ProcessPacket(encrypted));
|
| - EXPECT_EQ(QUIC_DECRYPTION_FAILURE, framer_.error());
|
| -
|
| - } else {
|
| - EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
| -
|
| - EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| - ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| - !kIncludeDiversificationNonce));
|
| - }
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| + EXPECT_FALSE(framer_.ProcessPacket(encrypted));
|
| + EXPECT_EQ(QUIC_DECRYPTION_FAILURE, framer_.error());
|
| }
|
|
|
| TEST_P(QuicFramerTest, StreamFrame3ByteStreamId) {
|
| @@ -1902,32 +1368,6 @@ TEST_P(QuicFramerTest, StreamFrame3ByteStreamId) {
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56,
|
| 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (stream frame with fin)
|
| - 0xFE,
|
| - // stream id
|
| - 0x04, 0x03, 0x02,
|
| - // offset
|
| - 0x54, 0x76, 0x10, 0x32,
|
| - 0xDC, 0xFE, 0x98, 0xBA,
|
| - // data length
|
| - 0x0c, 0x00,
|
| - // data
|
| - 'h', 'e', 'l', 'l',
|
| - 'o', ' ', 'w', 'o',
|
| - 'r', 'l', 'd', '!',
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id)
|
| - 0x38,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
|
|
| // frame type (stream frame with fin)
|
| 0xFE,
|
| @@ -1945,11 +1385,7 @@ TEST_P(QuicFramerTest, StreamFrame3ByteStreamId) {
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| @@ -1967,9 +1403,7 @@ TEST_P(QuicFramerTest, StreamFrame3ByteStreamId) {
|
|
|
| // Now test framing boundaries.
|
| const size_t stream_id_size = 3;
|
| - CheckStreamFrameBoundaries(
|
| - framer_.version() <= QUIC_VERSION_33 ? packet : packet_34, stream_id_size,
|
| - !kIncludeVersion);
|
| + CheckStreamFrameBoundaries(packet, stream_id_size, !kIncludeVersion);
|
| }
|
|
|
| TEST_P(QuicFramerTest, StreamFrame2ByteStreamId) {
|
| @@ -1983,32 +1417,6 @@ TEST_P(QuicFramerTest, StreamFrame2ByteStreamId) {
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56,
|
| 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (stream frame with fin)
|
| - 0xFD,
|
| - // stream id
|
| - 0x04, 0x03,
|
| - // offset
|
| - 0x54, 0x76, 0x10, 0x32,
|
| - 0xDC, 0xFE, 0x98, 0xBA,
|
| - // data length
|
| - 0x0c, 0x00,
|
| - // data
|
| - 'h', 'e', 'l', 'l',
|
| - 'o', ' ', 'w', 'o',
|
| - 'r', 'l', 'd', '!',
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id)
|
| - 0x38,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
|
|
| // frame type (stream frame with fin)
|
| 0xFD,
|
| @@ -2026,11 +1434,7 @@ TEST_P(QuicFramerTest, StreamFrame2ByteStreamId) {
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| @@ -2048,9 +1452,7 @@ TEST_P(QuicFramerTest, StreamFrame2ByteStreamId) {
|
|
|
| // Now test framing boundaries.
|
| const size_t stream_id_size = 2;
|
| - CheckStreamFrameBoundaries(
|
| - framer_.version() <= QUIC_VERSION_33 ? packet : packet_34, stream_id_size,
|
| - !kIncludeVersion);
|
| + CheckStreamFrameBoundaries(packet, stream_id_size, !kIncludeVersion);
|
| }
|
|
|
| TEST_P(QuicFramerTest, StreamFrame1ByteStreamId) {
|
| @@ -2064,32 +1466,6 @@ TEST_P(QuicFramerTest, StreamFrame1ByteStreamId) {
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56,
|
| 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (stream frame with fin)
|
| - 0xFC,
|
| - // stream id
|
| - 0x04,
|
| - // offset
|
| - 0x54, 0x76, 0x10, 0x32,
|
| - 0xDC, 0xFE, 0x98, 0xBA,
|
| - // data length
|
| - 0x0c, 0x00,
|
| - // data
|
| - 'h', 'e', 'l', 'l',
|
| - 'o', ' ', 'w', 'o',
|
| - 'r', 'l', 'd', '!',
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id)
|
| - 0x38,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
|
|
| // frame type (stream frame with fin)
|
| 0xFC,
|
| @@ -2107,11 +1483,7 @@ TEST_P(QuicFramerTest, StreamFrame1ByteStreamId) {
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| @@ -2129,9 +1501,7 @@ TEST_P(QuicFramerTest, StreamFrame1ByteStreamId) {
|
|
|
| // Now test framing boundaries.
|
| const size_t stream_id_size = 1;
|
| - CheckStreamFrameBoundaries(
|
| - framer_.version() <= QUIC_VERSION_33 ? packet : packet_34, stream_id_size,
|
| - !kIncludeVersion);
|
| + CheckStreamFrameBoundaries(packet, stream_id_size, !kIncludeVersion);
|
| }
|
|
|
| TEST_P(QuicFramerTest, StreamFrameWithVersion) {
|
| @@ -2147,34 +1517,6 @@ TEST_P(QuicFramerTest, StreamFrameWithVersion) {
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56,
|
| 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (stream frame with fin)
|
| - 0xFF,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| - // offset
|
| - 0x54, 0x76, 0x10, 0x32,
|
| - 0xDC, 0xFE, 0x98, 0xBA,
|
| - // data length
|
| - 0x0c, 0x00,
|
| - // data
|
| - 'h', 'e', 'l', 'l',
|
| - 'o', ' ', 'w', 'o',
|
| - 'r', 'l', 'd', '!',
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (version, 8 byte connection_id)
|
| - 0x39,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // version tag
|
| - 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(),
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
|
|
| // frame type (stream frame with fin)
|
| 0xFF,
|
| @@ -2192,11 +1534,7 @@ TEST_P(QuicFramerTest, StreamFrameWithVersion) {
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| @@ -2214,9 +1552,7 @@ TEST_P(QuicFramerTest, StreamFrameWithVersion) {
|
| CheckStreamFrameData("hello world!", visitor_.stream_frames_[0].get());
|
|
|
| // Now test framing boundaries.
|
| - CheckStreamFrameBoundaries(
|
| - framer_.version() <= QUIC_VERSION_33 ? packet : packet_34,
|
| - kQuicMaxStreamIdSize, kIncludeVersion);
|
| + CheckStreamFrameBoundaries(packet, kQuicMaxStreamIdSize, kIncludeVersion);
|
| }
|
|
|
| TEST_P(QuicFramerTest, RejectPacket) {
|
| @@ -2224,32 +1560,6 @@ TEST_P(QuicFramerTest, RejectPacket) {
|
|
|
| // 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
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (stream frame with fin)
|
| - 0xFF,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| - // offset
|
| - 0x54, 0x76, 0x10, 0x32,
|
| - 0xDC, 0xFE, 0x98, 0xBA,
|
| - // data length
|
| - 0x0c, 0x00,
|
| - // data
|
| - 'h', 'e', 'l', 'l',
|
| - 'o', ' ', 'w', 'o',
|
| - 'r', 'l', 'd', '!',
|
| - };
|
| - unsigned char packet_34[] = {
|
| // public flags (8 byte connection_id)
|
| 0x38,
|
| // connection_id
|
| @@ -2275,11 +1585,7 @@ TEST_P(QuicFramerTest, RejectPacket) {
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| @@ -2312,233 +1618,15 @@ TEST_P(QuicFramerTest, RejectPublicHeader) {
|
| ASSERT_FALSE(visitor_.header_.get());
|
| }
|
|
|
| -TEST_P(QuicFramerTest, AckFrameTwoTimestampVersion32) {
|
| +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
|
| - 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,
|
| - };
|
| - // 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].get();
|
| - 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;
|
| - // 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 < 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 {
|
| - 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, AckFrameOneTimestampVersion32) {
|
| - // 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
|
| - 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.
|
| - 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.
|
| - 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].get();
|
| - 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());
|
| -
|
| - 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 kTimestampDeltaLargestObserved =
|
| - kNumTimestampsOffset + kQuicNumTimestampsSize;
|
| - const size_t kTimestampTimeDeltaLargestObserved =
|
| - kTimestampDeltaLargestObserved + 1;
|
| - const size_t kNumMissingPacketOffset = kTimestampTimeDeltaLargestObserved + 4;
|
| - 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 < 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 {
|
| - 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, 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,
|
| + // 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)
|
| @@ -2554,10 +1642,6 @@ TEST_P(QuicFramerTest, NewAckFrameOneAckBlock) {
|
| };
|
| // clang-format on
|
|
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - return;
|
| - }
|
| -
|
| QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
|
|
| @@ -2570,7 +1654,6 @@ TEST_P(QuicFramerTest, NewAckFrameOneAckBlock) {
|
| ASSERT_EQ(1u, visitor_.ack_frames_.size());
|
| const QuicAckFrame& frame = *visitor_.ack_frames_[0].get();
|
| EXPECT_EQ(kSmallLargestObserved, frame.largest_observed);
|
| - EXPECT_FALSE(frame.missing);
|
| ASSERT_EQ(4660u, frame.packets.NumPacketsSlow());
|
|
|
| const size_t kLargestAckedOffset = kQuicFrameTypeSize;
|
| @@ -2654,10 +1737,6 @@ TEST_P(QuicFramerTest, NewAckFrameTwoTimeStampsMultipleAckBlocks) {
|
| };
|
| // clang-format on
|
|
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - return;
|
| - }
|
| -
|
| QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
|
|
| @@ -2670,7 +1749,6 @@ TEST_P(QuicFramerTest, NewAckFrameTwoTimeStampsMultipleAckBlocks) {
|
| ASSERT_EQ(1u, visitor_.ack_frames_.size());
|
| const QuicAckFrame& frame = *visitor_.ack_frames_[0].get();
|
| EXPECT_EQ(kSmallLargestObserved, frame.largest_observed);
|
| - EXPECT_FALSE(frame.missing);
|
| ASSERT_EQ(4254u, frame.packets.NumPacketsSlow());
|
|
|
| const size_t kLargestAckedOffset = kQuicFrameTypeSize;
|
| @@ -2755,42 +1833,25 @@ TEST_P(QuicFramerTest, NewAckFrameTwoTimeStampsMultipleAckBlocks) {
|
| }
|
| }
|
|
|
| -TEST_P(QuicFramerTest, AckFrameVersion32) {
|
| +TEST_P(QuicFramerTest, NewStopWaitingFrame) {
|
| // 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,
|
| + // public flags (8 byte connection_id)
|
| + 0x3C,
|
| + // connection_id
|
| + 0x10, 0x32, 0x54, 0x76,
|
| + 0x98, 0xBA, 0xDC, 0xFE,
|
| + // packet number
|
| + 0xA8, 0x9A, 0x78, 0x56,
|
| + 0x34, 0x12,
|
| + // frame type (stop waiting frame)
|
| + 0x06,
|
| + // least packet number awaiting an ack, delta from packet number.
|
| + 0x08, 0x00, 0x00, 0x00,
|
| + 0x00, 0x00,
|
| };
|
| // clang-format on
|
|
|
| - if (framer_.version() > QUIC_VERSION_33) {
|
| - return;
|
| - }
|
| -
|
| QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
|
|
| @@ -2800,126 +1861,25 @@ TEST_P(QuicFramerTest, AckFrameVersion32) {
|
| !kIncludeDiversificationNonce));
|
|
|
| EXPECT_EQ(0u, visitor_.stream_frames_.size());
|
| - ASSERT_EQ(1u, visitor_.ack_frames_.size());
|
| - const QuicAckFrame& frame = *visitor_.ack_frames_[0].get();
|
| - 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) {
|
| + ASSERT_EQ(1u, visitor_.stop_waiting_frames_.size());
|
| + const QuicStopWaitingFrame& frame = *visitor_.stop_waiting_frames_[0].get();
|
| + EXPECT_EQ(kLeastUnacked, frame.least_unacked);
|
| +
|
| + const size_t frame_size = 7;
|
| + for (size_t i = kQuicFrameTypeSize; i < 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.";
|
| - }
|
| + expected_error = "Unable to read least unacked 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) {
|
| - // 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)
|
| - // (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,
|
| - // No received packets.
|
| - 0x00,
|
| - // num missing packet ranges
|
| - 0x02,
|
| - // 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,
|
| - };
|
| - // clang-format on
|
| -
|
| - if (framer_.version() > QUIC_VERSION_33) {
|
| - return;
|
| + expected_error, QUIC_INVALID_STOP_WAITING_DATA);
|
| }
|
| -
|
| - 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].get();
|
| - 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);
|
| -
|
| - test::CompareCharArraysWithHexError("constructed packet", data->data(),
|
| - data->length(), AsChars(packet),
|
| - arraysize(packet));
|
| }
|
|
|
| -TEST_P(QuicFramerTest, StopWaitingFrame) {
|
| - if (framer_.version() > QUIC_VERSION_33) {
|
| - return;
|
| - }
|
| +TEST_P(QuicFramerTest, RstStreamFrameQuic) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| @@ -2928,19 +1888,20 @@ TEST_P(QuicFramerTest, StopWaitingFrame) {
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| - 0xA8, 0x9A, 0x78, 0x56,
|
| + 0xBC, 0x9A, 0x78, 0x56,
|
| 0x34, 0x12,
|
| - // private flags (entropy)
|
| +
|
| + // frame type (rst stream frame)
|
| 0x01,
|
| + // stream id
|
| + 0x04, 0x03, 0x02, 0x01,
|
|
|
| - // frame type (ack frame)
|
| - // (has nacks, not truncated, 6 byte largest observed, 1 byte delta)
|
| - 0x06,
|
| - // entropy hash of sent packets till least awaiting - 1.
|
| - 0xAB,
|
| - // least packet number awaiting an ack, delta from packet number.
|
| - 0x08, 0x00, 0x00, 0x00,
|
| - 0x00, 0x00,
|
| + // sent byte offset
|
| + 0x54, 0x76, 0x10, 0x32,
|
| + 0xDC, 0xFE, 0x98, 0xBA,
|
| +
|
| + // error code
|
| + 0x01, 0x00, 0x00, 0x00,
|
| };
|
| // clang-format on
|
|
|
| @@ -2952,21 +1913,22 @@ TEST_P(QuicFramerTest, StopWaitingFrame) {
|
| EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| !kIncludeDiversificationNonce));
|
|
|
| - EXPECT_EQ(0u, visitor_.stream_frames_.size());
|
| - ASSERT_EQ(1u, visitor_.stop_waiting_frames_.size());
|
| - const QuicStopWaitingFrame& frame = *visitor_.stop_waiting_frames_[0].get();
|
| - EXPECT_EQ(0xAB, frame.entropy_hash);
|
| - EXPECT_EQ(kLeastUnacked, frame.least_unacked);
|
| + EXPECT_EQ(kStreamId, visitor_.rst_stream_frame_.stream_id);
|
| + EXPECT_EQ(0x01, visitor_.rst_stream_frame_.error_code);
|
| + EXPECT_EQ(kStreamOffset, visitor_.rst_stream_frame_.byte_offset);
|
|
|
| - const size_t kSentEntropyOffset = kQuicFrameTypeSize;
|
| - const size_t kLeastUnackedOffset = kSentEntropyOffset + kQuicEntropyHashSize;
|
| - const size_t frame_size = 7;
|
| - for (size_t i = kQuicFrameTypeSize; i < frame_size; ++i) {
|
| + // Now test framing boundaries.
|
| + for (size_t i = kQuicFrameTypeSize; i < QuicFramer::GetRstStreamFrameSize();
|
| + ++i) {
|
| string expected_error;
|
| - if (i < kLeastUnackedOffset) {
|
| - expected_error = "Unable to read entropy hash for sent packets.";
|
| - } else {
|
| - expected_error = "Unable to read least unacked delta.";
|
| + if (i < kQuicFrameTypeSize + kQuicMaxStreamIdSize) {
|
| + expected_error = "Unable to read stream_id.";
|
| + } else if (i < kQuicFrameTypeSize + kQuicMaxStreamIdSize +
|
| + kQuicMaxStreamOffsetSize) {
|
| + expected_error = "Unable to read rst stream sent byte offset.";
|
| + } else if (i < kQuicFrameTypeSize + kQuicMaxStreamIdSize +
|
| + kQuicMaxStreamOffsetSize + kQuicErrorCodeSize) {
|
| + expected_error = "Unable to read rst stream error code.";
|
| }
|
| CheckProcessingFails(
|
| packet,
|
| @@ -2974,178 +1936,15 @@ TEST_P(QuicFramerTest, StopWaitingFrame) {
|
| !kIncludeVersion, !kIncludePathId,
|
| !kIncludeDiversificationNonce,
|
| PACKET_6BYTE_PACKET_NUMBER),
|
| - expected_error, QUIC_INVALID_STOP_WAITING_DATA);
|
| + expected_error, QUIC_INVALID_RST_STREAM_DATA);
|
| }
|
| }
|
|
|
| -TEST_P(QuicFramerTest, NewStopWaitingFrame) {
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - return;
|
| - }
|
| +TEST_P(QuicFramerTest, ConnectionCloseFrame) {
|
| // 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
|
| - 0xA8, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // frame type (stop waiting frame)
|
| - 0x06,
|
| - // least packet number awaiting an ack, delta from packet number.
|
| - 0x08, 0x00, 0x00, 0x00,
|
| - 0x00, 0x00,
|
| - };
|
| - // clang-format on
|
| -
|
| - 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_.stop_waiting_frames_.size());
|
| - const QuicStopWaitingFrame& frame = *visitor_.stop_waiting_frames_[0].get();
|
| - EXPECT_EQ(kLeastUnacked, frame.least_unacked);
|
| -
|
| - const size_t frame_size = 7;
|
| - for (size_t i = kQuicFrameTypeSize; i < frame_size; ++i) {
|
| - string expected_error;
|
| - expected_error = "Unable to read least unacked delta.";
|
| - CheckProcessingFails(
|
| - packet,
|
| - i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID,
|
| - !kIncludeVersion, !kIncludePathId,
|
| - !kIncludeDiversificationNonce,
|
| - PACKET_6BYTE_PACKET_NUMBER),
|
| - expected_error, QUIC_INVALID_STOP_WAITING_DATA);
|
| - }
|
| -}
|
| -
|
| -TEST_P(QuicFramerTest, RstStreamFrameQuic) {
|
| - // 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
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (rst stream frame)
|
| - 0x01,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| -
|
| - // sent byte offset
|
| - 0x54, 0x76, 0x10, 0x32,
|
| - 0xDC, 0xFE, 0x98, 0xBA,
|
| -
|
| - // error code
|
| - 0x01, 0x00, 0x00, 0x00,
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id)
|
| - 0x38,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| -
|
| - // frame type (rst stream frame)
|
| - 0x01,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| -
|
| - // sent byte offset
|
| - 0x54, 0x76, 0x10, 0x32,
|
| - 0xDC, 0xFE, 0x98, 0xBA,
|
| -
|
| - // error code
|
| - 0x01, 0x00, 0x00, 0x00,
|
| - };
|
| - // clang-format on
|
| -
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - 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(kStreamId, visitor_.rst_stream_frame_.stream_id);
|
| - EXPECT_EQ(0x01, visitor_.rst_stream_frame_.error_code);
|
| - EXPECT_EQ(kStreamOffset, visitor_.rst_stream_frame_.byte_offset);
|
| -
|
| - // Now test framing boundaries.
|
| - for (size_t i = kQuicFrameTypeSize; i < QuicFramer::GetRstStreamFrameSize();
|
| - ++i) {
|
| - string expected_error;
|
| - if (i < kQuicFrameTypeSize + kQuicMaxStreamIdSize) {
|
| - expected_error = "Unable to read stream_id.";
|
| - } else if (i < kQuicFrameTypeSize + kQuicMaxStreamIdSize +
|
| - kQuicMaxStreamOffsetSize) {
|
| - expected_error = "Unable to read rst stream sent byte offset.";
|
| - } else if (i < kQuicFrameTypeSize + kQuicMaxStreamIdSize +
|
| - kQuicMaxStreamOffsetSize + kQuicErrorCodeSize) {
|
| - expected_error = "Unable to read rst stream error code.";
|
| - }
|
| - CheckProcessingFails(
|
| - framer_.version() <= QUIC_VERSION_33 ? packet : packet_34,
|
| - i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID,
|
| - !kIncludeVersion, !kIncludePathId,
|
| - !kIncludeDiversificationNonce,
|
| - PACKET_6BYTE_PACKET_NUMBER),
|
| - expected_error, QUIC_INVALID_RST_STREAM_DATA);
|
| - }
|
| -}
|
| -
|
| -TEST_P(QuicFramerTest, ConnectionCloseFrame) {
|
| - // 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
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (connection close frame)
|
| - 0x02,
|
| - // error code
|
| - 0x11, 0x00, 0x00, 0x00,
|
| -
|
| - // error details length
|
| - 0x0d, 0x00,
|
| - // error details
|
| - 'b', 'e', 'c', 'a',
|
| - 'u', 's', 'e', ' ',
|
| - 'I', ' ', 'c', 'a',
|
| - 'n',
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id)
|
| - 0x38,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -3168,11 +1967,7 @@ TEST_P(QuicFramerTest, ConnectionCloseFrame) {
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| @@ -3197,7 +1992,7 @@ TEST_P(QuicFramerTest, ConnectionCloseFrame) {
|
| expected_error = "Unable to read connection close error details.";
|
| }
|
| CheckProcessingFails(
|
| - framer_.version() <= QUIC_VERSION_33 ? packet : packet_34,
|
| + packet,
|
| i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID,
|
| !kIncludeVersion, !kIncludePathId,
|
| !kIncludeDiversificationNonce,
|
| @@ -3217,32 +2012,6 @@ TEST_P(QuicFramerTest, GoAwayFrame) {
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56,
|
| 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (go away frame)
|
| - 0x03,
|
| - // error code
|
| - 0x09, 0x00, 0x00, 0x00,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| - // error details length
|
| - 0x0d, 0x00,
|
| - // error details
|
| - 'b', 'e', 'c', 'a',
|
| - 'u', 's', 'e', ' ',
|
| - 'I', ' ', 'c', 'a',
|
| - 'n',
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id)
|
| - 0x38,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
|
|
| // frame type (go away frame)
|
| 0x03,
|
| @@ -3260,11 +2029,7 @@ TEST_P(QuicFramerTest, GoAwayFrame) {
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| @@ -3290,7 +2055,7 @@ TEST_P(QuicFramerTest, GoAwayFrame) {
|
| expected_error = "Unable to read goaway reason.";
|
| }
|
| CheckProcessingFails(
|
| - framer_.version() <= QUIC_VERSION_33 ? packet : packet_34,
|
| + packet,
|
| i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID,
|
| !kIncludeVersion, !kIncludePathId,
|
| !kIncludeDiversificationNonce,
|
| @@ -3310,26 +2075,6 @@ TEST_P(QuicFramerTest, WindowUpdateFrame) {
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56,
|
| 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (window update frame)
|
| - 0x04,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| - // byte offset
|
| - 0x54, 0x76, 0x10, 0x32,
|
| - 0xDC, 0xFE, 0x98, 0xBA,
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id)
|
| - 0x38,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
|
|
| // frame type (window update frame)
|
| 0x04,
|
| @@ -3341,12 +2086,7 @@ TEST_P(QuicFramerTest, WindowUpdateFrame) {
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| -
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| @@ -3367,7 +2107,7 @@ TEST_P(QuicFramerTest, WindowUpdateFrame) {
|
| expected_error = "Unable to read window byte_offset.";
|
| }
|
| CheckProcessingFails(
|
| - framer_.version() <= QUIC_VERSION_33 ? packet : packet_34,
|
| + packet,
|
| i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID,
|
| !kIncludeVersion, !kIncludePathId,
|
| !kIncludeDiversificationNonce,
|
| @@ -3387,23 +2127,6 @@ TEST_P(QuicFramerTest, BlockedFrame) {
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56,
|
| 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (blocked frame)
|
| - 0x05,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id)
|
| - 0x38,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
|
|
| // frame type (blocked frame)
|
| 0x05,
|
| @@ -3412,12 +2135,7 @@ TEST_P(QuicFramerTest, BlockedFrame) {
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| -
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| @@ -3432,7 +2150,7 @@ TEST_P(QuicFramerTest, BlockedFrame) {
|
| ++i) {
|
| string expected_error = "Unable to read stream_id.";
|
| CheckProcessingFails(
|
| - framer_.version() <= QUIC_VERSION_33 ? packet : packet_34,
|
| + packet,
|
| i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID,
|
| !kIncludeVersion, !kIncludePathId,
|
| !kIncludeDiversificationNonce,
|
| @@ -3452,32 +2170,13 @@ TEST_P(QuicFramerTest, PingFrame) {
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56,
|
| 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (ping frame)
|
| - 0x07,
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id)
|
| - 0x38,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
|
|
| // frame type (ping frame)
|
| 0x07,
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| @@ -3501,23 +2200,6 @@ TEST_P(QuicFramerTest, PathCloseFrame) {
|
| 0x00,
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (path_close_frame)
|
| - 0x08,
|
| - // path id
|
| - 0x42,
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (version)
|
| - 0x78,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| - // path_id
|
| - 0x00,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
|
|
| // frame type (path_close_frame)
|
| 0x08,
|
| @@ -3526,11 +2208,7 @@ TEST_P(QuicFramerTest, PathCloseFrame) {
|
| };
|
| // clang-format on
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| @@ -3546,7 +2224,7 @@ TEST_P(QuicFramerTest, PathCloseFrame) {
|
| expected_error = "Unable to read path_id.";
|
| }
|
| CheckProcessingFails(
|
| - framer_.version() <= QUIC_VERSION_33 ? packet : packet_34,
|
| + packet,
|
| i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID,
|
| !kIncludeVersion, kIncludePathId,
|
| !kIncludeDiversificationNonce,
|
| @@ -3869,7 +2547,6 @@ TEST_P(QuicFramerTest, BuildPaddingFramePacket) {
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| header.public_header.version_flag = false;
|
| - header.entropy_flag = false;
|
| header.packet_number = kPacketNumber;
|
|
|
| QuicPaddingFrame padding_frame;
|
| @@ -3880,23 +2557,6 @@ TEST_P(QuicFramerTest, BuildPaddingFramePacket) {
|
| // clang-format off
|
| unsigned char packet[kMaxPacketSize] = {
|
| // 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
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (padding frame)
|
| - 0x00,
|
| - 0x00, 0x00, 0x00, 0x00
|
| - };
|
| - unsigned char packet_34[kMaxPacketSize] = {
|
| - // public flags (8 byte connection_id)
|
| 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| @@ -3915,18 +2575,14 @@ TEST_P(QuicFramerTest, BuildPaddingFramePacket) {
|
| framer_.version(), PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| !kIncludePathId, !kIncludeDiversificationNonce,
|
| PACKET_6BYTE_PACKET_NUMBER);
|
| - memset((framer_.version() <= QUIC_VERSION_33 ? packet : packet_34) +
|
| - header_size + 1,
|
| - 0x00, kMaxPacketSize - header_size - 1);
|
| + memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1);
|
|
|
| std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| ASSERT_TRUE(data != nullptr);
|
|
|
| - test::CompareCharArraysWithHexError(
|
| - "constructed packet", data->data(), data->length(),
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34));
|
| + test::CompareCharArraysWithHexError("constructed packet", data->data(),
|
| + data->length(), AsChars(packet),
|
| + arraysize(packet));
|
| }
|
|
|
| TEST_P(QuicFramerTest, Build4ByteSequenceNumberPaddingFramePacket) {
|
| @@ -3934,7 +2590,6 @@ TEST_P(QuicFramerTest, Build4ByteSequenceNumberPaddingFramePacket) {
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| header.public_header.version_flag = false;
|
| - header.entropy_flag = false;
|
| header.public_header.packet_number_length = PACKET_4BYTE_PACKET_NUMBER;
|
| header.packet_number = kPacketNumber;
|
|
|
| @@ -3946,22 +2601,6 @@ TEST_P(QuicFramerTest, Build4ByteSequenceNumberPaddingFramePacket) {
|
| // clang-format off
|
| unsigned char packet[kMaxPacketSize] = {
|
| // public flags (8 byte connection_id and 4 byte packet number)
|
| - static_cast<unsigned char>(
|
| - framer_.version() > QUIC_VERSION_32 ? 0x28 : 0x2C),
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (padding frame)
|
| - 0x00,
|
| - 0x00, 0x00, 0x00, 0x00
|
| - };
|
| - unsigned char packet_34[kMaxPacketSize] = {
|
| - // public flags (8 byte connection_id and 4 byte packet number)
|
| 0x28,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| @@ -3979,18 +2618,14 @@ TEST_P(QuicFramerTest, Build4ByteSequenceNumberPaddingFramePacket) {
|
| framer_.version(), PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| !kIncludePathId, !kIncludeDiversificationNonce,
|
| PACKET_4BYTE_PACKET_NUMBER);
|
| - memset((framer_.version() <= QUIC_VERSION_33 ? packet : packet_34) +
|
| - header_size + 1,
|
| - 0x00, kMaxPacketSize - header_size - 1);
|
| + memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1);
|
|
|
| std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| ASSERT_TRUE(data != nullptr);
|
|
|
| - test::CompareCharArraysWithHexError(
|
| - "constructed packet", data->data(), data->length(),
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34));
|
| + test::CompareCharArraysWithHexError("constructed packet", data->data(),
|
| + data->length(), AsChars(packet),
|
| + arraysize(packet));
|
| }
|
|
|
| TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) {
|
| @@ -3998,7 +2633,6 @@ TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) {
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| header.public_header.version_flag = false;
|
| - header.entropy_flag = false;
|
| header.public_header.packet_number_length = PACKET_2BYTE_PACKET_NUMBER;
|
| header.packet_number = kPacketNumber;
|
|
|
| @@ -4010,22 +2644,6 @@ TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) {
|
| // clang-format off
|
| unsigned char packet[kMaxPacketSize] = {
|
| // public flags (8 byte connection_id and 2 byte packet number)
|
| - static_cast<unsigned char>(
|
| - framer_.version() > QUIC_VERSION_32 ? 0x18 : 0x1C),
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // packet number
|
| - 0xBC, 0x9A,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (padding frame)
|
| - 0x00,
|
| - 0x00, 0x00, 0x00, 0x00
|
| - };
|
| - unsigned char packet_34[kMaxPacketSize] = {
|
| - // public flags (8 byte connection_id and 2 byte packet number)
|
| 0x18,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| @@ -4043,18 +2661,14 @@ TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) {
|
| framer_.version(), PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| !kIncludePathId, !kIncludeDiversificationNonce,
|
| PACKET_2BYTE_PACKET_NUMBER);
|
| - memset((framer_.version() <= QUIC_VERSION_33 ? packet : packet_34) +
|
| - header_size + 1,
|
| - 0x00, kMaxPacketSize - header_size - 1);
|
| + memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1);
|
|
|
| std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| ASSERT_TRUE(data != nullptr);
|
|
|
| - test::CompareCharArraysWithHexError(
|
| - "constructed packet", data->data(), data->length(),
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34));
|
| + test::CompareCharArraysWithHexError("constructed packet", data->data(),
|
| + data->length(), AsChars(packet),
|
| + arraysize(packet));
|
| }
|
|
|
| TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) {
|
| @@ -4062,7 +2676,6 @@ TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) {
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| header.public_header.version_flag = false;
|
| - header.entropy_flag = false;
|
| header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER;
|
| header.packet_number = kPacketNumber;
|
|
|
| @@ -4074,22 +2687,6 @@ TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) {
|
| // clang-format off
|
| unsigned char packet[kMaxPacketSize] = {
|
| // public flags (8 byte connection_id and 1 byte packet number)
|
| - static_cast<unsigned char>(
|
| - framer_.version() > QUIC_VERSION_32 ? 0x08 : 0x0C),
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // packet number
|
| - 0xBC,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (padding frame)
|
| - 0x00,
|
| - 0x00, 0x00, 0x00, 0x00
|
| - };
|
| - unsigned char packet_34[kMaxPacketSize] = {
|
| - // public flags (8 byte connection_id and 1 byte packet number)
|
| 0x08,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| @@ -4107,18 +2704,14 @@ TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) {
|
| framer_.version(), PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| !kIncludePathId, !kIncludeDiversificationNonce,
|
| PACKET_1BYTE_PACKET_NUMBER);
|
| - memset((framer_.version() <= QUIC_VERSION_33 ? packet : packet_34) +
|
| - header_size + 1,
|
| - 0x00, kMaxPacketSize - header_size - 1);
|
| + memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1);
|
|
|
| std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| ASSERT_TRUE(data != nullptr);
|
|
|
| - test::CompareCharArraysWithHexError(
|
| - "constructed packet", data->data(), data->length(),
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34));
|
| + test::CompareCharArraysWithHexError("constructed packet", data->data(),
|
| + data->length(), AsChars(packet),
|
| + arraysize(packet));
|
| }
|
|
|
| TEST_P(QuicFramerTest, BuildStreamFramePacket) {
|
| @@ -4126,7 +2719,6 @@ TEST_P(QuicFramerTest, BuildStreamFramePacket) {
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| header.public_header.version_flag = false;
|
| - header.entropy_flag = true;
|
| header.packet_number = kPacketNumber;
|
|
|
| QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset,
|
| @@ -4138,31 +2730,6 @@ TEST_P(QuicFramerTest, BuildStreamFramePacket) {
|
| // 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
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // private flags (entropy)
|
| - 0x01,
|
| -
|
| - // frame type (stream frame with fin and no length)
|
| - 0xDF,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| - // offset
|
| - 0x54, 0x76, 0x10, 0x32,
|
| - 0xDC, 0xFE, 0x98, 0xBA,
|
| - // data
|
| - 'h', 'e', 'l', 'l',
|
| - 'o', ' ', 'w', 'o',
|
| - 'r', 'l', 'd', '!',
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id)
|
| 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| @@ -4188,11 +2755,9 @@ TEST_P(QuicFramerTest, BuildStreamFramePacket) {
|
| std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| ASSERT_TRUE(data != nullptr);
|
|
|
| - test::CompareCharArraysWithHexError(
|
| - "constructed packet", data->data(), data->length(),
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34));
|
| + test::CompareCharArraysWithHexError("constructed packet", data->data(),
|
| + data->length(), AsChars(packet),
|
| + arraysize(packet));
|
| }
|
|
|
| TEST_P(QuicFramerTest, BuildStreamFramePacketWithVersionFlag) {
|
| @@ -4200,7 +2765,6 @@ TEST_P(QuicFramerTest, BuildStreamFramePacketWithVersionFlag) {
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| header.public_header.version_flag = true;
|
| - header.entropy_flag = true;
|
| header.packet_number = kPacketNumber;
|
|
|
| QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset,
|
| @@ -4213,29 +2777,6 @@ TEST_P(QuicFramerTest, BuildStreamFramePacketWithVersionFlag) {
|
| unsigned char packet[] = {
|
| // public flags (version, 8 byte connection_id)
|
| static_cast<unsigned char>(
|
| - (FLAGS_quic_remove_v33_hacks2 &&
|
| - framer_.version() > QUIC_VERSION_32) ? 0x39 : 0x3D),
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| - // version tag
|
| - 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(),
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| - // private flags (entropy)
|
| - 0x01,
|
| -
|
| - // frame type (stream frame with fin and no length)
|
| - 0xDF,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| - // offset
|
| - 0x54, 0x76, 0x10, 0x32, 0xDC, 0xFE, 0x98, 0xBA,
|
| - // data
|
| - 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!',
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (version, 8 byte connection_id)
|
| - static_cast<unsigned char>(
|
| FLAGS_quic_remove_v33_hacks2 ? 0x39 : 0x3D),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -4259,11 +2800,9 @@ TEST_P(QuicFramerTest, BuildStreamFramePacketWithVersionFlag) {
|
| std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| ASSERT_TRUE(data != nullptr);
|
|
|
| - test::CompareCharArraysWithHexError(
|
| - "constructed packet", data->data(), data->length(),
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34));
|
| + test::CompareCharArraysWithHexError("constructed packet", data->data(),
|
| + data->length(), AsChars(packet),
|
| + arraysize(packet));
|
| }
|
|
|
| TEST_P(QuicFramerTest, BuildStreamFramePacketWithMultipathFlag) {
|
| @@ -4272,7 +2811,6 @@ TEST_P(QuicFramerTest, BuildStreamFramePacketWithMultipathFlag) {
|
| header.public_header.multipath_flag = true;
|
| header.public_header.reset_flag = false;
|
| header.public_header.version_flag = false;
|
| - header.entropy_flag = true;
|
| header.path_id = kPathId;
|
| header.packet_number = kPacketNumber;
|
|
|
| @@ -4285,225 +2823,27 @@ TEST_P(QuicFramerTest, BuildStreamFramePacketWithMultipathFlag) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - static_cast<unsigned char>(
|
| - framer_.version() > QUIC_VERSION_32 ? 0x78 : 0x7C),
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // path_id
|
| - 0x42,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // private flags (entropy)
|
| - 0x01,
|
| -
|
| - // frame type (stream frame with fin and no length)
|
| - 0xDF,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| - // offset
|
| - 0x54, 0x76, 0x10, 0x32,
|
| - 0xDC, 0xFE, 0x98, 0xBA,
|
| - // data
|
| - 'h', 'e', 'l', 'l',
|
| - 'o', ' ', 'w', 'o',
|
| - 'r', 'l', 'd', '!',
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id)
|
| 0x78,
|
| // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // path_id
|
| - 0x42,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| -
|
| - // frame type (stream frame with fin and no length)
|
| - 0xDF,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| - // offset
|
| - 0x54, 0x76, 0x10, 0x32,
|
| - 0xDC, 0xFE, 0x98, 0xBA,
|
| - // data
|
| - 'h', 'e', 'l', 'l',
|
| - 'o', ' ', 'w', 'o',
|
| - 'r', 'l', 'd', '!',
|
| - };
|
| - // clang-format on
|
| -
|
| - std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| - ASSERT_TRUE(data != nullptr);
|
| -
|
| - test::CompareCharArraysWithHexError(
|
| - "constructed packet", data->data(), data->length(),
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34));
|
| -}
|
| -
|
| -TEST_P(QuicFramerTest, BuildStreamFramePacketWithBothVersionAndMultipathFlag) {
|
| - QuicPacketHeader header;
|
| - header.public_header.connection_id = kConnectionId;
|
| - header.public_header.multipath_flag = true;
|
| - header.public_header.reset_flag = false;
|
| - header.public_header.version_flag = true;
|
| - header.entropy_flag = true;
|
| - header.path_id = kPathId;
|
| - header.packet_number = kPacketNumber;
|
| -
|
| - QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset,
|
| - StringPiece("hello world!"));
|
| -
|
| - QuicFrames frames;
|
| - frames.push_back(QuicFrame(&stream_frame));
|
| -
|
| - // clang-format off
|
| - unsigned char packet[] = {
|
| - // public flags (8 byte connection_id)
|
| - static_cast<unsigned char>(
|
| - (FLAGS_quic_remove_v33_hacks2 &&
|
| - framer_.version() > QUIC_VERSION_32) ? 0x79 : 0x7D),
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // version tag
|
| - 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(),
|
| - // path_id
|
| - 0x42,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // private flags (entropy)
|
| - 0x01,
|
| -
|
| - // frame type (stream frame with fin and no length)
|
| - 0xDF,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| - // offset
|
| - 0x54, 0x76, 0x10, 0x32,
|
| - 0xDC, 0xFE, 0x98, 0xBA,
|
| - // data
|
| - 'h', 'e', 'l', 'l',
|
| - 'o', ' ', 'w', 'o',
|
| - 'r', 'l', 'd', '!',
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id)
|
| - static_cast<unsigned char>(
|
| - FLAGS_quic_remove_v33_hacks2 ? 0x79 : 0x7D),
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // version tag
|
| - 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(),
|
| - // path_id
|
| - 0x42,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| -
|
| - // frame type (stream frame with fin and no length)
|
| - 0xDF,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| - // offset
|
| - 0x54, 0x76, 0x10, 0x32,
|
| - 0xDC, 0xFE, 0x98, 0xBA,
|
| - // data
|
| - 'h', 'e', 'l', 'l',
|
| - 'o', ' ', 'w', 'o',
|
| - 'r', 'l', 'd', '!',
|
| - };
|
| - // clang-format on
|
| -
|
| - QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT);
|
| - std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| - ASSERT_TRUE(data != nullptr);
|
| -
|
| - test::CompareCharArraysWithHexError(
|
| - "constructed packet", data->data(), data->length(),
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34));
|
| -}
|
| -
|
| -TEST_P(QuicFramerTest, BuildVersionNegotiationPacket) {
|
| - // clang-format off
|
| - unsigned char packet[] = {
|
| - // public flags (version, 8 byte connection_id)
|
| - 0x0D,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| - // version tag
|
| - 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(),
|
| - };
|
| - // clang-format on
|
| -
|
| - QuicConnectionId connection_id = kConnectionId;
|
| - std::unique_ptr<QuicEncryptedPacket> data(
|
| - framer_.BuildVersionNegotiationPacket(connection_id,
|
| - SupportedVersions(GetParam())));
|
| - test::CompareCharArraysWithHexError("constructed packet", data->data(),
|
| - data->length(), AsChars(packet),
|
| - arraysize(packet));
|
| -}
|
| -
|
| -TEST_P(QuicFramerTest, BuildAckFramePacket) {
|
| - if (framer_.version() > QUIC_VERSION_33) {
|
| - return;
|
| - }
|
| -
|
| - QuicPacketHeader header;
|
| - header.public_header.connection_id = kConnectionId;
|
| - header.public_header.reset_flag = false;
|
| - header.public_header.version_flag = false;
|
| - header.entropy_flag = true;
|
| - header.packet_number = kPacketNumber;
|
| -
|
| - QuicAckFrame ack_frame;
|
| - ack_frame.entropy_hash = 0x43;
|
| - ack_frame.largest_observed = kLargestObserved;
|
| - ack_frame.ack_delay_time = QuicTime::Delta::Zero();
|
| - ack_frame.packets.Add(kMissingPacket);
|
| -
|
| - QuicFrames frames;
|
| - frames.push_back(QuicFrame(&ack_frame));
|
| -
|
| - // 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
|
| - 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| - // private flags (entropy)
|
| - 0x01,
|
| + 0x10, 0x32, 0x54, 0x76,
|
| + 0x98, 0xBA, 0xDC, 0xFE,
|
| + // path_id
|
| + 0x42,
|
| + // packet number
|
| + 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.
|
| - 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,
|
| + // frame type (stream frame with fin and no length)
|
| + 0xDF,
|
| + // stream id
|
| + 0x04, 0x03, 0x02, 0x01,
|
| + // offset
|
| + 0x54, 0x76, 0x10, 0x32,
|
| + 0xDC, 0xFE, 0x98, 0xBA,
|
| + // data
|
| + 'h', 'e', 'l', 'l',
|
| + 'o', ' ', 'w', 'o',
|
| + 'r', 'l', 'd', '!',
|
| };
|
| // clang-format on
|
|
|
| @@ -4515,112 +2855,52 @@ TEST_P(QuicFramerTest, BuildAckFramePacket) {
|
| arraysize(packet));
|
| }
|
|
|
| -// TODO(jri): Add test for tuncated packets in which the original ack frame had
|
| -// revived packets. (In both the large and small packet cases below).
|
| -
|
| -TEST_P(QuicFramerTest, BuildTruncatedAckFrameLargePacket) {
|
| - if (framer_.version() > QUIC_VERSION_33) {
|
| - return;
|
| - }
|
| -
|
| +TEST_P(QuicFramerTest, BuildStreamFramePacketWithBothVersionAndMultipathFlag) {
|
| QuicPacketHeader header;
|
| header.public_header.connection_id = kConnectionId;
|
| + header.public_header.multipath_flag = true;
|
| header.public_header.reset_flag = false;
|
| - header.public_header.version_flag = false;
|
| - header.entropy_flag = true;
|
| + header.public_header.version_flag = true;
|
| + header.path_id = kPathId;
|
| header.packet_number = kPacketNumber;
|
|
|
| - QuicAckFrame ack_frame;
|
| - // This entropy hash is different from what shows up in the packet below,
|
| - // since entropy is recomputed by the framer on ack truncation (by
|
| - // TestEntropyCalculator for this test.)
|
| - ack_frame.entropy_hash = 0x43;
|
| - ack_frame.largest_observed = 2 * 300;
|
| - ack_frame.ack_delay_time = QuicTime::Delta::Zero();
|
| - for (size_t i = 1; i < 2 * 300; i += 2) {
|
| - ack_frame.packets.Add(i);
|
| - }
|
| + QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset,
|
| + StringPiece("hello world!"));
|
|
|
| QuicFrames frames;
|
| - frames.push_back(QuicFrame(&ack_frame));
|
| + frames.push_back(QuicFrame(&stream_frame));
|
|
|
| // 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
|
| - 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| - // private flags (entropy)
|
| - 0x01,
|
| + // public flags (8 byte connection_id)
|
| + static_cast<unsigned char>(
|
| + FLAGS_quic_remove_v33_hacks2 ? 0x79 : 0x7D),
|
| + // connection_id
|
| + 0x10, 0x32, 0x54, 0x76,
|
| + 0x98, 0xBA, 0xDC, 0xFE,
|
| + // version tag
|
| + 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(),
|
| + // path_id
|
| + 0x42,
|
| + // packet number
|
| + 0xBC, 0x9A, 0x78, 0x56,
|
| + 0x34, 0x12,
|
|
|
| - // 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,
|
| + // frame type (stream frame with fin and no length)
|
| + 0xDF,
|
| + // stream id
|
| + 0x04, 0x03, 0x02, 0x01,
|
| + // offset
|
| + 0x54, 0x76, 0x10, 0x32,
|
| + 0xDC, 0xFE, 0x98, 0xBA,
|
| + // data
|
| + 'h', 'e', 'l', 'l',
|
| + 'o', ' ', 'w', 'o',
|
| + 'r', 'l', 'd', '!',
|
| };
|
| // clang-format on
|
|
|
| + QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT);
|
| std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| ASSERT_TRUE(data != nullptr);
|
|
|
| @@ -4629,77 +2909,28 @@ TEST_P(QuicFramerTest, BuildTruncatedAckFrameLargePacket) {
|
| arraysize(packet));
|
| }
|
|
|
| -TEST_P(QuicFramerTest, BuildTruncatedAckFrameSmallPacket) {
|
| - if (framer_.version() > QUIC_VERSION_33) {
|
| - return;
|
| - }
|
| -
|
| - QuicPacketHeader header;
|
| - header.public_header.connection_id = kConnectionId;
|
| - header.public_header.reset_flag = false;
|
| - header.public_header.version_flag = false;
|
| - header.entropy_flag = true;
|
| - header.packet_number = kPacketNumber;
|
| -
|
| - QuicAckFrame ack_frame;
|
| - // This entropy hash is different from what shows up in the packet below,
|
| - // since entropy is recomputed by the framer on ack truncation (by
|
| - // TestEntropyCalculator for this test.)
|
| - ack_frame.entropy_hash = 0x43;
|
| - ack_frame.largest_observed = 2 * 300;
|
| - ack_frame.ack_delay_time = QuicTime::Delta::Zero();
|
| - for (size_t i = 1; i < 2 * 300; i += 2) {
|
| - ack_frame.packets.Add(i);
|
| - }
|
| -
|
| - QuicFrames frames;
|
| - frames.push_back(QuicFrame(&ack_frame));
|
| -
|
| +TEST_P(QuicFramerTest, BuildVersionNegotiationPacket) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| - // public flags (8 byte connection_id)
|
| - static_cast<unsigned char>(
|
| - framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C),
|
| + // public flags (version, 8 byte connection_id)
|
| + 0x0D,
|
| // 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,
|
| + // version tag
|
| + 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(),
|
| };
|
| // clang-format on
|
|
|
| - 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());
|
| + QuicConnectionId connection_id = kConnectionId;
|
| + std::unique_ptr<QuicEncryptedPacket> data(
|
| + framer_.BuildVersionNegotiationPacket(connection_id,
|
| + SupportedVersions(GetParam())));
|
| test::CompareCharArraysWithHexError("constructed packet", data->data(),
|
| data->length(), AsChars(packet),
|
| arraysize(packet));
|
| }
|
|
|
| TEST_P(QuicFramerTest, BuildNewAckFramePacketOneAckBlock) {
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - return;
|
| - }
|
| -
|
| QuicPacketHeader header;
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| @@ -4710,7 +2941,6 @@ TEST_P(QuicFramerTest, BuildNewAckFramePacketOneAckBlock) {
|
| QuicAckFrame ack_frame;
|
| ack_frame.largest_observed = kSmallLargestObserved;
|
| ack_frame.ack_delay_time = QuicTime::Delta::Zero();
|
| - ack_frame.missing = false;
|
| ack_frame.packets.Add(1, kSmallLargestObserved + 1);
|
|
|
| QuicFrames frames;
|
| @@ -4748,10 +2978,6 @@ TEST_P(QuicFramerTest, BuildNewAckFramePacketOneAckBlock) {
|
| }
|
|
|
| TEST_P(QuicFramerTest, BuildNewAckFramePacketMultipleAckBlocks) {
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - return;
|
| - }
|
| -
|
| QuicPacketHeader header;
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| @@ -4762,7 +2988,6 @@ TEST_P(QuicFramerTest, BuildNewAckFramePacketMultipleAckBlocks) {
|
| QuicAckFrame ack_frame;
|
| ack_frame.largest_observed = kSmallLargestObserved;
|
| ack_frame.ack_delay_time = QuicTime::Delta::Zero();
|
| - ack_frame.missing = false;
|
| ack_frame.packets.Add(1, 5);
|
| ack_frame.packets.Add(10, 500);
|
| ack_frame.packets.Add(900, kSmallMissingPacket);
|
| @@ -4821,10 +3046,6 @@ TEST_P(QuicFramerTest, BuildNewAckFramePacketMultipleAckBlocks) {
|
| }
|
|
|
| TEST_P(QuicFramerTest, BuildNewAckFramePacketMaxAckBlocks) {
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - return;
|
| - }
|
| -
|
| QuicPacketHeader header;
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| @@ -4835,7 +3056,6 @@ TEST_P(QuicFramerTest, BuildNewAckFramePacketMaxAckBlocks) {
|
| QuicAckFrame ack_frame;
|
| ack_frame.largest_observed = kSmallLargestObserved;
|
| ack_frame.ack_delay_time = QuicTime::Delta::Zero();
|
| - ack_frame.missing = false;
|
| // 300 ack blocks.
|
| for (size_t i = 2; i < 2 * 300; i += 2) {
|
| ack_frame.packets.Add(i);
|
| @@ -4947,64 +3167,11 @@ TEST_P(QuicFramerTest, BuildNewAckFramePacketMaxAckBlocks) {
|
| arraysize(packet));
|
| }
|
|
|
| -TEST_P(QuicFramerTest, BuildStopWaitingPacket) {
|
| - if (framer_.version() > QUIC_VERSION_33) {
|
| - return;
|
| - }
|
| - QuicPacketHeader header;
|
| - header.public_header.connection_id = kConnectionId;
|
| - header.public_header.reset_flag = false;
|
| - header.public_header.version_flag = false;
|
| - header.entropy_flag = true;
|
| - header.packet_number = kPacketNumber;
|
| -
|
| - QuicStopWaitingFrame stop_waiting_frame;
|
| - stop_waiting_frame.entropy_hash = 0x14;
|
| - stop_waiting_frame.least_unacked = kLeastUnacked;
|
| -
|
| - QuicFrames frames;
|
| - frames.push_back(QuicFrame(&stop_waiting_frame));
|
| -
|
| - // 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
|
| - 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| - // private flags (entropy)
|
| - 0x01,
|
| -
|
| - // frame type (stop waiting frame)
|
| - 0x06,
|
| - // entropy hash of sent packets till least awaiting - 1.
|
| - 0x14,
|
| - // least packet number awaiting an ack, delta from packet number.
|
| - 0x1C, 0x00, 0x00, 0x00,
|
| - 0x00, 0x00,
|
| - };
|
| - // clang-format on
|
| -
|
| - std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| - ASSERT_TRUE(data != nullptr);
|
| -
|
| - test::CompareCharArraysWithHexError("constructed packet", data->data(),
|
| - data->length(), AsChars(packet),
|
| - arraysize(packet));
|
| -}
|
| -
|
| TEST_P(QuicFramerTest, BuildNewStopWaitingPacket) {
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - return;
|
| - }
|
| QuicPacketHeader header;
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| header.public_header.version_flag = false;
|
| - header.entropy_flag = false;
|
| header.packet_number = kPacketNumber;
|
|
|
| QuicStopWaitingFrame stop_waiting_frame;
|
| @@ -5044,7 +3211,6 @@ TEST_P(QuicFramerTest, BuildRstFramePacketQuic) {
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| header.public_header.version_flag = false;
|
| - header.entropy_flag = false;
|
| header.packet_number = kPacketNumber;
|
|
|
| QuicRstStreamFrame rst_frame;
|
| @@ -5055,29 +3221,6 @@ TEST_P(QuicFramerTest, BuildRstFramePacketQuic) {
|
| // 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
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // frame type (rst stream frame)
|
| - 0x01,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| - // sent byte offset
|
| - 0x01, 0x02, 0x03, 0x04,
|
| - 0x05, 0x06, 0x07, 0x08,
|
| - // error code
|
| - 0x08, 0x07, 0x06, 0x05,
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id)
|
| 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| @@ -5104,11 +3247,9 @@ TEST_P(QuicFramerTest, BuildRstFramePacketQuic) {
|
| std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| ASSERT_TRUE(data != nullptr);
|
|
|
| - test::CompareCharArraysWithHexError(
|
| - "constructed packet", data->data(), data->length(),
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34));
|
| + test::CompareCharArraysWithHexError("constructed packet", data->data(),
|
| + data->length(), AsChars(packet),
|
| + arraysize(packet));
|
| }
|
|
|
| TEST_P(QuicFramerTest, BuildCloseFramePacket) {
|
| @@ -5116,7 +3257,6 @@ TEST_P(QuicFramerTest, BuildCloseFramePacket) {
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| header.public_header.version_flag = false;
|
| - header.entropy_flag = true;
|
| header.packet_number = kPacketNumber;
|
|
|
| QuicConnectionCloseFrame close_frame;
|
| @@ -5129,33 +3269,7 @@ TEST_P(QuicFramerTest, BuildCloseFramePacket) {
|
| // 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
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // private flags (entropy)
|
| - 0x01,
|
| -
|
| - // frame type (connection close frame)
|
| - 0x02,
|
| - // error code
|
| - 0x08, 0x07, 0x06, 0x05,
|
| - // error details length
|
| - 0x0d, 0x00,
|
| - // error details
|
| - 'b', 'e', 'c', 'a',
|
| - 'u', 's', 'e', ' ',
|
| - 'I', ' ', 'c', 'a',
|
| - 'n',
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // 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,
|
| @@ -5180,11 +3294,9 @@ TEST_P(QuicFramerTest, BuildCloseFramePacket) {
|
| std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| ASSERT_TRUE(data != nullptr);
|
|
|
| - test::CompareCharArraysWithHexError(
|
| - "constructed packet", data->data(), data->length(),
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34));
|
| + test::CompareCharArraysWithHexError("constructed packet", data->data(),
|
| + data->length(), AsChars(packet),
|
| + arraysize(packet));
|
| }
|
|
|
| TEST_P(QuicFramerTest, BuildGoAwayPacket) {
|
| @@ -5192,7 +3304,6 @@ TEST_P(QuicFramerTest, BuildGoAwayPacket) {
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| header.public_header.version_flag = false;
|
| - header.entropy_flag = true;
|
| header.packet_number = kPacketNumber;
|
|
|
| QuicGoAwayFrame goaway_frame;
|
| @@ -5206,33 +3317,6 @@ TEST_P(QuicFramerTest, BuildGoAwayPacket) {
|
| // 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
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // private flags(entropy)
|
| - 0x01,
|
| -
|
| - // frame type (go away frame)
|
| - 0x03,
|
| - // error code
|
| - 0x08, 0x07, 0x06, 0x05,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| - // error details length
|
| - 0x0d, 0x00,
|
| - // error details
|
| - 'b', 'e', 'c', 'a',
|
| - 'u', 's', 'e', ' ',
|
| - 'I', ' ', 'c', 'a',
|
| - 'n',
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id)
|
| 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| @@ -5260,11 +3344,9 @@ TEST_P(QuicFramerTest, BuildGoAwayPacket) {
|
| std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| ASSERT_TRUE(data != nullptr);
|
|
|
| - test::CompareCharArraysWithHexError(
|
| - "constructed packet", data->data(), data->length(),
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34));
|
| + test::CompareCharArraysWithHexError("constructed packet", data->data(),
|
| + data->length(), AsChars(packet),
|
| + arraysize(packet));
|
| }
|
|
|
| TEST_P(QuicFramerTest, BuildWindowUpdatePacket) {
|
| @@ -5272,39 +3354,17 @@ TEST_P(QuicFramerTest, BuildWindowUpdatePacket) {
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| header.public_header.version_flag = false;
|
| - header.entropy_flag = true;
|
| header.packet_number = kPacketNumber;
|
|
|
| QuicWindowUpdateFrame window_update_frame;
|
| - window_update_frame.stream_id = kStreamId;
|
| - window_update_frame.byte_offset = 0x1122334455667788;
|
| -
|
| - QuicFrames frames;
|
| - frames.push_back(QuicFrame(&window_update_frame));
|
| -
|
| - // 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
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // private flags(entropy)
|
| - 0x01,
|
| + window_update_frame.stream_id = kStreamId;
|
| + window_update_frame.byte_offset = 0x1122334455667788;
|
|
|
| - // frame type (window update frame)
|
| - 0x04,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| - // byte offset
|
| - 0x88, 0x77, 0x66, 0x55,
|
| - 0x44, 0x33, 0x22, 0x11,
|
| - };
|
| - unsigned char packet_34[] = {
|
| + QuicFrames frames;
|
| + frames.push_back(QuicFrame(&window_update_frame));
|
| +
|
| + // clang-format off
|
| + unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| 0x38,
|
| // connection_id
|
| @@ -5327,11 +3387,9 @@ TEST_P(QuicFramerTest, BuildWindowUpdatePacket) {
|
| std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| ASSERT_TRUE(data != nullptr);
|
|
|
| - test::CompareCharArraysWithHexError(
|
| - "constructed packet", data->data(), data->length(),
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34));
|
| + test::CompareCharArraysWithHexError("constructed packet", data->data(),
|
| + data->length(), AsChars(packet),
|
| + arraysize(packet));
|
| }
|
|
|
| TEST_P(QuicFramerTest, BuildBlockedPacket) {
|
| @@ -5339,7 +3397,6 @@ TEST_P(QuicFramerTest, BuildBlockedPacket) {
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| header.public_header.version_flag = false;
|
| - header.entropy_flag = true;
|
| header.packet_number = kPacketNumber;
|
|
|
| QuicBlockedFrame blocked_frame;
|
| @@ -5351,24 +3408,6 @@ TEST_P(QuicFramerTest, BuildBlockedPacket) {
|
| // 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
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // private flags(entropy)
|
| - 0x01,
|
| -
|
| - // frame type (blocked frame)
|
| - 0x05,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (8 byte connection_id)
|
| 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| @@ -5387,11 +3426,9 @@ TEST_P(QuicFramerTest, BuildBlockedPacket) {
|
| std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| ASSERT_TRUE(data != nullptr);
|
|
|
| - test::CompareCharArraysWithHexError(
|
| - "constructed packet", data->data(), data->length(),
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34));
|
| + test::CompareCharArraysWithHexError("constructed packet", data->data(),
|
| + data->length(), AsChars(packet),
|
| + arraysize(packet));
|
| }
|
|
|
| TEST_P(QuicFramerTest, BuildPingPacket) {
|
| @@ -5399,7 +3436,6 @@ TEST_P(QuicFramerTest, BuildPingPacket) {
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| header.public_header.version_flag = false;
|
| - header.entropy_flag = true;
|
| header.packet_number = kPacketNumber;
|
|
|
| QuicPingFrame ping_frame;
|
| @@ -5410,24 +3446,7 @@ TEST_P(QuicFramerTest, BuildPingPacket) {
|
| // 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
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // private flags(entropy)
|
| - 0x01,
|
| -
|
| - // frame type (ping frame)
|
| - 0x07,
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // 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,
|
| @@ -5443,11 +3462,9 @@ TEST_P(QuicFramerTest, BuildPingPacket) {
|
| std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| ASSERT_TRUE(data != nullptr);
|
|
|
| - test::CompareCharArraysWithHexError(
|
| - "constructed packet", data->data(), data->length(),
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34));
|
| + test::CompareCharArraysWithHexError("constructed packet", data->data(),
|
| + data->length(), AsChars(packet),
|
| + arraysize(packet));
|
| }
|
|
|
| TEST_P(QuicFramerTest, BuildPathClosePacket) {
|
| @@ -5456,7 +3473,6 @@ TEST_P(QuicFramerTest, BuildPathClosePacket) {
|
| header.public_header.multipath_flag = true;
|
| header.public_header.reset_flag = false;
|
| header.public_header.version_flag = false;
|
| - header.entropy_flag = true;
|
| header.path_id = kDefaultPathId;
|
| header.packet_number = kPacketNumber;
|
|
|
| @@ -5468,26 +3484,7 @@ TEST_P(QuicFramerTest, BuildPathClosePacket) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (version)
|
| - static_cast<unsigned char>(
|
| - framer_.version() > QUIC_VERSION_32 ? 0x78 : 0X7C),
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| - // path_id
|
| - 0x00,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| - // private flags (entropy)
|
| - 0x01,
|
| -
|
| - // frame type (path_close_frame)
|
| - 0x08,
|
| - // path id
|
| - 0x42,
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (version)
|
| - static_cast<unsigned char>(
|
| - framer_.version() > QUIC_VERSION_32 ? 0x78 : 0X7C),
|
| + 0x78,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // path_id
|
| @@ -5505,11 +3502,9 @@ TEST_P(QuicFramerTest, BuildPathClosePacket) {
|
| std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| ASSERT_TRUE(data != nullptr);
|
|
|
| - test::CompareCharArraysWithHexError(
|
| - "constructed packet", data->data(), data->length(),
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34));
|
| + test::CompareCharArraysWithHexError("constructed packet", data->data(),
|
| + data->length(), AsChars(packet),
|
| + arraysize(packet));
|
| }
|
|
|
| // Test that the MTU discovery packet is serialized correctly as a PING packet.
|
| @@ -5518,7 +3513,6 @@ TEST_P(QuicFramerTest, BuildMtuDiscoveryPacket) {
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| header.public_header.version_flag = false;
|
| - header.entropy_flag = true;
|
| header.packet_number = kPacketNumber;
|
|
|
| QuicMtuDiscoveryFrame mtu_discovery_frame;
|
| @@ -5529,24 +3523,7 @@ TEST_P(QuicFramerTest, BuildMtuDiscoveryPacket) {
|
| // 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
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // private flags(entropy)
|
| - 0x01,
|
| -
|
| - // frame type (ping frame)
|
| - 0x07,
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // 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,
|
| @@ -5562,11 +3539,9 @@ TEST_P(QuicFramerTest, BuildMtuDiscoveryPacket) {
|
| std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| ASSERT_TRUE(data != nullptr);
|
|
|
| - test::CompareCharArraysWithHexError(
|
| - "constructed packet", data->data(), data->length(),
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34));
|
| + test::CompareCharArraysWithHexError("constructed packet", data->data(),
|
| + data->length(), AsChars(packet),
|
| + arraysize(packet));
|
| }
|
|
|
| TEST_P(QuicFramerTest, BuildPublicResetPacketOld) {
|
| @@ -5803,27 +3778,7 @@ TEST_P(QuicFramerTest, EncryptPacket) {
|
| // 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
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // redundancy
|
| - 'a', 'b', 'c', 'd',
|
| - 'e', 'f', 'g', 'h',
|
| - 'i', 'j', 'k', 'l',
|
| - 'm', 'n', 'o', 'p',
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // 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,
|
| @@ -5840,11 +3795,9 @@ TEST_P(QuicFramerTest, EncryptPacket) {
|
| // clang-format on
|
|
|
| std::unique_ptr<QuicPacket> raw(new QuicPacket(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false, PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId,
|
| - !kIncludeDiversificationNonce, PACKET_6BYTE_PACKET_NUMBER));
|
| + AsChars(packet), arraysize(packet), false, PACKET_8BYTE_CONNECTION_ID,
|
| + !kIncludeVersion, !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER));
|
| char buffer[kMaxPacketSize];
|
| size_t encrypted_length =
|
| framer_.EncryptPayload(ENCRYPTION_NONE, kDefaultPathId, packet_number,
|
| @@ -5868,26 +3821,6 @@ TEST_P(QuicFramerTest, EncryptPacketWithVersionFlag) {
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56,
|
| 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // redundancy
|
| - 'a', 'b', 'c', 'd',
|
| - 'e', 'f', 'g', 'h',
|
| - 'i', 'j', 'k', 'l',
|
| - 'm', 'n', 'o', 'p',
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (version, 8 byte connection_id)
|
| - 0x39,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // version tag
|
| - 'Q', '.', '1', '0',
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
|
|
| // redundancy
|
| 'a', 'b', 'c', 'd',
|
| @@ -5898,11 +3831,9 @@ TEST_P(QuicFramerTest, EncryptPacketWithVersionFlag) {
|
| // clang-format on
|
|
|
| std::unique_ptr<QuicPacket> raw(new QuicPacket(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false, PACKET_8BYTE_CONNECTION_ID, kIncludeVersion, !kIncludePathId,
|
| - !kIncludeDiversificationNonce, PACKET_6BYTE_PACKET_NUMBER));
|
| + AsChars(packet), arraysize(packet), false, PACKET_8BYTE_CONNECTION_ID,
|
| + kIncludeVersion, !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER));
|
| char buffer[kMaxPacketSize];
|
| size_t encrypted_length =
|
| framer_.EncryptPayload(ENCRYPTION_NONE, kDefaultPathId, packet_number,
|
| @@ -5926,26 +3857,6 @@ TEST_P(QuicFramerTest, EncryptPacketWithMultipathFlag) {
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56,
|
| 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // redundancy
|
| - 'a', 'b', 'c', 'd',
|
| - 'e', 'f', 'g', 'h',
|
| - 'i', 'j', 'k', 'l',
|
| - 'm', 'n', 'o', 'p',
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (version, 8 byte connection_id)
|
| - 0x78,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // path_id
|
| - 0x42,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
|
|
| // redundancy
|
| 'a', 'b', 'c', 'd',
|
| @@ -5956,11 +3867,9 @@ TEST_P(QuicFramerTest, EncryptPacketWithMultipathFlag) {
|
| // clang-format on
|
|
|
| std::unique_ptr<QuicPacket> raw(new QuicPacket(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false, PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, kIncludePathId,
|
| - !kIncludeDiversificationNonce, PACKET_6BYTE_PACKET_NUMBER));
|
| + AsChars(packet), arraysize(packet), false, PACKET_8BYTE_CONNECTION_ID,
|
| + !kIncludeVersion, kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER));
|
| char buffer[kMaxPacketSize];
|
| size_t encrypted_length = framer_.EncryptPayload(
|
| ENCRYPTION_NONE, kPathId, packet_number, *raw, buffer, kMaxPacketSize);
|
| @@ -5985,28 +3894,6 @@ TEST_P(QuicFramerTest, EncryptPacketWithBothVersionFlagAndMultipathFlag) {
|
| // packet number
|
| 0xBC, 0x9A, 0x78, 0x56,
|
| 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| -
|
| - // redundancy
|
| - 'a', 'b', 'c', 'd',
|
| - 'e', 'f', 'g', 'h',
|
| - 'i', 'j', 'k', 'l',
|
| - 'm', 'n', 'o', 'p',
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // public flags (version, 8 byte connection_id)
|
| - 0x79,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - 0x98, 0xBA, 0xDC, 0xFE,
|
| - // version tag
|
| - 'Q', '.', '1', '0',
|
| - // path_id
|
| - 0x42,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
|
|
| // redundancy
|
| 'a', 'b', 'c', 'd',
|
| @@ -6017,11 +3904,9 @@ TEST_P(QuicFramerTest, EncryptPacketWithBothVersionFlagAndMultipathFlag) {
|
| // clang-format on
|
|
|
| std::unique_ptr<QuicPacket> raw(new QuicPacket(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false, PACKET_8BYTE_CONNECTION_ID, kIncludeVersion, kIncludePathId,
|
| - !kIncludeDiversificationNonce, PACKET_6BYTE_PACKET_NUMBER));
|
| + AsChars(packet), arraysize(packet), false, PACKET_8BYTE_CONNECTION_ID,
|
| + kIncludeVersion, kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER));
|
| char buffer[kMaxPacketSize];
|
| size_t encrypted_length = framer_.EncryptPayload(
|
| ENCRYPTION_NONE, kPathId, packet_number, *raw, buffer, kMaxPacketSize);
|
| @@ -6035,16 +3920,11 @@ TEST_P(QuicFramerTest, AckTruncationLargePacket) {
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| header.public_header.version_flag = false;
|
| - header.entropy_flag = false;
|
| header.packet_number = kPacketNumber;
|
|
|
| QuicAckFrame ack_frame;
|
| // Create a packet with just the ack.
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - ack_frame = MakeAckFrameWithNackRanges(300, 0u);
|
| - } else {
|
| - ack_frame = MakeAckFrameWithAckBlocks(300, 0u);
|
| - }
|
| + ack_frame = MakeAckFrameWithAckBlocks(300, 0u);
|
| QuicFrame frame;
|
| frame.type = ACK_FRAME;
|
| frame.ack_frame = &ack_frame;
|
| @@ -6064,21 +3944,10 @@ TEST_P(QuicFramerTest, AckTruncationLargePacket) {
|
| QuicEncryptedPacket(buffer, encrypted_length, false)));
|
| ASSERT_EQ(1u, visitor_.ack_frames_.size());
|
| QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0].get();
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - EXPECT_TRUE(processed_ack_frame.is_truncated);
|
| - EXPECT_EQ(510u, processed_ack_frame.largest_observed);
|
| - EXPECT_TRUE(processed_ack_frame.missing);
|
| - ASSERT_EQ(255u, processed_ack_frame.packets.NumPacketsSlow());
|
| - EXPECT_EQ(1u, processed_ack_frame.packets.Min());
|
| - EXPECT_EQ(509u, processed_ack_frame.packets.Max());
|
| - } else {
|
| - EXPECT_FALSE(processed_ack_frame.is_truncated);
|
| - EXPECT_FALSE(processed_ack_frame.missing);
|
| - EXPECT_EQ(600u, processed_ack_frame.largest_observed);
|
| - ASSERT_EQ(256u, processed_ack_frame.packets.NumPacketsSlow());
|
| - EXPECT_EQ(90u, processed_ack_frame.packets.Min());
|
| - EXPECT_EQ(600u, processed_ack_frame.packets.Max());
|
| - }
|
| + EXPECT_EQ(600u, processed_ack_frame.largest_observed);
|
| + ASSERT_EQ(256u, processed_ack_frame.packets.NumPacketsSlow());
|
| + EXPECT_EQ(90u, processed_ack_frame.packets.Min());
|
| + EXPECT_EQ(600u, processed_ack_frame.packets.Max());
|
| }
|
|
|
| TEST_P(QuicFramerTest, AckTruncationSmallPacket) {
|
| @@ -6086,16 +3955,11 @@ TEST_P(QuicFramerTest, AckTruncationSmallPacket) {
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| header.public_header.version_flag = false;
|
| - header.entropy_flag = false;
|
| header.packet_number = kPacketNumber;
|
|
|
| // Create a packet with just the ack.
|
| QuicAckFrame ack_frame;
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - ack_frame = MakeAckFrameWithNackRanges(300, 0u);
|
| - } else {
|
| - ack_frame = MakeAckFrameWithAckBlocks(300, 0u);
|
| - }
|
| + ack_frame = MakeAckFrameWithAckBlocks(300, 0u);
|
| QuicFrame frame;
|
| frame.type = ACK_FRAME;
|
| frame.ack_frame = &ack_frame;
|
| @@ -6116,21 +3980,10 @@ TEST_P(QuicFramerTest, AckTruncationSmallPacket) {
|
| QuicEncryptedPacket(buffer, encrypted_length, false)));
|
| ASSERT_EQ(1u, visitor_.ack_frames_.size());
|
| QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0].get();
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - EXPECT_TRUE(processed_ack_frame.is_truncated);
|
| - EXPECT_EQ(476u, processed_ack_frame.largest_observed);
|
| - EXPECT_TRUE(processed_ack_frame.missing);
|
| - ASSERT_EQ(238u, processed_ack_frame.packets.NumPacketsSlow());
|
| - EXPECT_EQ(1u, processed_ack_frame.packets.Min());
|
| - EXPECT_EQ(475u, processed_ack_frame.packets.Max());
|
| - } else {
|
| - EXPECT_FALSE(processed_ack_frame.is_truncated);
|
| - EXPECT_EQ(600u, processed_ack_frame.largest_observed);
|
| - EXPECT_FALSE(processed_ack_frame.missing);
|
| - ASSERT_EQ(239u, processed_ack_frame.packets.NumPacketsSlow());
|
| - EXPECT_EQ(124u, processed_ack_frame.packets.Min());
|
| - EXPECT_EQ(600u, processed_ack_frame.packets.Max());
|
| - }
|
| + EXPECT_EQ(600u, processed_ack_frame.largest_observed);
|
| + ASSERT_EQ(239u, processed_ack_frame.packets.NumPacketsSlow());
|
| + EXPECT_EQ(124u, processed_ack_frame.packets.Min());
|
| + EXPECT_EQ(600u, processed_ack_frame.packets.Max());
|
| }
|
|
|
| TEST_P(QuicFramerTest, CleanTruncation) {
|
| @@ -6138,7 +3991,6 @@ TEST_P(QuicFramerTest, CleanTruncation) {
|
| header.public_header.connection_id = kConnectionId;
|
| header.public_header.reset_flag = false;
|
| header.public_header.version_flag = false;
|
| - header.entropy_flag = true;
|
| header.packet_number = kPacketNumber;
|
|
|
| QuicAckFrame ack_frame;
|
| @@ -6179,97 +4031,11 @@ TEST_P(QuicFramerTest, CleanTruncation) {
|
| ASSERT_TRUE(raw_ack_packet != nullptr);
|
| }
|
|
|
| -TEST_P(QuicFramerTest, EntropyFlagTest) {
|
| - if (framer_.version() > QUIC_VERSION_33) {
|
| - return;
|
| - }
|
| - // 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
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // private flags (Entropy)
|
| - 0x01,
|
| -
|
| - // frame type (stream frame with fin and no length)
|
| - 0xDF,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| - // offset
|
| - 0x54, 0x76, 0x10, 0x32,
|
| - 0xDC, 0xFE, 0x98, 0xBA,
|
| - // data
|
| - 'h', 'e', 'l', 'l',
|
| - 'o', ' ', 'w', 'o',
|
| - 'r', 'l', 'd', '!',
|
| - };
|
| - // clang-format on
|
| -
|
| - 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(visitor_.header_->entropy_flag);
|
| - EXPECT_EQ(1 << 4, visitor_.header_->entropy_hash);
|
| -};
|
| -
|
| TEST_P(QuicFramerTest, StopPacketProcessing) {
|
| // 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
|
| - 0xBC, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // Entropy
|
| - 0x01,
|
| -
|
| - // frame type (stream frame with fin)
|
| - 0xFF,
|
| - // stream id
|
| - 0x04, 0x03, 0x02, 0x01,
|
| - // offset
|
| - 0x54, 0x76, 0x10, 0x32,
|
| - 0xDC, 0xFE, 0x98, 0xBA,
|
| - // data length
|
| - 0x0c, 0x00,
|
| - // data
|
| - 'h', 'e', 'l', 'l',
|
| - 'o', ' ', 'w', 'o',
|
| - 'r', 'l', 'd', '!',
|
| -
|
| - // frame type (ack frame)
|
| - 0x40,
|
| - // entropy hash of sent packets till least awaiting - 1.
|
| - 0x14,
|
| - // least packet number awaiting an ack
|
| - 0xA0, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // entropy hash of all received packets.
|
| - 0x43,
|
| - // largest observed packet number
|
| - 0xBF, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - // num missing packets
|
| - 0x01,
|
| - // missing packet
|
| - 0xBE, 0x9A, 0x78, 0x56,
|
| - 0x34, 0x12,
|
| - };
|
| - unsigned char packet_34[] = {
|
| - // 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,
|
| @@ -6293,13 +4059,9 @@ TEST_P(QuicFramerTest, StopPacketProcessing) {
|
|
|
| // frame type (ack frame)
|
| 0x40,
|
| - // entropy hash of sent packets till least awaiting - 1.
|
| - 0x14,
|
| // least packet number awaiting an ack
|
| 0xA0, 0x9A, 0x78, 0x56,
|
| 0x34, 0x12,
|
| - // entropy hash of all received packets.
|
| - 0x43,
|
| // largest observed packet number
|
| 0xBF, 0x9A, 0x78, 0x56,
|
| 0x34, 0x12,
|
| @@ -6322,11 +4084,7 @@ TEST_P(QuicFramerTest, StopPacketProcessing) {
|
| EXPECT_CALL(visitor, OnUnauthenticatedHeader(_)).WillOnce(Return(true));
|
| EXPECT_CALL(visitor, OnDecryptedPacket(_));
|
|
|
| - QuicEncryptedPacket encrypted(
|
| - AsChars(framer_.version() <= QUIC_VERSION_33 ? packet : packet_34),
|
| - framer_.version() <= QUIC_VERSION_33 ? arraysize(packet)
|
| - : arraysize(packet_34),
|
| - false);
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| }
|
| @@ -6398,11 +4156,7 @@ TEST_P(QuicFramerTest, ConstructMisFramedEncryptedPacket) {
|
| EXPECT_CALL(visitor, OnUnauthenticatedHeader(_))
|
| .Times(1)
|
| .WillOnce(Return(true));
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - EXPECT_CALL(visitor, OnPacketHeader(_)).Times(0);
|
| - } else {
|
| - EXPECT_CALL(visitor, OnPacketHeader(_)).Times(1);
|
| - }
|
| + EXPECT_CALL(visitor, OnPacketHeader(_)).Times(1);
|
| EXPECT_CALL(visitor, OnDecryptedPacket(_)).Times(1);
|
| EXPECT_CALL(visitor, OnError(_)).Times(1);
|
| EXPECT_CALL(visitor, OnStreamFrame(_)).Times(0);
|
| @@ -6410,11 +4164,7 @@ TEST_P(QuicFramerTest, ConstructMisFramedEncryptedPacket) {
|
| EXPECT_CALL(visitor, OnPacketComplete()).Times(0);
|
|
|
| EXPECT_FALSE(framer_.ProcessPacket(*packet));
|
| - if (framer_.version() <= QUIC_VERSION_33) {
|
| - EXPECT_EQ(QUIC_INVALID_PACKET_HEADER, framer_.error());
|
| - } else {
|
| - EXPECT_EQ(QUIC_INVALID_FRAME_DATA, framer_.error());
|
| - }
|
| + EXPECT_EQ(QUIC_INVALID_FRAME_DATA, framer_.error());
|
| }
|
|
|
| // Tests for fuzzing with Dr. Fuzz
|
|
|