| 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[] = {
|
|
|