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/test_tools/quic_test_utils.h" | 5 #include "net/quic/test_tools/quic_test_utils.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
10 #include "base/sha1.h" | 10 #include "base/sha1.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 using testing::Invoke; | 31 using testing::Invoke; |
32 using testing::_; | 32 using testing::_; |
33 | 33 |
34 namespace net { | 34 namespace net { |
35 | 35 |
36 namespace test { | 36 namespace test { |
37 | 37 |
38 QuicAckFrame MakeAckFrame(QuicPacketNumber largest_observed) { | 38 QuicAckFrame MakeAckFrame(QuicPacketNumber largest_observed) { |
39 QuicAckFrame ack; | 39 QuicAckFrame ack; |
40 ack.largest_observed = largest_observed; | 40 ack.largest_observed = largest_observed; |
41 ack.entropy_hash = 0; | |
42 return ack; | |
43 } | |
44 | |
45 QuicAckFrame MakeAckFrameWithNackRanges(size_t num_nack_ranges, | |
46 QuicPacketNumber least_unacked) { | |
47 QuicAckFrame ack = MakeAckFrame(2 * num_nack_ranges + least_unacked); | |
48 // Add enough missing packets to get num_nack_ranges nack ranges. | |
49 for (QuicPacketNumber i = 1; i < 2 * num_nack_ranges; i += 2) { | |
50 ack.packets.Add(least_unacked + i); | |
51 } | |
52 return ack; | 41 return ack; |
53 } | 42 } |
54 | 43 |
55 QuicAckFrame MakeAckFrameWithAckBlocks(size_t num_ack_blocks, | 44 QuicAckFrame MakeAckFrameWithAckBlocks(size_t num_ack_blocks, |
56 QuicPacketNumber least_unacked) { | 45 QuicPacketNumber least_unacked) { |
57 QuicAckFrame ack = MakeAckFrame(2 * num_ack_blocks + least_unacked); | 46 QuicAckFrame ack = MakeAckFrame(2 * num_ack_blocks + least_unacked); |
58 ack.missing = false; | |
59 // Add enough received packets to get num_ack_blocks ack blocks. | 47 // Add enough received packets to get num_ack_blocks ack blocks. |
60 for (QuicPacketNumber i = 2; i < 2 * num_ack_blocks + 1; i += 2) { | 48 for (QuicPacketNumber i = 2; i < 2 * num_ack_blocks + 1; i += 2) { |
61 ack.packets.Add(least_unacked + i); | 49 ack.packets.Add(least_unacked + i); |
62 } | 50 } |
63 return ack; | 51 return ack; |
64 } | 52 } |
65 | 53 |
66 QuicPacket* BuildUnsizedDataPacket(QuicFramer* framer, | 54 QuicPacket* BuildUnsizedDataPacket(QuicFramer* framer, |
67 const QuicPacketHeader& header, | 55 const QuicPacketHeader& header, |
68 const QuicFrames& frames) { | 56 const QuicFrames& frames) { |
(...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
638 Perspective perspective) { | 626 Perspective perspective) { |
639 QuicPacketHeader header; | 627 QuicPacketHeader header; |
640 header.public_header.connection_id = connection_id; | 628 header.public_header.connection_id = connection_id; |
641 header.public_header.connection_id_length = connection_id_length; | 629 header.public_header.connection_id_length = connection_id_length; |
642 header.public_header.version_flag = version_flag; | 630 header.public_header.version_flag = version_flag; |
643 header.public_header.multipath_flag = multipath_flag; | 631 header.public_header.multipath_flag = multipath_flag; |
644 header.public_header.reset_flag = reset_flag; | 632 header.public_header.reset_flag = reset_flag; |
645 header.public_header.packet_number_length = packet_number_length; | 633 header.public_header.packet_number_length = packet_number_length; |
646 header.path_id = path_id; | 634 header.path_id = path_id; |
647 header.packet_number = packet_number; | 635 header.packet_number = packet_number; |
648 header.entropy_flag = false; | |
649 header.entropy_hash = 0; | |
650 QuicStreamFrame stream_frame(1, false, 0, StringPiece(data)); | 636 QuicStreamFrame stream_frame(1, false, 0, StringPiece(data)); |
651 QuicFrame frame(&stream_frame); | 637 QuicFrame frame(&stream_frame); |
652 QuicFrames frames; | 638 QuicFrames frames; |
653 frames.push_back(frame); | 639 frames.push_back(frame); |
654 QuicFramer framer( | 640 QuicFramer framer( |
655 versions != nullptr ? *versions : CurrentSupportedVersions(), | 641 versions != nullptr ? *versions : CurrentSupportedVersions(), |
656 QuicTime::Zero(), perspective); | 642 QuicTime::Zero(), perspective); |
657 | 643 |
658 std::unique_ptr<QuicPacket> packet( | 644 std::unique_ptr<QuicPacket> packet( |
659 BuildUnsizedDataPacket(&framer, header, frames)); | 645 BuildUnsizedDataPacket(&framer, header, frames)); |
(...skipping 28 matching lines...) Expand all Loading... |
688 Perspective perspective) { | 674 Perspective perspective) { |
689 QuicPacketHeader header; | 675 QuicPacketHeader header; |
690 header.public_header.connection_id = connection_id; | 676 header.public_header.connection_id = connection_id; |
691 header.public_header.connection_id_length = connection_id_length; | 677 header.public_header.connection_id_length = connection_id_length; |
692 header.public_header.version_flag = version_flag; | 678 header.public_header.version_flag = version_flag; |
693 header.public_header.multipath_flag = multipath_flag; | 679 header.public_header.multipath_flag = multipath_flag; |
694 header.public_header.reset_flag = reset_flag; | 680 header.public_header.reset_flag = reset_flag; |
695 header.public_header.packet_number_length = packet_number_length; | 681 header.public_header.packet_number_length = packet_number_length; |
696 header.path_id = path_id; | 682 header.path_id = path_id; |
697 header.packet_number = packet_number; | 683 header.packet_number = packet_number; |
698 header.entropy_flag = false; | |
699 header.entropy_hash = 0; | |
700 QuicStreamFrame stream_frame(1, false, 0, StringPiece(data)); | 684 QuicStreamFrame stream_frame(1, false, 0, StringPiece(data)); |
701 QuicFrame frame(&stream_frame); | 685 QuicFrame frame(&stream_frame); |
702 QuicFrames frames; | 686 QuicFrames frames; |
703 frames.push_back(frame); | 687 frames.push_back(frame); |
704 QuicFramer framer(versions != nullptr ? *versions : AllSupportedVersions(), | 688 QuicFramer framer(versions != nullptr ? *versions : AllSupportedVersions(), |
705 QuicTime::Zero(), perspective); | 689 QuicTime::Zero(), perspective); |
706 | 690 |
707 std::unique_ptr<QuicPacket> packet( | 691 std::unique_ptr<QuicPacket> packet( |
708 BuildUnsizedDataPacket(&framer, header, frames)); | 692 BuildUnsizedDataPacket(&framer, header, frames)); |
709 EXPECT_TRUE(packet != nullptr); | 693 EXPECT_TRUE(packet != nullptr); |
710 | 694 |
711 if (framer.version() <= QUIC_VERSION_33) { | 695 // Now set the frame type to 0x1F, which is an invalid frame type. |
712 // Now set the packet's private flags byte to 0xFF, which is an invalid | 696 reinterpret_cast<unsigned char*>( |
713 // value. | 697 packet->mutable_data())[GetStartOfEncryptedData( |
714 reinterpret_cast<unsigned char*>( | 698 framer.version(), connection_id_length, version_flag, multipath_flag, |
715 packet->mutable_data())[GetStartOfEncryptedData( | 699 false /* no diversification nonce */, packet_number_length)] = 0x1F; |
716 framer.version(), connection_id_length, version_flag, multipath_flag, | |
717 false /* no diversification nonce */, packet_number_length)] = 0xFF; | |
718 } else { | |
719 // Now set the frame type to 0x1F, which is an invalid frame type. | |
720 reinterpret_cast<unsigned char*>( | |
721 packet->mutable_data())[GetStartOfEncryptedData( | |
722 framer.version(), connection_id_length, version_flag, multipath_flag, | |
723 false /* no diversification nonce */, packet_number_length)] = 0x1F; | |
724 } | |
725 | 700 |
726 char* buffer = new char[kMaxPacketSize]; | 701 char* buffer = new char[kMaxPacketSize]; |
727 size_t encrypted_length = framer.EncryptPayload( | 702 size_t encrypted_length = framer.EncryptPayload( |
728 ENCRYPTION_NONE, path_id, packet_number, *packet, buffer, kMaxPacketSize); | 703 ENCRYPTION_NONE, path_id, packet_number, *packet, buffer, kMaxPacketSize); |
729 EXPECT_NE(0u, encrypted_length); | 704 EXPECT_NE(0u, encrypted_length); |
730 return new QuicEncryptedPacket(buffer, encrypted_length, true); | 705 return new QuicEncryptedPacket(buffer, encrypted_length, true); |
731 } | 706 } |
732 | 707 |
733 void CompareCharArraysWithHexError(const string& description, | 708 void CompareCharArraysWithHexError(const string& description, |
734 const char* actual, | 709 const char* actual, |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
781 std::unique_ptr<QuicData> data( | 756 std::unique_ptr<QuicData> data( |
782 crypto_framer.ConstructHandshakeMessage(message)); | 757 crypto_framer.ConstructHandshakeMessage(message)); |
783 QuicFramer quic_framer(AllSupportedVersions(), QuicTime::Zero(), | 758 QuicFramer quic_framer(AllSupportedVersions(), QuicTime::Zero(), |
784 Perspective::IS_CLIENT); | 759 Perspective::IS_CLIENT); |
785 | 760 |
786 QuicPacketHeader header; | 761 QuicPacketHeader header; |
787 header.public_header.connection_id = connection_id; | 762 header.public_header.connection_id = connection_id; |
788 header.public_header.reset_flag = false; | 763 header.public_header.reset_flag = false; |
789 header.public_header.version_flag = should_include_version; | 764 header.public_header.version_flag = should_include_version; |
790 header.packet_number = 1; | 765 header.packet_number = 1; |
791 header.entropy_flag = false; | |
792 header.entropy_hash = 0; | |
793 | 766 |
794 QuicStreamFrame stream_frame(kCryptoStreamId, false, 0, | 767 QuicStreamFrame stream_frame(kCryptoStreamId, false, 0, |
795 data->AsStringPiece()); | 768 data->AsStringPiece()); |
796 | 769 |
797 QuicFrame frame(&stream_frame); | 770 QuicFrame frame(&stream_frame); |
798 QuicFrames frames; | 771 QuicFrames frames; |
799 frames.push_back(frame); | 772 frames.push_back(frame); |
800 return BuildUnsizedDataPacket(&quic_framer, header, frames); | 773 return BuildUnsizedDataPacket(&quic_framer, header, frames); |
801 } | 774 } |
802 | 775 |
(...skipping 26 matching lines...) Expand all Loading... |
829 if (stream_length < ack_length) { | 802 if (stream_length < ack_length) { |
830 *payload_length = 1 + ack_length - stream_length; | 803 *payload_length = 1 + ack_length - stream_length; |
831 } | 804 } |
832 | 805 |
833 return NullEncrypter().GetCiphertextSize(*payload_length) + | 806 return NullEncrypter().GetCiphertextSize(*payload_length) + |
834 QuicPacketCreator::StreamFramePacketOverhead( | 807 QuicPacketCreator::StreamFramePacketOverhead( |
835 version, connection_id_length, include_version, include_path_id, | 808 version, connection_id_length, include_version, include_path_id, |
836 include_diversification_nonce, packet_number_length, 0u); | 809 include_diversification_nonce, packet_number_length, 0u); |
837 } | 810 } |
838 | 811 |
839 TestEntropyCalculator::TestEntropyCalculator() {} | |
840 | |
841 TestEntropyCalculator::~TestEntropyCalculator() {} | |
842 | |
843 QuicPacketEntropyHash TestEntropyCalculator::EntropyHash( | |
844 QuicPacketNumber packet_number) const { | |
845 return 1u; | |
846 } | |
847 | |
848 MockEntropyCalculator::MockEntropyCalculator() {} | |
849 | |
850 MockEntropyCalculator::~MockEntropyCalculator() {} | |
851 | |
852 QuicConfig DefaultQuicConfig() { | 812 QuicConfig DefaultQuicConfig() { |
853 QuicConfig config; | 813 QuicConfig config; |
854 config.SetInitialStreamFlowControlWindowToSend( | 814 config.SetInitialStreamFlowControlWindowToSend( |
855 kInitialStreamFlowControlWindowForTest); | 815 kInitialStreamFlowControlWindowForTest); |
856 config.SetInitialSessionFlowControlWindowToSend( | 816 config.SetInitialSessionFlowControlWindowToSend( |
857 kInitialSessionFlowControlWindowForTest); | 817 kInitialSessionFlowControlWindowForTest); |
858 return config; | 818 return config; |
859 } | 819 } |
860 | 820 |
861 QuicConfig DefaultQuicConfigStatelessRejects() { | 821 QuicConfig DefaultQuicConfigStatelessRejects() { |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
942 // strike register worries that we've just overflowed a uint32_t time. | 902 // strike register worries that we've just overflowed a uint32_t time. |
943 (*server_connection)->AdvanceTime(connection_start_time); | 903 (*server_connection)->AdvanceTime(connection_start_time); |
944 } | 904 } |
945 | 905 |
946 QuicStreamId QuicClientDataStreamId(int i) { | 906 QuicStreamId QuicClientDataStreamId(int i) { |
947 return kClientDataStreamId1 + 2 * i; | 907 return kClientDataStreamId1 + 2 * i; |
948 } | 908 } |
949 | 909 |
950 } // namespace test | 910 } // namespace test |
951 } // namespace net | 911 } // namespace net |
OLD | NEW |