| 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/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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |