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 |