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

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

Issue 327393002: Land Recent QUIC Changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix compile error Created 6 years, 6 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_packet_creator.cc ('k') | net/quic/quic_packet_generator.h » ('j') | 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_packet_creator.h" 5 #include "net/quic/quic_packet_creator.h"
6 6
7 #include "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "net/quic/crypto/null_encrypter.h" 8 #include "net/quic/crypto/null_encrypter.h"
9 #include "net/quic/crypto/quic_decrypter.h" 9 #include "net/quic/crypto/quic_decrypter.h"
10 #include "net/quic/crypto/quic_encrypter.h" 10 #include "net/quic/crypto/quic_encrypter.h"
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 client_framer_(SupportedVersions(GetParam().version), QuicTime::Zero(), 66 client_framer_(SupportedVersions(GetParam().version), QuicTime::Zero(),
67 false), 67 false),
68 sequence_number_(0), 68 sequence_number_(0),
69 connection_id_(2), 69 connection_id_(2),
70 data_("foo"), 70 data_("foo"),
71 creator_(connection_id_, &client_framer_, &mock_random_, false) { 71 creator_(connection_id_, &client_framer_, &mock_random_, false) {
72 client_framer_.set_visitor(&framer_visitor_); 72 client_framer_.set_visitor(&framer_visitor_);
73 client_framer_.set_received_entropy_calculator(&entropy_calculator_); 73 client_framer_.set_received_entropy_calculator(&entropy_calculator_);
74 server_framer_.set_visitor(&framer_visitor_); 74 server_framer_.set_visitor(&framer_visitor_);
75 } 75 }
76 ~QuicPacketCreatorTest() { 76
77 virtual ~QuicPacketCreatorTest() OVERRIDE {
77 } 78 }
78 79
79 void ProcessPacket(QuicPacket* packet) { 80 void ProcessPacket(QuicPacket* packet) {
80 scoped_ptr<QuicEncryptedPacket> encrypted( 81 scoped_ptr<QuicEncryptedPacket> encrypted(
81 server_framer_.EncryptPacket(ENCRYPTION_NONE, sequence_number_, 82 server_framer_.EncryptPacket(ENCRYPTION_NONE, sequence_number_,
82 *packet)); 83 *packet));
83 server_framer_.ProcessPacket(*encrypted); 84 server_framer_.ProcessPacket(*encrypted);
84 } 85 }
85 86
86 void CheckStreamFrame(const QuicFrame& frame, 87 void CheckStreamFrame(const QuicFrame& frame,
(...skipping 26 matching lines...) Expand all
113 creator_.max_packet_length()); 114 creator_.max_packet_length());
114 } 115 }
115 116
116 // Returns the number of bytes consumed by the non-data fields of a stream 117 // Returns the number of bytes consumed by the non-data fields of a stream
117 // frame, assuming it is the last frame in the packet 118 // frame, assuming it is the last frame in the packet
118 size_t GetStreamFrameOverhead(InFecGroup is_in_fec_group) { 119 size_t GetStreamFrameOverhead(InFecGroup is_in_fec_group) {
119 return QuicFramer::GetMinStreamFrameSize(client_framer_.version(), 120 return QuicFramer::GetMinStreamFrameSize(client_framer_.version(),
120 kClientDataStreamId1, kOffset, 121 kClientDataStreamId1, kOffset,
121 true, is_in_fec_group); 122 true, is_in_fec_group);
122 } 123 }
124
125 // Enables and turns on FEC protection. Returns true if FEC protection is on.
126 bool SwitchFecProtectionOn(size_t max_packets_per_fec_group) {
127 creator_.set_max_packets_per_fec_group(max_packets_per_fec_group);
128 creator_.StartFecProtectingPackets();
129 return creator_.IsFecProtected();
130 }
131
123 static const QuicStreamOffset kOffset = 1u; 132 static const QuicStreamOffset kOffset = 1u;
124 133
125 QuicFrames frames_; 134 QuicFrames frames_;
126 QuicFramer server_framer_; 135 QuicFramer server_framer_;
127 QuicFramer client_framer_; 136 QuicFramer client_framer_;
128 testing::StrictMock<MockFramerVisitor> framer_visitor_; 137 testing::StrictMock<MockFramerVisitor> framer_visitor_;
129 QuicPacketSequenceNumber sequence_number_; 138 QuicPacketSequenceNumber sequence_number_;
130 QuicConnectionId connection_id_; 139 QuicConnectionId connection_id_;
131 string data_; 140 string data_;
132 MockRandom mock_random_; 141 MockRandom mock_random_;
(...skipping 27 matching lines...) Expand all
160 EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); 169 EXPECT_CALL(framer_visitor_, OnStreamFrame(_));
161 EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); 170 EXPECT_CALL(framer_visitor_, OnStreamFrame(_));
162 EXPECT_CALL(framer_visitor_, OnPacketComplete()); 171 EXPECT_CALL(framer_visitor_, OnPacketComplete());
163 } 172 }
164 ProcessPacket(serialized.packet); 173 ProcessPacket(serialized.packet);
165 delete serialized.packet; 174 delete serialized.packet;
166 } 175 }
167 176
168 TEST_P(QuicPacketCreatorTest, SerializeWithFEC) { 177 TEST_P(QuicPacketCreatorTest, SerializeWithFEC) {
169 // Enable FEC protection, and send FEC packet every 6 packets. 178 // Enable FEC protection, and send FEC packet every 6 packets.
170 EXPECT_TRUE(QuicPacketCreatorPeer::SwitchFecProtectionOn(&creator_, 6)); 179 EXPECT_TRUE(SwitchFecProtectionOn(6));
171 // Should return false since we do not have enough packets in the FEC group to 180 // Should return false since we do not have enough packets in the FEC group to
172 // trigger an FEC packet. 181 // trigger an FEC packet.
173 ASSERT_FALSE(creator_.ShouldSendFec(/*force_close=*/false)); 182 ASSERT_FALSE(creator_.ShouldSendFec(/*force_close=*/false));
174 183
175 frames_.push_back(QuicFrame(new QuicStreamFrame(0u, false, 0u, IOVector()))); 184 frames_.push_back(QuicFrame(new QuicStreamFrame(0u, false, 0u, IOVector())));
176 SerializedPacket serialized = creator_.SerializeAllFrames(frames_); 185 SerializedPacket serialized = creator_.SerializeAllFrames(frames_);
177 delete frames_[0].stream_frame; 186 delete frames_[0].stream_frame;
178 187
179 { 188 {
180 InSequence s; 189 InSequence s;
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 delete ack_frame.ack_frame; 341 delete ack_frame.ack_frame;
333 } 342 }
334 343
335 TEST_P(QuicPacketCreatorTest, SerializeWithFECChangingSequenceNumberLength) { 344 TEST_P(QuicPacketCreatorTest, SerializeWithFECChangingSequenceNumberLength) {
336 // Test goal is to test the following sequence (P1 => generate Packet 1): 345 // Test goal is to test the following sequence (P1 => generate Packet 1):
337 // P1 <change seq num length> P2 FEC, 346 // P1 <change seq num length> P2 FEC,
338 // and we expect that sequence number length should not change until the end 347 // and we expect that sequence number length should not change until the end
339 // of the open FEC group. 348 // of the open FEC group.
340 349
341 // Enable FEC protection, and send FEC packet every 6 packets. 350 // Enable FEC protection, and send FEC packet every 6 packets.
342 EXPECT_TRUE(QuicPacketCreatorPeer::SwitchFecProtectionOn(&creator_, 6)); 351 EXPECT_TRUE(SwitchFecProtectionOn(6));
343 // Should return false since we do not have enough packets in the FEC group to 352 // Should return false since we do not have enough packets in the FEC group to
344 // trigger an FEC packet. 353 // trigger an FEC packet.
345 ASSERT_FALSE(creator_.ShouldSendFec(/*force_close=*/false)); 354 ASSERT_FALSE(creator_.ShouldSendFec(/*force_close=*/false));
346 frames_.push_back(QuicFrame(new QuicAckFrame(MakeAckFrame(0u, 0u)))); 355 frames_.push_back(QuicFrame(new QuicAckFrame(MakeAckFrame(0u, 0u))));
347 356
348 // Generate Packet 1. 357 // Generate Packet 1.
349 creator_.AddSavedFrame(frames_[0]); 358 creator_.AddSavedFrame(frames_[0]);
350 // Change the sequence number length mid-FEC group and it should not change. 359 // Change the sequence number length mid-FEC group and it should not change.
351 creator_.set_next_sequence_number_length(PACKET_4BYTE_SEQUENCE_NUMBER); 360 creator_.set_next_sequence_number_length(PACKET_4BYTE_SEQUENCE_NUMBER);
352 SerializedPacket serialized = creator_.SerializePacket(); 361 SerializedPacket serialized = creator_.SerializePacket();
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 // We have no packets in the FEC group, so no FEC packet can be created. 490 // We have no packets in the FEC group, so no FEC packet can be created.
482 EXPECT_FALSE(creator_.ShouldSendFec(/*force_close=*/true)); 491 EXPECT_FALSE(creator_.ShouldSendFec(/*force_close=*/true));
483 // Since no packets are in FEC group yet, we should be able to turn FEC 492 // Since no packets are in FEC group yet, we should be able to turn FEC
484 // off with no trouble. 493 // off with no trouble.
485 creator_.StopFecProtectingPackets(); 494 creator_.StopFecProtectingPackets();
486 EXPECT_FALSE(creator_.IsFecProtected()); 495 EXPECT_FALSE(creator_.IsFecProtected());
487 } 496 }
488 497
489 TEST_P(QuicPacketCreatorTest, SwitchFecOnOffWithGroupInProgress) { 498 TEST_P(QuicPacketCreatorTest, SwitchFecOnOffWithGroupInProgress) {
490 // Enable FEC protection, and send FEC packet every 6 packets. 499 // Enable FEC protection, and send FEC packet every 6 packets.
491 EXPECT_TRUE(QuicPacketCreatorPeer::SwitchFecProtectionOn(&creator_, 6)); 500 EXPECT_TRUE(SwitchFecProtectionOn(6));
492 frames_.push_back(QuicFrame(new QuicStreamFrame(0u, false, 0u, IOVector()))); 501 frames_.push_back(QuicFrame(new QuicStreamFrame(0u, false, 0u, IOVector())));
493 SerializedPacket serialized = creator_.SerializeAllFrames(frames_); 502 SerializedPacket serialized = creator_.SerializeAllFrames(frames_);
494 delete frames_[0].stream_frame; 503 delete frames_[0].stream_frame;
495 delete serialized.packet; 504 delete serialized.packet;
496 505
497 EXPECT_TRUE(creator_.IsFecProtected()); 506 EXPECT_TRUE(creator_.IsFecProtected());
498 // We do not have enough packets in the FEC group to trigger an FEC packet. 507 // We do not have enough packets in the FEC group to trigger an FEC packet.
499 EXPECT_FALSE(creator_.ShouldSendFec(/*force_close=*/false)); 508 EXPECT_FALSE(creator_.ShouldSendFec(/*force_close=*/false));
500 // Should return true since there are packets in the FEC group. 509 // Should return true since there are packets in the FEC group.
501 EXPECT_TRUE(creator_.ShouldSendFec(/*force_close=*/true)); 510 EXPECT_TRUE(creator_.ShouldSendFec(/*force_close=*/true));
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
619 EXPECT_EQ(expected_bytes_free, creator_.BytesFree()) << "delta: " << delta; 628 EXPECT_EQ(expected_bytes_free, creator_.BytesFree()) << "delta: " << delta;
620 SerializedPacket serialized_packet = creator_.SerializePacket(); 629 SerializedPacket serialized_packet = creator_.SerializePacket();
621 ASSERT_TRUE(serialized_packet.packet); 630 ASSERT_TRUE(serialized_packet.packet);
622 delete serialized_packet.packet; 631 delete serialized_packet.packet;
623 delete serialized_packet.retransmittable_frames; 632 delete serialized_packet.retransmittable_frames;
624 } 633 }
625 } 634 }
626 635
627 TEST_P(QuicPacketCreatorTest, StreamFrameConsumptionWithFec) { 636 TEST_P(QuicPacketCreatorTest, StreamFrameConsumptionWithFec) {
628 // Enable FEC protection, and send FEC packet every 6 packets. 637 // Enable FEC protection, and send FEC packet every 6 packets.
629 EXPECT_TRUE(QuicPacketCreatorPeer::SwitchFecProtectionOn(&creator_, 6)); 638 EXPECT_TRUE(SwitchFecProtectionOn(6));
630 // Compute the total overhead for a single frame in packet. 639 // Compute the total overhead for a single frame in packet.
631 const size_t overhead = GetPacketHeaderOverhead(IN_FEC_GROUP) 640 const size_t overhead = GetPacketHeaderOverhead(IN_FEC_GROUP)
632 + GetEncryptionOverhead() + GetStreamFrameOverhead(IN_FEC_GROUP); 641 + GetEncryptionOverhead() + GetStreamFrameOverhead(IN_FEC_GROUP);
633 size_t capacity = kDefaultMaxPacketSize - overhead; 642 size_t capacity = kDefaultMaxPacketSize - overhead;
634 // Now, test various sizes around this size. 643 // Now, test various sizes around this size.
635 for (int delta = -5; delta <= 5; ++delta) { 644 for (int delta = -5; delta <= 5; ++delta) {
636 string data(capacity + delta, 'A'); 645 string data(capacity + delta, 'A');
637 size_t bytes_free = delta > 0 ? 0 : 0 - delta; 646 size_t bytes_free = delta > 0 ? 0 : 0 - delta;
638 QuicFrame frame; 647 QuicFrame frame;
639 size_t bytes_consumed = creator_.CreateStreamFrame( 648 size_t bytes_consumed = creator_.CreateStreamFrame(
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 // After 64 calls, BoolSource will refresh the bucket - make sure it does. 1010 // After 64 calls, BoolSource will refresh the bucket - make sure it does.
1002 mock_random_.ChangeValue(); 1011 mock_random_.ChangeValue();
1003 } 1012 }
1004 1013
1005 delete frames_[0].stream_frame; 1014 delete frames_[0].stream_frame;
1006 } 1015 }
1007 1016
1008 } // namespace 1017 } // namespace
1009 } // namespace test 1018 } // namespace test
1010 } // namespace net 1019 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_packet_creator.cc ('k') | net/quic/quic_packet_generator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698