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

Unified Diff: net/quic/quic_framer_test.cc

Issue 15937012: Land Recent QUIC changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Small bug fixes Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/quic/quic_framer_test.cc
diff --git a/net/quic/quic_framer_test.cc b/net/quic/quic_framer_test.cc
index 2677665fedf15991a04b5b1ab85f2e3ee34400a6..9e6df0d9ac24a3c7250a07a61848dd9258d19dea 100644
--- a/net/quic/quic_framer_test.cc
+++ b/net/quic/quic_framer_test.cc
@@ -41,26 +41,45 @@ const size_t kPublicFlagsOffset = 0;
// Index into the guid offset in the header.
const size_t kGuidOffset = kPublicFlagsSize;
// Index into the version string in the header. (if present).
-const size_t kVersionOffset = kGuidOffset + kQuicGuidSize;
+const size_t kVersionOffset = kGuidOffset + PACKET_8BYTE_GUID;
// Index into the sequence number offset in the header.
-size_t GetSequenceNumberOffset(bool include_version) {
- return kGuidOffset + kQuicGuidSize +
+size_t GetSequenceNumberOffset(QuicGuidLength guid_length,
+ bool include_version) {
+ return kGuidOffset + guid_length +
(include_version ? kQuicVersionSize : 0);
}
+size_t GetSequenceNumberOffset(bool include_version) {
+ return GetSequenceNumberOffset(PACKET_8BYTE_GUID, include_version);
+}
+
// Index into the private flags offset in the data packet header.
+size_t GetPrivateFlagsOffset(QuicGuidLength guid_length, bool include_version) {
+ return GetSequenceNumberOffset(guid_length, include_version) +
+ kSequenceNumberSize;
+}
+
size_t GetPrivateFlagsOffset(bool include_version) {
- return GetSequenceNumberOffset(include_version) + kSequenceNumberSize;
+ return GetPrivateFlagsOffset(PACKET_8BYTE_GUID, include_version);
}
// Index into the fec group offset in the header.
+size_t GetFecGroupOffset(QuicGuidLength guid_length, bool include_version) {
+ return GetPrivateFlagsOffset(guid_length, include_version) +
+ kPrivateFlagsSize;
+}
+
size_t GetFecGroupOffset(bool include_version) {
- return GetPrivateFlagsOffset(include_version) + kPrivateFlagsSize;
+ return GetPrivateFlagsOffset(PACKET_8BYTE_GUID, include_version) +
+ kPrivateFlagsSize;
}
// Index into the nonce proof of the public reset packet.
-const size_t kPublicResetPacketNonceProofOffset = kGuidOffset + kQuicGuidSize;
+// Public resets always have full guids.
+const size_t kPublicResetPacketNonceProofOffset =
+ kGuidOffset + PACKET_8BYTE_GUID;
+
// Index into the rejected sequence number of the public reset packet.
const size_t kPublicResetPacketRejectedSequenceNumberOffset =
kPublicResetPacketNonceProofOffset + kPublicResetNonceSize;
@@ -317,15 +336,16 @@ class QuicFramerTest : public ::testing::Test {
return false;
}
if (QuicFramer::GetAssociatedDataFromEncryptedPacket(
- encrypted, includes_version) != decrypter_->associated_data_) {
+ encrypted, PACKET_8BYTE_GUID, includes_version) !=
+ decrypter_->associated_data_) {
LOG(ERROR) << "Decrypted incorrect associated data. expected "
<< QuicFramer::GetAssociatedDataFromEncryptedPacket(
- encrypted, includes_version)
+ encrypted, PACKET_8BYTE_GUID, includes_version)
<< " actual: " << decrypter_->associated_data_;
return false;
}
StringPiece ciphertext(encrypted.AsStringPiece().substr(
- GetStartOfEncryptedData(includes_version)));
+ GetStartOfEncryptedData(PACKET_8BYTE_GUID, includes_version)));
if (ciphertext != decrypter_->ciphertext_) {
LOG(ERROR) << "Decrypted incorrect chipertext data. expected "
<< ciphertext << " actual: "
@@ -495,12 +515,12 @@ TEST_F(QuicFramerTest, LargePacket) {
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF
};
- memset(packet + GetPacketHeaderSize(!kIncludeVersion), 0,
- kMaxPacketSize - GetPacketHeaderSize(!kIncludeVersion) + 1);
+ memset(packet + GetPacketHeaderSize(
+ PACKET_8BYTE_GUID, !kIncludeVersion, NOT_IN_FEC_GROUP), 0,
+ kMaxPacketSize - GetPacketHeaderSize(
+ PACKET_8BYTE_GUID, !kIncludeVersion, NOT_IN_FEC_GROUP) + 1);
QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
EXPECT_FALSE(framer_.ProcessPacket(encrypted));
@@ -525,8 +545,6 @@ TEST_F(QuicFramerTest, PacketHeader) {
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF,
};
QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
@@ -539,14 +557,16 @@ TEST_F(QuicFramerTest, PacketHeader) {
EXPECT_FALSE(visitor_.header_->public_header.version_flag);
EXPECT_FALSE(visitor_.header_->fec_flag);
EXPECT_FALSE(visitor_.header_->entropy_flag);
- EXPECT_FALSE(visitor_.header_->fec_entropy_flag);
EXPECT_EQ(0, visitor_.header_->entropy_hash);
EXPECT_EQ(GG_UINT64_C(0x123456789ABC),
visitor_.header_->packet_sequence_number);
+ EXPECT_EQ(NOT_IN_FEC_GROUP, visitor_.header_->is_in_fec_group);
EXPECT_EQ(0x00u, visitor_.header_->fec_group);
// Now test framing boundaries
- for (size_t i = 0; i < GetPacketHeaderSize(!kIncludeVersion); ++i) {
+ for (size_t i = 0;
+ i < GetPacketHeaderSize(
+ PACKET_8BYTE_GUID, !kIncludeVersion, NOT_IN_FEC_GROUP); ++i) {
string expected_error;
if (i < kGuidOffset) {
expected_error = "Unable to read public flags.";
@@ -563,6 +583,165 @@ TEST_F(QuicFramerTest, PacketHeader) {
}
}
+TEST_F(QuicFramerTest, PacketHeaderWith4ByteGuid) {
+ QuicFramerPeer::SetLastSerializedGuid(&framer_,
+ GG_UINT64_C(0xFEDCBA9876543210));
+
+ unsigned char packet[] = {
+ // public flags (4 byte guid)
+ 0x08,
+ // guid
+ 0x10, 0x32, 0x54, 0x76,
+ // packet sequence number
+ 0xBC, 0x9A, 0x78, 0x56,
+ 0x34, 0x12,
+ // private flags
+ 0x00,
+ };
+
+ QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
+ EXPECT_FALSE(framer_.ProcessPacket(encrypted));
+ EXPECT_EQ(QUIC_INVALID_FRAME_DATA, framer_.error());
+ ASSERT_TRUE(visitor_.header_.get());
+ EXPECT_EQ(GG_UINT64_C(0xFEDCBA9876543210),
+ visitor_.header_->public_header.guid);
+ EXPECT_FALSE(visitor_.header_->public_header.reset_flag);
+ EXPECT_FALSE(visitor_.header_->public_header.version_flag);
+ EXPECT_FALSE(visitor_.header_->fec_flag);
+ EXPECT_FALSE(visitor_.header_->entropy_flag);
+ EXPECT_EQ(0, visitor_.header_->entropy_hash);
+ EXPECT_EQ(GG_UINT64_C(0x123456789ABC),
+ visitor_.header_->packet_sequence_number);
+ EXPECT_EQ(NOT_IN_FEC_GROUP, visitor_.header_->is_in_fec_group);
+ EXPECT_EQ(0x00u, visitor_.header_->fec_group);
+
+ // Now test framing boundaries
+ for (size_t i = 0;
+ i < GetPacketHeaderSize(
+ PACKET_4BYTE_GUID, !kIncludeVersion, NOT_IN_FEC_GROUP); ++i) {
+ string expected_error;
+ if (i < kGuidOffset) {
+ expected_error = "Unable to read public flags.";
+ } else if (i < GetSequenceNumberOffset(PACKET_4BYTE_GUID,
+ !kIncludeVersion)) {
+ expected_error = "Unable to read GUID.";
+ } else if (i < GetPrivateFlagsOffset(PACKET_4BYTE_GUID,
+ !kIncludeVersion)) {
+ expected_error = "Unable to read sequence number.";
+ } else if (i < GetFecGroupOffset(PACKET_4BYTE_GUID, !kIncludeVersion)) {
+ expected_error = "Unable to read private flags.";
+ } else {
+ expected_error = "Unable to read first fec protected packet offset.";
+ }
+ CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER);
+ }
+}
+
+TEST_F(QuicFramerTest, PacketHeader1ByteGuid) {
+ QuicFramerPeer::SetLastSerializedGuid(&framer_,
+ GG_UINT64_C(0xFEDCBA9876543210));
+
+ unsigned char packet[] = {
+ // public flags (1 byte guid)
+ 0x04,
+ // guid
+ 0x10,
+ // packet sequence number
+ 0xBC, 0x9A, 0x78, 0x56,
+ 0x34, 0x12,
+ // private flags
+ 0x00,
+ };
+
+ QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
+ EXPECT_FALSE(framer_.ProcessPacket(encrypted));
+ EXPECT_EQ(QUIC_INVALID_FRAME_DATA, framer_.error());
+ ASSERT_TRUE(visitor_.header_.get());
+ EXPECT_EQ(GG_UINT64_C(0xFEDCBA9876543210),
+ visitor_.header_->public_header.guid);
+ EXPECT_FALSE(visitor_.header_->public_header.reset_flag);
+ EXPECT_FALSE(visitor_.header_->public_header.version_flag);
+ EXPECT_FALSE(visitor_.header_->fec_flag);
+ EXPECT_FALSE(visitor_.header_->entropy_flag);
+ EXPECT_EQ(0, visitor_.header_->entropy_hash);
+ EXPECT_EQ(GG_UINT64_C(0x123456789ABC),
+ visitor_.header_->packet_sequence_number);
+ EXPECT_EQ(NOT_IN_FEC_GROUP, visitor_.header_->is_in_fec_group);
+ EXPECT_EQ(0x00u, visitor_.header_->fec_group);
+
+ // Now test framing boundaries
+ for (size_t i = 0;
+ i < GetPacketHeaderSize(
+ PACKET_1BYTE_GUID, !kIncludeVersion, NOT_IN_FEC_GROUP); ++i) {
+ string expected_error;
+ if (i < kGuidOffset) {
+ expected_error = "Unable to read public flags.";
+ } else if (i < GetSequenceNumberOffset(PACKET_1BYTE_GUID,
+ !kIncludeVersion)) {
+ expected_error = "Unable to read GUID.";
+ } else if (i < GetPrivateFlagsOffset(PACKET_1BYTE_GUID, !kIncludeVersion)) {
+ expected_error = "Unable to read sequence number.";
+ } else if (i < GetFecGroupOffset(PACKET_1BYTE_GUID, !kIncludeVersion)) {
+ expected_error = "Unable to read private flags.";
+ } else {
+ expected_error = "Unable to read first fec protected packet offset.";
+ }
+ CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER);
+ }
+}
+
+TEST_F(QuicFramerTest, PacketHeaderWith0ByteGuid) {
+ QuicFramerPeer::SetLastSerializedGuid(&framer_,
+ GG_UINT64_C(0xFEDCBA9876543210));
+
+ unsigned char packet[] = {
+ // public flags (0 byte guid)
+ 0x00,
+ // guid
+ // packet sequence number
+ 0xBC, 0x9A, 0x78, 0x56,
+ 0x34, 0x12,
+ // private flags
+ 0x00,
+ };
+
+ QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
+ EXPECT_FALSE(framer_.ProcessPacket(encrypted));
+ EXPECT_EQ(QUIC_INVALID_FRAME_DATA, framer_.error());
+ ASSERT_TRUE(visitor_.header_.get());
+ EXPECT_EQ(GG_UINT64_C(0xFEDCBA9876543210),
+ visitor_.header_->public_header.guid);
+ EXPECT_FALSE(visitor_.header_->public_header.reset_flag);
+ EXPECT_FALSE(visitor_.header_->public_header.version_flag);
+ EXPECT_FALSE(visitor_.header_->fec_flag);
+ EXPECT_FALSE(visitor_.header_->entropy_flag);
+ EXPECT_EQ(0, visitor_.header_->entropy_hash);
+ EXPECT_EQ(GG_UINT64_C(0x123456789ABC),
+ visitor_.header_->packet_sequence_number);
+ EXPECT_EQ(NOT_IN_FEC_GROUP, visitor_.header_->is_in_fec_group);
+ EXPECT_EQ(0x00u, visitor_.header_->fec_group);
+
+ // Now test framing boundaries
+ for (size_t i = 0;
+ i < GetPacketHeaderSize(
+ PACKET_0BYTE_GUID, !kIncludeVersion, NOT_IN_FEC_GROUP); ++i) {
+ string expected_error;
+ if (i < kGuidOffset) {
+ expected_error = "Unable to read public flags.";
+ } else if (i < GetSequenceNumberOffset(PACKET_0BYTE_GUID,
+ !kIncludeVersion)) {
+ expected_error = "Unable to read GUID.";
+ } else if (i < GetPrivateFlagsOffset(PACKET_0BYTE_GUID, !kIncludeVersion)) {
+ expected_error = "Unable to read sequence number.";
+ } else if (i < GetFecGroupOffset(PACKET_0BYTE_GUID, !kIncludeVersion)) {
+ expected_error = "Unable to read private flags.";
+ } else {
+ expected_error = "Unable to read first fec protected packet offset.";
+ }
+ CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER);
+ }
+}
+
TEST_F(QuicFramerTest, PacketHeaderWithVersionFlag) {
unsigned char packet[] = {
// public flags (version)
@@ -571,14 +750,12 @@ TEST_F(QuicFramerTest, PacketHeaderWithVersionFlag) {
0x10, 0x32, 0x54, 0x76,
0x98, 0xBA, 0xDC, 0xFE,
// version tag
- 'Q', '0', '0', '4',
+ 'Q', '0', '0', '5',
// packet sequence number
0xBC, 0x9A, 0x78, 0x56,
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF,
};
QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
@@ -592,14 +769,16 @@ TEST_F(QuicFramerTest, PacketHeaderWithVersionFlag) {
EXPECT_EQ(kQuicVersion1, visitor_.header_->public_header.versions[0]);
EXPECT_FALSE(visitor_.header_->fec_flag);
EXPECT_FALSE(visitor_.header_->entropy_flag);
- EXPECT_FALSE(visitor_.header_->fec_entropy_flag);
EXPECT_EQ(0, visitor_.header_->entropy_hash);
EXPECT_EQ(GG_UINT64_C(0x123456789ABC),
visitor_.header_->packet_sequence_number);
+ EXPECT_EQ(NOT_IN_FEC_GROUP, visitor_.header_->is_in_fec_group);
EXPECT_EQ(0x00u, visitor_.header_->fec_group);
// Now test framing boundaries
- for (size_t i = 0; i < GetPacketHeaderSize(kIncludeVersion); ++i) {
+ for (size_t i = 0;
+ i < GetPacketHeaderSize(
+ PACKET_8BYTE_GUID, kIncludeVersion, NOT_IN_FEC_GROUP); ++i) {
string expected_error;
if (i < kGuidOffset) {
expected_error = "Unable to read public flags.";
@@ -631,8 +810,6 @@ TEST_F(QuicFramerTest, InvalidPublicFlag) {
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF,
// frame count
0x01,
@@ -669,9 +846,7 @@ TEST_F(QuicFramerTest, InvalidPrivateFlag) {
0xBC, 0x9A, 0x78, 0x56,
0x34, 0x12,
// private flags
- 0x08,
- // first fec protected packet offset
- 0xFF,
+ 0x10,
// frame count
0x01,
@@ -709,8 +884,6 @@ TEST_F(QuicFramerTest, PaddingFrame) {
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF,
// frame type (padding frame)
0x00,
@@ -735,8 +908,11 @@ TEST_F(QuicFramerTest, PaddingFrame) {
ASSERT_EQ(0u, visitor_.stream_frames_.size());
EXPECT_EQ(0u, visitor_.ack_frames_.size());
// A packet with no frames is not acceptable.
- CheckProcessingFails(packet, GetPacketHeaderSize(!kIncludeVersion),
- "Unable to read frame type.", QUIC_INVALID_FRAME_DATA);
+ CheckProcessingFails(
+ packet,
+ GetPacketHeaderSize(
+ PACKET_8BYTE_GUID, !kIncludeVersion, NOT_IN_FEC_GROUP),
+ "Unable to read frame type.", QUIC_INVALID_FRAME_DATA);
}
TEST_F(QuicFramerTest, StreamFrame) {
@@ -751,8 +927,6 @@ TEST_F(QuicFramerTest, StreamFrame) {
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF,
// frame type (stream frame)
0x01,
@@ -803,8 +977,11 @@ TEST_F(QuicFramerTest, StreamFrame) {
} else {
expected_error = "Unable to read frame data.";
}
- CheckProcessingFails(packet, i + GetPacketHeaderSize(!kIncludeVersion),
- expected_error, QUIC_INVALID_FRAME_DATA);
+ CheckProcessingFails(
+ packet,
+ i + GetPacketHeaderSize(
+ PACKET_8BYTE_GUID, !kIncludeVersion, NOT_IN_FEC_GROUP),
+ expected_error, QUIC_INVALID_FRAME_DATA);
}
}
@@ -816,14 +993,12 @@ TEST_F(QuicFramerTest, StreamFrameWithVersion) {
0x10, 0x32, 0x54, 0x76,
0x98, 0xBA, 0xDC, 0xFE,
// version tag
- 'Q', '0', '0', '4',
+ 'Q', '0', '0', '5',
// packet sequence number
0xBC, 0x9A, 0x78, 0x56,
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF,
// frame type (stream frame)
0x01,
@@ -876,8 +1051,10 @@ TEST_F(QuicFramerTest, StreamFrameWithVersion) {
} else {
expected_error = "Unable to read frame data.";
}
- CheckProcessingFails(packet, i + GetPacketHeaderSize(kIncludeVersion),
- expected_error, QUIC_INVALID_FRAME_DATA);
+ CheckProcessingFails(
+ packet, i + GetPacketHeaderSize(PACKET_8BYTE_GUID, kIncludeVersion,
+ NOT_IN_FEC_GROUP),
+ expected_error, QUIC_INVALID_FRAME_DATA);
}
}
@@ -895,8 +1072,6 @@ TEST_F(QuicFramerTest, RejectPacket) {
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF,
// frame type (stream frame)
0x01,
@@ -951,7 +1126,6 @@ TEST_F(QuicFramerTest, RevivedStreamFrame) {
header.public_header.version_flag = false;
header.fec_flag = true;
header.entropy_flag = true;
- header.fec_entropy_flag = false;
header.packet_sequence_number = GG_UINT64_C(0x123456789ABC);
header.fec_group = 0;
@@ -969,11 +1143,11 @@ TEST_F(QuicFramerTest, RevivedStreamFrame) {
EXPECT_FALSE(visitor_.header_->public_header.version_flag);
EXPECT_TRUE(visitor_.header_->fec_flag);
EXPECT_TRUE(visitor_.header_->entropy_flag);
- EXPECT_FALSE(visitor_.header_->fec_entropy_flag);
EXPECT_EQ(1 << (header.packet_sequence_number % 8),
visitor_.header_->entropy_hash);
EXPECT_EQ(GG_UINT64_C(0x123456789ABC),
visitor_.header_->packet_sequence_number);
+ EXPECT_EQ(NOT_IN_FEC_GROUP, visitor_.header_->is_in_fec_group);
EXPECT_EQ(0x00u, visitor_.header_->fec_group);
ASSERT_EQ(1u, visitor_.stream_frames_.size());
@@ -995,8 +1169,8 @@ TEST_F(QuicFramerTest, StreamFrameInFecGroup) {
// packet sequence number
0xBC, 0x9A, 0x78, 0x56,
0x12, 0x34,
- // private flags
- 0x00,
+ // private flags (fec group)
+ 0x02,
// first fec protected packet offset
0x02,
@@ -1023,11 +1197,14 @@ TEST_F(QuicFramerTest, StreamFrameInFecGroup) {
EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
ASSERT_TRUE(visitor_.header_.get());
EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion));
+ EXPECT_EQ(IN_FEC_GROUP, visitor_.header_->is_in_fec_group);
EXPECT_EQ(GG_UINT64_C(0x341256789ABA),
visitor_.header_->fec_group);
EXPECT_EQ(
- string(AsChars(packet) + GetStartOfFecProtectedData(!kIncludeVersion),
- arraysize(packet) - GetStartOfFecProtectedData(!kIncludeVersion)),
+ string(AsChars(packet) + GetStartOfFecProtectedData(PACKET_8BYTE_GUID,
+ !kIncludeVersion),
+ arraysize(packet) - GetStartOfFecProtectedData(PACKET_8BYTE_GUID,
+ !kIncludeVersion)),
visitor_.fec_protected_payload_);
ASSERT_EQ(1u, visitor_.stream_frames_.size());
@@ -1051,8 +1228,6 @@ TEST_F(QuicFramerTest, AckFrame) {
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF,
// frame type (ack frame)
0x02,
@@ -1128,8 +1303,11 @@ TEST_F(QuicFramerTest, AckFrame) {
} else {
expected_error = "Unable to read sequence number in missing packets.";
}
- CheckProcessingFails(packet, i + GetPacketHeaderSize(!kIncludeVersion),
- expected_error, QUIC_INVALID_FRAME_DATA);
+ CheckProcessingFails(
+ packet,
+ i + GetPacketHeaderSize(
+ PACKET_8BYTE_GUID, !kIncludeVersion, NOT_IN_FEC_GROUP),
+ expected_error, QUIC_INVALID_FRAME_DATA);
}
}
@@ -1145,8 +1323,6 @@ TEST_F(QuicFramerTest, CongestionFeedbackFrameTCP) {
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF,
// frame type (congestion feedback frame)
0x03,
@@ -1186,8 +1362,11 @@ TEST_F(QuicFramerTest, CongestionFeedbackFrameTCP) {
} else if (i < 6) {
expected_error = "Unable to read receive window.";
}
- CheckProcessingFails(packet, i + GetPacketHeaderSize(!kIncludeVersion),
- expected_error, QUIC_INVALID_FRAME_DATA);
+ CheckProcessingFails(
+ packet,
+ i + GetPacketHeaderSize(
+ PACKET_8BYTE_GUID, !kIncludeVersion, NOT_IN_FEC_GROUP),
+ expected_error, QUIC_INVALID_FRAME_DATA);
}
}
@@ -1203,8 +1382,6 @@ TEST_F(QuicFramerTest, CongestionFeedbackFrameInterArrival) {
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF,
// frame type (congestion feedback frame)
0x03,
@@ -1283,8 +1460,11 @@ TEST_F(QuicFramerTest, CongestionFeedbackFrameInterArrival) {
} else if (i < 31) {
expected_error = "Unable to read time delta in received packets.";
}
- CheckProcessingFails(packet, i + GetPacketHeaderSize(!kIncludeVersion),
- expected_error, QUIC_INVALID_FRAME_DATA);
+ CheckProcessingFails(
+ packet,
+ i + GetPacketHeaderSize(
+ PACKET_8BYTE_GUID, !kIncludeVersion, NOT_IN_FEC_GROUP),
+ expected_error, QUIC_INVALID_FRAME_DATA);
}
}
@@ -1300,8 +1480,6 @@ TEST_F(QuicFramerTest, CongestionFeedbackFrameFixRate) {
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF,
// frame type (congestion feedback frame)
0x03,
@@ -1336,8 +1514,11 @@ TEST_F(QuicFramerTest, CongestionFeedbackFrameFixRate) {
} else if (i < 6) {
expected_error = "Unable to read bitrate.";
}
- CheckProcessingFails(packet, i + GetPacketHeaderSize(!kIncludeVersion),
- expected_error, QUIC_INVALID_FRAME_DATA);
+ CheckProcessingFails(
+ packet,
+ i + GetPacketHeaderSize(
+ PACKET_8BYTE_GUID, !kIncludeVersion, NOT_IN_FEC_GROUP),
+ expected_error, QUIC_INVALID_FRAME_DATA);
}
}
@@ -1354,8 +1535,6 @@ TEST_F(QuicFramerTest, CongestionFeedbackFrameInvalidFeedback) {
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF,
// frame type (congestion feedback frame)
0x03,
@@ -1381,8 +1560,6 @@ TEST_F(QuicFramerTest, RstStreamFrame) {
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF,
// frame type (rst stream frame)
0x04,
@@ -1422,8 +1599,11 @@ TEST_F(QuicFramerTest, RstStreamFrame) {
} else {
expected_error = "Unable to read rst stream error details.";
}
- CheckProcessingFails(packet, i + GetPacketHeaderSize(!kIncludeVersion),
- expected_error, QUIC_INVALID_RST_STREAM_DATA);
+ CheckProcessingFails(
+ packet,
+ i + GetPacketHeaderSize(
+ PACKET_8BYTE_GUID, !kIncludeVersion, NOT_IN_FEC_GROUP),
+ expected_error, QUIC_INVALID_RST_STREAM_DATA);
}
}
@@ -1439,8 +1619,6 @@ TEST_F(QuicFramerTest, ConnectionCloseFrame) {
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF,
// frame type (connection close frame)
0x05,
@@ -1508,8 +1686,11 @@ TEST_F(QuicFramerTest, ConnectionCloseFrame) {
} else {
expected_error = "Unable to read connection close error details.";
}
- CheckProcessingFails(packet, i + GetPacketHeaderSize(!kIncludeVersion),
- expected_error, QUIC_INVALID_CONNECTION_CLOSE_DATA);
+ CheckProcessingFails(
+ packet,
+ i + GetPacketHeaderSize(
+ PACKET_8BYTE_GUID, !kIncludeVersion, NOT_IN_FEC_GROUP),
+ expected_error, QUIC_INVALID_CONNECTION_CLOSE_DATA);
}
}
@@ -1525,8 +1706,6 @@ TEST_F(QuicFramerTest, GoAwayFrame) {
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF,
// frame type (go away frame)
0x06,
@@ -1568,8 +1747,11 @@ TEST_F(QuicFramerTest, GoAwayFrame) {
} else {
expected_error = "Unable to read goaway reason.";
}
- CheckProcessingFails(packet, i + GetPacketHeaderSize(!kIncludeVersion),
- expected_error, QUIC_INVALID_GOAWAY_DATA);
+ CheckProcessingFails(
+ packet,
+ i + GetPacketHeaderSize(
+ PACKET_8BYTE_GUID, !kIncludeVersion, NOT_IN_FEC_GROUP),
+ expected_error, QUIC_INVALID_GOAWAY_DATA);
}
}
@@ -1633,7 +1815,7 @@ TEST_F(QuicFramerTest, VersionNegotiationPacket) {
0x10, 0x32, 0x54, 0x76,
0x98, 0xBA, 0xDC, 0xFE,
// version tag
- 'Q', '0', '0', '4',
+ 'Q', '0', '0', '5',
'Q', '2', '.', '0',
};
@@ -1647,7 +1829,7 @@ TEST_F(QuicFramerTest, VersionNegotiationPacket) {
EXPECT_EQ(kQuicVersion1,
visitor_.version_negotiation_packet_->versions[0]);
- for (size_t i = 0; i <= kPublicFlagsSize + kQuicGuidSize; ++i) {
+ for (size_t i = 0; i <= kPublicFlagsSize + PACKET_8BYTE_GUID; ++i) {
string expected_error;
QuicErrorCode error_code = QUIC_INVALID_PACKET_HEADER;
if (i < kGuidOffset) {
@@ -1672,8 +1854,8 @@ TEST_F(QuicFramerTest, FecPacket) {
// packet sequence number
0xBC, 0x9A, 0x78, 0x56,
0x34, 0x12,
- // private flags (FEC)
- 0x01,
+ // private flags (fec group & FEC)
+ 0x06,
// first fec protected packet offset
0x01,
@@ -1706,7 +1888,6 @@ TEST_F(QuicFramerTest, ConstructPaddingFramePacket) {
header.public_header.version_flag = false;
header.fec_flag = false;
header.entropy_flag = false;
- header.fec_entropy_flag = false;
header.packet_sequence_number = GG_UINT64_C(0x123456789ABC);
header.fec_group = 0;
@@ -1726,15 +1907,14 @@ TEST_F(QuicFramerTest, ConstructPaddingFramePacket) {
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF,
// frame type (padding frame)
0x00,
};
- memset(packet + GetPacketHeaderSize(!kIncludeVersion) + 1, 0x00,
- kMaxPacketSize - GetPacketHeaderSize(!kIncludeVersion) - 1);
+ uint64 header_size = GetPacketHeaderSize(PACKET_8BYTE_GUID, !kIncludeVersion,
+ NOT_IN_FEC_GROUP);
+ memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1);
scoped_ptr<QuicPacket> data(
framer_.ConstructFrameDataPacket(header, frames).packet);
@@ -1752,7 +1932,6 @@ TEST_F(QuicFramerTest, ConstructStreamFramePacket) {
header.public_header.version_flag = false;
header.fec_flag = false;
header.entropy_flag = true;
- header.fec_entropy_flag = false;
header.packet_sequence_number = GG_UINT64_C(0x77123456789ABC);
header.fec_group = 0;
@@ -1775,9 +1954,7 @@ TEST_F(QuicFramerTest, ConstructStreamFramePacket) {
0xBC, 0x9A, 0x78, 0x56,
0x34, 0x12,
// private flags (entropy)
- 0x02,
- // first fec protected packet offset
- 0xFF,
+ 0x01,
// frame type (stream frame)
0x01,
@@ -1812,7 +1989,6 @@ TEST_F(QuicFramerTest, ConstructStreamFramePacketWithVersionFlag) {
header.public_header.version_flag = true;
header.fec_flag = false;
header.entropy_flag = true;
- header.fec_entropy_flag = false;
header.packet_sequence_number = GG_UINT64_C(0x77123456789ABC);
header.fec_group = 0;
@@ -1832,14 +2008,12 @@ TEST_F(QuicFramerTest, ConstructStreamFramePacketWithVersionFlag) {
0x10, 0x32, 0x54, 0x76,
0x98, 0xBA, 0xDC, 0xFE,
// version tag
- 'Q', '0', '0', '4',
+ 'Q', '0', '0', '5',
// packet sequence number
0xBC, 0x9A, 0x78, 0x56,
0x34, 0x12,
// private flags (entropy)
- 0x02,
- // first fec protected packet offset
- 0xFF,
+ 0x01,
// frame type (stream frame)
0x01,
@@ -1881,7 +2055,7 @@ TEST_F(QuicFramerTest, ConstructVersionNegotiationPacket) {
0x10, 0x32, 0x54, 0x76,
0x98, 0xBA, 0xDC, 0xFE,
// version tag
- 'Q', '0', '0', '4',
+ 'Q', '0', '0', '5',
'Q', '2', '.', '0',
};
@@ -1904,7 +2078,6 @@ TEST_F(QuicFramerTest, ConstructAckFramePacket) {
header.public_header.version_flag = false;
header.fec_flag = false;
header.entropy_flag = true;
- header.fec_entropy_flag = true;
header.packet_sequence_number = GG_UINT64_C(0x123456789ABC);
header.fec_group = 0;
@@ -1929,10 +2102,8 @@ TEST_F(QuicFramerTest, ConstructAckFramePacket) {
// packet sequence number
0xBC, 0x9A, 0x78, 0x56,
0x34, 0x12,
- // private flags (entropy & fec_entropy -- not relevant)
- 0x06,
- // first fec protected packet offset
- 0xFF,
+ // private flags (entropy)
+ 0x01,
// frame type (ack frame)
0x02,
@@ -1971,7 +2142,6 @@ TEST_F(QuicFramerTest, ConstructCongestionFeedbackFramePacketTCP) {
header.public_header.version_flag = false;
header.fec_flag = false;
header.entropy_flag = false;
- header.fec_entropy_flag = true;
header.packet_sequence_number = GG_UINT64_C(0x123456789ABC);
header.fec_group = 0;
@@ -1993,9 +2163,7 @@ TEST_F(QuicFramerTest, ConstructCongestionFeedbackFramePacketTCP) {
0xBC, 0x9A, 0x78, 0x56,
0x34, 0x12,
// private flags
- 0x04, // (fec_entropy_flag)
- // first fec protected packet offset
- 0xFF,
+ 0x00,
// frame type (congestion feedback frame)
0x03,
@@ -2023,7 +2191,6 @@ TEST_F(QuicFramerTest, ConstructCongestionFeedbackFramePacketInterArrival) {
header.public_header.version_flag = false;
header.fec_flag = false;
header.entropy_flag = false;
- header.fec_entropy_flag = false;
header.packet_sequence_number = GG_UINT64_C(0x123456789ABC);
header.fec_group = 0;
@@ -2056,8 +2223,6 @@ TEST_F(QuicFramerTest, ConstructCongestionFeedbackFramePacketInterArrival) {
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF,
// frame type (congestion feedback frame)
0x03,
@@ -2099,7 +2264,6 @@ TEST_F(QuicFramerTest, ConstructCongestionFeedbackFramePacketFixRate) {
header.public_header.version_flag = false;
header.fec_flag = false;
header.entropy_flag = false;
- header.fec_entropy_flag = false;
header.packet_sequence_number = GG_UINT64_C(0x123456789ABC);
header.fec_group = 0;
@@ -2122,8 +2286,6 @@ TEST_F(QuicFramerTest, ConstructCongestionFeedbackFramePacketFixRate) {
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF,
// frame type (congestion feedback frame)
0x03,
@@ -2149,7 +2311,6 @@ TEST_F(QuicFramerTest, ConstructCongestionFeedbackFramePacketInvalidFeedback) {
header.public_header.version_flag = false;
header.fec_flag = false;
header.entropy_flag = false;
- header.fec_entropy_flag = false;
header.packet_sequence_number = GG_UINT64_C(0x123456789ABC);
header.fec_group = 0;
@@ -2172,7 +2333,6 @@ TEST_F(QuicFramerTest, ConstructRstFramePacket) {
header.public_header.version_flag = false;
header.fec_flag = false;
header.entropy_flag = false;
- header.fec_entropy_flag = false;
header.packet_sequence_number = GG_UINT64_C(0x123456789ABC);
header.fec_group = 0;
@@ -2192,8 +2352,6 @@ TEST_F(QuicFramerTest, ConstructRstFramePacket) {
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF,
// frame type (rst stream frame)
0x04,
@@ -2229,7 +2387,6 @@ TEST_F(QuicFramerTest, ConstructCloseFramePacket) {
header.public_header.version_flag = false;
header.fec_flag = false;
header.entropy_flag = true;
- header.fec_entropy_flag = false;
header.packet_sequence_number = GG_UINT64_C(0x123456789ABC);
header.fec_group = 0;
@@ -2256,10 +2413,8 @@ TEST_F(QuicFramerTest, ConstructCloseFramePacket) {
// packet sequence number
0xBC, 0x9A, 0x78, 0x56,
0x34, 0x12,
- // private flags
- 0x02,
- // first fec protected packet offset
- 0xFF,
+ // private flags (entropy)
+ 0x01,
// frame type (connection close frame)
0x05,
@@ -2309,7 +2464,6 @@ TEST_F(QuicFramerTest, ConstructGoAwayPacket) {
header.public_header.version_flag = false;
header.fec_flag = false;
header.entropy_flag = true;
- header.fec_entropy_flag = false;
header.packet_sequence_number = GG_UINT64_C(0x123456789ABC);
header.fec_group = 0;
@@ -2330,10 +2484,8 @@ TEST_F(QuicFramerTest, ConstructGoAwayPacket) {
// packet sequence number
0xBC, 0x9A, 0x78, 0x56,
0x34, 0x12,
- // private flags
- 0x02,
- // first fec protected packet offset
- 0xFF,
+ // private flags(entropy)
+ 0x01,
// frame type (go away frame)
0x06,
@@ -2397,8 +2549,8 @@ TEST_F(QuicFramerTest, ConstructFecPacket) {
header.public_header.version_flag = false;
header.fec_flag = true;
header.entropy_flag = true;
- header.fec_entropy_flag = false;
header.packet_sequence_number = (GG_UINT64_C(0x123456789ABC));
+ header.is_in_fec_group = IN_FEC_GROUP;
header.fec_group = GG_UINT64_C(0x123456789ABB);;
QuicFecData fec_data;
@@ -2414,8 +2566,8 @@ TEST_F(QuicFramerTest, ConstructFecPacket) {
// packet sequence number
0xBC, 0x9A, 0x78, 0x56,
0x34, 0x12,
- // private flags
- 0x03,
+ // private flags (entropy & fec group & fec packet)
+ 0x07,
// first fec protected packet offset
0x01,
@@ -2446,8 +2598,8 @@ TEST_F(QuicFramerTest, EncryptPacket) {
// packet sequence number
0xBC, 0x9A, 0x78, 0x56,
0x34, 0x12,
- // private flags
- 0x01,
+ // private flags (fec group & fec packet)
+ 0x06,
// first fec protected packet offset
0x01,
@@ -2460,7 +2612,7 @@ TEST_F(QuicFramerTest, EncryptPacket) {
scoped_ptr<QuicPacket> raw(
QuicPacket::NewDataPacket(AsChars(packet), arraysize(packet), false,
- !kIncludeVersion));
+ PACKET_8BYTE_GUID, !kIncludeVersion));
scoped_ptr<QuicEncryptedPacket> encrypted(
framer_.EncryptPacket(ENCRYPTION_NONE, sequence_number, *raw));
@@ -2481,8 +2633,8 @@ TEST_F(QuicFramerTest, EncryptPacketWithVersionFlag) {
// packet sequence number
0xBC, 0x9A, 0x78, 0x56,
0x34, 0x12,
- // private flags
- 0x01,
+ // private flags (fec group & fec flags)
+ 0x06,
// first fec protected packet offset
0x01,
@@ -2495,7 +2647,7 @@ TEST_F(QuicFramerTest, EncryptPacketWithVersionFlag) {
scoped_ptr<QuicPacket> raw(
QuicPacket::NewDataPacket(AsChars(packet), arraysize(packet), false,
- kIncludeVersion));
+ PACKET_8BYTE_GUID, kIncludeVersion));
scoped_ptr<QuicEncryptedPacket> encrypted(
framer_.EncryptPacket(ENCRYPTION_NONE, sequence_number, *raw));
@@ -2532,7 +2684,6 @@ TEST_F(QuicFramerTest, DISABLED_Truncation) {
header.public_header.version_flag = false;
header.fec_flag = false;
header.entropy_flag = false;
- header.fec_entropy_flag = false;
header.packet_sequence_number = GG_UINT64_C(0x123456789ABC);
header.fec_group = 0;
@@ -2589,7 +2740,6 @@ TEST_F(QuicFramerTest, CleanTruncation) {
header.public_header.version_flag = false;
header.fec_flag = false;
header.entropy_flag = true;
- header.fec_entropy_flag = false;
header.packet_sequence_number = GG_UINT64_C(0x123456789ABC);
header.fec_group = 0;
@@ -2673,10 +2823,8 @@ TEST_F(QuicFramerTest, EntropyFlagTest) {
// packet sequence number
0xBC, 0x9A, 0x78, 0x56,
0x34, 0x12,
- // Entropy
- 0x02,
- // first fec protected packet offset
- 0xFF,
+ // private flags (Entropy)
+ 0x01,
// frame type (stream frame)
0x01,
@@ -2704,7 +2852,7 @@ TEST_F(QuicFramerTest, EntropyFlagTest) {
EXPECT_FALSE(visitor_.header_->fec_flag);
};
-TEST_F(QuicFramerTest, FecEntropyFlagTest) {
+TEST_F(QuicFramerTest, FecEntropyTest) {
unsigned char packet[] = {
// public flags (8 byte guid)
0x0C,
@@ -2714,7 +2862,7 @@ TEST_F(QuicFramerTest, FecEntropyFlagTest) {
// packet sequence number
0xBC, 0x9A, 0x78, 0x56,
0x34, 0x12,
- // Flags: Entropy, FEC-Entropy, FEC
+ // private flags (Entropy & fec group & FEC)
0x07,
// first fec protected packet offset
0xFF,
@@ -2742,7 +2890,6 @@ TEST_F(QuicFramerTest, FecEntropyFlagTest) {
ASSERT_TRUE(visitor_.header_.get());
EXPECT_TRUE(visitor_.header_->fec_flag);
EXPECT_TRUE(visitor_.header_->entropy_flag);
- EXPECT_TRUE(visitor_.header_->fec_entropy_flag);
EXPECT_EQ(1 << 4, visitor_.header_->entropy_hash);
};
@@ -2757,9 +2904,7 @@ TEST_F(QuicFramerTest, StopPacketProcessing) {
0xBC, 0x9A, 0x78, 0x56,
0x34, 0x12,
// Entropy
- 0x02,
- // first fec protected packet offset
- 0xFF,
+ 0x01,
// frame type (stream frame)
0x01,
@@ -2821,8 +2966,6 @@ TEST_F(QuicFramerTest, ConnectionCloseWithInvalidAck) {
0x34, 0x12,
// private flags
0x00,
- // first fec protected packet offset
- 0xFF,
// frame type (connection close frame)
0x05,

Powered by Google App Engine
This is Rietveld 408576698