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

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

Issue 2417023003: Remove stl_util's deletion functions from: (Closed)
Patch Set: internal snapshot 10 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
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 <string.h> 7 #include <string.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <map> 10 #include <map>
11 #include <memory> 11 #include <memory>
12 #include <string> 12 #include <string>
13 #include <vector> 13 #include <vector>
14 14
15 #include "base/logging.h" 15 #include "base/logging.h"
16 #include "base/stl_util.h" 16 #include "base/memory/ptr_util.h"
17 #include "net/quic/core/crypto/null_decrypter.h" 17 #include "net/quic/core/crypto/null_decrypter.h"
18 #include "net/quic/core/crypto/quic_decrypter.h" 18 #include "net/quic/core/crypto/quic_decrypter.h"
19 #include "net/quic/core/crypto/quic_encrypter.h" 19 #include "net/quic/core/crypto/quic_encrypter.h"
20 #include "net/quic/core/quic_protocol.h" 20 #include "net/quic/core/quic_protocol.h"
21 #include "net/quic/core/quic_utils.h" 21 #include "net/quic/core/quic_utils.h"
22 #include "net/quic/test_tools/quic_framer_peer.h" 22 #include "net/quic/test_tools/quic_framer_peer.h"
23 #include "net/quic/test_tools/quic_test_utils.h" 23 #include "net/quic/test_tools/quic_test_utils.h"
24 #include "net/test/gtest_util.h" 24 #include "net/test/gtest_util.h"
25 25
26 using base::StringPiece; 26 using base::StringPiece;
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 public: 191 public:
192 TestQuicVisitor() 192 TestQuicVisitor()
193 : error_count_(0), 193 : error_count_(0),
194 version_mismatch_(0), 194 version_mismatch_(0),
195 packet_count_(0), 195 packet_count_(0),
196 frame_count_(0), 196 frame_count_(0),
197 complete_packets_(0), 197 complete_packets_(0),
198 accept_packet_(true), 198 accept_packet_(true),
199 accept_public_header_(true) {} 199 accept_public_header_(true) {}
200 200
201 ~TestQuicVisitor() override { 201 ~TestQuicVisitor() override {}
202 base::STLDeleteElements(&stream_frames_);
203 base::STLDeleteElements(&ack_frames_);
204 base::STLDeleteElements(&stop_waiting_frames_);
205 base::STLDeleteElements(&padding_frames_);
206 base::STLDeleteElements(&ping_frames_);
207 base::STLDeleteElements(&stream_data_);
208 }
209 202
210 void OnError(QuicFramer* f) override { 203 void OnError(QuicFramer* f) override {
211 DVLOG(1) << "QuicFramer Error: " << QuicUtils::ErrorToString(f->error()) 204 DVLOG(1) << "QuicFramer Error: " << QuicUtils::ErrorToString(f->error())
212 << " (" << f->error() << ")"; 205 << " (" << f->error() << ")";
213 ++error_count_; 206 ++error_count_;
214 } 207 }
215 208
216 void OnPacket() override {} 209 void OnPacket() override {}
217 210
218 void OnPublicResetPacket(const QuicPublicResetPacket& packet) override { 211 void OnPublicResetPacket(const QuicPublicResetPacket& packet) override {
(...skipping 28 matching lines...) Expand all
247 header_.reset(new QuicPacketHeader(header)); 240 header_.reset(new QuicPacketHeader(header));
248 return accept_packet_; 241 return accept_packet_;
249 } 242 }
250 243
251 bool OnStreamFrame(const QuicStreamFrame& frame) override { 244 bool OnStreamFrame(const QuicStreamFrame& frame) override {
252 ++frame_count_; 245 ++frame_count_;
253 // Save a copy of the data so it is valid after the packet is processed. 246 // Save a copy of the data so it is valid after the packet is processed.
254 string* string_data = new string(); 247 string* string_data = new string();
255 StringPiece(frame.data_buffer, frame.data_length) 248 StringPiece(frame.data_buffer, frame.data_length)
256 .AppendToString(string_data); 249 .AppendToString(string_data);
257 stream_data_.push_back(string_data); 250 stream_data_.push_back(base::WrapUnique(string_data));
258 stream_frames_.push_back(new QuicStreamFrame(frame.stream_id, frame.fin, 251 stream_frames_.push_back(base::MakeUnique<QuicStreamFrame>(
259 frame.offset, *string_data)); 252 frame.stream_id, frame.fin, frame.offset, *string_data));
260 return true; 253 return true;
261 } 254 }
262 255
263 bool OnAckFrame(const QuicAckFrame& frame) override { 256 bool OnAckFrame(const QuicAckFrame& frame) override {
264 ++frame_count_; 257 ++frame_count_;
265 ack_frames_.push_back(new QuicAckFrame(frame)); 258 ack_frames_.push_back(base::MakeUnique<QuicAckFrame>(frame));
266 return true; 259 return true;
267 } 260 }
268 261
269 bool OnStopWaitingFrame(const QuicStopWaitingFrame& frame) override { 262 bool OnStopWaitingFrame(const QuicStopWaitingFrame& frame) override {
270 ++frame_count_; 263 ++frame_count_;
271 stop_waiting_frames_.push_back(new QuicStopWaitingFrame(frame)); 264 stop_waiting_frames_.push_back(
265 base::MakeUnique<QuicStopWaitingFrame>(frame));
272 return true; 266 return true;
273 } 267 }
274 268
275 bool OnPaddingFrame(const QuicPaddingFrame& frame) override { 269 bool OnPaddingFrame(const QuicPaddingFrame& frame) override {
276 padding_frames_.push_back(new QuicPaddingFrame(frame)); 270 padding_frames_.push_back(base::MakeUnique<QuicPaddingFrame>(frame));
277 return true; 271 return true;
278 } 272 }
279 273
280 bool OnPingFrame(const QuicPingFrame& frame) override { 274 bool OnPingFrame(const QuicPingFrame& frame) override {
281 ++frame_count_; 275 ++frame_count_;
282 ping_frames_.push_back(new QuicPingFrame(frame)); 276 ping_frames_.push_back(base::MakeUnique<QuicPingFrame>(frame));
283 return true; 277 return true;
284 } 278 }
285 279
286 void OnPacketComplete() override { ++complete_packets_; } 280 void OnPacketComplete() override { ++complete_packets_; }
287 281
288 bool OnRstStreamFrame(const QuicRstStreamFrame& frame) override { 282 bool OnRstStreamFrame(const QuicRstStreamFrame& frame) override {
289 rst_stream_frame_ = frame; 283 rst_stream_frame_ = frame;
290 return true; 284 return true;
291 } 285 }
292 286
(...skipping 28 matching lines...) Expand all
321 int packet_count_; 315 int packet_count_;
322 int frame_count_; 316 int frame_count_;
323 int complete_packets_; 317 int complete_packets_;
324 bool accept_packet_; 318 bool accept_packet_;
325 bool accept_public_header_; 319 bool accept_public_header_;
326 320
327 std::unique_ptr<QuicPacketHeader> header_; 321 std::unique_ptr<QuicPacketHeader> header_;
328 std::unique_ptr<QuicPacketPublicHeader> public_header_; 322 std::unique_ptr<QuicPacketPublicHeader> public_header_;
329 std::unique_ptr<QuicPublicResetPacket> public_reset_packet_; 323 std::unique_ptr<QuicPublicResetPacket> public_reset_packet_;
330 std::unique_ptr<QuicVersionNegotiationPacket> version_negotiation_packet_; 324 std::unique_ptr<QuicVersionNegotiationPacket> version_negotiation_packet_;
331 vector<QuicStreamFrame*> stream_frames_; 325 vector<std::unique_ptr<QuicStreamFrame>> stream_frames_;
332 vector<QuicAckFrame*> ack_frames_; 326 vector<std::unique_ptr<QuicAckFrame>> ack_frames_;
333 vector<QuicStopWaitingFrame*> stop_waiting_frames_; 327 vector<std::unique_ptr<QuicStopWaitingFrame>> stop_waiting_frames_;
334 vector<QuicPaddingFrame*> padding_frames_; 328 vector<std::unique_ptr<QuicPaddingFrame>> padding_frames_;
335 vector<QuicPingFrame*> ping_frames_; 329 vector<std::unique_ptr<QuicPingFrame>> ping_frames_;
336 QuicRstStreamFrame rst_stream_frame_; 330 QuicRstStreamFrame rst_stream_frame_;
337 QuicConnectionCloseFrame connection_close_frame_; 331 QuicConnectionCloseFrame connection_close_frame_;
338 QuicGoAwayFrame goaway_frame_; 332 QuicGoAwayFrame goaway_frame_;
339 QuicWindowUpdateFrame window_update_frame_; 333 QuicWindowUpdateFrame window_update_frame_;
340 QuicBlockedFrame blocked_frame_; 334 QuicBlockedFrame blocked_frame_;
341 QuicPathCloseFrame path_close_frame_; 335 QuicPathCloseFrame path_close_frame_;
342 vector<string*> stream_data_; 336 vector<std::unique_ptr<string>> stream_data_;
343 }; 337 };
344 338
345 class QuicFramerTest : public ::testing::TestWithParam<QuicVersion> { 339 class QuicFramerTest : public ::testing::TestWithParam<QuicVersion> {
346 public: 340 public:
347 QuicFramerTest() 341 QuicFramerTest()
348 : encrypter_(new test::TestEncrypter()), 342 : encrypter_(new test::TestEncrypter()),
349 decrypter_(new test::TestDecrypter()), 343 decrypter_(new test::TestDecrypter()),
350 start_(QuicTime::Zero() + QuicTime::Delta::FromMicroseconds(0x10)), 344 start_(QuicTime::Zero() + QuicTime::Delta::FromMicroseconds(0x10)),
351 framer_(AllSupportedVersions(), start_, Perspective::IS_SERVER) { 345 framer_(AllSupportedVersions(), start_, Perspective::IS_SERVER) {
352 version_ = GetParam(); 346 version_ = GetParam();
(...skipping 1451 matching lines...) Expand 10 before | Expand all | Expand 10 after
1804 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 1798 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
1805 ASSERT_TRUE(visitor_.header_.get()); 1799 ASSERT_TRUE(visitor_.header_.get());
1806 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId, 1800 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
1807 !kIncludeDiversificationNonce)); 1801 !kIncludeDiversificationNonce));
1808 1802
1809 ASSERT_EQ(1u, visitor_.stream_frames_.size()); 1803 ASSERT_EQ(1u, visitor_.stream_frames_.size());
1810 EXPECT_EQ(0u, visitor_.ack_frames_.size()); 1804 EXPECT_EQ(0u, visitor_.ack_frames_.size());
1811 EXPECT_EQ(kStreamId, visitor_.stream_frames_[0]->stream_id); 1805 EXPECT_EQ(kStreamId, visitor_.stream_frames_[0]->stream_id);
1812 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); 1806 EXPECT_TRUE(visitor_.stream_frames_[0]->fin);
1813 EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset); 1807 EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset);
1814 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]); 1808 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0].get());
1815 1809
1816 // Now test framing boundaries. 1810 // Now test framing boundaries.
1817 CheckStreamFrameBoundaries( 1811 CheckStreamFrameBoundaries(
1818 framer_.version() <= QUIC_VERSION_33 ? packet : packet_34, 1812 framer_.version() <= QUIC_VERSION_33 ? packet : packet_34,
1819 kQuicMaxStreamIdSize, !kIncludeVersion); 1813 kQuicMaxStreamIdSize, !kIncludeVersion);
1820 } 1814 }
1821 1815
1822 TEST_P(QuicFramerTest, MissingDiversificationNonce) { 1816 TEST_P(QuicFramerTest, MissingDiversificationNonce) {
1823 QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT); 1817 QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT);
1824 framer_.SetDecrypter(ENCRYPTION_NONE, new NullDecrypter()); 1818 framer_.SetDecrypter(ENCRYPTION_NONE, new NullDecrypter());
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
1962 ASSERT_TRUE(visitor_.header_.get()); 1956 ASSERT_TRUE(visitor_.header_.get());
1963 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId, 1957 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
1964 !kIncludeDiversificationNonce)); 1958 !kIncludeDiversificationNonce));
1965 1959
1966 ASSERT_EQ(1u, visitor_.stream_frames_.size()); 1960 ASSERT_EQ(1u, visitor_.stream_frames_.size());
1967 EXPECT_EQ(0u, visitor_.ack_frames_.size()); 1961 EXPECT_EQ(0u, visitor_.ack_frames_.size());
1968 // Stream ID should be the last 3 bytes of kStreamId. 1962 // Stream ID should be the last 3 bytes of kStreamId.
1969 EXPECT_EQ(0x00FFFFFF & kStreamId, visitor_.stream_frames_[0]->stream_id); 1963 EXPECT_EQ(0x00FFFFFF & kStreamId, visitor_.stream_frames_[0]->stream_id);
1970 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); 1964 EXPECT_TRUE(visitor_.stream_frames_[0]->fin);
1971 EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset); 1965 EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset);
1972 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]); 1966 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0].get());
1973 1967
1974 // Now test framing boundaries. 1968 // Now test framing boundaries.
1975 const size_t stream_id_size = 3; 1969 const size_t stream_id_size = 3;
1976 CheckStreamFrameBoundaries( 1970 CheckStreamFrameBoundaries(
1977 framer_.version() <= QUIC_VERSION_33 ? packet : packet_34, stream_id_size, 1971 framer_.version() <= QUIC_VERSION_33 ? packet : packet_34, stream_id_size,
1978 !kIncludeVersion); 1972 !kIncludeVersion);
1979 } 1973 }
1980 1974
1981 TEST_P(QuicFramerTest, StreamFrame2ByteStreamId) { 1975 TEST_P(QuicFramerTest, StreamFrame2ByteStreamId) {
1982 // clang-format off 1976 // clang-format off
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
2043 ASSERT_TRUE(visitor_.header_.get()); 2037 ASSERT_TRUE(visitor_.header_.get());
2044 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId, 2038 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
2045 !kIncludeDiversificationNonce)); 2039 !kIncludeDiversificationNonce));
2046 2040
2047 ASSERT_EQ(1u, visitor_.stream_frames_.size()); 2041 ASSERT_EQ(1u, visitor_.stream_frames_.size());
2048 EXPECT_EQ(0u, visitor_.ack_frames_.size()); 2042 EXPECT_EQ(0u, visitor_.ack_frames_.size());
2049 // Stream ID should be the last 2 bytes of kStreamId. 2043 // Stream ID should be the last 2 bytes of kStreamId.
2050 EXPECT_EQ(0x0000FFFF & kStreamId, visitor_.stream_frames_[0]->stream_id); 2044 EXPECT_EQ(0x0000FFFF & kStreamId, visitor_.stream_frames_[0]->stream_id);
2051 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); 2045 EXPECT_TRUE(visitor_.stream_frames_[0]->fin);
2052 EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset); 2046 EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset);
2053 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]); 2047 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0].get());
2054 2048
2055 // Now test framing boundaries. 2049 // Now test framing boundaries.
2056 const size_t stream_id_size = 2; 2050 const size_t stream_id_size = 2;
2057 CheckStreamFrameBoundaries( 2051 CheckStreamFrameBoundaries(
2058 framer_.version() <= QUIC_VERSION_33 ? packet : packet_34, stream_id_size, 2052 framer_.version() <= QUIC_VERSION_33 ? packet : packet_34, stream_id_size,
2059 !kIncludeVersion); 2053 !kIncludeVersion);
2060 } 2054 }
2061 2055
2062 TEST_P(QuicFramerTest, StreamFrame1ByteStreamId) { 2056 TEST_P(QuicFramerTest, StreamFrame1ByteStreamId) {
2063 // clang-format off 2057 // clang-format off
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
2124 ASSERT_TRUE(visitor_.header_.get()); 2118 ASSERT_TRUE(visitor_.header_.get());
2125 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId, 2119 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
2126 !kIncludeDiversificationNonce)); 2120 !kIncludeDiversificationNonce));
2127 2121
2128 ASSERT_EQ(1u, visitor_.stream_frames_.size()); 2122 ASSERT_EQ(1u, visitor_.stream_frames_.size());
2129 EXPECT_EQ(0u, visitor_.ack_frames_.size()); 2123 EXPECT_EQ(0u, visitor_.ack_frames_.size());
2130 // Stream ID should be the last byte of kStreamId. 2124 // Stream ID should be the last byte of kStreamId.
2131 EXPECT_EQ(0x000000FF & kStreamId, visitor_.stream_frames_[0]->stream_id); 2125 EXPECT_EQ(0x000000FF & kStreamId, visitor_.stream_frames_[0]->stream_id);
2132 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); 2126 EXPECT_TRUE(visitor_.stream_frames_[0]->fin);
2133 EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset); 2127 EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset);
2134 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]); 2128 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0].get());
2135 2129
2136 // Now test framing boundaries. 2130 // Now test framing boundaries.
2137 const size_t stream_id_size = 1; 2131 const size_t stream_id_size = 1;
2138 CheckStreamFrameBoundaries( 2132 CheckStreamFrameBoundaries(
2139 framer_.version() <= QUIC_VERSION_33 ? packet : packet_34, stream_id_size, 2133 framer_.version() <= QUIC_VERSION_33 ? packet : packet_34, stream_id_size,
2140 !kIncludeVersion); 2134 !kIncludeVersion);
2141 } 2135 }
2142 2136
2143 TEST_P(QuicFramerTest, StreamFrameWithVersion) { 2137 TEST_P(QuicFramerTest, StreamFrameWithVersion) {
2144 // clang-format off 2138 // clang-format off
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
2210 EXPECT_TRUE(visitor_.header_->public_header.version_flag); 2204 EXPECT_TRUE(visitor_.header_->public_header.version_flag);
2211 EXPECT_EQ(GetParam(), visitor_.header_->public_header.versions[0]); 2205 EXPECT_EQ(GetParam(), visitor_.header_->public_header.versions[0]);
2212 EXPECT_TRUE(CheckDecryption(encrypted, kIncludeVersion, !kIncludePathId, 2206 EXPECT_TRUE(CheckDecryption(encrypted, kIncludeVersion, !kIncludePathId,
2213 !kIncludeDiversificationNonce)); 2207 !kIncludeDiversificationNonce));
2214 2208
2215 ASSERT_EQ(1u, visitor_.stream_frames_.size()); 2209 ASSERT_EQ(1u, visitor_.stream_frames_.size());
2216 EXPECT_EQ(0u, visitor_.ack_frames_.size()); 2210 EXPECT_EQ(0u, visitor_.ack_frames_.size());
2217 EXPECT_EQ(kStreamId, visitor_.stream_frames_[0]->stream_id); 2211 EXPECT_EQ(kStreamId, visitor_.stream_frames_[0]->stream_id);
2218 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); 2212 EXPECT_TRUE(visitor_.stream_frames_[0]->fin);
2219 EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset); 2213 EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset);
2220 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]); 2214 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0].get());
2221 2215
2222 // Now test framing boundaries. 2216 // Now test framing boundaries.
2223 CheckStreamFrameBoundaries( 2217 CheckStreamFrameBoundaries(
2224 framer_.version() <= QUIC_VERSION_33 ? packet : packet_34, 2218 framer_.version() <= QUIC_VERSION_33 ? packet : packet_34,
2225 kQuicMaxStreamIdSize, kIncludeVersion); 2219 kQuicMaxStreamIdSize, kIncludeVersion);
2226 } 2220 }
2227 2221
2228 TEST_P(QuicFramerTest, RejectPacket) { 2222 TEST_P(QuicFramerTest, RejectPacket) {
2229 visitor_.accept_packet_ = false; 2223 visitor_.accept_packet_ = false;
2230 2224
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
2365 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 2359 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
2366 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 2360 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
2367 2361
2368 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 2362 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
2369 ASSERT_TRUE(visitor_.header_.get()); 2363 ASSERT_TRUE(visitor_.header_.get());
2370 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId, 2364 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
2371 !kIncludeDiversificationNonce)); 2365 !kIncludeDiversificationNonce));
2372 2366
2373 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 2367 EXPECT_EQ(0u, visitor_.stream_frames_.size());
2374 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 2368 ASSERT_EQ(1u, visitor_.ack_frames_.size());
2375 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; 2369 const QuicAckFrame& frame = *visitor_.ack_frames_[0].get();
2376 EXPECT_EQ(0xBA, frame.entropy_hash); 2370 EXPECT_EQ(0xBA, frame.entropy_hash);
2377 EXPECT_EQ(kLargestObserved, frame.largest_observed); 2371 EXPECT_EQ(kLargestObserved, frame.largest_observed);
2378 ASSERT_EQ(1u, frame.packets.NumPacketsSlow()); 2372 ASSERT_EQ(1u, frame.packets.NumPacketsSlow());
2379 ASSERT_EQ(2u, frame.received_packet_times.size()); 2373 ASSERT_EQ(2u, frame.received_packet_times.size());
2380 EXPECT_EQ(kMissingPacket, frame.packets.Min()); 2374 EXPECT_EQ(kMissingPacket, frame.packets.Min());
2381 2375
2382 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; 2376 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize;
2383 const size_t kLargestObservedOffset = 2377 const size_t kLargestObservedOffset =
2384 kReceivedEntropyOffset + kQuicEntropyHashSize; 2378 kReceivedEntropyOffset + kQuicEntropyHashSize;
2385 const size_t kMissingDeltaTimeOffset = 2379 const size_t kMissingDeltaTimeOffset =
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
2477 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 2471 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
2478 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 2472 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
2479 2473
2480 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 2474 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
2481 ASSERT_TRUE(visitor_.header_.get()); 2475 ASSERT_TRUE(visitor_.header_.get());
2482 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId, 2476 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
2483 !kIncludeDiversificationNonce)); 2477 !kIncludeDiversificationNonce));
2484 2478
2485 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 2479 EXPECT_EQ(0u, visitor_.stream_frames_.size());
2486 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 2480 ASSERT_EQ(1u, visitor_.ack_frames_.size());
2487 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; 2481 const QuicAckFrame& frame = *visitor_.ack_frames_[0].get();
2488 EXPECT_EQ(0xBA, frame.entropy_hash); 2482 EXPECT_EQ(0xBA, frame.entropy_hash);
2489 EXPECT_EQ(kLargestObserved, frame.largest_observed); 2483 EXPECT_EQ(kLargestObserved, frame.largest_observed);
2490 ASSERT_EQ(1u, frame.packets.NumPacketsSlow()); 2484 ASSERT_EQ(1u, frame.packets.NumPacketsSlow());
2491 ASSERT_EQ(1u, frame.received_packet_times.size()); 2485 ASSERT_EQ(1u, frame.received_packet_times.size());
2492 EXPECT_EQ(kMissingPacket, frame.packets.Min()); 2486 EXPECT_EQ(kMissingPacket, frame.packets.Min());
2493 2487
2494 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; 2488 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize;
2495 const size_t kLargestObservedOffset = 2489 const size_t kLargestObservedOffset =
2496 kReceivedEntropyOffset + kQuicEntropyHashSize; 2490 kReceivedEntropyOffset + kQuicEntropyHashSize;
2497 const size_t kMissingDeltaTimeOffset = 2491 const size_t kMissingDeltaTimeOffset =
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
2567 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 2561 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
2568 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 2562 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
2569 2563
2570 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 2564 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
2571 ASSERT_TRUE(visitor_.header_.get()); 2565 ASSERT_TRUE(visitor_.header_.get());
2572 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId, 2566 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
2573 !kIncludeDiversificationNonce)); 2567 !kIncludeDiversificationNonce));
2574 2568
2575 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 2569 EXPECT_EQ(0u, visitor_.stream_frames_.size());
2576 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 2570 ASSERT_EQ(1u, visitor_.ack_frames_.size());
2577 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; 2571 const QuicAckFrame& frame = *visitor_.ack_frames_[0].get();
2578 EXPECT_EQ(kSmallLargestObserved, frame.largest_observed); 2572 EXPECT_EQ(kSmallLargestObserved, frame.largest_observed);
2579 EXPECT_FALSE(frame.missing); 2573 EXPECT_FALSE(frame.missing);
2580 ASSERT_EQ(4660u, frame.packets.NumPacketsSlow()); 2574 ASSERT_EQ(4660u, frame.packets.NumPacketsSlow());
2581 2575
2582 const size_t kLargestAckedOffset = kQuicFrameTypeSize; 2576 const size_t kLargestAckedOffset = kQuicFrameTypeSize;
2583 const size_t kLargestAckedDeltaTimeOffset = 2577 const size_t kLargestAckedDeltaTimeOffset =
2584 kLargestAckedOffset + PACKET_2BYTE_PACKET_NUMBER; 2578 kLargestAckedOffset + PACKET_2BYTE_PACKET_NUMBER;
2585 const size_t kFirstAckBlockLengthOffset = 2579 const size_t kFirstAckBlockLengthOffset =
2586 kLargestAckedDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize; 2580 kLargestAckedDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize;
2587 const size_t kNumTimestampsOffset = 2581 const size_t kNumTimestampsOffset =
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
2667 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 2661 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
2668 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 2662 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
2669 2663
2670 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 2664 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
2671 ASSERT_TRUE(visitor_.header_.get()); 2665 ASSERT_TRUE(visitor_.header_.get());
2672 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId, 2666 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
2673 !kIncludeDiversificationNonce)); 2667 !kIncludeDiversificationNonce));
2674 2668
2675 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 2669 EXPECT_EQ(0u, visitor_.stream_frames_.size());
2676 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 2670 ASSERT_EQ(1u, visitor_.ack_frames_.size());
2677 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; 2671 const QuicAckFrame& frame = *visitor_.ack_frames_[0].get();
2678 EXPECT_EQ(kSmallLargestObserved, frame.largest_observed); 2672 EXPECT_EQ(kSmallLargestObserved, frame.largest_observed);
2679 EXPECT_FALSE(frame.missing); 2673 EXPECT_FALSE(frame.missing);
2680 ASSERT_EQ(4254u, frame.packets.NumPacketsSlow()); 2674 ASSERT_EQ(4254u, frame.packets.NumPacketsSlow());
2681 2675
2682 const size_t kLargestAckedOffset = kQuicFrameTypeSize; 2676 const size_t kLargestAckedOffset = kQuicFrameTypeSize;
2683 const size_t kLargestAckedDeltaTimeOffset = 2677 const size_t kLargestAckedDeltaTimeOffset =
2684 kLargestAckedOffset + PACKET_2BYTE_PACKET_NUMBER; 2678 kLargestAckedOffset + PACKET_2BYTE_PACKET_NUMBER;
2685 const size_t kNumberOfAckBlocksOffset = 2679 const size_t kNumberOfAckBlocksOffset =
2686 kLargestAckedDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize; 2680 kLargestAckedDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize;
2687 const size_t kFirstAckBlockLengthOffset = 2681 const size_t kFirstAckBlockLengthOffset =
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
2800 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 2794 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
2801 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 2795 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
2802 2796
2803 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 2797 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
2804 ASSERT_TRUE(visitor_.header_.get()); 2798 ASSERT_TRUE(visitor_.header_.get());
2805 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId, 2799 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
2806 !kIncludeDiversificationNonce)); 2800 !kIncludeDiversificationNonce));
2807 2801
2808 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 2802 EXPECT_EQ(0u, visitor_.stream_frames_.size());
2809 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 2803 ASSERT_EQ(1u, visitor_.ack_frames_.size());
2810 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; 2804 const QuicAckFrame& frame = *visitor_.ack_frames_[0].get();
2811 EXPECT_EQ(0xBA, frame.entropy_hash); 2805 EXPECT_EQ(0xBA, frame.entropy_hash);
2812 EXPECT_EQ(kLargestObserved, frame.largest_observed); 2806 EXPECT_EQ(kLargestObserved, frame.largest_observed);
2813 ASSERT_EQ(1u, frame.packets.NumPacketsSlow()); 2807 ASSERT_EQ(1u, frame.packets.NumPacketsSlow());
2814 EXPECT_EQ(kMissingPacket, frame.packets.Min()); 2808 EXPECT_EQ(kMissingPacket, frame.packets.Min());
2815 2809
2816 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; 2810 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize;
2817 const size_t kLargestObservedOffset = 2811 const size_t kLargestObservedOffset =
2818 kReceivedEntropyOffset + kQuicEntropyHashSize; 2812 kReceivedEntropyOffset + kQuicEntropyHashSize;
2819 const size_t kMissingDeltaTimeOffset = 2813 const size_t kMissingDeltaTimeOffset =
2820 kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER; 2814 kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
2897 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 2891 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
2898 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 2892 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
2899 2893
2900 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 2894 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
2901 ASSERT_TRUE(visitor_.header_.get()); 2895 ASSERT_TRUE(visitor_.header_.get());
2902 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId, 2896 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
2903 !kIncludeDiversificationNonce)); 2897 !kIncludeDiversificationNonce));
2904 2898
2905 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 2899 EXPECT_EQ(0u, visitor_.stream_frames_.size());
2906 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 2900 ASSERT_EQ(1u, visitor_.ack_frames_.size());
2907 QuicAckFrame* frame = visitor_.ack_frames_[0]; 2901 QuicAckFrame* frame = visitor_.ack_frames_[0].get();
2908 EXPECT_EQ(0xBA, frame->entropy_hash); 2902 EXPECT_EQ(0xBA, frame->entropy_hash);
2909 EXPECT_EQ(kLargestObserved, frame->largest_observed); 2903 EXPECT_EQ(kLargestObserved, frame->largest_observed);
2910 ASSERT_EQ(500u, frame->packets.NumPacketsSlow()); 2904 ASSERT_EQ(500u, frame->packets.NumPacketsSlow());
2911 EXPECT_EQ(kMissingPacket - 499, frame->packets.Min()); 2905 EXPECT_EQ(kMissingPacket - 499, frame->packets.Min());
2912 EXPECT_EQ(kMissingPacket, frame->packets.Max()); 2906 EXPECT_EQ(kMissingPacket, frame->packets.Max());
2913 2907
2914 // Verify that the packet re-serializes identically. 2908 // Verify that the packet re-serializes identically.
2915 QuicFrames frames; 2909 QuicFrames frames;
2916 frames.push_back(QuicFrame(frame)); 2910 frames.push_back(QuicFrame(frame));
2917 std::unique_ptr<QuicPacket> data(BuildDataPacket(*visitor_.header_, frames)); 2911 std::unique_ptr<QuicPacket> data(BuildDataPacket(*visitor_.header_, frames));
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
2953 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 2947 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
2954 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 2948 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
2955 2949
2956 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 2950 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
2957 ASSERT_TRUE(visitor_.header_.get()); 2951 ASSERT_TRUE(visitor_.header_.get());
2958 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId, 2952 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
2959 !kIncludeDiversificationNonce)); 2953 !kIncludeDiversificationNonce));
2960 2954
2961 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 2955 EXPECT_EQ(0u, visitor_.stream_frames_.size());
2962 ASSERT_EQ(1u, visitor_.stop_waiting_frames_.size()); 2956 ASSERT_EQ(1u, visitor_.stop_waiting_frames_.size());
2963 const QuicStopWaitingFrame& frame = *visitor_.stop_waiting_frames_[0]; 2957 const QuicStopWaitingFrame& frame = *visitor_.stop_waiting_frames_[0].get();
2964 EXPECT_EQ(0xAB, frame.entropy_hash); 2958 EXPECT_EQ(0xAB, frame.entropy_hash);
2965 EXPECT_EQ(kLeastUnacked, frame.least_unacked); 2959 EXPECT_EQ(kLeastUnacked, frame.least_unacked);
2966 2960
2967 const size_t kSentEntropyOffset = kQuicFrameTypeSize; 2961 const size_t kSentEntropyOffset = kQuicFrameTypeSize;
2968 const size_t kLeastUnackedOffset = kSentEntropyOffset + kQuicEntropyHashSize; 2962 const size_t kLeastUnackedOffset = kSentEntropyOffset + kQuicEntropyHashSize;
2969 const size_t frame_size = 7; 2963 const size_t frame_size = 7;
2970 for (size_t i = kQuicFrameTypeSize; i < frame_size; ++i) { 2964 for (size_t i = kQuicFrameTypeSize; i < frame_size; ++i) {
2971 string expected_error; 2965 string expected_error;
2972 if (i < kLeastUnackedOffset) { 2966 if (i < kLeastUnackedOffset) {
2973 expected_error = "Unable to read entropy hash for sent packets."; 2967 expected_error = "Unable to read entropy hash for sent packets.";
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
3009 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 3003 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
3010 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 3004 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
3011 3005
3012 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 3006 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
3013 ASSERT_TRUE(visitor_.header_.get()); 3007 ASSERT_TRUE(visitor_.header_.get());
3014 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId, 3008 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
3015 !kIncludeDiversificationNonce)); 3009 !kIncludeDiversificationNonce));
3016 3010
3017 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 3011 EXPECT_EQ(0u, visitor_.stream_frames_.size());
3018 ASSERT_EQ(1u, visitor_.stop_waiting_frames_.size()); 3012 ASSERT_EQ(1u, visitor_.stop_waiting_frames_.size());
3019 const QuicStopWaitingFrame& frame = *visitor_.stop_waiting_frames_[0]; 3013 const QuicStopWaitingFrame& frame = *visitor_.stop_waiting_frames_[0].get();
3020 EXPECT_EQ(kLeastUnacked, frame.least_unacked); 3014 EXPECT_EQ(kLeastUnacked, frame.least_unacked);
3021 3015
3022 const size_t frame_size = 7; 3016 const size_t frame_size = 7;
3023 for (size_t i = kQuicFrameTypeSize; i < frame_size; ++i) { 3017 for (size_t i = kQuicFrameTypeSize; i < frame_size; ++i) {
3024 string expected_error; 3018 string expected_error;
3025 expected_error = "Unable to read least unacked delta."; 3019 expected_error = "Unable to read least unacked delta.";
3026 CheckProcessingFails( 3020 CheckProcessingFails(
3027 packet, 3021 packet,
3028 i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, 3022 i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID,
3029 !kIncludeVersion, !kIncludePathId, 3023 !kIncludeVersion, !kIncludePathId,
(...skipping 3032 matching lines...) Expand 10 before | Expand all | Expand 10 after
6062 ASSERT_TRUE(raw_ack_packet != nullptr); 6056 ASSERT_TRUE(raw_ack_packet != nullptr);
6063 char buffer[kMaxPacketSize]; 6057 char buffer[kMaxPacketSize];
6064 size_t encrypted_length = framer_.EncryptPayload( 6058 size_t encrypted_length = framer_.EncryptPayload(
6065 ENCRYPTION_NONE, kDefaultPathId, header.packet_number, *raw_ack_packet, 6059 ENCRYPTION_NONE, kDefaultPathId, header.packet_number, *raw_ack_packet,
6066 buffer, kMaxPacketSize); 6060 buffer, kMaxPacketSize);
6067 ASSERT_NE(0u, encrypted_length); 6061 ASSERT_NE(0u, encrypted_length);
6068 // Now make sure we can turn our ack packet back into an ack frame. 6062 // Now make sure we can turn our ack packet back into an ack frame.
6069 ASSERT_TRUE(framer_.ProcessPacket( 6063 ASSERT_TRUE(framer_.ProcessPacket(
6070 QuicEncryptedPacket(buffer, encrypted_length, false))); 6064 QuicEncryptedPacket(buffer, encrypted_length, false)));
6071 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 6065 ASSERT_EQ(1u, visitor_.ack_frames_.size());
6072 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0]; 6066 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0].get();
6073 if (framer_.version() <= QUIC_VERSION_33) { 6067 if (framer_.version() <= QUIC_VERSION_33) {
6074 EXPECT_TRUE(processed_ack_frame.is_truncated); 6068 EXPECT_TRUE(processed_ack_frame.is_truncated);
6075 EXPECT_EQ(510u, processed_ack_frame.largest_observed); 6069 EXPECT_EQ(510u, processed_ack_frame.largest_observed);
6076 EXPECT_TRUE(processed_ack_frame.missing); 6070 EXPECT_TRUE(processed_ack_frame.missing);
6077 ASSERT_EQ(255u, processed_ack_frame.packets.NumPacketsSlow()); 6071 ASSERT_EQ(255u, processed_ack_frame.packets.NumPacketsSlow());
6078 EXPECT_EQ(1u, processed_ack_frame.packets.Min()); 6072 EXPECT_EQ(1u, processed_ack_frame.packets.Min());
6079 EXPECT_EQ(509u, processed_ack_frame.packets.Max()); 6073 EXPECT_EQ(509u, processed_ack_frame.packets.Max());
6080 } else { 6074 } else {
6081 EXPECT_FALSE(processed_ack_frame.is_truncated); 6075 EXPECT_FALSE(processed_ack_frame.is_truncated);
6082 EXPECT_FALSE(processed_ack_frame.missing); 6076 EXPECT_FALSE(processed_ack_frame.missing);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
6114 ASSERT_TRUE(raw_ack_packet != nullptr); 6108 ASSERT_TRUE(raw_ack_packet != nullptr);
6115 char buffer[kMaxPacketSize]; 6109 char buffer[kMaxPacketSize];
6116 size_t encrypted_length = framer_.EncryptPayload( 6110 size_t encrypted_length = framer_.EncryptPayload(
6117 ENCRYPTION_NONE, kDefaultPathId, header.packet_number, *raw_ack_packet, 6111 ENCRYPTION_NONE, kDefaultPathId, header.packet_number, *raw_ack_packet,
6118 buffer, kMaxPacketSize); 6112 buffer, kMaxPacketSize);
6119 ASSERT_NE(0u, encrypted_length); 6113 ASSERT_NE(0u, encrypted_length);
6120 // Now make sure we can turn our ack packet back into an ack frame. 6114 // Now make sure we can turn our ack packet back into an ack frame.
6121 ASSERT_TRUE(framer_.ProcessPacket( 6115 ASSERT_TRUE(framer_.ProcessPacket(
6122 QuicEncryptedPacket(buffer, encrypted_length, false))); 6116 QuicEncryptedPacket(buffer, encrypted_length, false)));
6123 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 6117 ASSERT_EQ(1u, visitor_.ack_frames_.size());
6124 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0]; 6118 QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0].get();
6125 if (framer_.version() <= QUIC_VERSION_33) { 6119 if (framer_.version() <= QUIC_VERSION_33) {
6126 EXPECT_TRUE(processed_ack_frame.is_truncated); 6120 EXPECT_TRUE(processed_ack_frame.is_truncated);
6127 EXPECT_EQ(476u, processed_ack_frame.largest_observed); 6121 EXPECT_EQ(476u, processed_ack_frame.largest_observed);
6128 EXPECT_TRUE(processed_ack_frame.missing); 6122 EXPECT_TRUE(processed_ack_frame.missing);
6129 ASSERT_EQ(238u, processed_ack_frame.packets.NumPacketsSlow()); 6123 ASSERT_EQ(238u, processed_ack_frame.packets.NumPacketsSlow());
6130 EXPECT_EQ(1u, processed_ack_frame.packets.Min()); 6124 EXPECT_EQ(1u, processed_ack_frame.packets.Min());
6131 EXPECT_EQ(475u, processed_ack_frame.packets.Max()); 6125 EXPECT_EQ(475u, processed_ack_frame.packets.Max());
6132 } else { 6126 } else {
6133 EXPECT_FALSE(processed_ack_frame.is_truncated); 6127 EXPECT_FALSE(processed_ack_frame.is_truncated);
6134 EXPECT_EQ(600u, processed_ack_frame.largest_observed); 6128 EXPECT_EQ(600u, processed_ack_frame.largest_observed);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
6168 ASSERT_NE(0u, encrypted_length); 6162 ASSERT_NE(0u, encrypted_length);
6169 6163
6170 // Now make sure we can turn our ack packet back into an ack frame. 6164 // Now make sure we can turn our ack packet back into an ack frame.
6171 ASSERT_TRUE(framer_.ProcessPacket( 6165 ASSERT_TRUE(framer_.ProcessPacket(
6172 QuicEncryptedPacket(buffer, encrypted_length, false))); 6166 QuicEncryptedPacket(buffer, encrypted_length, false)));
6173 6167
6174 // Test for clean truncation of the ack by comparing the length of the 6168 // Test for clean truncation of the ack by comparing the length of the
6175 // original packets to the re-serialized packets. 6169 // original packets to the re-serialized packets.
6176 frames.clear(); 6170 frames.clear();
6177 frame.type = ACK_FRAME; 6171 frame.type = ACK_FRAME;
6178 frame.ack_frame = visitor_.ack_frames_[0]; 6172 frame.ack_frame = visitor_.ack_frames_[0].get();
6179 frames.push_back(frame); 6173 frames.push_back(frame);
6180 6174
6181 size_t original_raw_length = raw_ack_packet->length(); 6175 size_t original_raw_length = raw_ack_packet->length();
6182 raw_ack_packet.reset(BuildDataPacket(header, frames)); 6176 raw_ack_packet.reset(BuildDataPacket(header, frames));
6183 ASSERT_TRUE(raw_ack_packet != nullptr); 6177 ASSERT_TRUE(raw_ack_packet != nullptr);
6184 EXPECT_EQ(original_raw_length, raw_ack_packet->length()); 6178 EXPECT_EQ(original_raw_length, raw_ack_packet->length());
6185 ASSERT_TRUE(raw_ack_packet != nullptr); 6179 ASSERT_TRUE(raw_ack_packet != nullptr);
6186 } 6180 }
6187 6181
6188 TEST_P(QuicFramerTest, EntropyFlagTest) { 6182 TEST_P(QuicFramerTest, EntropyFlagTest) {
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
6479 'o', ' ', 'w', 'o', 6473 'o', ' ', 'w', 'o',
6480 'r', 'l', 'd', '!', 6474 'r', 'l', 'd', '!',
6481 }; 6475 };
6482 // clang-format on 6476 // clang-format on
6483 6477
6484 QuicFramerFuzzFunc(packet, arraysize(packet)); 6478 QuicFramerFuzzFunc(packet, arraysize(packet));
6485 } 6479 }
6486 6480
6487 } // namespace test 6481 } // namespace test
6488 } // namespace net 6482 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/quic_crypto_server_stream_test.cc ('k') | net/quic/core/quic_multipath_received_packet_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698