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

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

Issue 2359503003: Landing Recent QUIC changes until 9:58 AM, Sep 17, 2016 UTC (Closed)
Patch Set: Reverted flag flip. Created 4 years, 2 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
« no previous file with comments | « net/quic/core/quic_packet_creator.cc ('k') | net/quic/core/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/core/quic_packet_creator.h" 5 #include "net/quic/core/quic_packet_creator.h"
6 6
7 #include <cstdint> 7 #include <cstdint>
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 10
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 EXPECT_EQ(stream_id, frame.stream_frame->stream_id); 169 EXPECT_EQ(stream_id, frame.stream_frame->stream_id);
170 EXPECT_EQ(data, StringPiece(frame.stream_frame->data_buffer, 170 EXPECT_EQ(data, StringPiece(frame.stream_frame->data_buffer,
171 frame.stream_frame->data_length)); 171 frame.stream_frame->data_length));
172 EXPECT_EQ(offset, frame.stream_frame->offset); 172 EXPECT_EQ(offset, frame.stream_frame->offset);
173 EXPECT_EQ(fin, frame.stream_frame->fin); 173 EXPECT_EQ(fin, frame.stream_frame->fin);
174 } 174 }
175 175
176 // Returns the number of bytes consumed by the header of packet, including 176 // Returns the number of bytes consumed by the header of packet, including
177 // the version. 177 // the version.
178 size_t GetPacketHeaderOverhead(QuicVersion version) { 178 size_t GetPacketHeaderOverhead(QuicVersion version) {
179 if (FLAGS_quic_simple_packet_number_length_2) { 179 return GetPacketHeaderSize(
180 return GetPacketHeaderSize( 180 version, creator_.connection_id_length(), kIncludeVersion,
181 version, creator_.connection_id_length(), kIncludeVersion, 181 !kIncludePathId, !kIncludeDiversificationNonce,
182 !kIncludePathId, !kIncludeDiversificationNonce, 182 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
183 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
184 } else {
185 return GetPacketHeaderSize(
186 version, creator_.connection_id_length(), kIncludeVersion,
187 !kIncludePathId, !kIncludeDiversificationNonce,
188 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
189 }
190 } 183 }
191 184
192 // Returns the number of bytes of overhead that will be added to a packet 185 // Returns the number of bytes of overhead that will be added to a packet
193 // of maximum length. 186 // of maximum length.
194 size_t GetEncryptionOverhead() { 187 size_t GetEncryptionOverhead() {
195 return creator_.max_packet_length() - 188 return creator_.max_packet_length() -
196 client_framer_.GetMaxPlaintextSize(creator_.max_packet_length()); 189 client_framer_.GetMaxPlaintextSize(creator_.max_packet_length());
197 } 190 }
198 191
199 // Returns the number of bytes consumed by the non-data fields of a stream 192 // Returns the number of bytes consumed by the non-data fields of a stream
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); 263 EXPECT_CALL(framer_visitor_, OnPacketHeader(_));
271 EXPECT_CALL(framer_visitor_, OnAckFrame(_)); 264 EXPECT_CALL(framer_visitor_, OnAckFrame(_));
272 EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); 265 EXPECT_CALL(framer_visitor_, OnStreamFrame(_));
273 EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); 266 EXPECT_CALL(framer_visitor_, OnStreamFrame(_));
274 EXPECT_CALL(framer_visitor_, OnPacketComplete()); 267 EXPECT_CALL(framer_visitor_, OnPacketComplete());
275 } 268 }
276 ProcessPacket(serialized); 269 ProcessPacket(serialized);
277 } 270 }
278 } 271 }
279 272
280 TEST_P(QuicPacketCreatorTest, SerializeChangingSequenceNumberLength) {
281 FLAGS_quic_simple_packet_number_length_2 = false;
282 frames_.push_back(QuicFrame(new QuicAckFrame(MakeAckFrame(0u))));
283 creator_.AddSavedFrame(frames_[0]);
284 QuicPacketCreatorPeer::SetNextPacketNumberLength(&creator_,
285 PACKET_4BYTE_PACKET_NUMBER);
286
287 EXPECT_CALL(delegate_, OnSerializedPacket(_))
288 .WillRepeatedly(
289 Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket));
290 creator_.Flush();
291 // The packet number length will not change mid-packet.
292 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
293 serialized_packet_.packet_number_length);
294
295 {
296 InSequence s;
297 EXPECT_CALL(framer_visitor_, OnPacket());
298 EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_));
299 EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_));
300 EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_));
301 EXPECT_CALL(framer_visitor_, OnPacketHeader(_));
302 EXPECT_CALL(framer_visitor_, OnAckFrame(_));
303 EXPECT_CALL(framer_visitor_, OnPacketComplete());
304 }
305 ProcessPacket(serialized_packet_);
306 DeleteSerializedPacket();
307
308 creator_.AddSavedFrame(frames_[0]);
309 creator_.Flush();
310 // Now the actual packet number length should have changed.
311 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER,
312 serialized_packet_.packet_number_length);
313 delete frames_[0].ack_frame;
314
315 {
316 InSequence s;
317 EXPECT_CALL(framer_visitor_, OnPacket());
318 EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_));
319 EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_));
320 EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_));
321 EXPECT_CALL(framer_visitor_, OnPacketHeader(_));
322 EXPECT_CALL(framer_visitor_, OnAckFrame(_));
323 EXPECT_CALL(framer_visitor_, OnPacketComplete());
324 }
325 ProcessPacket(serialized_packet_);
326 DeleteSerializedPacket();
327 }
328
329 TEST_P(QuicPacketCreatorTest, ChangeSequenceNumberLengthMidPacket) {
330 FLAGS_quic_simple_packet_number_length_2 = false;
331 // Changing the packet number length with queued frames in the creator
332 // should hold the change until after any currently queued frames are
333 // serialized.
334
335 // Packet 1.
336 // Queue a frame in the creator.
337 EXPECT_FALSE(creator_.HasPendingFrames());
338 QuicFrame ack_frame = QuicFrame(new QuicAckFrame(MakeAckFrame(0u)));
339 creator_.AddSavedFrame(ack_frame);
340
341 // Now change packet number length.
342 QuicPacketCreatorPeer::SetNextPacketNumberLength(&creator_,
343 PACKET_4BYTE_PACKET_NUMBER);
344
345 // Add a STOP_WAITING frame since it contains a packet number,
346 // whose length should be 1.
347 QuicStopWaitingFrame stop_waiting_frame;
348 EXPECT_TRUE(creator_.AddSavedFrame(QuicFrame(&stop_waiting_frame)));
349 EXPECT_TRUE(creator_.HasPendingFrames());
350
351 // Ensure the packet is successfully created.
352 EXPECT_CALL(delegate_, OnSerializedPacket(_))
353 .WillRepeatedly(
354 Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket));
355 creator_.Flush();
356 ASSERT_TRUE(serialized_packet_.encrypted_buffer);
357 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
358 serialized_packet_.packet_number_length);
359
360 // Verify that header in transmitted packet has 1 byte sequence length.
361 QuicPacketHeader header;
362 {
363 InSequence s;
364 EXPECT_CALL(framer_visitor_, OnPacket());
365 EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_));
366 EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_));
367 EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_));
368 EXPECT_CALL(framer_visitor_, OnPacketHeader(_))
369 .WillOnce(DoAll(SaveArg<0>(&header), Return(true)));
370 EXPECT_CALL(framer_visitor_, OnAckFrame(_));
371 EXPECT_CALL(framer_visitor_, OnStopWaitingFrame(_));
372 EXPECT_CALL(framer_visitor_, OnPacketComplete());
373 }
374 ProcessPacket(serialized_packet_);
375 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
376 header.public_header.packet_number_length);
377 DeleteSerializedPacket();
378
379 // Packet 2.
380 EXPECT_FALSE(creator_.HasPendingFrames());
381 // Generate Packet 2 with one frame -- packet number length should now
382 // change to 4 bytes.
383 EXPECT_TRUE(creator_.AddSavedFrame(QuicFrame(&stop_waiting_frame)));
384 EXPECT_TRUE(creator_.HasPendingFrames());
385
386 // Ensure the packet is successfully created.
387 creator_.Flush();
388 ASSERT_TRUE(serialized_packet_.encrypted_buffer);
389 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER,
390 serialized_packet_.packet_number_length);
391
392 // Verify that header in transmitted packet has 4 byte sequence length.
393 {
394 InSequence s;
395 EXPECT_CALL(framer_visitor_, OnPacket());
396 EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_));
397 EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_));
398 EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_));
399 EXPECT_CALL(framer_visitor_, OnPacketHeader(_))
400 .WillOnce(DoAll(SaveArg<0>(&header), Return(true)));
401 EXPECT_CALL(framer_visitor_, OnStopWaitingFrame(_));
402 EXPECT_CALL(framer_visitor_, OnPacketComplete());
403 }
404 ProcessPacket(serialized_packet_);
405 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER,
406 header.public_header.packet_number_length);
407
408 DeleteSerializedPacket();
409 delete ack_frame.ack_frame;
410 }
411
412 TEST_P(QuicPacketCreatorTest, ChangeSequenceNumberLengthMidPacketDoesNothing) {
413 FLAGS_quic_simple_packet_number_length_2 = true;
414 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
415 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
416 // Changing the packet number length with queued frames in the creator
417 // should do nothing.
418 EXPECT_FALSE(creator_.HasPendingFrames());
419 QuicFrame ack_frame = QuicFrame(new QuicAckFrame(MakeAckFrame(0u)));
420 creator_.AddSavedFrame(ack_frame);
421
422 // Now change packet number length and expect a QUIC_BUG and no change in
423 // packet number length.
424 EXPECT_QUIC_BUG(creator_.UpdatePacketNumberLength(0, 256),
425 "Called UpdatePacketNumberLength with 1 queued_frames.");
426 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
427 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
428 delete ack_frame.ack_frame;
429 }
430
431 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithSequenceNumberLength) { 273 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithSequenceNumberLength) {
432 // If the original packet number length, the current packet number 274 // If the original packet number length, the current packet number
433 // length, and the configured send packet number length are different, the 275 // length, and the configured send packet number length are different, the
434 // retransmit must sent with the original length and the others do not change. 276 // retransmit must sent with the original length and the others do not change.
435 if (!FLAGS_quic_simple_packet_number_length_2) {
436 QuicPacketCreatorPeer::SetNextPacketNumberLength(
437 &creator_, PACKET_4BYTE_PACKET_NUMBER);
438 }
439 QuicPacketCreatorPeer::SetPacketNumberLength(&creator_, 277 QuicPacketCreatorPeer::SetPacketNumberLength(&creator_,
440 PACKET_2BYTE_PACKET_NUMBER); 278 PACKET_2BYTE_PACKET_NUMBER);
441 QuicStreamFrame* stream_frame = 279 QuicStreamFrame* stream_frame =
442 new QuicStreamFrame(kCryptoStreamId, /*fin=*/false, 0u, StringPiece()); 280 new QuicStreamFrame(kCryptoStreamId, /*fin=*/false, 0u, StringPiece());
443 QuicFrames frames; 281 QuicFrames frames;
444 frames.push_back(QuicFrame(stream_frame)); 282 frames.push_back(QuicFrame(stream_frame));
445 char buffer[kMaxPacketSize]; 283 char buffer[kMaxPacketSize];
446 PendingRetransmission retransmission(CreateRetransmission( 284 PendingRetransmission retransmission(CreateRetransmission(
447 frames, true /* has_crypto_handshake */, -1 /* needs full padding */, 285 frames, true /* has_crypto_handshake */, -1 /* needs full padding */,
448 ENCRYPTION_NONE, PACKET_1BYTE_PACKET_NUMBER)); 286 ENCRYPTION_NONE, PACKET_1BYTE_PACKET_NUMBER));
449 EXPECT_CALL(delegate_, OnSerializedPacket(_)) 287 EXPECT_CALL(delegate_, OnSerializedPacket(_))
450 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); 288 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket));
451 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); 289 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize);
452 if (FLAGS_quic_simple_packet_number_length_2) { 290 // The packet number length is updated after every packet is sent,
453 // The packet number length is updated after every packet is sent, 291 // so there is no need to restore the old length after sending.
454 // so there is no need to restore the old length after sending. 292 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
455 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, 293 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
456 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
457 } else {
458 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER,
459 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
460 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER,
461 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
462 }
463 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, 294 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
464 serialized_packet_.packet_number_length); 295 serialized_packet_.packet_number_length);
465 296
466 { 297 {
467 InSequence s; 298 InSequence s;
468 EXPECT_CALL(framer_visitor_, OnPacket()); 299 EXPECT_CALL(framer_visitor_, OnPacket());
469 EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); 300 EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_));
470 EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); 301 EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_));
471 EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); 302 EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_));
472 EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); 303 EXPECT_CALL(framer_visitor_, OnPacketHeader(_));
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 372
542 const int kNumPaddingBytes1 = 4; 373 const int kNumPaddingBytes1 = 4;
543 int packet_size = 0; 374 int packet_size = 0;
544 { 375 {
545 QuicFrames frames; 376 QuicFrames frames;
546 frames.push_back(frame); 377 frames.push_back(frame);
547 char buffer[kMaxPacketSize]; 378 char buffer[kMaxPacketSize];
548 PendingRetransmission retransmission(CreateRetransmission( 379 PendingRetransmission retransmission(CreateRetransmission(
549 frames, false /* has_crypto_handshake */, 380 frames, false /* has_crypto_handshake */,
550 kNumPaddingBytes1 /* padding bytes */, ENCRYPTION_NONE, 381 kNumPaddingBytes1 /* padding bytes */, ENCRYPTION_NONE,
551 FLAGS_quic_simple_packet_number_length_2 382 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)));
552 ? QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)
553 : QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)));
554 EXPECT_CALL(delegate_, OnSerializedPacket(_)) 383 EXPECT_CALL(delegate_, OnSerializedPacket(_))
555 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); 384 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket));
556 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); 385 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize);
557 packet_size = serialized_packet_.encrypted_length; 386 packet_size = serialized_packet_.encrypted_length;
558 } 387 }
559 388
560 const int kNumPaddingBytes2 = 44; 389 const int kNumPaddingBytes2 = 44;
561 QuicFrames frames; 390 QuicFrames frames;
562 frames.push_back(frame); 391 frames.push_back(frame);
563 char buffer[kMaxPacketSize]; 392 char buffer[kMaxPacketSize];
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
805 { 634 {
806 InSequence s; 635 InSequence s;
807 EXPECT_CALL(framer_visitor_, OnPacket()); 636 EXPECT_CALL(framer_visitor_, OnPacket());
808 EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); 637 EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_));
809 EXPECT_CALL(framer_visitor_, OnVersionNegotiationPacket(_)); 638 EXPECT_CALL(framer_visitor_, OnVersionNegotiationPacket(_));
810 } 639 }
811 QuicFramerPeer::SetPerspective(&client_framer_, Perspective::IS_CLIENT); 640 QuicFramerPeer::SetPerspective(&client_framer_, Perspective::IS_CLIENT);
812 client_framer_.ProcessPacket(*encrypted); 641 client_framer_.ProcessPacket(*encrypted);
813 } 642 }
814 643
815 TEST_P(QuicPacketCreatorTest, UpdatePacketNumberLengthLeastAwaiting_Old) {
816 FLAGS_quic_simple_packet_number_length_2 = false;
817 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
818 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
819
820 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64);
821 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize);
822 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
823 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
824
825 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256);
826 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize);
827 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER,
828 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
829
830 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256 * 256);
831 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize);
832 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER,
833 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
834
835 QuicPacketCreatorPeer::SetPacketNumber(&creator_,
836 UINT64_C(64) * 256 * 256 * 256 * 256);
837 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize);
838 EXPECT_EQ(PACKET_6BYTE_PACKET_NUMBER,
839 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
840 }
841
842 TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthBandwidth_old) {
843 FLAGS_quic_simple_packet_number_length_2 = false;
844 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
845 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
846
847 creator_.UpdatePacketNumberLength(1, 10000 / kDefaultMaxPacketSize);
848 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
849 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
850
851 creator_.UpdatePacketNumberLength(1, 10000 * 256 / kDefaultMaxPacketSize);
852 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER,
853 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
854
855 creator_.UpdatePacketNumberLength(1,
856 10000 * 256 * 256 / kDefaultMaxPacketSize);
857 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER,
858 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
859
860 creator_.UpdatePacketNumberLength(
861 1, UINT64_C(1000) * 256 * 256 * 256 * 256 / kDefaultMaxPacketSize);
862 EXPECT_EQ(PACKET_6BYTE_PACKET_NUMBER,
863 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
864 }
865
866 TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthLeastAwaiting) { 644 TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthLeastAwaiting) {
867 FLAGS_quic_simple_packet_number_length_2 = true;
868 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, 645 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
869 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); 646 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
870 647
871 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64); 648 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64);
872 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); 649 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize);
873 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, 650 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
874 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); 651 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
875 652
876 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256); 653 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256);
877 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); 654 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize);
878 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, 655 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER,
879 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); 656 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
880 657
881 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256 * 256); 658 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256 * 256);
882 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); 659 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize);
883 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, 660 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER,
884 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); 661 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
885 662
886 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 663 QuicPacketCreatorPeer::SetPacketNumber(&creator_,
887 UINT64_C(64) * 256 * 256 * 256 * 256); 664 UINT64_C(64) * 256 * 256 * 256 * 256);
888 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); 665 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize);
889 EXPECT_EQ(PACKET_6BYTE_PACKET_NUMBER, 666 EXPECT_EQ(PACKET_6BYTE_PACKET_NUMBER,
890 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); 667 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
891 } 668 }
892 669
893 TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthCwnd) { 670 TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthCwnd) {
894 FLAGS_quic_simple_packet_number_length_2 = true;
895 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, 671 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
896 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); 672 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
897 673
898 creator_.UpdatePacketNumberLength(1, 10000 / kDefaultMaxPacketSize); 674 creator_.UpdatePacketNumberLength(1, 10000 / kDefaultMaxPacketSize);
899 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, 675 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
900 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); 676 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
901 677
902 creator_.UpdatePacketNumberLength(1, 10000 * 256 / kDefaultMaxPacketSize); 678 creator_.UpdatePacketNumberLength(1, 10000 * 256 / kDefaultMaxPacketSize);
903 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, 679 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER,
904 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); 680 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
1213 989
1214 // Does not change current path. 990 // Does not change current path.
1215 creator_.SetCurrentPath(kDefaultPathId, 2, 0); 991 creator_.SetCurrentPath(kDefaultPathId, 2, 0);
1216 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); 992 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_));
1217 EXPECT_TRUE(creator_.HasPendingFrames()); 993 EXPECT_TRUE(creator_.HasPendingFrames());
1218 EXPECT_EQ(1u, creator_.packet_number()); 994 EXPECT_EQ(1u, creator_.packet_number());
1219 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, 995 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
1220 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); 996 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
1221 } 997 }
1222 998
1223 TEST_P(QuicPacketCreatorTest,
1224 SetCurrentPathAndUpdatePacketSequenceNumberLength) {
1225 FLAGS_quic_simple_packet_number_length_2 = false;
1226 // Current path is the default path.
1227 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_));
1228 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
1229 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
1230 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
1231 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
1232 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256 - 2);
1233 // Add a stream frame to the creator and send the packet.
1234 QuicFrame frame;
1235 QuicIOVector io_vector(MakeIOVector("test"));
1236 ASSERT_TRUE(creator_.ConsumeData(kCryptoStreamId, io_vector, 0u, 0u, false,
1237 false, &frame));
1238 EXPECT_CALL(delegate_, OnSerializedPacket(_))
1239 .Times(1)
1240 .WillRepeatedly(
1241 Invoke(this, &QuicPacketCreatorTest::ClearSerializedPacket));
1242 creator_.Flush();
1243 EXPECT_EQ(UINT64_C(64 * 256 - 1), creator_.packet_number());
1244 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize);
1245 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER,
1246 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
1247
1248 // Change current path.
1249 QuicPathId kPathId1 = 1;
1250 creator_.SetCurrentPath(kPathId1, 1, 0);
1251 EXPECT_EQ(0u, creator_.packet_number());
1252 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
1253 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
1254
1255 // Change current path back.
1256 creator_.SetCurrentPath(kDefaultPathId, 2, 10000 / kDefaultMaxPacketSize);
1257 EXPECT_EQ(UINT64_C(64 * 256 - 1), creator_.packet_number());
1258 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER,
1259 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
1260 }
1261
1262 TEST_P(QuicPacketCreatorTest, SerializePacketOnDifferentPath) { 999 TEST_P(QuicPacketCreatorTest, SerializePacketOnDifferentPath) {
1263 // Current path is the default path. 1000 // Current path is the default path.
1264 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); 1001 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_));
1265 EXPECT_EQ(0u, creator_.packet_number()); 1002 EXPECT_EQ(0u, creator_.packet_number());
1266 // Add a stream frame to the creator and flush the packet. 1003 // Add a stream frame to the creator and flush the packet.
1267 QuicFrame frame; 1004 QuicFrame frame;
1268 QuicIOVector io_vector(MakeIOVector("test")); 1005 QuicIOVector io_vector(MakeIOVector("test"));
1269 ASSERT_TRUE(creator_.ConsumeData(kCryptoStreamId, io_vector, 0u, 0u, false, 1006 ASSERT_TRUE(creator_.ConsumeData(kCryptoStreamId, io_vector, 0u, 0u, false,
1270 false, &frame)); 1007 false, &frame));
1271 ASSERT_TRUE(frame.stream_frame); 1008 ASSERT_TRUE(frame.stream_frame);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1329 EXPECT_CALL(delegate_, 1066 EXPECT_CALL(delegate_,
1330 OnUnrecoverableError(QUIC_CRYPTO_CHLO_TOO_LARGE, _, _)); 1067 OnUnrecoverableError(QUIC_CRYPTO_CHLO_TOO_LARGE, _, _));
1331 EXPECT_QUIC_BUG(creator_.ConsumeData(kCryptoStreamId, data_iovec, 0u, 0u, 1068 EXPECT_QUIC_BUG(creator_.ConsumeData(kCryptoStreamId, data_iovec, 0u, 0u,
1332 false, false, &frame), 1069 false, false, &frame),
1333 "Client hello won't fit in a single packet."); 1070 "Client hello won't fit in a single packet.");
1334 } 1071 }
1335 1072
1336 } // namespace 1073 } // namespace
1337 } // namespace test 1074 } // namespace test
1338 } // namespace net 1075 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/quic_packet_creator.cc ('k') | net/quic/core/quic_packet_generator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698