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

Side by Side Diff: net/quic/quic_framer_test.cc

Issue 156233004: Add a LOG(DFATAL) if the sequence number length is too small to fit the (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/quic/quic_framer.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/quic/quic_framer.h" 5 #include "net/quic/quic_framer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 4564 matching lines...) Expand 10 before | Expand all | Expand 10 after
4575 header.public_header.guid = GG_UINT64_C(0xFEDCBA9876543210); 4575 header.public_header.guid = GG_UINT64_C(0xFEDCBA9876543210);
4576 header.public_header.reset_flag = false; 4576 header.public_header.reset_flag = false;
4577 header.public_header.version_flag = false; 4577 header.public_header.version_flag = false;
4578 header.fec_flag = false; 4578 header.fec_flag = false;
4579 header.entropy_flag = false; 4579 header.entropy_flag = false;
4580 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); 4580 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC);
4581 header.fec_group = 0; 4581 header.fec_group = 0;
4582 4582
4583 QuicAckFrame ack_frame; 4583 QuicAckFrame ack_frame;
4584 ack_frame.received_info.largest_observed = 601; 4584 ack_frame.received_info.largest_observed = 601;
4585 ack_frame.sent_info.least_unacked = 0; 4585 ack_frame.sent_info.least_unacked = header.packet_sequence_number - 1;
4586 for (uint64 i = 1; i < ack_frame.received_info.largest_observed; i += 2) { 4586 for (uint64 i = 1; i < ack_frame.received_info.largest_observed; i += 2) {
4587 ack_frame.received_info.missing_packets.insert(i); 4587 ack_frame.received_info.missing_packets.insert(i);
4588 } 4588 }
4589 4589
4590 // Create a packet with just the ack 4590 // Create a packet with just the ack
4591 QuicFrame frame; 4591 QuicFrame frame;
4592 frame.type = ACK_FRAME; 4592 frame.type = ACK_FRAME;
4593 frame.ack_frame = &ack_frame; 4593 frame.ack_frame = &ack_frame;
4594 QuicFrames frames; 4594 QuicFrames frames;
4595 frames.push_back(frame); 4595 frames.push_back(frame);
4596 4596
4597 scoped_ptr<QuicPacket> raw_ack_packet( 4597 scoped_ptr<QuicPacket> raw_ack_packet(
4598 framer_.BuildUnsizedDataPacket(header, frames).packet); 4598 framer_.BuildUnsizedDataPacket(header, frames).packet);
4599 ASSERT_TRUE(raw_ack_packet != NULL); 4599 ASSERT_TRUE(raw_ack_packet != NULL);
4600 4600
4601 scoped_ptr<QuicEncryptedPacket> ack_packet( 4601 scoped_ptr<QuicEncryptedPacket> ack_packet(
4602 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number, 4602 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number,
4603 *raw_ack_packet)); 4603 *raw_ack_packet));
4604 4604
4605 // Now make sure we can turn our ack packet back into an ack frame 4605 // Now make sure we can turn our ack packet back into an ack frame
4606 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet)); 4606 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet));
4607 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 4607 ASSERT_EQ(1u, visitor_.ack_frames_.size());
4608 const QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0]; 4608 const QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0];
4609 EXPECT_EQ(0u, processed_ack_frame.sent_info.least_unacked); 4609 EXPECT_EQ(header.packet_sequence_number - 1,
4610 processed_ack_frame.sent_info.least_unacked);
4610 EXPECT_TRUE(processed_ack_frame.received_info.is_truncated); 4611 EXPECT_TRUE(processed_ack_frame.received_info.is_truncated);
4611 EXPECT_EQ(510u, processed_ack_frame.received_info.largest_observed); 4612 EXPECT_EQ(510u, processed_ack_frame.received_info.largest_observed);
4612 ASSERT_EQ(255u, processed_ack_frame.received_info.missing_packets.size()); 4613 ASSERT_EQ(255u, processed_ack_frame.received_info.missing_packets.size());
4613 SequenceNumberSet::const_iterator missing_iter = 4614 SequenceNumberSet::const_iterator missing_iter =
4614 processed_ack_frame.received_info.missing_packets.begin(); 4615 processed_ack_frame.received_info.missing_packets.begin();
4615 EXPECT_EQ(1u, *missing_iter); 4616 EXPECT_EQ(1u, *missing_iter);
4616 SequenceNumberSet::const_reverse_iterator last_missing_iter = 4617 SequenceNumberSet::const_reverse_iterator last_missing_iter =
4617 processed_ack_frame.received_info.missing_packets.rbegin(); 4618 processed_ack_frame.received_info.missing_packets.rbegin();
4618 EXPECT_EQ(509u, *last_missing_iter); 4619 EXPECT_EQ(509u, *last_missing_iter);
4619 } 4620 }
4620 4621
4621 TEST_P(QuicFramerTest, CleanTruncation) { 4622 TEST_P(QuicFramerTest, CleanTruncation) {
4622 QuicPacketHeader header; 4623 QuicPacketHeader header;
4623 header.public_header.guid = GG_UINT64_C(0xFEDCBA9876543210); 4624 header.public_header.guid = GG_UINT64_C(0xFEDCBA9876543210);
4624 header.public_header.reset_flag = false; 4625 header.public_header.reset_flag = false;
4625 header.public_header.version_flag = false; 4626 header.public_header.version_flag = false;
4626 header.fec_flag = false; 4627 header.fec_flag = false;
4627 header.entropy_flag = true; 4628 header.entropy_flag = true;
4628 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); 4629 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC);
4629 header.fec_group = 0; 4630 header.fec_group = 0;
4630 4631
4631 QuicAckFrame ack_frame; 4632 QuicAckFrame ack_frame;
4632 ack_frame.received_info.largest_observed = 201; 4633 ack_frame.received_info.largest_observed = 201;
4633 ack_frame.sent_info.least_unacked = 0; 4634 ack_frame.sent_info.least_unacked = header.packet_sequence_number - 2;
4634 for (uint64 i = 1; i < ack_frame.received_info.largest_observed; ++i) { 4635 for (uint64 i = 1; i < ack_frame.received_info.largest_observed; ++i) {
4635 ack_frame.received_info.missing_packets.insert(i); 4636 ack_frame.received_info.missing_packets.insert(i);
4636 } 4637 }
4637 4638
4638 // Create a packet with just the ack 4639 // Create a packet with just the ack
4639 QuicFrame frame; 4640 QuicFrame frame;
4640 frame.type = ACK_FRAME; 4641 frame.type = ACK_FRAME;
4641 frame.ack_frame = &ack_frame; 4642 frame.ack_frame = &ack_frame;
4642 QuicFrames frames; 4643 QuicFrames frames;
4643 frames.push_back(frame); 4644 frames.push_back(frame);
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
4795 EXPECT_CALL(visitor, OnPacketComplete()); 4796 EXPECT_CALL(visitor, OnPacketComplete());
4796 EXPECT_CALL(visitor, OnUnauthenticatedPublicHeader(_)).WillOnce(Return(true)); 4797 EXPECT_CALL(visitor, OnUnauthenticatedPublicHeader(_)).WillOnce(Return(true));
4797 4798
4798 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 4799 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
4799 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 4800 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
4800 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 4801 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
4801 } 4802 }
4802 4803
4803 } // namespace test 4804 } // namespace test
4804 } // namespace net 4805 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_framer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698