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/quic_framer.h" | 5 #include "net/quic/quic_framer.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
487 QuicPacketSequenceNumber wire_sequence_number = | 487 QuicPacketSequenceNumber wire_sequence_number = |
488 expected_sequence_number & kMask; | 488 expected_sequence_number & kMask; |
489 QuicFramerPeer::SetLastSequenceNumber(&framer_, last_sequence_number); | 489 QuicFramerPeer::SetLastSequenceNumber(&framer_, last_sequence_number); |
490 EXPECT_EQ(expected_sequence_number, | 490 EXPECT_EQ(expected_sequence_number, |
491 QuicFramerPeer::CalculatePacketSequenceNumberFromWire( | 491 QuicFramerPeer::CalculatePacketSequenceNumberFromWire( |
492 &framer_, PACKET_6BYTE_SEQUENCE_NUMBER, wire_sequence_number)) | 492 &framer_, PACKET_6BYTE_SEQUENCE_NUMBER, wire_sequence_number)) |
493 << "last_sequence_number: " << last_sequence_number | 493 << "last_sequence_number: " << last_sequence_number |
494 << " wire_sequence_number: " << wire_sequence_number; | 494 << " wire_sequence_number: " << wire_sequence_number; |
495 } | 495 } |
496 | 496 |
| 497 QuicPacket* BuildDataPacket(const QuicPacketHeader& header, |
| 498 const QuicFrames& frames) { |
| 499 return BuildUnsizedDataPacket(&framer_, header, frames).packet; |
| 500 } |
| 501 |
497 test::TestEncrypter* encrypter_; | 502 test::TestEncrypter* encrypter_; |
498 test::TestDecrypter* decrypter_; | 503 test::TestDecrypter* decrypter_; |
499 QuicVersion version_; | 504 QuicVersion version_; |
500 QuicTime start_; | 505 QuicTime start_; |
501 QuicFramer framer_; | 506 QuicFramer framer_; |
502 test::TestQuicVisitor visitor_; | 507 test::TestQuicVisitor visitor_; |
503 test::TestEntropyCalculator entropy_calculator_; | 508 test::TestEntropyCalculator entropy_calculator_; |
504 }; | 509 }; |
505 | 510 |
506 // Run all framer tests with all supported versions of QUIC. | 511 // Run all framer tests with all supported versions of QUIC. |
(...skipping 1634 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2141 ASSERT_EQ(1u, visitor_.ack_frames_.size()); | 2146 ASSERT_EQ(1u, visitor_.ack_frames_.size()); |
2142 QuicAckFrame* frame = visitor_.ack_frames_[0]; | 2147 QuicAckFrame* frame = visitor_.ack_frames_[0]; |
2143 EXPECT_EQ(0xBA, frame->received_info.entropy_hash); | 2148 EXPECT_EQ(0xBA, frame->received_info.entropy_hash); |
2144 EXPECT_EQ(GG_UINT64_C(0x0123456789ABF), | 2149 EXPECT_EQ(GG_UINT64_C(0x0123456789ABF), |
2145 frame->received_info.largest_observed); | 2150 frame->received_info.largest_observed); |
2146 ASSERT_EQ(0u, frame->received_info.missing_packets.size()); | 2151 ASSERT_EQ(0u, frame->received_info.missing_packets.size()); |
2147 | 2152 |
2148 // Verify that the packet re-serializes identically. | 2153 // Verify that the packet re-serializes identically. |
2149 QuicFrames frames; | 2154 QuicFrames frames; |
2150 frames.push_back(QuicFrame(frame)); | 2155 frames.push_back(QuicFrame(frame)); |
2151 scoped_ptr<QuicPacket> data( | 2156 scoped_ptr<QuicPacket> data(BuildDataPacket(*visitor_.header_, frames)); |
2152 framer_.BuildUnsizedDataPacket(*visitor_.header_, frames).packet); | |
2153 ASSERT_TRUE(data != NULL); | 2157 ASSERT_TRUE(data != NULL); |
2154 | 2158 |
2155 test::CompareCharArraysWithHexError("constructed packet", | 2159 test::CompareCharArraysWithHexError("constructed packet", |
2156 data->data(), data->length(), | 2160 data->data(), data->length(), |
2157 AsChars(packet), arraysize(packet)); | 2161 AsChars(packet), arraysize(packet)); |
2158 } | 2162 } |
2159 | 2163 |
2160 TEST_P(QuicFramerTest, AckFrameNoNacks15) { | 2164 TEST_P(QuicFramerTest, AckFrameNoNacks15) { |
2161 if (framer_.version() > QUIC_VERSION_15) { | 2165 if (framer_.version() > QUIC_VERSION_15) { |
2162 return; | 2166 return; |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2203 EXPECT_EQ(0xAB, frame->sent_info.entropy_hash); | 2207 EXPECT_EQ(0xAB, frame->sent_info.entropy_hash); |
2204 EXPECT_EQ(0xBA, frame->received_info.entropy_hash); | 2208 EXPECT_EQ(0xBA, frame->received_info.entropy_hash); |
2205 EXPECT_EQ(GG_UINT64_C(0x0123456789ABF), | 2209 EXPECT_EQ(GG_UINT64_C(0x0123456789ABF), |
2206 frame->received_info.largest_observed); | 2210 frame->received_info.largest_observed); |
2207 ASSERT_EQ(0u, frame->received_info.missing_packets.size()); | 2211 ASSERT_EQ(0u, frame->received_info.missing_packets.size()); |
2208 EXPECT_EQ(GG_UINT64_C(0x0123456789AA0), frame->sent_info.least_unacked); | 2212 EXPECT_EQ(GG_UINT64_C(0x0123456789AA0), frame->sent_info.least_unacked); |
2209 | 2213 |
2210 // Verify that the packet re-serializes identically. | 2214 // Verify that the packet re-serializes identically. |
2211 QuicFrames frames; | 2215 QuicFrames frames; |
2212 frames.push_back(QuicFrame(frame)); | 2216 frames.push_back(QuicFrame(frame)); |
2213 scoped_ptr<QuicPacket> data( | 2217 scoped_ptr<QuicPacket> data(BuildDataPacket(*visitor_.header_, frames)); |
2214 framer_.BuildUnsizedDataPacket(*visitor_.header_, frames).packet); | |
2215 ASSERT_TRUE(data != NULL); | 2218 ASSERT_TRUE(data != NULL); |
2216 | 2219 |
2217 test::CompareCharArraysWithHexError("constructed packet", | 2220 test::CompareCharArraysWithHexError("constructed packet", |
2218 data->data(), data->length(), | 2221 data->data(), data->length(), |
2219 AsChars(packet), arraysize(packet)); | 2222 AsChars(packet), arraysize(packet)); |
2220 } | 2223 } |
2221 | 2224 |
2222 TEST_P(QuicFramerTest, AckFrame500Nacks) { | 2225 TEST_P(QuicFramerTest, AckFrame500Nacks) { |
2223 if (framer_.version() <= QUIC_VERSION_15) { | 2226 if (framer_.version() <= QUIC_VERSION_15) { |
2224 return; | 2227 return; |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2278 SequenceNumberSet::const_iterator first_missing_iter = | 2281 SequenceNumberSet::const_iterator first_missing_iter = |
2279 frame->received_info.missing_packets.begin(); | 2282 frame->received_info.missing_packets.begin(); |
2280 EXPECT_EQ(GG_UINT64_C(0x0123456789ABE) - 499, *first_missing_iter); | 2283 EXPECT_EQ(GG_UINT64_C(0x0123456789ABE) - 499, *first_missing_iter); |
2281 SequenceNumberSet::const_reverse_iterator last_missing_iter = | 2284 SequenceNumberSet::const_reverse_iterator last_missing_iter = |
2282 frame->received_info.missing_packets.rbegin(); | 2285 frame->received_info.missing_packets.rbegin(); |
2283 EXPECT_EQ(GG_UINT64_C(0x0123456789ABE), *last_missing_iter); | 2286 EXPECT_EQ(GG_UINT64_C(0x0123456789ABE), *last_missing_iter); |
2284 | 2287 |
2285 // Verify that the packet re-serializes identically. | 2288 // Verify that the packet re-serializes identically. |
2286 QuicFrames frames; | 2289 QuicFrames frames; |
2287 frames.push_back(QuicFrame(frame)); | 2290 frames.push_back(QuicFrame(frame)); |
2288 scoped_ptr<QuicPacket> data( | 2291 scoped_ptr<QuicPacket> data(BuildDataPacket(*visitor_.header_, frames)); |
2289 framer_.BuildUnsizedDataPacket(*visitor_.header_, frames).packet); | |
2290 ASSERT_TRUE(data != NULL); | 2292 ASSERT_TRUE(data != NULL); |
2291 | 2293 |
2292 test::CompareCharArraysWithHexError("constructed packet", | 2294 test::CompareCharArraysWithHexError("constructed packet", |
2293 data->data(), data->length(), | 2295 data->data(), data->length(), |
2294 AsChars(packet), arraysize(packet)); | 2296 AsChars(packet), arraysize(packet)); |
2295 } | 2297 } |
2296 | 2298 |
2297 TEST_P(QuicFramerTest, AckFrame500Nacks15) { | 2299 TEST_P(QuicFramerTest, AckFrame500Nacks15) { |
2298 if (framer_.version() != QUIC_VERSION_15) { | 2300 if (framer_.version() != QUIC_VERSION_15) { |
2299 return; | 2301 return; |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2360 frame->received_info.missing_packets.begin(); | 2362 frame->received_info.missing_packets.begin(); |
2361 EXPECT_EQ(GG_UINT64_C(0x0123456789ABE) - 499, *first_missing_iter); | 2363 EXPECT_EQ(GG_UINT64_C(0x0123456789ABE) - 499, *first_missing_iter); |
2362 SequenceNumberSet::const_reverse_iterator last_missing_iter = | 2364 SequenceNumberSet::const_reverse_iterator last_missing_iter = |
2363 frame->received_info.missing_packets.rbegin(); | 2365 frame->received_info.missing_packets.rbegin(); |
2364 EXPECT_EQ(GG_UINT64_C(0x0123456789ABE), *last_missing_iter); | 2366 EXPECT_EQ(GG_UINT64_C(0x0123456789ABE), *last_missing_iter); |
2365 EXPECT_EQ(GG_UINT64_C(0x0123456789AA0), frame->sent_info.least_unacked); | 2367 EXPECT_EQ(GG_UINT64_C(0x0123456789AA0), frame->sent_info.least_unacked); |
2366 | 2368 |
2367 // Verify that the packet re-serializes identically. | 2369 // Verify that the packet re-serializes identically. |
2368 QuicFrames frames; | 2370 QuicFrames frames; |
2369 frames.push_back(QuicFrame(frame)); | 2371 frames.push_back(QuicFrame(frame)); |
2370 scoped_ptr<QuicPacket> data( | 2372 scoped_ptr<QuicPacket> data(BuildDataPacket(*visitor_.header_, frames)); |
2371 framer_.BuildUnsizedDataPacket(*visitor_.header_, frames).packet); | |
2372 ASSERT_TRUE(data != NULL); | 2373 ASSERT_TRUE(data != NULL); |
2373 | 2374 |
2374 test::CompareCharArraysWithHexError("constructed packet", | 2375 test::CompareCharArraysWithHexError("constructed packet", |
2375 data->data(), data->length(), | 2376 data->data(), data->length(), |
2376 AsChars(packet), arraysize(packet)); | 2377 AsChars(packet), arraysize(packet)); |
2377 } | 2378 } |
2378 | 2379 |
2379 TEST_P(QuicFramerTest, CongestionFeedbackFrameTCP) { | 2380 TEST_P(QuicFramerTest, CongestionFeedbackFrameTCP) { |
2380 unsigned char packet[] = { | 2381 unsigned char packet[] = { |
2381 // public flags (8 byte connection_id) | 2382 // public flags (8 byte connection_id) |
(...skipping 856 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3238 // frame type (padding frame) | 3239 // frame type (padding frame) |
3239 0x00, | 3240 0x00, |
3240 0x00, 0x00, 0x00, 0x00 | 3241 0x00, 0x00, 0x00, 0x00 |
3241 }; | 3242 }; |
3242 | 3243 |
3243 uint64 header_size = | 3244 uint64 header_size = |
3244 GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, | 3245 GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
3245 PACKET_6BYTE_SEQUENCE_NUMBER, NOT_IN_FEC_GROUP); | 3246 PACKET_6BYTE_SEQUENCE_NUMBER, NOT_IN_FEC_GROUP); |
3246 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); | 3247 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); |
3247 | 3248 |
3248 scoped_ptr<QuicPacket> data( | 3249 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
3249 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
3250 ASSERT_TRUE(data != NULL); | 3250 ASSERT_TRUE(data != NULL); |
3251 | 3251 |
3252 test::CompareCharArraysWithHexError("constructed packet", | 3252 test::CompareCharArraysWithHexError("constructed packet", |
3253 data->data(), data->length(), | 3253 data->data(), data->length(), |
3254 AsChars(packet), | 3254 AsChars(packet), |
3255 arraysize(packet)); | 3255 arraysize(packet)); |
3256 } | 3256 } |
3257 | 3257 |
3258 TEST_P(QuicFramerTest, Build4ByteSequenceNumberPaddingFramePacket) { | 3258 TEST_P(QuicFramerTest, Build4ByteSequenceNumberPaddingFramePacket) { |
3259 QuicPacketHeader header; | 3259 QuicPacketHeader header; |
(...skipping 25 matching lines...) Expand all Loading... |
3285 // frame type (padding frame) | 3285 // frame type (padding frame) |
3286 0x00, | 3286 0x00, |
3287 0x00, 0x00, 0x00, 0x00 | 3287 0x00, 0x00, 0x00, 0x00 |
3288 }; | 3288 }; |
3289 | 3289 |
3290 uint64 header_size = | 3290 uint64 header_size = |
3291 GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, | 3291 GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
3292 PACKET_4BYTE_SEQUENCE_NUMBER, NOT_IN_FEC_GROUP); | 3292 PACKET_4BYTE_SEQUENCE_NUMBER, NOT_IN_FEC_GROUP); |
3293 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); | 3293 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); |
3294 | 3294 |
3295 scoped_ptr<QuicPacket> data( | 3295 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
3296 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
3297 ASSERT_TRUE(data != NULL); | 3296 ASSERT_TRUE(data != NULL); |
3298 | 3297 |
3299 test::CompareCharArraysWithHexError("constructed packet", | 3298 test::CompareCharArraysWithHexError("constructed packet", |
3300 data->data(), data->length(), | 3299 data->data(), data->length(), |
3301 AsChars(packet), | 3300 AsChars(packet), |
3302 arraysize(packet)); | 3301 arraysize(packet)); |
3303 } | 3302 } |
3304 | 3303 |
3305 TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) { | 3304 TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) { |
3306 QuicPacketHeader header; | 3305 QuicPacketHeader header; |
(...skipping 25 matching lines...) Expand all Loading... |
3332 // frame type (padding frame) | 3331 // frame type (padding frame) |
3333 0x00, | 3332 0x00, |
3334 0x00, 0x00, 0x00, 0x00 | 3333 0x00, 0x00, 0x00, 0x00 |
3335 }; | 3334 }; |
3336 | 3335 |
3337 uint64 header_size = | 3336 uint64 header_size = |
3338 GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, | 3337 GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
3339 PACKET_2BYTE_SEQUENCE_NUMBER, NOT_IN_FEC_GROUP); | 3338 PACKET_2BYTE_SEQUENCE_NUMBER, NOT_IN_FEC_GROUP); |
3340 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); | 3339 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); |
3341 | 3340 |
3342 scoped_ptr<QuicPacket> data( | 3341 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
3343 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
3344 ASSERT_TRUE(data != NULL); | 3342 ASSERT_TRUE(data != NULL); |
3345 | 3343 |
3346 test::CompareCharArraysWithHexError("constructed packet", | 3344 test::CompareCharArraysWithHexError("constructed packet", |
3347 data->data(), data->length(), | 3345 data->data(), data->length(), |
3348 AsChars(packet), | 3346 AsChars(packet), |
3349 arraysize(packet)); | 3347 arraysize(packet)); |
3350 } | 3348 } |
3351 | 3349 |
3352 TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) { | 3350 TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) { |
3353 QuicPacketHeader header; | 3351 QuicPacketHeader header; |
(...skipping 25 matching lines...) Expand all Loading... |
3379 // frame type (padding frame) | 3377 // frame type (padding frame) |
3380 0x00, | 3378 0x00, |
3381 0x00, 0x00, 0x00, 0x00 | 3379 0x00, 0x00, 0x00, 0x00 |
3382 }; | 3380 }; |
3383 | 3381 |
3384 uint64 header_size = | 3382 uint64 header_size = |
3385 GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, | 3383 GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
3386 PACKET_1BYTE_SEQUENCE_NUMBER, NOT_IN_FEC_GROUP); | 3384 PACKET_1BYTE_SEQUENCE_NUMBER, NOT_IN_FEC_GROUP); |
3387 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); | 3385 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); |
3388 | 3386 |
3389 scoped_ptr<QuicPacket> data( | 3387 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
3390 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
3391 ASSERT_TRUE(data != NULL); | 3388 ASSERT_TRUE(data != NULL); |
3392 | 3389 |
3393 test::CompareCharArraysWithHexError("constructed packet", | 3390 test::CompareCharArraysWithHexError("constructed packet", |
3394 data->data(), data->length(), | 3391 data->data(), data->length(), |
3395 AsChars(packet), | 3392 AsChars(packet), |
3396 arraysize(packet)); | 3393 arraysize(packet)); |
3397 } | 3394 } |
3398 | 3395 |
3399 TEST_P(QuicFramerTest, BuildStreamFramePacket) { | 3396 TEST_P(QuicFramerTest, BuildStreamFramePacket) { |
3400 QuicPacketHeader header; | 3397 QuicPacketHeader header; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3433 0x04, 0x03, 0x02, 0x01, | 3430 0x04, 0x03, 0x02, 0x01, |
3434 // offset | 3431 // offset |
3435 0x54, 0x76, 0x10, 0x32, | 3432 0x54, 0x76, 0x10, 0x32, |
3436 0xDC, 0xFE, 0x98, 0xBA, | 3433 0xDC, 0xFE, 0x98, 0xBA, |
3437 // data | 3434 // data |
3438 'h', 'e', 'l', 'l', | 3435 'h', 'e', 'l', 'l', |
3439 'o', ' ', 'w', 'o', | 3436 'o', ' ', 'w', 'o', |
3440 'r', 'l', 'd', '!', | 3437 'r', 'l', 'd', '!', |
3441 }; | 3438 }; |
3442 | 3439 |
3443 scoped_ptr<QuicPacket> data( | 3440 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
3444 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
3445 ASSERT_TRUE(data != NULL); | 3441 ASSERT_TRUE(data != NULL); |
3446 | 3442 |
3447 test::CompareCharArraysWithHexError("constructed packet", | 3443 test::CompareCharArraysWithHexError("constructed packet", |
3448 data->data(), data->length(), | 3444 data->data(), data->length(), |
3449 AsChars(packet), arraysize(packet)); | 3445 AsChars(packet), arraysize(packet)); |
3450 } | 3446 } |
3451 | 3447 |
3452 TEST_P(QuicFramerTest, BuildStreamFramePacketInFecGroup) { | 3448 TEST_P(QuicFramerTest, BuildStreamFramePacketInFecGroup) { |
3453 QuicPacketHeader header; | 3449 QuicPacketHeader header; |
3454 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); | 3450 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3489 0x54, 0x76, 0x10, 0x32, | 3485 0x54, 0x76, 0x10, 0x32, |
3490 0xDC, 0xFE, 0x98, 0xBA, | 3486 0xDC, 0xFE, 0x98, 0xBA, |
3491 // data length (since packet is in an FEC group) | 3487 // data length (since packet is in an FEC group) |
3492 0x0C, 0x00, | 3488 0x0C, 0x00, |
3493 // data | 3489 // data |
3494 'h', 'e', 'l', 'l', | 3490 'h', 'e', 'l', 'l', |
3495 'o', ' ', 'w', 'o', | 3491 'o', ' ', 'w', 'o', |
3496 'r', 'l', 'd', '!', | 3492 'r', 'l', 'd', '!', |
3497 }; | 3493 }; |
3498 | 3494 |
3499 scoped_ptr<QuicPacket> data( | 3495 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
3500 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
3501 ASSERT_TRUE(data != NULL); | 3496 ASSERT_TRUE(data != NULL); |
3502 | 3497 |
3503 test::CompareCharArraysWithHexError("constructed packet", | 3498 test::CompareCharArraysWithHexError("constructed packet", |
3504 data->data(), data->length(), | 3499 data->data(), data->length(), |
3505 AsChars(packet), arraysize(packet)); | 3500 AsChars(packet), arraysize(packet)); |
3506 } | 3501 } |
3507 | 3502 |
3508 TEST_P(QuicFramerTest, BuildStreamFramePacketWithVersionFlag) { | 3503 TEST_P(QuicFramerTest, BuildStreamFramePacketWithVersionFlag) { |
3509 QuicPacketHeader header; | 3504 QuicPacketHeader header; |
3510 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); | 3505 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3545 // offset | 3540 // offset |
3546 0x54, 0x76, 0x10, 0x32, | 3541 0x54, 0x76, 0x10, 0x32, |
3547 0xDC, 0xFE, 0x98, 0xBA, | 3542 0xDC, 0xFE, 0x98, 0xBA, |
3548 // data | 3543 // data |
3549 'h', 'e', 'l', 'l', | 3544 'h', 'e', 'l', 'l', |
3550 'o', ' ', 'w', 'o', | 3545 'o', ' ', 'w', 'o', |
3551 'r', 'l', 'd', '!', | 3546 'r', 'l', 'd', '!', |
3552 }; | 3547 }; |
3553 | 3548 |
3554 QuicFramerPeer::SetIsServer(&framer_, false); | 3549 QuicFramerPeer::SetIsServer(&framer_, false); |
3555 scoped_ptr<QuicPacket> data( | 3550 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
3556 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
3557 ASSERT_TRUE(data != NULL); | 3551 ASSERT_TRUE(data != NULL); |
3558 | 3552 |
3559 test::CompareCharArraysWithHexError("constructed packet", | 3553 test::CompareCharArraysWithHexError("constructed packet", |
3560 data->data(), data->length(), | 3554 data->data(), data->length(), |
3561 AsChars(packet), arraysize(packet)); | 3555 AsChars(packet), arraysize(packet)); |
3562 } | 3556 } |
3563 | 3557 |
3564 TEST_P(QuicFramerTest, BuildVersionNegotiationPacket) { | 3558 TEST_P(QuicFramerTest, BuildVersionNegotiationPacket) { |
3565 QuicPacketPublicHeader header; | 3559 QuicPacketPublicHeader header; |
3566 header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); | 3560 header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3635 // num missing packet ranges | 3629 // num missing packet ranges |
3636 0x01, | 3630 0x01, |
3637 // missing packet delta | 3631 // missing packet delta |
3638 0x01, | 3632 0x01, |
3639 // 0 more missing packets in range. | 3633 // 0 more missing packets in range. |
3640 0x00, | 3634 0x00, |
3641 // 0 revived packets. | 3635 // 0 revived packets. |
3642 0x00, | 3636 0x00, |
3643 }; | 3637 }; |
3644 | 3638 |
3645 scoped_ptr<QuicPacket> data( | 3639 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
3646 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
3647 ASSERT_TRUE(data != NULL); | 3640 ASSERT_TRUE(data != NULL); |
3648 | 3641 |
3649 test::CompareCharArraysWithHexError("constructed packet", | 3642 test::CompareCharArraysWithHexError("constructed packet", |
3650 data->data(), data->length(), | 3643 data->data(), data->length(), |
3651 AsChars(packet), arraysize(packet)); | 3644 AsChars(packet), arraysize(packet)); |
3652 } | 3645 } |
3653 | 3646 |
3654 TEST_P(QuicFramerTest, BuildAckFramePacket15) { | 3647 TEST_P(QuicFramerTest, BuildAckFramePacket15) { |
3655 if (version_ != QUIC_VERSION_15) { | 3648 if (version_ != QUIC_VERSION_15) { |
3656 return; | 3649 return; |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3706 // num missing packet ranges | 3699 // num missing packet ranges |
3707 0x01, | 3700 0x01, |
3708 // missing packet delta | 3701 // missing packet delta |
3709 0x01, | 3702 0x01, |
3710 // 0 more missing packets in range. | 3703 // 0 more missing packets in range. |
3711 0x00, | 3704 0x00, |
3712 // 0 revived packets. | 3705 // 0 revived packets. |
3713 0x00, | 3706 0x00, |
3714 }; | 3707 }; |
3715 | 3708 |
3716 scoped_ptr<QuicPacket> data( | 3709 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
3717 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
3718 ASSERT_TRUE(data != NULL); | 3710 ASSERT_TRUE(data != NULL); |
3719 | 3711 |
3720 test::CompareCharArraysWithHexError("constructed packet", | 3712 test::CompareCharArraysWithHexError("constructed packet", |
3721 data->data(), data->length(), | 3713 data->data(), data->length(), |
3722 AsChars(packet), arraysize(packet)); | 3714 AsChars(packet), arraysize(packet)); |
3723 } | 3715 } |
3724 | 3716 |
3725 // TODO(jri): Add test for tuncated packets in which the original ack frame had | 3717 // TODO(jri): Add test for tuncated packets in which the original ack frame had |
3726 // revived packets. (In both the large and small packet cases below). | 3718 // revived packets. (In both the large and small packet cases below). |
3727 TEST_P(QuicFramerTest, BuildTruncatedAckFrameLargePacket) { | 3719 TEST_P(QuicFramerTest, BuildTruncatedAckFrameLargePacket) { |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3939 0x00, | 3931 0x00, |
3940 | 3932 |
3941 // frame type (congestion feedback frame) | 3933 // frame type (congestion feedback frame) |
3942 0x20, | 3934 0x20, |
3943 // congestion feedback type (TCP) | 3935 // congestion feedback type (TCP) |
3944 0x00, | 3936 0x00, |
3945 // TCP receive window | 3937 // TCP receive window |
3946 0x03, 0x04, | 3938 0x03, 0x04, |
3947 }; | 3939 }; |
3948 | 3940 |
3949 scoped_ptr<QuicPacket> data( | 3941 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
3950 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
3951 ASSERT_TRUE(data != NULL); | 3942 ASSERT_TRUE(data != NULL); |
3952 | 3943 |
3953 test::CompareCharArraysWithHexError("constructed packet", | 3944 test::CompareCharArraysWithHexError("constructed packet", |
3954 data->data(), data->length(), | 3945 data->data(), data->length(), |
3955 AsChars(packet), arraysize(packet)); | 3946 AsChars(packet), arraysize(packet)); |
3956 } | 3947 } |
3957 | 3948 |
3958 TEST_P(QuicFramerTest, BuildCongestionFeedbackFramePacketInterArrival) { | 3949 TEST_P(QuicFramerTest, BuildCongestionFeedbackFramePacketInterArrival) { |
3959 QuicPacketHeader header; | 3950 QuicPacketHeader header; |
3960 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); | 3951 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4009 // sequence delta | 4000 // sequence delta |
4010 0x01, 0x00, | 4001 0x01, 0x00, |
4011 // time delta | 4002 // time delta |
4012 0x01, 0x00, 0x00, 0x00, | 4003 0x01, 0x00, 0x00, 0x00, |
4013 // sequence delta (skip one packet) | 4004 // sequence delta (skip one packet) |
4014 0x03, 0x00, | 4005 0x03, 0x00, |
4015 // time delta | 4006 // time delta |
4016 0x02, 0x00, 0x00, 0x00, | 4007 0x02, 0x00, 0x00, 0x00, |
4017 }; | 4008 }; |
4018 | 4009 |
4019 scoped_ptr<QuicPacket> data( | 4010 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
4020 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
4021 ASSERT_TRUE(data != NULL); | 4011 ASSERT_TRUE(data != NULL); |
4022 | 4012 |
4023 test::CompareCharArraysWithHexError("constructed packet", | 4013 test::CompareCharArraysWithHexError("constructed packet", |
4024 data->data(), data->length(), | 4014 data->data(), data->length(), |
4025 AsChars(packet), arraysize(packet)); | 4015 AsChars(packet), arraysize(packet)); |
4026 } | 4016 } |
4027 | 4017 |
4028 TEST_P(QuicFramerTest, BuildStopWaitingPacket) { | 4018 TEST_P(QuicFramerTest, BuildStopWaitingPacket) { |
4029 if (version_ <= QUIC_VERSION_15) { | 4019 if (version_ <= QUIC_VERSION_15) { |
4030 return; | 4020 return; |
(...skipping 28 matching lines...) Expand all Loading... |
4059 | 4049 |
4060 // frame type (stop waiting frame) | 4050 // frame type (stop waiting frame) |
4061 0x06, | 4051 0x06, |
4062 // entropy hash of sent packets till least awaiting - 1. | 4052 // entropy hash of sent packets till least awaiting - 1. |
4063 0x14, | 4053 0x14, |
4064 // least packet sequence number awaiting an ack, delta from sequence number. | 4054 // least packet sequence number awaiting an ack, delta from sequence number. |
4065 0x08, 0x00, 0x00, 0x00, | 4055 0x08, 0x00, 0x00, 0x00, |
4066 0x00, 0x00, | 4056 0x00, 0x00, |
4067 }; | 4057 }; |
4068 | 4058 |
4069 scoped_ptr<QuicPacket> data( | 4059 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
4070 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
4071 ASSERT_TRUE(data != NULL); | 4060 ASSERT_TRUE(data != NULL); |
4072 | 4061 |
4073 test::CompareCharArraysWithHexError("constructed packet", | 4062 test::CompareCharArraysWithHexError("constructed packet", |
4074 data->data(), data->length(), | 4063 data->data(), data->length(), |
4075 AsChars(packet), arraysize(packet)); | 4064 AsChars(packet), arraysize(packet)); |
4076 } | 4065 } |
4077 | 4066 |
4078 TEST_P(QuicFramerTest, BuildCongestionFeedbackFramePacketFixRate) { | 4067 TEST_P(QuicFramerTest, BuildCongestionFeedbackFramePacketFixRate) { |
4079 QuicPacketHeader header; | 4068 QuicPacketHeader header; |
4080 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); | 4069 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); |
(...skipping 25 matching lines...) Expand all Loading... |
4106 0x00, | 4095 0x00, |
4107 | 4096 |
4108 // frame type (congestion feedback frame) | 4097 // frame type (congestion feedback frame) |
4109 0x20, | 4098 0x20, |
4110 // congestion feedback type (fix rate) | 4099 // congestion feedback type (fix rate) |
4111 0x02, | 4100 0x02, |
4112 // bitrate_in_bytes_per_second; | 4101 // bitrate_in_bytes_per_second; |
4113 0x01, 0x02, 0x03, 0x04, | 4102 0x01, 0x02, 0x03, 0x04, |
4114 }; | 4103 }; |
4115 | 4104 |
4116 scoped_ptr<QuicPacket> data( | 4105 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
4117 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
4118 ASSERT_TRUE(data != NULL); | 4106 ASSERT_TRUE(data != NULL); |
4119 | 4107 |
4120 test::CompareCharArraysWithHexError("constructed packet", | 4108 test::CompareCharArraysWithHexError("constructed packet", |
4121 data->data(), data->length(), | 4109 data->data(), data->length(), |
4122 AsChars(packet), arraysize(packet)); | 4110 AsChars(packet), arraysize(packet)); |
4123 } | 4111 } |
4124 | 4112 |
4125 TEST_P(QuicFramerTest, BuildCongestionFeedbackFramePacketInvalidFeedback) { | 4113 TEST_P(QuicFramerTest, BuildCongestionFeedbackFramePacketInvalidFeedback) { |
4126 QuicPacketHeader header; | 4114 QuicPacketHeader header; |
4127 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); | 4115 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); |
4128 header.public_header.reset_flag = false; | 4116 header.public_header.reset_flag = false; |
4129 header.public_header.version_flag = false; | 4117 header.public_header.version_flag = false; |
4130 header.fec_flag = false; | 4118 header.fec_flag = false; |
4131 header.entropy_flag = false; | 4119 header.entropy_flag = false; |
4132 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); | 4120 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); |
4133 header.fec_group = 0; | 4121 header.fec_group = 0; |
4134 | 4122 |
4135 QuicCongestionFeedbackFrame congestion_feedback_frame; | 4123 QuicCongestionFeedbackFrame congestion_feedback_frame; |
4136 congestion_feedback_frame.type = | 4124 congestion_feedback_frame.type = |
4137 static_cast<CongestionFeedbackType>(kFixRate + 1); | 4125 static_cast<CongestionFeedbackType>(kFixRate + 1); |
4138 | 4126 |
4139 QuicFrames frames; | 4127 QuicFrames frames; |
4140 frames.push_back(QuicFrame(&congestion_feedback_frame)); | 4128 frames.push_back(QuicFrame(&congestion_feedback_frame)); |
4141 | 4129 |
4142 scoped_ptr<QuicPacket> data; | 4130 scoped_ptr<QuicPacket> data; |
4143 EXPECT_DFATAL( | 4131 EXPECT_DFATAL( |
4144 data.reset(framer_.BuildUnsizedDataPacket(header, frames).packet), | 4132 data.reset(BuildDataPacket(header, frames)), |
4145 "AppendCongestionFeedbackFrame failed"); | 4133 "AppendCongestionFeedbackFrame failed"); |
4146 ASSERT_TRUE(data == NULL); | 4134 ASSERT_TRUE(data == NULL); |
4147 } | 4135 } |
4148 | 4136 |
4149 TEST_P(QuicFramerTest, BuildRstFramePacketQuic) { | 4137 TEST_P(QuicFramerTest, BuildRstFramePacketQuic) { |
4150 QuicPacketHeader header; | 4138 QuicPacketHeader header; |
4151 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); | 4139 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); |
4152 header.public_header.reset_flag = false; | 4140 header.public_header.reset_flag = false; |
4153 header.public_header.version_flag = false; | 4141 header.public_header.version_flag = false; |
4154 header.fec_flag = false; | 4142 header.fec_flag = false; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4188 // error details | 4176 // error details |
4189 'b', 'e', 'c', 'a', | 4177 'b', 'e', 'c', 'a', |
4190 'u', 's', 'e', ' ', | 4178 'u', 's', 'e', ' ', |
4191 'I', ' ', 'c', 'a', | 4179 'I', ' ', 'c', 'a', |
4192 'n', | 4180 'n', |
4193 }; | 4181 }; |
4194 | 4182 |
4195 QuicFrames frames; | 4183 QuicFrames frames; |
4196 frames.push_back(QuicFrame(&rst_frame)); | 4184 frames.push_back(QuicFrame(&rst_frame)); |
4197 | 4185 |
4198 scoped_ptr<QuicPacket> data( | 4186 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
4199 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
4200 ASSERT_TRUE(data != NULL); | 4187 ASSERT_TRUE(data != NULL); |
4201 | 4188 |
4202 test::CompareCharArraysWithHexError("constructed packet", | 4189 test::CompareCharArraysWithHexError("constructed packet", |
4203 data->data(), data->length(), | 4190 data->data(), data->length(), |
4204 AsChars(packet), arraysize(packet)); | 4191 AsChars(packet), arraysize(packet)); |
4205 } | 4192 } |
4206 | 4193 |
4207 TEST_P(QuicFramerTest, BuildCloseFramePacket) { | 4194 TEST_P(QuicFramerTest, BuildCloseFramePacket) { |
4208 QuicPacketHeader header; | 4195 QuicPacketHeader header; |
4209 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); | 4196 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); |
(...skipping 29 matching lines...) Expand all Loading... |
4239 0x08, 0x07, 0x06, 0x05, | 4226 0x08, 0x07, 0x06, 0x05, |
4240 // error details length | 4227 // error details length |
4241 0x0d, 0x00, | 4228 0x0d, 0x00, |
4242 // error details | 4229 // error details |
4243 'b', 'e', 'c', 'a', | 4230 'b', 'e', 'c', 'a', |
4244 'u', 's', 'e', ' ', | 4231 'u', 's', 'e', ' ', |
4245 'I', ' ', 'c', 'a', | 4232 'I', ' ', 'c', 'a', |
4246 'n', | 4233 'n', |
4247 }; | 4234 }; |
4248 | 4235 |
4249 scoped_ptr<QuicPacket> data( | 4236 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
4250 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
4251 ASSERT_TRUE(data != NULL); | 4237 ASSERT_TRUE(data != NULL); |
4252 | 4238 |
4253 test::CompareCharArraysWithHexError("constructed packet", | 4239 test::CompareCharArraysWithHexError("constructed packet", |
4254 data->data(), data->length(), | 4240 data->data(), data->length(), |
4255 AsChars(packet), arraysize(packet)); | 4241 AsChars(packet), arraysize(packet)); |
4256 } | 4242 } |
4257 | 4243 |
4258 TEST_P(QuicFramerTest, BuildGoAwayPacket) { | 4244 TEST_P(QuicFramerTest, BuildGoAwayPacket) { |
4259 QuicPacketHeader header; | 4245 QuicPacketHeader header; |
4260 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); | 4246 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4293 0x04, 0x03, 0x02, 0x01, | 4279 0x04, 0x03, 0x02, 0x01, |
4294 // error details length | 4280 // error details length |
4295 0x0d, 0x00, | 4281 0x0d, 0x00, |
4296 // error details | 4282 // error details |
4297 'b', 'e', 'c', 'a', | 4283 'b', 'e', 'c', 'a', |
4298 'u', 's', 'e', ' ', | 4284 'u', 's', 'e', ' ', |
4299 'I', ' ', 'c', 'a', | 4285 'I', ' ', 'c', 'a', |
4300 'n', | 4286 'n', |
4301 }; | 4287 }; |
4302 | 4288 |
4303 scoped_ptr<QuicPacket> data( | 4289 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
4304 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
4305 ASSERT_TRUE(data != NULL); | 4290 ASSERT_TRUE(data != NULL); |
4306 | 4291 |
4307 test::CompareCharArraysWithHexError("constructed packet", | 4292 test::CompareCharArraysWithHexError("constructed packet", |
4308 data->data(), data->length(), | 4293 data->data(), data->length(), |
4309 AsChars(packet), arraysize(packet)); | 4294 AsChars(packet), arraysize(packet)); |
4310 } | 4295 } |
4311 | 4296 |
4312 TEST_P(QuicFramerTest, BuildWindowUpdatePacket) { | 4297 TEST_P(QuicFramerTest, BuildWindowUpdatePacket) { |
4313 QuicPacketHeader header; | 4298 QuicPacketHeader header; |
4314 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); | 4299 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); |
(...skipping 25 matching lines...) Expand all Loading... |
4340 | 4325 |
4341 // frame type (window update frame) | 4326 // frame type (window update frame) |
4342 0x04, | 4327 0x04, |
4343 // stream id | 4328 // stream id |
4344 0x04, 0x03, 0x02, 0x01, | 4329 0x04, 0x03, 0x02, 0x01, |
4345 // byte offset | 4330 // byte offset |
4346 0x88, 0x77, 0x66, 0x55, | 4331 0x88, 0x77, 0x66, 0x55, |
4347 0x44, 0x33, 0x22, 0x11, | 4332 0x44, 0x33, 0x22, 0x11, |
4348 }; | 4333 }; |
4349 | 4334 |
4350 scoped_ptr<QuicPacket> data( | 4335 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
4351 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
4352 ASSERT_TRUE(data != NULL); | 4336 ASSERT_TRUE(data != NULL); |
4353 | 4337 |
4354 test::CompareCharArraysWithHexError("constructed packet", data->data(), | 4338 test::CompareCharArraysWithHexError("constructed packet", data->data(), |
4355 data->length(), AsChars(packet), | 4339 data->length(), AsChars(packet), |
4356 arraysize(packet)); | 4340 arraysize(packet)); |
4357 } | 4341 } |
4358 | 4342 |
4359 TEST_P(QuicFramerTest, BuildBlockedPacket) { | 4343 TEST_P(QuicFramerTest, BuildBlockedPacket) { |
4360 QuicPacketHeader header; | 4344 QuicPacketHeader header; |
4361 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); | 4345 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); |
(...skipping 21 matching lines...) Expand all Loading... |
4383 0x34, 0x12, | 4367 0x34, 0x12, |
4384 // private flags(entropy) | 4368 // private flags(entropy) |
4385 0x01, | 4369 0x01, |
4386 | 4370 |
4387 // frame type (blocked frame) | 4371 // frame type (blocked frame) |
4388 0x05, | 4372 0x05, |
4389 // stream id | 4373 // stream id |
4390 0x04, 0x03, 0x02, 0x01, | 4374 0x04, 0x03, 0x02, 0x01, |
4391 }; | 4375 }; |
4392 | 4376 |
4393 scoped_ptr<QuicPacket> data( | 4377 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
4394 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
4395 ASSERT_TRUE(data != NULL); | 4378 ASSERT_TRUE(data != NULL); |
4396 | 4379 |
4397 test::CompareCharArraysWithHexError("constructed packet", data->data(), | 4380 test::CompareCharArraysWithHexError("constructed packet", data->data(), |
4398 data->length(), AsChars(packet), | 4381 data->length(), AsChars(packet), |
4399 arraysize(packet)); | 4382 arraysize(packet)); |
4400 } | 4383 } |
4401 | 4384 |
4402 TEST_P(QuicFramerTest, BuildPingPacket) { | 4385 TEST_P(QuicFramerTest, BuildPingPacket) { |
4403 QuicPacketHeader header; | 4386 QuicPacketHeader header; |
4404 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); | 4387 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); |
(...skipping 19 matching lines...) Expand all Loading... |
4424 0xBC, 0x9A, 0x78, 0x56, | 4407 0xBC, 0x9A, 0x78, 0x56, |
4425 0x34, 0x12, | 4408 0x34, 0x12, |
4426 // private flags(entropy) | 4409 // private flags(entropy) |
4427 0x01, | 4410 0x01, |
4428 | 4411 |
4429 // frame type (ping frame) | 4412 // frame type (ping frame) |
4430 0x07, | 4413 0x07, |
4431 }; | 4414 }; |
4432 | 4415 |
4433 if (version_ > QUIC_VERSION_17) { | 4416 if (version_ > QUIC_VERSION_17) { |
4434 scoped_ptr<QuicPacket> data( | 4417 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); |
4435 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
4436 ASSERT_TRUE(data != NULL); | 4418 ASSERT_TRUE(data != NULL); |
4437 | 4419 |
4438 test::CompareCharArraysWithHexError("constructed packet", data->data(), | 4420 test::CompareCharArraysWithHexError("constructed packet", data->data(), |
4439 data->length(), AsChars(packet), | 4421 data->length(), AsChars(packet), |
4440 arraysize(packet)); | 4422 arraysize(packet)); |
4441 } else { | 4423 } else { |
4442 string expected_error = | 4424 string expected_error = |
4443 "Attempt to add a PingFrame in " + QuicVersionToString(version_); | 4425 "Attempt to add a PingFrame in " + QuicVersionToString(version_); |
4444 EXPECT_DFATAL(framer_.BuildUnsizedDataPacket(header, frames), | 4426 EXPECT_DFATAL(BuildDataPacket(header, frames), |
4445 expected_error); | 4427 expected_error); |
4446 return; | 4428 return; |
4447 } | 4429 } |
4448 } | 4430 } |
4449 | 4431 |
4450 TEST_P(QuicFramerTest, BuildPublicResetPacket) { | 4432 TEST_P(QuicFramerTest, BuildPublicResetPacket) { |
4451 QuicPublicResetPacket reset_packet; | 4433 QuicPublicResetPacket reset_packet; |
4452 reset_packet.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); | 4434 reset_packet.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); |
4453 reset_packet.public_header.reset_flag = true; | 4435 reset_packet.public_header.reset_flag = true; |
4454 reset_packet.public_header.version_flag = false; | 4436 reset_packet.public_header.version_flag = false; |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4763 ack_frame.received_info.missing_packets.insert(i); | 4745 ack_frame.received_info.missing_packets.insert(i); |
4764 } | 4746 } |
4765 | 4747 |
4766 // Create a packet with just the ack. | 4748 // Create a packet with just the ack. |
4767 QuicFrame frame; | 4749 QuicFrame frame; |
4768 frame.type = ACK_FRAME; | 4750 frame.type = ACK_FRAME; |
4769 frame.ack_frame = &ack_frame; | 4751 frame.ack_frame = &ack_frame; |
4770 QuicFrames frames; | 4752 QuicFrames frames; |
4771 frames.push_back(frame); | 4753 frames.push_back(frame); |
4772 | 4754 |
4773 scoped_ptr<QuicPacket> raw_ack_packet( | 4755 scoped_ptr<QuicPacket> raw_ack_packet(BuildDataPacket(header, frames)); |
4774 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
4775 ASSERT_TRUE(raw_ack_packet != NULL); | 4756 ASSERT_TRUE(raw_ack_packet != NULL); |
4776 | 4757 |
4777 scoped_ptr<QuicEncryptedPacket> ack_packet( | 4758 scoped_ptr<QuicEncryptedPacket> ack_packet( |
4778 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number, | 4759 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number, |
4779 *raw_ack_packet)); | 4760 *raw_ack_packet)); |
4780 | 4761 |
4781 // Now make sure we can turn our ack packet back into an ack frame. | 4762 // Now make sure we can turn our ack packet back into an ack frame. |
4782 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet)); | 4763 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet)); |
4783 ASSERT_EQ(1u, visitor_.ack_frames_.size()); | 4764 ASSERT_EQ(1u, visitor_.ack_frames_.size()); |
4784 const QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0]; | 4765 const QuicAckFrame& processed_ack_frame = *visitor_.ack_frames_[0]; |
(...skipping 27 matching lines...) Expand all Loading... |
4812 ack_frame.received_info.missing_packets.insert(i); | 4793 ack_frame.received_info.missing_packets.insert(i); |
4813 } | 4794 } |
4814 | 4795 |
4815 // Create a packet with just the ack. | 4796 // Create a packet with just the ack. |
4816 QuicFrame frame; | 4797 QuicFrame frame; |
4817 frame.type = ACK_FRAME; | 4798 frame.type = ACK_FRAME; |
4818 frame.ack_frame = &ack_frame; | 4799 frame.ack_frame = &ack_frame; |
4819 QuicFrames frames; | 4800 QuicFrames frames; |
4820 frames.push_back(frame); | 4801 frames.push_back(frame); |
4821 | 4802 |
4822 scoped_ptr<QuicPacket> raw_ack_packet( | 4803 scoped_ptr<QuicPacket> raw_ack_packet(BuildDataPacket(header, frames)); |
4823 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
4824 ASSERT_TRUE(raw_ack_packet != NULL); | 4804 ASSERT_TRUE(raw_ack_packet != NULL); |
4825 | 4805 |
4826 scoped_ptr<QuicEncryptedPacket> ack_packet( | 4806 scoped_ptr<QuicEncryptedPacket> ack_packet( |
4827 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number, | 4807 framer_.EncryptPacket(ENCRYPTION_NONE, header.packet_sequence_number, |
4828 *raw_ack_packet)); | 4808 *raw_ack_packet)); |
4829 | 4809 |
4830 // Now make sure we can turn our ack packet back into an ack frame. | 4810 // Now make sure we can turn our ack packet back into an ack frame. |
4831 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet)); | 4811 ASSERT_TRUE(framer_.ProcessPacket(*ack_packet)); |
4832 | 4812 |
4833 // Test for clean truncation of the ack by comparing the length of the | 4813 // Test for clean truncation of the ack by comparing the length of the |
4834 // original packets to the re-serialized packets. | 4814 // original packets to the re-serialized packets. |
4835 frames.clear(); | 4815 frames.clear(); |
4836 frame.type = ACK_FRAME; | 4816 frame.type = ACK_FRAME; |
4837 frame.ack_frame = visitor_.ack_frames_[0]; | 4817 frame.ack_frame = visitor_.ack_frames_[0]; |
4838 frames.push_back(frame); | 4818 frames.push_back(frame); |
4839 | 4819 |
4840 size_t original_raw_length = raw_ack_packet->length(); | 4820 size_t original_raw_length = raw_ack_packet->length(); |
4841 raw_ack_packet.reset( | 4821 raw_ack_packet.reset(BuildDataPacket(header, frames)); |
4842 framer_.BuildUnsizedDataPacket(header, frames).packet); | |
4843 ASSERT_TRUE(raw_ack_packet != NULL); | 4822 ASSERT_TRUE(raw_ack_packet != NULL); |
4844 EXPECT_EQ(original_raw_length, raw_ack_packet->length()); | 4823 EXPECT_EQ(original_raw_length, raw_ack_packet->length()); |
4845 ASSERT_TRUE(raw_ack_packet != NULL); | 4824 ASSERT_TRUE(raw_ack_packet != NULL); |
4846 } | 4825 } |
4847 | 4826 |
4848 TEST_P(QuicFramerTest, EntropyFlagTest) { | 4827 TEST_P(QuicFramerTest, EntropyFlagTest) { |
4849 unsigned char packet[] = { | 4828 unsigned char packet[] = { |
4850 // public flags (8 byte connection_id) | 4829 // public flags (8 byte connection_id) |
4851 0x3C, | 4830 0x3C, |
4852 // connection_id | 4831 // connection_id |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4972 EXPECT_CALL(visitor, OnPacketComplete()); | 4951 EXPECT_CALL(visitor, OnPacketComplete()); |
4973 EXPECT_CALL(visitor, OnUnauthenticatedPublicHeader(_)).WillOnce(Return(true)); | 4952 EXPECT_CALL(visitor, OnUnauthenticatedPublicHeader(_)).WillOnce(Return(true)); |
4974 | 4953 |
4975 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); | 4954 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); |
4976 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); | 4955 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); |
4977 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 4956 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
4978 } | 4957 } |
4979 | 4958 |
4980 } // namespace test | 4959 } // namespace test |
4981 } // namespace net | 4960 } // namespace net |
OLD | NEW |