OLD | NEW |
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 <cstdint> | 7 #include <cstdint> |
8 #include <memory> | 8 #include <memory> |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 EXPECT_EQ(stream_id, frame.stream_frame->stream_id); | 172 EXPECT_EQ(stream_id, frame.stream_frame->stream_id); |
173 EXPECT_EQ(data, StringPiece(frame.stream_frame->data_buffer, | 173 EXPECT_EQ(data, StringPiece(frame.stream_frame->data_buffer, |
174 frame.stream_frame->data_length)); | 174 frame.stream_frame->data_length)); |
175 EXPECT_EQ(offset, frame.stream_frame->offset); | 175 EXPECT_EQ(offset, frame.stream_frame->offset); |
176 EXPECT_EQ(fin, frame.stream_frame->fin); | 176 EXPECT_EQ(fin, frame.stream_frame->fin); |
177 } | 177 } |
178 | 178 |
179 // Returns the number of bytes consumed by the header of packet, including | 179 // Returns the number of bytes consumed by the header of packet, including |
180 // the version. | 180 // the version. |
181 size_t GetPacketHeaderOverhead(QuicVersion version) { | 181 size_t GetPacketHeaderOverhead(QuicVersion version) { |
182 return GetPacketHeaderSize( | 182 if (FLAGS_quic_simple_packet_number_length) { |
183 version, creator_.connection_id_length(), kIncludeVersion, | 183 return GetPacketHeaderSize( |
184 !kIncludePathId, !kIncludeDiversificationNonce, | 184 version, creator_.connection_id_length(), kIncludeVersion, |
185 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 185 !kIncludePathId, !kIncludeDiversificationNonce, |
| 186 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 187 } else { |
| 188 return GetPacketHeaderSize( |
| 189 version, creator_.connection_id_length(), kIncludeVersion, |
| 190 !kIncludePathId, !kIncludeDiversificationNonce, |
| 191 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
| 192 } |
186 } | 193 } |
187 | 194 |
188 // Returns the number of bytes of overhead that will be added to a packet | 195 // Returns the number of bytes of overhead that will be added to a packet |
189 // of maximum length. | 196 // of maximum length. |
190 size_t GetEncryptionOverhead() { | 197 size_t GetEncryptionOverhead() { |
191 return creator_.max_packet_length() - | 198 return creator_.max_packet_length() - |
192 client_framer_.GetMaxPlaintextSize(creator_.max_packet_length()); | 199 client_framer_.GetMaxPlaintextSize(creator_.max_packet_length()); |
193 } | 200 } |
194 | 201 |
195 // Returns the number of bytes consumed by the non-data fields of a stream | 202 // 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 Loading... |
266 EXPECT_CALL(framer_visitor_, OnAckFrame(_)); | 273 EXPECT_CALL(framer_visitor_, OnAckFrame(_)); |
267 EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); | 274 EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); |
268 EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); | 275 EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); |
269 EXPECT_CALL(framer_visitor_, OnPacketComplete()); | 276 EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
270 } | 277 } |
271 ProcessPacket(serialized); | 278 ProcessPacket(serialized); |
272 } | 279 } |
273 } | 280 } |
274 | 281 |
275 TEST_P(QuicPacketCreatorTest, SerializeChangingSequenceNumberLength) { | 282 TEST_P(QuicPacketCreatorTest, SerializeChangingSequenceNumberLength) { |
| 283 FLAGS_quic_simple_packet_number_length = false; |
276 frames_.push_back(QuicFrame(new QuicAckFrame(MakeAckFrame(0u)))); | 284 frames_.push_back(QuicFrame(new QuicAckFrame(MakeAckFrame(0u)))); |
277 creator_.AddSavedFrame(frames_[0]); | 285 creator_.AddSavedFrame(frames_[0]); |
278 QuicPacketCreatorPeer::SetNextPacketNumberLength(&creator_, | 286 QuicPacketCreatorPeer::SetNextPacketNumberLength(&creator_, |
279 PACKET_4BYTE_PACKET_NUMBER); | 287 PACKET_4BYTE_PACKET_NUMBER); |
280 | 288 |
281 EXPECT_CALL(delegate_, OnSerializedPacket(_)) | 289 EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
282 .WillRepeatedly( | 290 .WillRepeatedly( |
283 Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); | 291 Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); |
284 creator_.Flush(); | 292 creator_.Flush(); |
285 // The packet number length will not change mid-packet. | 293 // The packet number length will not change mid-packet. |
(...skipping 28 matching lines...) Expand all Loading... |
314 EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); | 322 EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); |
315 EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); | 323 EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); |
316 EXPECT_CALL(framer_visitor_, OnAckFrame(_)); | 324 EXPECT_CALL(framer_visitor_, OnAckFrame(_)); |
317 EXPECT_CALL(framer_visitor_, OnPacketComplete()); | 325 EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
318 } | 326 } |
319 ProcessPacket(serialized_packet_); | 327 ProcessPacket(serialized_packet_); |
320 DeleteSerializedPacket(); | 328 DeleteSerializedPacket(); |
321 } | 329 } |
322 | 330 |
323 TEST_P(QuicPacketCreatorTest, ChangeSequenceNumberLengthMidPacket) { | 331 TEST_P(QuicPacketCreatorTest, ChangeSequenceNumberLengthMidPacket) { |
| 332 FLAGS_quic_simple_packet_number_length = false; |
324 // Changing the packet number length with queued frames in the creator | 333 // Changing the packet number length with queued frames in the creator |
325 // should hold the change until after any currently queued frames are | 334 // should hold the change until after any currently queued frames are |
326 // serialized. | 335 // serialized. |
327 | 336 |
328 // Packet 1. | 337 // Packet 1. |
329 // Queue a frame in the creator. | 338 // Queue a frame in the creator. |
330 EXPECT_FALSE(creator_.HasPendingFrames()); | 339 EXPECT_FALSE(creator_.HasPendingFrames()); |
331 QuicFrame ack_frame = QuicFrame(new QuicAckFrame(MakeAckFrame(0u))); | 340 QuicFrame ack_frame = QuicFrame(new QuicAckFrame(MakeAckFrame(0u))); |
332 creator_.AddSavedFrame(ack_frame); | 341 creator_.AddSavedFrame(ack_frame); |
333 | 342 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
395 EXPECT_CALL(framer_visitor_, OnPacketComplete()); | 404 EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
396 } | 405 } |
397 ProcessPacket(serialized_packet_); | 406 ProcessPacket(serialized_packet_); |
398 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, | 407 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, |
399 header.public_header.packet_number_length); | 408 header.public_header.packet_number_length); |
400 | 409 |
401 DeleteSerializedPacket(); | 410 DeleteSerializedPacket(); |
402 delete ack_frame.ack_frame; | 411 delete ack_frame.ack_frame; |
403 } | 412 } |
404 | 413 |
| 414 TEST_P(QuicPacketCreatorTest, ChangeSequenceNumberLengthMidPacketDoesNothing) { |
| 415 FLAGS_quic_simple_packet_number_length = true; |
| 416 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
| 417 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 418 // Changing the packet number length with queued frames in the creator |
| 419 // should do nothing. |
| 420 EXPECT_FALSE(creator_.HasPendingFrames()); |
| 421 QuicFrame ack_frame = QuicFrame(new QuicAckFrame(MakeAckFrame(0u))); |
| 422 creator_.AddSavedFrame(ack_frame); |
| 423 |
| 424 // Now change packet number length and expect a QUIC_BUG and no change in |
| 425 // packet number length. |
| 426 EXPECT_DFATAL(creator_.UpdatePacketNumberLength(0, 256), |
| 427 "Called UpdatePacketNumberLength with 1 queued_frames."); |
| 428 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
| 429 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 430 delete ack_frame.ack_frame; |
| 431 } |
| 432 |
405 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithSequenceNumberLength) { | 433 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithSequenceNumberLength) { |
406 // If the original packet number length, the current packet number | 434 // If the original packet number length, the current packet number |
407 // length, and the configured send packet number length are different, the | 435 // length, and the configured send packet number length are different, the |
408 // retransmit must sent with the original length and the others do not change. | 436 // retransmit must sent with the original length and the others do not change. |
409 QuicPacketCreatorPeer::SetNextPacketNumberLength(&creator_, | 437 if (!FLAGS_quic_simple_packet_number_length) { |
410 PACKET_4BYTE_PACKET_NUMBER); | 438 QuicPacketCreatorPeer::SetNextPacketNumberLength( |
| 439 &creator_, PACKET_4BYTE_PACKET_NUMBER); |
| 440 } |
411 QuicPacketCreatorPeer::SetPacketNumberLength(&creator_, | 441 QuicPacketCreatorPeer::SetPacketNumberLength(&creator_, |
412 PACKET_2BYTE_PACKET_NUMBER); | 442 PACKET_2BYTE_PACKET_NUMBER); |
413 QuicStreamFrame* stream_frame = | 443 QuicStreamFrame* stream_frame = |
414 new QuicStreamFrame(kCryptoStreamId, /*fin=*/false, 0u, StringPiece()); | 444 new QuicStreamFrame(kCryptoStreamId, /*fin=*/false, 0u, StringPiece()); |
415 QuicFrames frames; | 445 QuicFrames frames; |
416 frames.push_back(QuicFrame(stream_frame)); | 446 frames.push_back(QuicFrame(stream_frame)); |
417 char buffer[kMaxPacketSize]; | 447 char buffer[kMaxPacketSize]; |
418 PendingRetransmission retransmission(CreateRetransmission( | 448 PendingRetransmission retransmission(CreateRetransmission( |
419 frames, true /* has_crypto_handshake */, -1 /* needs full padding */, | 449 frames, true /* has_crypto_handshake */, -1 /* needs full padding */, |
420 ENCRYPTION_NONE, PACKET_1BYTE_PACKET_NUMBER)); | 450 ENCRYPTION_NONE, PACKET_1BYTE_PACKET_NUMBER)); |
421 EXPECT_CALL(delegate_, OnSerializedPacket(_)) | 451 EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
422 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); | 452 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); |
423 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); | 453 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); |
424 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, | 454 if (FLAGS_quic_simple_packet_number_length) { |
425 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 455 // The packet number length is updated after every packet is sent, |
426 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, | 456 // so there is no need to restore the old length after sending. |
427 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); | 457 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
| 458 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 459 } else { |
| 460 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, |
| 461 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
| 462 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, |
| 463 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 464 } |
428 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 465 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
429 serialized_packet_.packet_number_length); | 466 serialized_packet_.packet_number_length); |
430 | 467 |
431 { | 468 { |
432 InSequence s; | 469 InSequence s; |
433 EXPECT_CALL(framer_visitor_, OnPacket()); | 470 EXPECT_CALL(framer_visitor_, OnPacket()); |
434 EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); | 471 EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); |
435 EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); | 472 EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); |
436 EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); | 473 EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); |
437 EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); | 474 EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
506 | 543 |
507 const int kNumPaddingBytes1 = 4; | 544 const int kNumPaddingBytes1 = 4; |
508 int packet_size = 0; | 545 int packet_size = 0; |
509 { | 546 { |
510 QuicFrames frames; | 547 QuicFrames frames; |
511 frames.push_back(frame); | 548 frames.push_back(frame); |
512 char buffer[kMaxPacketSize]; | 549 char buffer[kMaxPacketSize]; |
513 PendingRetransmission retransmission(CreateRetransmission( | 550 PendingRetransmission retransmission(CreateRetransmission( |
514 frames, false /* has_crypto_handshake */, | 551 frames, false /* has_crypto_handshake */, |
515 kNumPaddingBytes1 /* padding bytes */, ENCRYPTION_NONE, | 552 kNumPaddingBytes1 /* padding bytes */, ENCRYPTION_NONE, |
516 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_))); | 553 FLAGS_quic_simple_packet_number_length |
| 554 ? QuicPacketCreatorPeer::GetPacketNumberLength(&creator_) |
| 555 : QuicPacketCreatorPeer::NextPacketNumberLength(&creator_))); |
517 EXPECT_CALL(delegate_, OnSerializedPacket(_)) | 556 EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
518 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); | 557 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); |
519 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); | 558 creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); |
520 packet_size = serialized_packet_.encrypted_length; | 559 packet_size = serialized_packet_.encrypted_length; |
521 } | 560 } |
522 | 561 |
523 const int kNumPaddingBytes2 = 44; | 562 const int kNumPaddingBytes2 = 44; |
524 QuicFrames frames; | 563 QuicFrames frames; |
525 frames.push_back(frame); | 564 frames.push_back(frame); |
526 char buffer[kMaxPacketSize]; | 565 char buffer[kMaxPacketSize]; |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
765 { | 804 { |
766 InSequence s; | 805 InSequence s; |
767 EXPECT_CALL(framer_visitor_, OnPacket()); | 806 EXPECT_CALL(framer_visitor_, OnPacket()); |
768 EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); | 807 EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); |
769 EXPECT_CALL(framer_visitor_, OnVersionNegotiationPacket(_)); | 808 EXPECT_CALL(framer_visitor_, OnVersionNegotiationPacket(_)); |
770 } | 809 } |
771 QuicFramerPeer::SetPerspective(&client_framer_, Perspective::IS_CLIENT); | 810 QuicFramerPeer::SetPerspective(&client_framer_, Perspective::IS_CLIENT); |
772 client_framer_.ProcessPacket(*encrypted); | 811 client_framer_.ProcessPacket(*encrypted); |
773 } | 812 } |
774 | 813 |
775 TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthLeastAwaiting) { | 814 TEST_P(QuicPacketCreatorTest, UpdatePacketNumberLengthLeastAwaiting_Old) { |
| 815 FLAGS_quic_simple_packet_number_length = false; |
776 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 816 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
777 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 817 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
778 | 818 |
779 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64); | 819 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64); |
780 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); | 820 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); |
781 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 821 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
782 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 822 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
783 | 823 |
784 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256); | 824 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256); |
785 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); | 825 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); |
786 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, | 826 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, |
787 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 827 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
788 | 828 |
789 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256 * 256); | 829 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256 * 256); |
790 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); | 830 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); |
791 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, | 831 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, |
792 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 832 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
793 | 833 |
794 QuicPacketCreatorPeer::SetPacketNumber(&creator_, | 834 QuicPacketCreatorPeer::SetPacketNumber(&creator_, |
795 UINT64_C(64) * 256 * 256 * 256 * 256); | 835 UINT64_C(64) * 256 * 256 * 256 * 256); |
796 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); | 836 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); |
797 EXPECT_EQ(PACKET_6BYTE_PACKET_NUMBER, | 837 EXPECT_EQ(PACKET_6BYTE_PACKET_NUMBER, |
798 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 838 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
799 } | 839 } |
800 | 840 |
801 TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthBandwidth) { | 841 TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthBandwidth_old) { |
| 842 FLAGS_quic_simple_packet_number_length = false; |
802 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 843 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
803 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 844 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
804 | 845 |
805 creator_.UpdatePacketNumberLength(1, 10000 / kDefaultMaxPacketSize); | 846 creator_.UpdatePacketNumberLength(1, 10000 / kDefaultMaxPacketSize); |
806 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 847 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
807 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 848 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
808 | 849 |
809 creator_.UpdatePacketNumberLength(1, 10000 * 256 / kDefaultMaxPacketSize); | 850 creator_.UpdatePacketNumberLength(1, 10000 * 256 / kDefaultMaxPacketSize); |
810 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, | 851 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, |
811 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 852 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
812 | 853 |
813 creator_.UpdatePacketNumberLength(1, | 854 creator_.UpdatePacketNumberLength(1, |
814 10000 * 256 * 256 / kDefaultMaxPacketSize); | 855 10000 * 256 * 256 / kDefaultMaxPacketSize); |
815 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, | 856 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, |
816 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 857 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
817 | 858 |
818 creator_.UpdatePacketNumberLength( | 859 creator_.UpdatePacketNumberLength( |
819 1, UINT64_C(1000) * 256 * 256 * 256 * 256 / kDefaultMaxPacketSize); | 860 1, UINT64_C(1000) * 256 * 256 * 256 * 256 / kDefaultMaxPacketSize); |
820 EXPECT_EQ(PACKET_6BYTE_PACKET_NUMBER, | 861 EXPECT_EQ(PACKET_6BYTE_PACKET_NUMBER, |
821 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 862 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
822 } | 863 } |
823 | 864 |
| 865 TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthLeastAwaiting) { |
| 866 FLAGS_quic_simple_packet_number_length = true; |
| 867 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
| 868 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 869 |
| 870 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64); |
| 871 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); |
| 872 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
| 873 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 874 |
| 875 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256); |
| 876 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); |
| 877 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, |
| 878 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 879 |
| 880 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256 * 256); |
| 881 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); |
| 882 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, |
| 883 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 884 |
| 885 QuicPacketCreatorPeer::SetPacketNumber(&creator_, |
| 886 UINT64_C(64) * 256 * 256 * 256 * 256); |
| 887 creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize); |
| 888 EXPECT_EQ(PACKET_6BYTE_PACKET_NUMBER, |
| 889 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 890 } |
| 891 |
| 892 TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthCwnd) { |
| 893 FLAGS_quic_simple_packet_number_length = true; |
| 894 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
| 895 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 896 |
| 897 creator_.UpdatePacketNumberLength(1, 10000 / kDefaultMaxPacketSize); |
| 898 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
| 899 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 900 |
| 901 creator_.UpdatePacketNumberLength(1, 10000 * 256 / kDefaultMaxPacketSize); |
| 902 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, |
| 903 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 904 |
| 905 creator_.UpdatePacketNumberLength(1, |
| 906 10000 * 256 * 256 / kDefaultMaxPacketSize); |
| 907 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, |
| 908 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 909 |
| 910 creator_.UpdatePacketNumberLength( |
| 911 1, UINT64_C(1000) * 256 * 256 * 256 * 256 / kDefaultMaxPacketSize); |
| 912 EXPECT_EQ(PACKET_6BYTE_PACKET_NUMBER, |
| 913 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
| 914 } |
| 915 |
824 TEST_P(QuicPacketCreatorTest, SerializeFrame) { | 916 TEST_P(QuicPacketCreatorTest, SerializeFrame) { |
825 if (!GetParam().version_serialization) { | 917 if (!GetParam().version_serialization) { |
826 creator_.StopSendingVersion(); | 918 creator_.StopSendingVersion(); |
827 } | 919 } |
828 frames_.push_back( | 920 frames_.push_back( |
829 QuicFrame(new QuicStreamFrame(0u, false, 0u, StringPiece()))); | 921 QuicFrame(new QuicStreamFrame(0u, false, 0u, StringPiece()))); |
830 SerializedPacket serialized = SerializeAllFrames(frames_); | 922 SerializedPacket serialized = SerializeAllFrames(frames_); |
831 delete frames_[0].stream_frame; | 923 delete frames_[0].stream_frame; |
832 | 924 |
833 QuicPacketHeader header; | 925 QuicPacketHeader header; |
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1122 creator_.SetCurrentPath(kDefaultPathId, 2, 0); | 1214 creator_.SetCurrentPath(kDefaultPathId, 2, 0); |
1123 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); | 1215 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); |
1124 EXPECT_TRUE(creator_.HasPendingFrames()); | 1216 EXPECT_TRUE(creator_.HasPendingFrames()); |
1125 EXPECT_EQ(1u, creator_.packet_number()); | 1217 EXPECT_EQ(1u, creator_.packet_number()); |
1126 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 1218 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
1127 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); | 1219 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
1128 } | 1220 } |
1129 | 1221 |
1130 TEST_P(QuicPacketCreatorTest, | 1222 TEST_P(QuicPacketCreatorTest, |
1131 SetCurrentPathAndUpdatePacketSequenceNumberLength) { | 1223 SetCurrentPathAndUpdatePacketSequenceNumberLength) { |
| 1224 FLAGS_quic_simple_packet_number_length = false; |
1132 // Current path is the default path. | 1225 // Current path is the default path. |
1133 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); | 1226 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); |
1134 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 1227 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
1135 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); | 1228 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); |
1136 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, | 1229 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
1137 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); | 1230 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); |
1138 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256 - 2); | 1231 QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256 - 2); |
1139 // Add a stream frame to the creator and send the packet. | 1232 // Add a stream frame to the creator and send the packet. |
1140 QuicFrame frame; | 1233 QuicFrame frame; |
1141 QuicIOVector io_vector(MakeIOVector("test")); | 1234 QuicIOVector io_vector(MakeIOVector("test")); |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1235 EXPECT_CALL(delegate_, | 1328 EXPECT_CALL(delegate_, |
1236 OnUnrecoverableError(QUIC_CRYPTO_CHLO_TOO_LARGE, _, _)); | 1329 OnUnrecoverableError(QUIC_CRYPTO_CHLO_TOO_LARGE, _, _)); |
1237 EXPECT_DFATAL( | 1330 EXPECT_DFATAL( |
1238 creator_.ConsumeData(1u, data_iovec, 0u, 0u, false, false, &frame), | 1331 creator_.ConsumeData(1u, data_iovec, 0u, 0u, false, false, &frame), |
1239 "Client hello won't fit in a single packet."); | 1332 "Client hello won't fit in a single packet."); |
1240 } | 1333 } |
1241 | 1334 |
1242 } // namespace | 1335 } // namespace |
1243 } // namespace test | 1336 } // namespace test |
1244 } // namespace net | 1337 } // namespace net |
OLD | NEW |