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

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

Issue 2681793002: Landing Recent QUIC changes until 5:30 PM, Feb 3, 2017 UTC-5 (Closed)
Patch Set: sync and rebase Created 3 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
« no previous file with comments | « net/quic/core/quic_framer.cc ('k') | net/quic/core/quic_sent_packet_manager.cc » ('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_framer.h" 5 #include "net/quic/core/quic_framer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cstdint> 8 #include <cstdint>
9 #include <map> 9 #include <map>
10 #include <memory> 10 #include <memory>
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 // Public resets always have full connection_ids. 106 // Public resets always have full connection_ids.
107 const size_t kPublicResetPacketMessageTagOffset = 107 const size_t kPublicResetPacketMessageTagOffset =
108 kConnectionIdOffset + PACKET_8BYTE_CONNECTION_ID; 108 kConnectionIdOffset + PACKET_8BYTE_CONNECTION_ID;
109 109
110 class TestEncrypter : public QuicEncrypter { 110 class TestEncrypter : public QuicEncrypter {
111 public: 111 public:
112 ~TestEncrypter() override {} 112 ~TestEncrypter() override {}
113 bool SetKey(StringPiece key) override { return true; } 113 bool SetKey(StringPiece key) override { return true; }
114 bool SetNoncePrefix(StringPiece nonce_prefix) override { return true; } 114 bool SetNoncePrefix(StringPiece nonce_prefix) override { return true; }
115 bool EncryptPacket(QuicVersion version, 115 bool EncryptPacket(QuicVersion version,
116 QuicPathId path_id,
117 QuicPacketNumber packet_number, 116 QuicPacketNumber packet_number,
118 StringPiece associated_data, 117 StringPiece associated_data,
119 StringPiece plaintext, 118 StringPiece plaintext,
120 char* output, 119 char* output,
121 size_t* output_length, 120 size_t* output_length,
122 size_t max_output_length) override { 121 size_t max_output_length) override {
123 version_ = version; 122 version_ = version;
124 path_id_ = path_id;
125 packet_number_ = packet_number; 123 packet_number_ = packet_number;
126 associated_data_ = associated_data.as_string(); 124 associated_data_ = associated_data.as_string();
127 plaintext_ = plaintext.as_string(); 125 plaintext_ = plaintext.as_string();
128 memcpy(output, plaintext.data(), plaintext.length()); 126 memcpy(output, plaintext.data(), plaintext.length());
129 *output_length = plaintext.length(); 127 *output_length = plaintext.length();
130 return true; 128 return true;
131 } 129 }
132 size_t GetKeySize() const override { return 0; } 130 size_t GetKeySize() const override { return 0; }
133 size_t GetNoncePrefixSize() const override { return 0; } 131 size_t GetNoncePrefixSize() const override { return 0; }
134 size_t GetMaxPlaintextSize(size_t ciphertext_size) const override { 132 size_t GetMaxPlaintextSize(size_t ciphertext_size) const override {
135 return ciphertext_size; 133 return ciphertext_size;
136 } 134 }
137 size_t GetCiphertextSize(size_t plaintext_size) const override { 135 size_t GetCiphertextSize(size_t plaintext_size) const override {
138 return plaintext_size; 136 return plaintext_size;
139 } 137 }
140 StringPiece GetKey() const override { return StringPiece(); } 138 StringPiece GetKey() const override { return StringPiece(); }
141 StringPiece GetNoncePrefix() const override { return StringPiece(); } 139 StringPiece GetNoncePrefix() const override { return StringPiece(); }
142 140
143 QuicVersion version_; 141 QuicVersion version_;
144 Perspective perspective_; 142 Perspective perspective_;
145 QuicPathId path_id_;
146 QuicPacketNumber packet_number_; 143 QuicPacketNumber packet_number_;
147 string associated_data_; 144 string associated_data_;
148 string plaintext_; 145 string plaintext_;
149 }; 146 };
150 147
151 class TestDecrypter : public QuicDecrypter { 148 class TestDecrypter : public QuicDecrypter {
152 public: 149 public:
153 ~TestDecrypter() override {} 150 ~TestDecrypter() override {}
154 bool SetKey(StringPiece key) override { return true; } 151 bool SetKey(StringPiece key) override { return true; }
155 bool SetNoncePrefix(StringPiece nonce_prefix) override { return true; } 152 bool SetNoncePrefix(StringPiece nonce_prefix) override { return true; }
156 bool SetPreliminaryKey(StringPiece key) override { 153 bool SetPreliminaryKey(StringPiece key) override {
157 QUIC_BUG << "should not be called"; 154 QUIC_BUG << "should not be called";
158 return false; 155 return false;
159 } 156 }
160 bool SetDiversificationNonce(const DiversificationNonce& key) override { 157 bool SetDiversificationNonce(const DiversificationNonce& key) override {
161 return true; 158 return true;
162 } 159 }
163 bool DecryptPacket(QuicVersion version, 160 bool DecryptPacket(QuicVersion version,
164 QuicPathId path_id,
165 QuicPacketNumber packet_number, 161 QuicPacketNumber packet_number,
166 StringPiece associated_data, 162 StringPiece associated_data,
167 StringPiece ciphertext, 163 StringPiece ciphertext,
168 char* output, 164 char* output,
169 size_t* output_length, 165 size_t* output_length,
170 size_t max_output_length) override { 166 size_t max_output_length) override {
171 version_ = version; 167 version_ = version;
172 path_id_ = path_id;
173 packet_number_ = packet_number; 168 packet_number_ = packet_number;
174 associated_data_ = associated_data.as_string(); 169 associated_data_ = associated_data.as_string();
175 ciphertext_ = ciphertext.as_string(); 170 ciphertext_ = ciphertext.as_string();
176 memcpy(output, ciphertext.data(), ciphertext.length()); 171 memcpy(output, ciphertext.data(), ciphertext.length());
177 *output_length = ciphertext.length(); 172 *output_length = ciphertext.length();
178 return true; 173 return true;
179 } 174 }
180 StringPiece GetKey() const override { return StringPiece(); } 175 StringPiece GetKey() const override { return StringPiece(); }
181 StringPiece GetNoncePrefix() const override { return StringPiece(); } 176 StringPiece GetNoncePrefix() const override { return StringPiece(); }
182 const char* cipher_name() const override { return "Test"; } 177 const char* cipher_name() const override { return "Test"; }
183 // Use a distinct value starting with 0xFFFFFF, which is never used by TLS. 178 // Use a distinct value starting with 0xFFFFFF, which is never used by TLS.
184 uint32_t cipher_id() const override { return 0xFFFFFFF2; } 179 uint32_t cipher_id() const override { return 0xFFFFFFF2; }
185 QuicVersion version_; 180 QuicVersion version_;
186 Perspective perspective_; 181 Perspective perspective_;
187 QuicPathId path_id_;
188 QuicPacketNumber packet_number_; 182 QuicPacketNumber packet_number_;
189 string associated_data_; 183 string associated_data_;
190 string ciphertext_; 184 string ciphertext_;
191 }; 185 };
192 186
193 class TestQuicVisitor : public QuicFramerVisitorInterface { 187 class TestQuicVisitor : public QuicFramerVisitorInterface {
194 public: 188 public:
195 TestQuicVisitor() 189 TestQuicVisitor()
196 : error_count_(0), 190 : error_count_(0),
197 version_mismatch_(0), 191 version_mismatch_(0),
(...skipping 3567 matching lines...) Expand 10 before | Expand all | Expand 10 after
3765 'i', 'j', 'k', 'l', 3759 'i', 'j', 'k', 'l',
3766 'm', 'n', 'o', 'p', 3760 'm', 'n', 'o', 'p',
3767 }; 3761 };
3768 // clang-format on 3762 // clang-format on
3769 3763
3770 std::unique_ptr<QuicPacket> raw(new QuicPacket( 3764 std::unique_ptr<QuicPacket> raw(new QuicPacket(
3771 AsChars(packet), arraysize(packet), false, PACKET_8BYTE_CONNECTION_ID, 3765 AsChars(packet), arraysize(packet), false, PACKET_8BYTE_CONNECTION_ID,
3772 !kIncludeVersion, !kIncludePathId, !kIncludeDiversificationNonce, 3766 !kIncludeVersion, !kIncludePathId, !kIncludeDiversificationNonce,
3773 PACKET_6BYTE_PACKET_NUMBER)); 3767 PACKET_6BYTE_PACKET_NUMBER));
3774 char buffer[kMaxPacketSize]; 3768 char buffer[kMaxPacketSize];
3775 size_t encrypted_length = 3769 size_t encrypted_length = framer_.EncryptPayload(
3776 framer_.EncryptPayload(ENCRYPTION_NONE, kDefaultPathId, packet_number, 3770 ENCRYPTION_NONE, packet_number, *raw, buffer, kMaxPacketSize);
3777 *raw, buffer, kMaxPacketSize);
3778 3771
3779 ASSERT_NE(0u, encrypted_length); 3772 ASSERT_NE(0u, encrypted_length);
3780 EXPECT_TRUE(CheckEncryption(kDefaultPathId, packet_number, raw.get())); 3773 EXPECT_TRUE(CheckEncryption(kDefaultPathId, packet_number, raw.get()));
3781 } 3774 }
3782 3775
3783 TEST_P(QuicFramerTest, EncryptPacketWithVersionFlag) { 3776 TEST_P(QuicFramerTest, EncryptPacketWithVersionFlag) {
3784 QuicPacketNumber packet_number = kPacketNumber; 3777 QuicPacketNumber packet_number = kPacketNumber;
3785 // clang-format off 3778 // clang-format off
3786 unsigned char packet[] = { 3779 unsigned char packet[] = {
3787 // public flags (version, 8 byte connection_id) 3780 // public flags (version, 8 byte connection_id)
(...skipping 13 matching lines...) Expand all
3801 'i', 'j', 'k', 'l', 3794 'i', 'j', 'k', 'l',
3802 'm', 'n', 'o', 'p', 3795 'm', 'n', 'o', 'p',
3803 }; 3796 };
3804 // clang-format on 3797 // clang-format on
3805 3798
3806 std::unique_ptr<QuicPacket> raw(new QuicPacket( 3799 std::unique_ptr<QuicPacket> raw(new QuicPacket(
3807 AsChars(packet), arraysize(packet), false, PACKET_8BYTE_CONNECTION_ID, 3800 AsChars(packet), arraysize(packet), false, PACKET_8BYTE_CONNECTION_ID,
3808 kIncludeVersion, !kIncludePathId, !kIncludeDiversificationNonce, 3801 kIncludeVersion, !kIncludePathId, !kIncludeDiversificationNonce,
3809 PACKET_6BYTE_PACKET_NUMBER)); 3802 PACKET_6BYTE_PACKET_NUMBER));
3810 char buffer[kMaxPacketSize]; 3803 char buffer[kMaxPacketSize];
3811 size_t encrypted_length = 3804 size_t encrypted_length = framer_.EncryptPayload(
3812 framer_.EncryptPayload(ENCRYPTION_NONE, kDefaultPathId, packet_number, 3805 ENCRYPTION_NONE, packet_number, *raw, buffer, kMaxPacketSize);
3813 *raw, buffer, kMaxPacketSize);
3814 3806
3815 ASSERT_NE(0u, encrypted_length); 3807 ASSERT_NE(0u, encrypted_length);
3816 EXPECT_TRUE(CheckEncryption(kDefaultPathId, packet_number, raw.get())); 3808 EXPECT_TRUE(CheckEncryption(kDefaultPathId, packet_number, raw.get()));
3817 } 3809 }
3818 3810
3819 TEST_P(QuicFramerTest, EncryptPacketWithMultipathFlag) { 3811 TEST_P(QuicFramerTest, EncryptPacketWithMultipathFlag) {
3820 QuicPacketNumber packet_number = kPacketNumber; 3812 QuicPacketNumber packet_number = kPacketNumber;
3821 // clang-format off 3813 // clang-format off
3822 unsigned char packet[] = { 3814 unsigned char packet[] = {
3823 // public flags (version, 8 byte connection_id) 3815 // public flags (version, 8 byte connection_id)
(...skipping 14 matching lines...) Expand all
3838 'm', 'n', 'o', 'p', 3830 'm', 'n', 'o', 'p',
3839 }; 3831 };
3840 // clang-format on 3832 // clang-format on
3841 3833
3842 std::unique_ptr<QuicPacket> raw(new QuicPacket( 3834 std::unique_ptr<QuicPacket> raw(new QuicPacket(
3843 AsChars(packet), arraysize(packet), false, PACKET_8BYTE_CONNECTION_ID, 3835 AsChars(packet), arraysize(packet), false, PACKET_8BYTE_CONNECTION_ID,
3844 !kIncludeVersion, kIncludePathId, !kIncludeDiversificationNonce, 3836 !kIncludeVersion, kIncludePathId, !kIncludeDiversificationNonce,
3845 PACKET_6BYTE_PACKET_NUMBER)); 3837 PACKET_6BYTE_PACKET_NUMBER));
3846 char buffer[kMaxPacketSize]; 3838 char buffer[kMaxPacketSize];
3847 size_t encrypted_length = framer_.EncryptPayload( 3839 size_t encrypted_length = framer_.EncryptPayload(
3848 ENCRYPTION_NONE, kPathId, packet_number, *raw, buffer, kMaxPacketSize); 3840 ENCRYPTION_NONE, packet_number, *raw, buffer, kMaxPacketSize);
3849 3841
3850 ASSERT_NE(0u, encrypted_length); 3842 ASSERT_NE(0u, encrypted_length);
3851 EXPECT_TRUE(CheckEncryption(kPathId, packet_number, raw.get())); 3843 EXPECT_TRUE(CheckEncryption(kPathId, packet_number, raw.get()));
3852 } 3844 }
3853 3845
3854 TEST_P(QuicFramerTest, EncryptPacketWithBothVersionFlagAndMultipathFlag) { 3846 TEST_P(QuicFramerTest, EncryptPacketWithBothVersionFlagAndMultipathFlag) {
3855 QuicPacketNumber packet_number = kPacketNumber; 3847 QuicPacketNumber packet_number = kPacketNumber;
3856 // clang-format off 3848 // clang-format off
3857 unsigned char packet[] = { 3849 unsigned char packet[] = {
3858 // public flags (version, 8 byte connection_id) 3850 // public flags (version, 8 byte connection_id)
(...skipping 16 matching lines...) Expand all
3875 'm', 'n', 'o', 'p', 3867 'm', 'n', 'o', 'p',
3876 }; 3868 };
3877 // clang-format on 3869 // clang-format on
3878 3870
3879 std::unique_ptr<QuicPacket> raw(new QuicPacket( 3871 std::unique_ptr<QuicPacket> raw(new QuicPacket(
3880 AsChars(packet), arraysize(packet), false, PACKET_8BYTE_CONNECTION_ID, 3872 AsChars(packet), arraysize(packet), false, PACKET_8BYTE_CONNECTION_ID,
3881 kIncludeVersion, kIncludePathId, !kIncludeDiversificationNonce, 3873 kIncludeVersion, kIncludePathId, !kIncludeDiversificationNonce,
3882 PACKET_6BYTE_PACKET_NUMBER)); 3874 PACKET_6BYTE_PACKET_NUMBER));
3883 char buffer[kMaxPacketSize]; 3875 char buffer[kMaxPacketSize];
3884 size_t encrypted_length = framer_.EncryptPayload( 3876 size_t encrypted_length = framer_.EncryptPayload(
3885 ENCRYPTION_NONE, kPathId, packet_number, *raw, buffer, kMaxPacketSize); 3877 ENCRYPTION_NONE, packet_number, *raw, buffer, kMaxPacketSize);
3886 3878
3887 ASSERT_NE(0u, encrypted_length); 3879 ASSERT_NE(0u, encrypted_length);
3888 EXPECT_TRUE(CheckEncryption(kPathId, packet_number, raw.get())); 3880 EXPECT_TRUE(CheckEncryption(kPathId, packet_number, raw.get()));
3889 } 3881 }
3890 3882
3891 TEST_P(QuicFramerTest, AckTruncationLargePacket) { 3883 TEST_P(QuicFramerTest, AckTruncationLargePacket) {
3892 QuicPacketHeader header; 3884 QuicPacketHeader header;
3893 header.public_header.connection_id = kConnectionId; 3885 header.public_header.connection_id = kConnectionId;
3894 header.public_header.reset_flag = false; 3886 header.public_header.reset_flag = false;
3895 header.public_header.version_flag = false; 3887 header.public_header.version_flag = false;
3896 header.packet_number = kPacketNumber; 3888 header.packet_number = kPacketNumber;
3897 3889
3898 QuicAckFrame ack_frame; 3890 QuicAckFrame ack_frame;
3899 // Create a packet with just the ack. 3891 // Create a packet with just the ack.
3900 ack_frame = MakeAckFrameWithAckBlocks(300, 0u); 3892 ack_frame = MakeAckFrameWithAckBlocks(300, 0u);
3901 QuicFrames frames = {QuicFrame(&ack_frame)}; 3893 QuicFrames frames = {QuicFrame(&ack_frame)};
3902 3894
3903 // Build an ack packet with truncation due to limit in number of nack ranges. 3895 // Build an ack packet with truncation due to limit in number of nack ranges.
3904 std::unique_ptr<QuicPacket> raw_ack_packet(BuildDataPacket(header, frames)); 3896 std::unique_ptr<QuicPacket> raw_ack_packet(BuildDataPacket(header, frames));
3905 ASSERT_TRUE(raw_ack_packet != nullptr); 3897 ASSERT_TRUE(raw_ack_packet != nullptr);
3906 char buffer[kMaxPacketSize]; 3898 char buffer[kMaxPacketSize];
3907 size_t encrypted_length = framer_.EncryptPayload( 3899 size_t encrypted_length =
3908 ENCRYPTION_NONE, kDefaultPathId, header.packet_number, *raw_ack_packet, 3900 framer_.EncryptPayload(ENCRYPTION_NONE, header.packet_number,
3909 buffer, kMaxPacketSize); 3901 *raw_ack_packet, buffer, kMaxPacketSize);
3910 ASSERT_NE(0u, encrypted_length); 3902 ASSERT_NE(0u, encrypted_length);
3911 // Now make sure we can turn our ack packet back into an ack frame. 3903 // Now make sure we can turn our ack packet back into an ack frame.
3912 ASSERT_TRUE(framer_.ProcessPacket( 3904 ASSERT_TRUE(framer_.ProcessPacket(
3913 QuicEncryptedPacket(buffer, encrypted_length, false))); 3905 QuicEncryptedPacket(buffer, encrypted_length, false)));
3914 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 3906 ASSERT_EQ(1u, visitor_.ack_frames_.size());
3915 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0]; 3907 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0];
3916 EXPECT_EQ(600u, processed_ack_frame.largest_observed); 3908 EXPECT_EQ(600u, processed_ack_frame.largest_observed);
3917 ASSERT_EQ(256u, processed_ack_frame.packets.NumPacketsSlow()); 3909 ASSERT_EQ(256u, processed_ack_frame.packets.NumPacketsSlow());
3918 EXPECT_EQ(90u, processed_ack_frame.packets.Min()); 3910 EXPECT_EQ(90u, processed_ack_frame.packets.Min());
3919 EXPECT_EQ(600u, processed_ack_frame.packets.Max()); 3911 EXPECT_EQ(600u, processed_ack_frame.packets.Max());
3920 } 3912 }
3921 3913
3922 TEST_P(QuicFramerTest, AckTruncationSmallPacket) { 3914 TEST_P(QuicFramerTest, AckTruncationSmallPacket) {
3923 QuicPacketHeader header; 3915 QuicPacketHeader header;
3924 header.public_header.connection_id = kConnectionId; 3916 header.public_header.connection_id = kConnectionId;
3925 header.public_header.reset_flag = false; 3917 header.public_header.reset_flag = false;
3926 header.public_header.version_flag = false; 3918 header.public_header.version_flag = false;
3927 header.packet_number = kPacketNumber; 3919 header.packet_number = kPacketNumber;
3928 3920
3929 // Create a packet with just the ack. 3921 // Create a packet with just the ack.
3930 QuicAckFrame ack_frame; 3922 QuicAckFrame ack_frame;
3931 ack_frame = MakeAckFrameWithAckBlocks(300, 0u); 3923 ack_frame = MakeAckFrameWithAckBlocks(300, 0u);
3932 QuicFrames frames = {QuicFrame(&ack_frame)}; 3924 QuicFrames frames = {QuicFrame(&ack_frame)};
3933 3925
3934 // Build an ack packet with truncation due to limit in number of nack ranges. 3926 // Build an ack packet with truncation due to limit in number of nack ranges.
3935 std::unique_ptr<QuicPacket> raw_ack_packet( 3927 std::unique_ptr<QuicPacket> raw_ack_packet(
3936 BuildDataPacket(header, frames, 500)); 3928 BuildDataPacket(header, frames, 500));
3937 ASSERT_TRUE(raw_ack_packet != nullptr); 3929 ASSERT_TRUE(raw_ack_packet != nullptr);
3938 char buffer[kMaxPacketSize]; 3930 char buffer[kMaxPacketSize];
3939 size_t encrypted_length = framer_.EncryptPayload( 3931 size_t encrypted_length =
3940 ENCRYPTION_NONE, kDefaultPathId, header.packet_number, *raw_ack_packet, 3932 framer_.EncryptPayload(ENCRYPTION_NONE, header.packet_number,
3941 buffer, kMaxPacketSize); 3933 *raw_ack_packet, buffer, kMaxPacketSize);
3942 ASSERT_NE(0u, encrypted_length); 3934 ASSERT_NE(0u, encrypted_length);
3943 // Now make sure we can turn our ack packet back into an ack frame. 3935 // Now make sure we can turn our ack packet back into an ack frame.
3944 ASSERT_TRUE(framer_.ProcessPacket( 3936 ASSERT_TRUE(framer_.ProcessPacket(
3945 QuicEncryptedPacket(buffer, encrypted_length, false))); 3937 QuicEncryptedPacket(buffer, encrypted_length, false)));
3946 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 3938 ASSERT_EQ(1u, visitor_.ack_frames_.size());
3947 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0]; 3939 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0];
3948 EXPECT_EQ(600u, processed_ack_frame.largest_observed); 3940 EXPECT_EQ(600u, processed_ack_frame.largest_observed);
3949 ASSERT_EQ(239u, processed_ack_frame.packets.NumPacketsSlow()); 3941 ASSERT_EQ(239u, processed_ack_frame.packets.NumPacketsSlow());
3950 EXPECT_EQ(124u, processed_ack_frame.packets.Min()); 3942 EXPECT_EQ(124u, processed_ack_frame.packets.Min());
3951 EXPECT_EQ(600u, processed_ack_frame.packets.Max()); 3943 EXPECT_EQ(600u, processed_ack_frame.packets.Max());
(...skipping 10 matching lines...) Expand all
3962 ack_frame.largest_observed = 201; 3954 ack_frame.largest_observed = 201;
3963 ack_frame.packets.Add(1, ack_frame.largest_observed); 3955 ack_frame.packets.Add(1, ack_frame.largest_observed);
3964 3956
3965 // Create a packet with just the ack. 3957 // Create a packet with just the ack.
3966 QuicFrames frames = {QuicFrame(&ack_frame)}; 3958 QuicFrames frames = {QuicFrame(&ack_frame)};
3967 3959
3968 std::unique_ptr<QuicPacket> raw_ack_packet(BuildDataPacket(header, frames)); 3960 std::unique_ptr<QuicPacket> raw_ack_packet(BuildDataPacket(header, frames));
3969 ASSERT_TRUE(raw_ack_packet != nullptr); 3961 ASSERT_TRUE(raw_ack_packet != nullptr);
3970 3962
3971 char buffer[kMaxPacketSize]; 3963 char buffer[kMaxPacketSize];
3972 size_t encrypted_length = framer_.EncryptPayload( 3964 size_t encrypted_length =
3973 ENCRYPTION_NONE, kDefaultPathId, header.packet_number, *raw_ack_packet, 3965 framer_.EncryptPayload(ENCRYPTION_NONE, header.packet_number,
3974 buffer, kMaxPacketSize); 3966 *raw_ack_packet, buffer, kMaxPacketSize);
3975 ASSERT_NE(0u, encrypted_length); 3967 ASSERT_NE(0u, encrypted_length);
3976 3968
3977 // Now make sure we can turn our ack packet back into an ack frame. 3969 // Now make sure we can turn our ack packet back into an ack frame.
3978 ASSERT_TRUE(framer_.ProcessPacket( 3970 ASSERT_TRUE(framer_.ProcessPacket(
3979 QuicEncryptedPacket(buffer, encrypted_length, false))); 3971 QuicEncryptedPacket(buffer, encrypted_length, false)));
3980 3972
3981 // Test for clean truncation of the ack by comparing the length of the 3973 // Test for clean truncation of the ack by comparing the length of the
3982 // original packets to the re-serialized packets. 3974 // original packets to the re-serialized packets.
3983 frames.clear(); 3975 frames.clear();
3984 frames.push_back(QuicFrame(visitor_.ack_frames_[0].get())); 3976 frames.push_back(QuicFrame(visitor_.ack_frames_[0].get()));
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
4186 'o', ' ', 'w', 'o', 4178 'o', ' ', 'w', 'o',
4187 'r', 'l', 'd', '!', 4179 'r', 'l', 'd', '!',
4188 }; 4180 };
4189 // clang-format on 4181 // clang-format on
4190 4182
4191 QuicFramerFuzzFunc(packet, arraysize(packet)); 4183 QuicFramerFuzzFunc(packet, arraysize(packet));
4192 } 4184 }
4193 4185
4194 } // namespace test 4186 } // namespace test
4195 } // namespace net 4187 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/quic_framer.cc ('k') | net/quic/core/quic_sent_packet_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698