Index: net/quic/quic_framer_test.cc |
diff --git a/net/quic/quic_framer_test.cc b/net/quic/quic_framer_test.cc |
index 025fb83187729223e85ae736364bab63194788a7..ca160abdfdbb375ce7ee217fef89c0f6e2dcdc13 100644 |
--- a/net/quic/quic_framer_test.cc |
+++ b/net/quic/quic_framer_test.cc |
@@ -106,29 +106,6 @@ size_t GetPrivateFlagsOffset(bool include_version, |
packet_number_length; |
} |
-// Index into the fec group offset in the header. |
-size_t GetFecGroupOffset(QuicConnectionIdLength connection_id_length, |
- bool include_version, |
- bool include_path_id) { |
- return GetPrivateFlagsOffset(connection_id_length, include_version, |
- include_path_id) + |
- kPrivateFlagsSize; |
-} |
- |
-size_t GetFecGroupOffset(bool include_version, bool include_path_id) { |
- return GetPrivateFlagsOffset(PACKET_8BYTE_CONNECTION_ID, include_version, |
- include_path_id) + |
- kPrivateFlagsSize; |
-} |
- |
-size_t GetFecGroupOffset(bool include_version, |
- bool include_path_id, |
- QuicPacketNumberLength packet_number_length) { |
- return GetPrivateFlagsOffset(include_version, include_path_id, |
- packet_number_length) + |
- kPrivateFlagsSize; |
-} |
- |
// Index into the message tag of the public reset packet. |
// Public resets always have full connection_ids. |
const size_t kPublicResetPacketMessageTagOffset = |
@@ -208,9 +185,7 @@ class TestQuicVisitor : public QuicFramerVisitorInterface { |
version_mismatch_(0), |
packet_count_(0), |
frame_count_(0), |
- fec_count_(0), |
complete_packets_(0), |
- revived_packets_(0), |
accept_packet_(true), |
accept_public_header_(true) {} |
@@ -239,8 +214,6 @@ class TestQuicVisitor : public QuicFramerVisitorInterface { |
version_negotiation_packet_.reset(new QuicVersionNegotiationPacket(packet)); |
} |
- void OnRevivedPacket() override { ++revived_packets_; } |
- |
bool OnProtocolVersionMismatch(QuicVersion version) override { |
DVLOG(1) << "QuicFramer Version Mismatch, version: " << version; |
++version_mismatch_; |
@@ -260,6 +233,10 @@ class TestQuicVisitor : public QuicFramerVisitorInterface { |
void OnDecryptedPacket(EncryptionLevel level) override {} |
bool OnPacketHeader(const QuicPacketHeader& header) override { |
+ if (header.fec_flag) { |
+ // Drop any FEC packet. |
+ return false; |
+ } |
++packet_count_; |
header_.reset(new QuicPacketHeader(header)); |
return accept_packet_; |
@@ -277,10 +254,6 @@ class TestQuicVisitor : public QuicFramerVisitorInterface { |
return true; |
} |
- void OnFecProtectedPayload(StringPiece payload) override { |
- fec_protected_payload_ = payload.as_string(); |
- } |
- |
bool OnAckFrame(const QuicAckFrame& frame) override { |
++frame_count_; |
ack_frames_.push_back(new QuicAckFrame(frame)); |
@@ -299,11 +272,6 @@ class TestQuicVisitor : public QuicFramerVisitorInterface { |
return true; |
} |
- void OnFecData(StringPiece redundancy) override { |
- ++fec_count_; |
- fec_data_redundancy_.push_back(redundancy.as_string()); |
- } |
- |
void OnPacketComplete() override { ++complete_packets_; } |
bool OnRstStreamFrame(const QuicRstStreamFrame& frame) override { |
@@ -341,9 +309,7 @@ class TestQuicVisitor : public QuicFramerVisitorInterface { |
int version_mismatch_; |
int packet_count_; |
int frame_count_; |
- int fec_count_; |
int complete_packets_; |
- int revived_packets_; |
bool accept_packet_; |
bool accept_public_header_; |
@@ -355,7 +321,6 @@ class TestQuicVisitor : public QuicFramerVisitorInterface { |
vector<QuicAckFrame*> ack_frames_; |
vector<QuicStopWaitingFrame*> stop_waiting_frames_; |
vector<QuicPingFrame*> ping_frames_; |
- string fec_protected_payload_; |
QuicRstStreamFrame rst_stream_frame_; |
QuicConnectionCloseFrame connection_close_frame_; |
QuicGoAwayFrame goaway_frame_; |
@@ -363,7 +328,6 @@ class TestQuicVisitor : public QuicFramerVisitorInterface { |
QuicBlockedFrame blocked_frame_; |
QuicPathCloseFrame path_close_frame_; |
vector<string*> stream_data_; |
- vector<string> fec_data_redundancy_; |
}; |
class QuicFramerTest : public ::testing::TestWithParam<QuicVersion> { |
@@ -481,8 +445,7 @@ class QuicFramerTest : public ::testing::TestWithParam<QuicVersion> { |
CheckProcessingFails( |
packet, |
i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, include_version, |
- !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP), |
+ !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER), |
expected_error, QUIC_INVALID_STREAM_DATA); |
} |
} |
@@ -648,10 +611,10 @@ TEST_P(QuicFramerTest, LargePacket) { |
memset(packet + GetPacketHeaderSize( |
PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId, |
- PACKET_6BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP), 0, |
+ PACKET_6BYTE_PACKET_NUMBER), 0, |
kMaxPacketSize - GetPacketHeaderSize( |
PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId, |
- PACKET_6BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP) + 1); |
+ PACKET_6BYTE_PACKET_NUMBER) + 1); |
// clang-format on |
QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); |
@@ -696,8 +659,7 @@ TEST_P(QuicFramerTest, PacketHeader) { |
// Now test framing boundaries. |
for (size_t i = 0; |
i < GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
- !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP); |
+ !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER); |
++i) { |
string expected_error; |
if (i < kConnectionIdOffset) { |
@@ -706,10 +668,8 @@ TEST_P(QuicFramerTest, PacketHeader) { |
expected_error = "Unable to read ConnectionId."; |
} else if (i < GetPrivateFlagsOffset(!kIncludeVersion, !kIncludePathId)) { |
expected_error = "Unable to read packet number."; |
- } else if (i < GetFecGroupOffset(!kIncludeVersion, !kIncludePathId)) { |
- expected_error = "Unable to read private flags."; |
} else { |
- expected_error = "Unable to read first fec protected packet offset."; |
+ expected_error = "Unable to read private flags."; |
} |
CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER); |
} |
@@ -749,8 +709,7 @@ TEST_P(QuicFramerTest, PacketHeaderWith4ByteConnectionId) { |
// Now test framing boundaries. |
for (size_t i = 0; |
i < GetPacketHeaderSize(PACKET_4BYTE_CONNECTION_ID, !kIncludeVersion, |
- !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP); |
+ !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER); |
++i) { |
string expected_error; |
if (i < kConnectionIdOffset) { |
@@ -761,11 +720,8 @@ TEST_P(QuicFramerTest, PacketHeaderWith4ByteConnectionId) { |
} else if (i < GetPrivateFlagsOffset(PACKET_4BYTE_CONNECTION_ID, |
!kIncludeVersion, !kIncludePathId)) { |
expected_error = "Unable to read packet number."; |
- } else if (i < GetFecGroupOffset(PACKET_4BYTE_CONNECTION_ID, |
- !kIncludeVersion, !kIncludePathId)) { |
- expected_error = "Unable to read private flags."; |
} else { |
- expected_error = "Unable to read first fec protected packet offset."; |
+ expected_error = "Unable to read private flags."; |
} |
CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER); |
} |
@@ -805,8 +761,7 @@ TEST_P(QuicFramerTest, PacketHeader1ByteConnectionId) { |
// Now test framing boundaries. |
for (size_t i = 0; |
i < GetPacketHeaderSize(PACKET_1BYTE_CONNECTION_ID, !kIncludeVersion, |
- !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP); |
+ !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER); |
++i) { |
string expected_error; |
if (i < kConnectionIdOffset) { |
@@ -817,11 +772,8 @@ TEST_P(QuicFramerTest, PacketHeader1ByteConnectionId) { |
} else if (i < GetPrivateFlagsOffset(PACKET_1BYTE_CONNECTION_ID, |
!kIncludeVersion, !kIncludePathId)) { |
expected_error = "Unable to read packet number."; |
- } else if (i < GetFecGroupOffset(PACKET_1BYTE_CONNECTION_ID, |
- !kIncludeVersion, !kIncludePathId)) { |
- expected_error = "Unable to read private flags."; |
} else { |
- expected_error = "Unable to read first fec protected packet offset."; |
+ expected_error = "Unable to read private flags."; |
} |
CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER); |
} |
@@ -861,8 +813,7 @@ TEST_P(QuicFramerTest, PacketHeaderWith0ByteConnectionId) { |
// Now test framing boundaries. |
for (size_t i = 0; |
i < GetPacketHeaderSize(PACKET_0BYTE_CONNECTION_ID, !kIncludeVersion, |
- !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP); |
+ !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER); |
++i) { |
string expected_error; |
if (i < kConnectionIdOffset) { |
@@ -873,11 +824,8 @@ TEST_P(QuicFramerTest, PacketHeaderWith0ByteConnectionId) { |
} else if (i < GetPrivateFlagsOffset(PACKET_0BYTE_CONNECTION_ID, |
!kIncludeVersion, !kIncludePathId)) { |
expected_error = "Unable to read packet number."; |
- } else if (i < GetFecGroupOffset(PACKET_0BYTE_CONNECTION_ID, |
- !kIncludeVersion, !kIncludePathId)) { |
- expected_error = "Unable to read private flags."; |
} else { |
- expected_error = "Unable to read first fec protected packet offset."; |
+ expected_error = "Unable to read private flags."; |
} |
CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER); |
} |
@@ -918,8 +866,7 @@ TEST_P(QuicFramerTest, PacketHeaderWithVersionFlag) { |
// Now test framing boundaries. |
for (size_t i = 0; |
i < GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, kIncludeVersion, |
- !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP); |
+ !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER); |
++i) { |
string expected_error; |
if (i < kConnectionIdOffset) { |
@@ -930,10 +877,8 @@ TEST_P(QuicFramerTest, PacketHeaderWithVersionFlag) { |
expected_error = "Unable to read protocol version."; |
} else if (i < GetPrivateFlagsOffset(kIncludeVersion, !kIncludePathId)) { |
expected_error = "Unable to read packet number."; |
- } else if (i < GetFecGroupOffset(kIncludeVersion, !kIncludePathId)) { |
- expected_error = "Unable to read private flags."; |
} else { |
- expected_error = "Unable to read first fec protected packet offset."; |
+ expected_error = "Unable to read private flags."; |
} |
CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER); |
} |
@@ -975,8 +920,7 @@ TEST_P(QuicFramerTest, PacketHeaderWithMultipathFlag) { |
// Now test framing boundaries. |
for (size_t i = 0; |
i < GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
- kIncludePathId, PACKET_6BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP); |
+ kIncludePathId, PACKET_6BYTE_PACKET_NUMBER); |
++i) { |
string expected_error; |
if (i < kConnectionIdOffset) { |
@@ -988,10 +932,8 @@ TEST_P(QuicFramerTest, PacketHeaderWithMultipathFlag) { |
expected_error = "Unable to read path id."; |
} else if (i < GetPrivateFlagsOffset(!kIncludeVersion, kIncludePathId)) { |
expected_error = "Unable to read packet number."; |
- } else if (i < GetFecGroupOffset(!kIncludeVersion, kIncludePathId)) { |
- expected_error = "Unable to read private flags."; |
} else { |
- expected_error = "Unable to read first fec protected packet offset."; |
+ expected_error = "Unable to read private flags."; |
} |
CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER); |
} |
@@ -1036,8 +978,7 @@ TEST_P(QuicFramerTest, PacketHeaderWithBothVersionFlagAndMultipathFlag) { |
// Now test framing boundaries. |
for (size_t i = 0; |
i < GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
- kIncludePathId, PACKET_6BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP); |
+ kIncludePathId, PACKET_6BYTE_PACKET_NUMBER); |
++i) { |
string expected_error; |
if (i < kConnectionIdOffset) { |
@@ -1051,10 +992,8 @@ TEST_P(QuicFramerTest, PacketHeaderWithBothVersionFlagAndMultipathFlag) { |
expected_error = "Unable to read path id."; |
} else if (i < GetPrivateFlagsOffset(kIncludeVersion, kIncludePathId)) { |
expected_error = "Unable to read packet number."; |
- } else if (i < GetFecGroupOffset(kIncludeVersion, kIncludePathId)) { |
- expected_error = "Unable to read private flags."; |
} else { |
- expected_error = "Unable to read first fec protected packet offset."; |
+ expected_error = "Unable to read private flags."; |
} |
CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER); |
} |
@@ -1201,8 +1140,7 @@ TEST_P(QuicFramerTest, PacketHeaderWith4BytePacketNumber) { |
// Now test framing boundaries. |
for (size_t i = 0; |
i < GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
- !kIncludePathId, PACKET_4BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP); |
+ !kIncludePathId, PACKET_4BYTE_PACKET_NUMBER); |
++i) { |
string expected_error; |
if (i < kConnectionIdOffset) { |
@@ -1212,11 +1150,8 @@ TEST_P(QuicFramerTest, PacketHeaderWith4BytePacketNumber) { |
} else if (i < GetPrivateFlagsOffset(!kIncludeVersion, !kIncludePathId, |
PACKET_4BYTE_PACKET_NUMBER)) { |
expected_error = "Unable to read packet number."; |
- } else if (i < GetFecGroupOffset(!kIncludeVersion, !kIncludePathId, |
- PACKET_4BYTE_PACKET_NUMBER)) { |
- expected_error = "Unable to read private flags."; |
} else { |
- expected_error = "Unable to read first fec protected packet offset."; |
+ expected_error = "Unable to read private flags."; |
} |
CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER); |
} |
@@ -1256,8 +1191,7 @@ TEST_P(QuicFramerTest, PacketHeaderWith2BytePacketNumber) { |
// Now test framing boundaries. |
for (size_t i = 0; |
i < GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
- !kIncludePathId, PACKET_2BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP); |
+ !kIncludePathId, PACKET_2BYTE_PACKET_NUMBER); |
++i) { |
string expected_error; |
if (i < kConnectionIdOffset) { |
@@ -1267,11 +1201,8 @@ TEST_P(QuicFramerTest, PacketHeaderWith2BytePacketNumber) { |
} else if (i < GetPrivateFlagsOffset(!kIncludeVersion, !kIncludePathId, |
PACKET_2BYTE_PACKET_NUMBER)) { |
expected_error = "Unable to read packet number."; |
- } else if (i < GetFecGroupOffset(!kIncludeVersion, !kIncludePathId, |
- PACKET_2BYTE_PACKET_NUMBER)) { |
- expected_error = "Unable to read private flags."; |
} else { |
- expected_error = "Unable to read first fec protected packet offset."; |
+ expected_error = "Unable to read private flags."; |
} |
CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER); |
} |
@@ -1311,8 +1242,7 @@ TEST_P(QuicFramerTest, PacketHeaderWith1BytePacketNumber) { |
// Now test framing boundaries. |
for (size_t i = 0; |
i < GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
- !kIncludePathId, PACKET_1BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP); |
+ !kIncludePathId, PACKET_1BYTE_PACKET_NUMBER); |
++i) { |
string expected_error; |
if (i < kConnectionIdOffset) { |
@@ -1322,11 +1252,8 @@ TEST_P(QuicFramerTest, PacketHeaderWith1BytePacketNumber) { |
} else if (i < GetPrivateFlagsOffset(!kIncludeVersion, !kIncludePathId, |
PACKET_1BYTE_PACKET_NUMBER)) { |
expected_error = "Unable to read packet number."; |
- } else if (i < GetFecGroupOffset(!kIncludeVersion, !kIncludePathId, |
- PACKET_1BYTE_PACKET_NUMBER)) { |
- expected_error = "Unable to read private flags."; |
} else { |
- expected_error = "Unable to read first fec protected packet offset."; |
+ expected_error = "Unable to read private flags."; |
} |
CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER); |
} |
@@ -1504,8 +1431,7 @@ TEST_P(QuicFramerTest, PaddingFrame) { |
// A packet with no frames is not acceptable. |
CheckProcessingFails( |
packet, GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
- !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP), |
+ !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER), |
"Packet has no frames.", QUIC_MISSING_PAYLOAD); |
} |
@@ -1823,114 +1749,6 @@ TEST_P(QuicFramerTest, RejectPublicHeader) { |
ASSERT_FALSE(visitor_.header_.get()); |
} |
-TEST_P(QuicFramerTest, RevivedStreamFrame) { |
- // clang-format off |
- unsigned char payload[] = { |
- // 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', '!', |
- }; |
- // clang-format on |
- |
- QuicPacketHeader header; |
- header.public_header.connection_id = kConnectionId; |
- header.public_header.reset_flag = false; |
- header.public_header.version_flag = false; |
- header.fec_flag = true; |
- header.entropy_flag = true; |
- header.packet_number = kPacketNumber; |
- header.fec_group = 0; |
- |
- // Do not encrypt the payload because the revived payload is post-encryption. |
- EXPECT_TRUE(framer_.ProcessRevivedPacket( |
- &header, StringPiece(AsChars(payload), arraysize(payload)))); |
- |
- EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
- ASSERT_EQ(1, visitor_.revived_packets_); |
- ASSERT_TRUE(visitor_.header_.get()); |
- EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); |
- EXPECT_FALSE(visitor_.header_->public_header.reset_flag); |
- EXPECT_FALSE(visitor_.header_->public_header.version_flag); |
- EXPECT_TRUE(visitor_.header_->fec_flag); |
- EXPECT_TRUE(visitor_.header_->entropy_flag); |
- EXPECT_EQ(1 << (header.packet_number % 8), visitor_.header_->entropy_hash); |
- EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number); |
- EXPECT_EQ(NOT_IN_FEC_GROUP, visitor_.header_->is_in_fec_group); |
- EXPECT_EQ(0u, visitor_.header_->fec_group); |
- |
- ASSERT_EQ(1u, visitor_.stream_frames_.size()); |
- EXPECT_EQ(0u, visitor_.ack_frames_.size()); |
- EXPECT_EQ(kStreamId, visitor_.stream_frames_[0]->stream_id); |
- EXPECT_TRUE(visitor_.stream_frames_[0]->fin); |
- EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset); |
- CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]); |
-} |
- |
-TEST_P(QuicFramerTest, StreamFrameInFecGroup) { |
- // clang-format off |
- unsigned char packet[] = { |
- // public flags (8 byte connection_id) |
- 0x3C, |
- // connection_id |
- 0x10, 0x32, 0x54, 0x76, |
- 0x98, 0xBA, 0xDC, 0xFE, |
- // packet number |
- 0xBC, 0x9A, 0x78, 0x56, |
- 0x34, 0x12, |
- // private flags (fec group) |
- 0x02, |
- // first fec protected packet offset |
- 0x02, |
- |
- // 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', '!', |
- }; |
- // 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)); |
- EXPECT_EQ(IN_FEC_GROUP, visitor_.header_->is_in_fec_group); |
- EXPECT_EQ(kPacketNumber - 2, visitor_.header_->fec_group); |
- const size_t fec_offset = |
- GetStartOfFecProtectedData(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
- !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER); |
- EXPECT_EQ( |
- string(AsChars(packet) + fec_offset, arraysize(packet) - fec_offset), |
- visitor_.fec_protected_payload_); |
- |
- ASSERT_EQ(1u, visitor_.stream_frames_.size()); |
- EXPECT_EQ(0u, visitor_.ack_frames_.size()); |
- EXPECT_EQ(kStreamId, visitor_.stream_frames_[0]->stream_id); |
- EXPECT_TRUE(visitor_.stream_frames_[0]->fin); |
- EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset); |
- CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]); |
-} |
- |
TEST_P(QuicFramerTest, AckFrameTwoTimestamp) { |
// clang-format off |
unsigned char packet[] = { |
@@ -2046,8 +1864,7 @@ TEST_P(QuicFramerTest, AckFrameTwoTimestamp) { |
CheckProcessingFails( |
packet, |
i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
- !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP), |
+ !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER), |
expected_error, QUIC_INVALID_ACK_DATA); |
} |
} |
@@ -2153,8 +1970,7 @@ TEST_P(QuicFramerTest, AckFrameOneTimestamp) { |
CheckProcessingFails( |
packet, |
i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
- !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP), |
+ !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER), |
expected_error, QUIC_INVALID_ACK_DATA); |
} |
} |
@@ -2248,8 +2064,7 @@ TEST_P(QuicFramerTest, AckFrame) { |
CheckProcessingFails( |
packet, |
i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
- !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP), |
+ !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER), |
expected_error, QUIC_INVALID_ACK_DATA); |
} |
} |
@@ -2353,8 +2168,7 @@ TEST_P(QuicFramerTest, AckFrameRevivedPackets) { |
CheckProcessingFails( |
packet, |
i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
- !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP), |
+ !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER), |
expected_error, QUIC_INVALID_ACK_DATA); |
} |
} |
@@ -2529,8 +2343,7 @@ TEST_P(QuicFramerTest, StopWaitingFrame) { |
CheckProcessingFails( |
packet, |
i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
- !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP), |
+ !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER), |
expected_error, QUIC_INVALID_STOP_WAITING_DATA); |
} |
} |
@@ -2590,8 +2403,7 @@ TEST_P(QuicFramerTest, RstStreamFrameQuic) { |
CheckProcessingFails( |
packet, |
i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
- !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP), |
+ !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER), |
expected_error, QUIC_INVALID_RST_STREAM_DATA); |
} |
} |
@@ -2651,8 +2463,7 @@ TEST_P(QuicFramerTest, ConnectionCloseFrame) { |
CheckProcessingFails( |
packet, |
i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
- !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP), |
+ !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER), |
expected_error, QUIC_INVALID_CONNECTION_CLOSE_DATA); |
} |
} |
@@ -2714,8 +2525,7 @@ TEST_P(QuicFramerTest, GoAwayFrame) { |
CheckProcessingFails( |
packet, |
i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
- !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP), |
+ !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER), |
expected_error, QUIC_INVALID_GOAWAY_DATA); |
} |
} |
@@ -2767,8 +2577,7 @@ TEST_P(QuicFramerTest, WindowUpdateFrame) { |
CheckProcessingFails( |
packet, |
i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
- !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP), |
+ !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER), |
expected_error, QUIC_INVALID_WINDOW_UPDATE_DATA); |
} |
} |
@@ -2811,8 +2620,7 @@ TEST_P(QuicFramerTest, BlockedFrame) { |
CheckProcessingFails( |
packet, |
i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
- !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP), |
+ !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER), |
expected_error, QUIC_INVALID_BLOCKED_DATA); |
} |
} |
@@ -2887,8 +2695,7 @@ TEST_P(QuicFramerTest, PathCloseFrame) { |
CheckProcessingFails( |
packet, |
i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
- kIncludePathId, PACKET_6BYTE_PACKET_NUMBER, |
- NOT_IN_FEC_GROUP), |
+ kIncludePathId, PACKET_6BYTE_PACKET_NUMBER), |
expected_error, QUIC_INVALID_PATH_CLOSE_DATA); |
} |
} |
@@ -3102,7 +2909,7 @@ TEST_P(QuicFramerTest, VersionNegotiationPacket) { |
} |
} |
-TEST_P(QuicFramerTest, FecPacket) { |
+TEST_P(QuicFramerTest, DropFecPacket) { |
// clang-format off |
unsigned char packet[] = { |
// public flags (8 byte connection_id) |
@@ -3130,13 +2937,7 @@ TEST_P(QuicFramerTest, FecPacket) { |
EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
- ASSERT_TRUE(visitor_.header_.get()); |
- EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId)); |
- |
- EXPECT_EQ(0u, visitor_.stream_frames_.size()); |
- EXPECT_EQ(0u, visitor_.ack_frames_.size()); |
- ASSERT_EQ(1, visitor_.fec_count_); |
- EXPECT_EQ("abcdefghijklmnop", visitor_.fec_data_redundancy_[0]); |
+ EXPECT_FALSE(visitor_.header_.get()); |
} |
TEST_P(QuicFramerTest, BuildPaddingFramePacket) { |
@@ -3173,9 +2974,9 @@ TEST_P(QuicFramerTest, BuildPaddingFramePacket) { |
}; |
// clang-format on |
- uint64_t header_size = GetPacketHeaderSize( |
- PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId, |
- PACKET_6BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP); |
+ uint64_t header_size = |
+ GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
+ !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER); |
memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); |
scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
@@ -3220,9 +3021,9 @@ TEST_P(QuicFramerTest, Build4ByteSequenceNumberPaddingFramePacket) { |
}; |
// clang-format on |
- uint64_t header_size = GetPacketHeaderSize( |
- PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId, |
- PACKET_4BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP); |
+ uint64_t header_size = |
+ GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
+ !kIncludePathId, PACKET_4BYTE_PACKET_NUMBER); |
memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); |
scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
@@ -3267,9 +3068,9 @@ TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) { |
}; |
// clang-format on |
- uint64_t header_size = GetPacketHeaderSize( |
- PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId, |
- PACKET_2BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP); |
+ uint64_t header_size = |
+ GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
+ !kIncludePathId, PACKET_2BYTE_PACKET_NUMBER); |
memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); |
scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
@@ -3314,9 +3115,9 @@ TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) { |
}; |
// clang-format on |
- uint64_t header_size = GetPacketHeaderSize( |
- PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId, |
- PACKET_1BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP); |
+ uint64_t header_size = |
+ GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
+ !kIncludePathId, PACKET_1BYTE_PACKET_NUMBER); |
memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); |
scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
@@ -3378,55 +3179,6 @@ TEST_P(QuicFramerTest, BuildStreamFramePacket) { |
arraysize(packet)); |
} |
-TEST_P(QuicFramerTest, BuildStreamFramePacketInFecGroup) { |
- QuicPacketHeader header; |
- header.public_header.connection_id = kConnectionId; |
- header.public_header.reset_flag = false; |
- header.public_header.version_flag = false; |
- header.fec_flag = false; |
- header.entropy_flag = true; |
- header.packet_number = kPacketNumber; |
- header.is_in_fec_group = IN_FEC_GROUP; |
- header.fec_group = 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) |
- 0x3C, |
- // connection_id |
- 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, |
- // packet number |
- 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, |
- // private flags (entropy, is_in_fec_group) |
- 0x03, |
- // FEC group |
- 0x00, |
- // frame type (stream frame with fin and data length field) |
- 0xFF, |
- // stream id |
- 0x04, 0x03, 0x02, 0x01, |
- // offset |
- 0x54, 0x76, 0x10, 0x32, 0xDC, 0xFE, 0x98, 0xBA, |
- // data length (since packet is in an FEC group) |
- 0x0C, 0x00, |
- // data |
- 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!', |
- }; |
- // clang-format on |
- |
- scoped_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, BuildStreamFramePacketWithVersionFlag) { |
QuicPacketHeader header; |
header.public_header.connection_id = kConnectionId; |
@@ -4372,50 +4124,6 @@ TEST_P(QuicFramerTest, BuildPublicResetPacketWithClientAddress) { |
arraysize(packet)); |
} |
-TEST_P(QuicFramerTest, BuildFecPacket) { |
- QuicPacketHeader header; |
- header.public_header.connection_id = kConnectionId; |
- header.public_header.reset_flag = false; |
- header.public_header.version_flag = false; |
- header.fec_flag = true; |
- header.entropy_flag = true; |
- header.packet_number = kPacketNumber; |
- header.is_in_fec_group = IN_FEC_GROUP; |
- header.fec_group = kPacketNumber - 1; |
- |
- string redundancy = "abcdefghijklmnop"; |
- |
- // clang-format off |
- unsigned char packet[] = { |
- // public flags (8 byte connection_id) |
- 0x3C, |
- // connection_id |
- 0x10, 0x32, 0x54, 0x76, |
- 0x98, 0xBA, 0xDC, 0xFE, |
- // packet number |
- 0xBC, 0x9A, 0x78, 0x56, |
- 0x34, 0x12, |
- // private flags (entropy & fec group & fec packet) |
- 0x07, |
- // first fec protected packet offset |
- 0x01, |
- |
- // redundancy |
- 'a', 'b', 'c', 'd', |
- 'e', 'f', 'g', 'h', |
- 'i', 'j', 'k', 'l', |
- 'm', 'n', 'o', 'p', |
- }; |
- // clang-format on |
- |
- scoped_ptr<QuicPacket> data(framer_.BuildFecPacket(header, redundancy)); |
- ASSERT_TRUE(data != nullptr); |
- |
- test::CompareCharArraysWithHexError("constructed packet", data->data(), |
- data->length(), AsChars(packet), |
- arraysize(packet)); |
-} |
- |
TEST_P(QuicFramerTest, EncryptPacket) { |
QuicPacketNumber packet_number = kPacketNumber; |
// clang-format off |
@@ -4428,10 +4136,8 @@ TEST_P(QuicFramerTest, EncryptPacket) { |
// packet number |
0xBC, 0x9A, 0x78, 0x56, |
0x34, 0x12, |
- // private flags (fec group & fec packet) |
- 0x06, |
- // first fec protected packet offset |
- 0x01, |
+ // private flags |
+ 0x00, |
// redundancy |
'a', 'b', 'c', 'd', |
@@ -4467,10 +4173,8 @@ TEST_P(QuicFramerTest, EncryptPacketWithVersionFlag) { |
// packet number |
0xBC, 0x9A, 0x78, 0x56, |
0x34, 0x12, |
- // private flags (fec group & fec flags) |
- 0x06, |
- // first fec protected packet offset |
- 0x01, |
+ // private flags |
+ 0x00, |
// redundancy |
'a', 'b', 'c', 'd', |
@@ -4506,10 +4210,8 @@ TEST_P(QuicFramerTest, EncryptPacketWithMultipathFlag) { |
// packet number |
0xBC, 0x9A, 0x78, 0x56, |
0x34, 0x12, |
- // private flags (fec group & fec flags) |
- 0x06, |
- // first fec protected packet offset |
- 0x01, |
+ // private flags |
+ 0x00, |
// redundancy |
'a', 'b', 'c', 'd', |
@@ -4546,10 +4248,8 @@ TEST_P(QuicFramerTest, EncryptPacketWithBothVersionFlagAndMultipathFlag) { |
// packet number |
0xBC, 0x9A, 0x78, 0x56, |
0x34, 0x12, |
- // private flags (fec group & fec flags) |
- 0x06, |
- // first fec protected packet offset |
- 0x01, |
+ // private flags |
+ 0x00, |
// redundancy |
'a', 'b', 'c', 'd', |
@@ -4731,45 +4431,6 @@ TEST_P(QuicFramerTest, EntropyFlagTest) { |
EXPECT_FALSE(visitor_.header_->fec_flag); |
}; |
-TEST_P(QuicFramerTest, FecEntropyTest) { |
- // clang-format off |
- unsigned char packet[] = { |
- // public flags (8 byte connection_id) |
- 0x3C, |
- // connection_id |
- 0x10, 0x32, 0x54, 0x76, |
- 0x98, 0xBA, 0xDC, 0xFE, |
- // packet number |
- 0xBC, 0x9A, 0x78, 0x56, |
- 0x34, 0x12, |
- // private flags (Entropy & fec group & FEC) |
- 0x07, |
- // first fec protected packet offset |
- 0xFF, |
- |
- // 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_->fec_flag); |
- EXPECT_TRUE(visitor_.header_->entropy_flag); |
- EXPECT_EQ(1 << 4, visitor_.header_->entropy_hash); |
-}; |
- |
TEST_P(QuicFramerTest, StopPacketProcessing) { |
// clang-format off |
unsigned char packet[] = { |