| 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 <algorithm> | 5 #include <algorithm> |
| 6 #include <map> | 6 #include <map> |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/containers/hash_tables.h" | 10 #include "base/containers/hash_tables.h" |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 QuicConnectionCloseFrame connection_close_frame_; | 302 QuicConnectionCloseFrame connection_close_frame_; |
| 303 QuicGoAwayFrame goaway_frame_; | 303 QuicGoAwayFrame goaway_frame_; |
| 304 }; | 304 }; |
| 305 | 305 |
| 306 class QuicFramerTest : public ::testing::TestWithParam<QuicVersion> { | 306 class QuicFramerTest : public ::testing::TestWithParam<QuicVersion> { |
| 307 public: | 307 public: |
| 308 QuicFramerTest() | 308 QuicFramerTest() |
| 309 : encrypter_(new test::TestEncrypter()), | 309 : encrypter_(new test::TestEncrypter()), |
| 310 decrypter_(new test::TestDecrypter()), | 310 decrypter_(new test::TestDecrypter()), |
| 311 start_(QuicTime::Zero().Add(QuicTime::Delta::FromMicroseconds(0x10))), | 311 start_(QuicTime::Zero().Add(QuicTime::Delta::FromMicroseconds(0x10))), |
| 312 framer_(QuicVersionMax(), start_, true) { | 312 framer_(QuicSupportedVersions(), start_, true) { |
| 313 version_ = GetParam(); | 313 version_ = GetParam(); |
| 314 framer_.set_version(version_); | 314 framer_.set_version(version_); |
| 315 framer_.SetDecrypter(decrypter_); | 315 framer_.SetDecrypter(decrypter_); |
| 316 framer_.SetEncrypter(ENCRYPTION_NONE, encrypter_); | 316 framer_.SetEncrypter(ENCRYPTION_NONE, encrypter_); |
| 317 framer_.set_visitor(&visitor_); | 317 framer_.set_visitor(&visitor_); |
| 318 framer_.set_received_entropy_calculator(&entropy_calculator_); | 318 framer_.set_received_entropy_calculator(&entropy_calculator_); |
| 319 } | 319 } |
| 320 | 320 |
| 321 // Helper function to get unsigned char representation of digit in the | 321 // Helper function to get unsigned char representation of digit in the |
| 322 // units place of the current QUIC version number. | 322 // units place of the current QUIC version number. |
| (...skipping 1955 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2278 | 2278 |
| 2279 uint64 header_size = | 2279 uint64 header_size = |
| 2280 GetPacketHeaderSize(PACKET_8BYTE_GUID, !kIncludeVersion, | 2280 GetPacketHeaderSize(PACKET_8BYTE_GUID, !kIncludeVersion, |
| 2281 PACKET_6BYTE_SEQUENCE_NUMBER, NOT_IN_FEC_GROUP); | 2281 PACKET_6BYTE_SEQUENCE_NUMBER, NOT_IN_FEC_GROUP); |
| 2282 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); | 2282 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); |
| 2283 | 2283 |
| 2284 scoped_ptr<QuicPacket> data( | 2284 scoped_ptr<QuicPacket> data( |
| 2285 framer_.BuildUnsizedDataPacket(header, frames).packet); | 2285 framer_.BuildUnsizedDataPacket(header, frames).packet); |
| 2286 ASSERT_TRUE(data != NULL); | 2286 ASSERT_TRUE(data != NULL); |
| 2287 | 2287 |
| 2288 // TODO(rtenneti): remove "- 16" when we remove QUIC_VERSION_10. |
| 2288 test::CompareCharArraysWithHexError("constructed packet", | 2289 test::CompareCharArraysWithHexError("constructed packet", |
| 2289 data->data(), data->length(), | 2290 data->data(), data->length(), |
| 2290 AsChars(packet), arraysize(packet)); | 2291 AsChars(packet), |
| 2292 arraysize(packet) - 16); |
| 2291 } | 2293 } |
| 2292 | 2294 |
| 2293 TEST_P(QuicFramerTest, Build4ByteSequenceNumberPaddingFramePacket) { | 2295 TEST_P(QuicFramerTest, Build4ByteSequenceNumberPaddingFramePacket) { |
| 2294 QuicPacketHeader header; | 2296 QuicPacketHeader header; |
| 2295 header.public_header.guid = GG_UINT64_C(0xFEDCBA9876543210); | 2297 header.public_header.guid = GG_UINT64_C(0xFEDCBA9876543210); |
| 2296 header.public_header.reset_flag = false; | 2298 header.public_header.reset_flag = false; |
| 2297 header.public_header.version_flag = false; | 2299 header.public_header.version_flag = false; |
| 2298 header.fec_flag = false; | 2300 header.fec_flag = false; |
| 2299 header.entropy_flag = false; | 2301 header.entropy_flag = false; |
| 2300 header.public_header.sequence_number_length = PACKET_4BYTE_SEQUENCE_NUMBER; | 2302 header.public_header.sequence_number_length = PACKET_4BYTE_SEQUENCE_NUMBER; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 2324 | 2326 |
| 2325 uint64 header_size = | 2327 uint64 header_size = |
| 2326 GetPacketHeaderSize(PACKET_8BYTE_GUID, !kIncludeVersion, | 2328 GetPacketHeaderSize(PACKET_8BYTE_GUID, !kIncludeVersion, |
| 2327 PACKET_4BYTE_SEQUENCE_NUMBER, NOT_IN_FEC_GROUP); | 2329 PACKET_4BYTE_SEQUENCE_NUMBER, NOT_IN_FEC_GROUP); |
| 2328 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); | 2330 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); |
| 2329 | 2331 |
| 2330 scoped_ptr<QuicPacket> data( | 2332 scoped_ptr<QuicPacket> data( |
| 2331 framer_.BuildUnsizedDataPacket(header, frames).packet); | 2333 framer_.BuildUnsizedDataPacket(header, frames).packet); |
| 2332 ASSERT_TRUE(data != NULL); | 2334 ASSERT_TRUE(data != NULL); |
| 2333 | 2335 |
| 2336 // TODO(rtenneti): remove "- 16" when we remove QUIC_VERSION_10. |
| 2334 test::CompareCharArraysWithHexError("constructed packet", | 2337 test::CompareCharArraysWithHexError("constructed packet", |
| 2335 data->data(), data->length(), | 2338 data->data(), data->length(), |
| 2336 AsChars(packet), arraysize(packet)); | 2339 AsChars(packet), |
| 2340 arraysize(packet) - 16); |
| 2337 } | 2341 } |
| 2338 | 2342 |
| 2339 TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) { | 2343 TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) { |
| 2340 QuicPacketHeader header; | 2344 QuicPacketHeader header; |
| 2341 header.public_header.guid = GG_UINT64_C(0xFEDCBA9876543210); | 2345 header.public_header.guid = GG_UINT64_C(0xFEDCBA9876543210); |
| 2342 header.public_header.reset_flag = false; | 2346 header.public_header.reset_flag = false; |
| 2343 header.public_header.version_flag = false; | 2347 header.public_header.version_flag = false; |
| 2344 header.fec_flag = false; | 2348 header.fec_flag = false; |
| 2345 header.entropy_flag = false; | 2349 header.entropy_flag = false; |
| 2346 header.public_header.sequence_number_length = PACKET_2BYTE_SEQUENCE_NUMBER; | 2350 header.public_header.sequence_number_length = PACKET_2BYTE_SEQUENCE_NUMBER; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 2370 | 2374 |
| 2371 uint64 header_size = | 2375 uint64 header_size = |
| 2372 GetPacketHeaderSize(PACKET_8BYTE_GUID, !kIncludeVersion, | 2376 GetPacketHeaderSize(PACKET_8BYTE_GUID, !kIncludeVersion, |
| 2373 PACKET_2BYTE_SEQUENCE_NUMBER, NOT_IN_FEC_GROUP); | 2377 PACKET_2BYTE_SEQUENCE_NUMBER, NOT_IN_FEC_GROUP); |
| 2374 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); | 2378 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); |
| 2375 | 2379 |
| 2376 scoped_ptr<QuicPacket> data( | 2380 scoped_ptr<QuicPacket> data( |
| 2377 framer_.BuildUnsizedDataPacket(header, frames).packet); | 2381 framer_.BuildUnsizedDataPacket(header, frames).packet); |
| 2378 ASSERT_TRUE(data != NULL); | 2382 ASSERT_TRUE(data != NULL); |
| 2379 | 2383 |
| 2384 // TODO(rtenneti): remove "- 16" when we remove QUIC_VERSION_10. |
| 2380 test::CompareCharArraysWithHexError("constructed packet", | 2385 test::CompareCharArraysWithHexError("constructed packet", |
| 2381 data->data(), data->length(), | 2386 data->data(), data->length(), |
| 2382 AsChars(packet), arraysize(packet)); | 2387 AsChars(packet), |
| 2388 arraysize(packet) - 16); |
| 2383 } | 2389 } |
| 2384 | 2390 |
| 2385 TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) { | 2391 TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) { |
| 2386 QuicPacketHeader header; | 2392 QuicPacketHeader header; |
| 2387 header.public_header.guid = GG_UINT64_C(0xFEDCBA9876543210); | 2393 header.public_header.guid = GG_UINT64_C(0xFEDCBA9876543210); |
| 2388 header.public_header.reset_flag = false; | 2394 header.public_header.reset_flag = false; |
| 2389 header.public_header.version_flag = false; | 2395 header.public_header.version_flag = false; |
| 2390 header.fec_flag = false; | 2396 header.fec_flag = false; |
| 2391 header.entropy_flag = false; | 2397 header.entropy_flag = false; |
| 2392 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; | 2398 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 2416 | 2422 |
| 2417 uint64 header_size = | 2423 uint64 header_size = |
| 2418 GetPacketHeaderSize(PACKET_8BYTE_GUID, !kIncludeVersion, | 2424 GetPacketHeaderSize(PACKET_8BYTE_GUID, !kIncludeVersion, |
| 2419 PACKET_1BYTE_SEQUENCE_NUMBER, NOT_IN_FEC_GROUP); | 2425 PACKET_1BYTE_SEQUENCE_NUMBER, NOT_IN_FEC_GROUP); |
| 2420 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); | 2426 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); |
| 2421 | 2427 |
| 2422 scoped_ptr<QuicPacket> data( | 2428 scoped_ptr<QuicPacket> data( |
| 2423 framer_.BuildUnsizedDataPacket(header, frames).packet); | 2429 framer_.BuildUnsizedDataPacket(header, frames).packet); |
| 2424 ASSERT_TRUE(data != NULL); | 2430 ASSERT_TRUE(data != NULL); |
| 2425 | 2431 |
| 2432 // TODO(rtenneti): remove "- 16" when we remove QUIC_VERSION_10. |
| 2426 test::CompareCharArraysWithHexError("constructed packet", | 2433 test::CompareCharArraysWithHexError("constructed packet", |
| 2427 data->data(), data->length(), | 2434 data->data(), data->length(), |
| 2428 AsChars(packet), arraysize(packet)); | 2435 AsChars(packet), |
| 2436 arraysize(packet) - 16); |
| 2429 } | 2437 } |
| 2430 | 2438 |
| 2431 TEST_P(QuicFramerTest, BuildStreamFramePacket) { | 2439 TEST_P(QuicFramerTest, BuildStreamFramePacket) { |
| 2432 QuicPacketHeader header; | 2440 QuicPacketHeader header; |
| 2433 header.public_header.guid = GG_UINT64_C(0xFEDCBA9876543210); | 2441 header.public_header.guid = GG_UINT64_C(0xFEDCBA9876543210); |
| 2434 header.public_header.reset_flag = false; | 2442 header.public_header.reset_flag = false; |
| 2435 header.public_header.version_flag = false; | 2443 header.public_header.version_flag = false; |
| 2436 header.fec_flag = false; | 2444 header.fec_flag = false; |
| 2437 header.entropy_flag = true; | 2445 header.entropy_flag = true; |
| 2438 header.packet_sequence_number = GG_UINT64_C(0x77123456789ABC); | 2446 header.packet_sequence_number = GG_UINT64_C(0x77123456789ABC); |
| (...skipping 1052 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3491 EXPECT_CALL(visitor, OnConnectionCloseFrame(_)).Times(0); | 3499 EXPECT_CALL(visitor, OnConnectionCloseFrame(_)).Times(0); |
| 3492 EXPECT_CALL(visitor, OnPacketComplete()); | 3500 EXPECT_CALL(visitor, OnPacketComplete()); |
| 3493 | 3501 |
| 3494 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); | 3502 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); |
| 3495 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 3503 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
| 3496 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 3504 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 3497 } | 3505 } |
| 3498 | 3506 |
| 3499 } // namespace test | 3507 } // namespace test |
| 3500 } // namespace net | 3508 } // namespace net |
| OLD | NEW |