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

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

Issue 1466693002: Cleanup: clang-formatting gfe/quic/quic_framer* to comply with Chromium style guide. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@107509393
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/quic_framer.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/quic/quic_framer.h" 5 #include "net/quic/quic_framer.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <algorithm> 8 #include <algorithm>
9 #include <map> 9 #include <map>
10 #include <string> 10 #include <string>
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 // Size in bytes of the stream frame fields for an arbitrary StreamID and 59 // Size in bytes of the stream frame fields for an arbitrary StreamID and
60 // offset and the last frame in a packet. 60 // offset and the last frame in a packet.
61 size_t GetMinStreamFrameSize() { 61 size_t GetMinStreamFrameSize() {
62 return kQuicFrameTypeSize + kQuicMaxStreamIdSize + kQuicMaxStreamOffsetSize; 62 return kQuicFrameTypeSize + kQuicMaxStreamIdSize + kQuicMaxStreamOffsetSize;
63 } 63 }
64 64
65 // Index into the packet number offset in the header. 65 // Index into the packet number offset in the header.
66 size_t GetPacketNumberOffset(QuicConnectionIdLength connection_id_length, 66 size_t GetPacketNumberOffset(QuicConnectionIdLength connection_id_length,
67 bool include_version) { 67 bool include_version) {
68 return kConnectionIdOffset + connection_id_length + 68 return kConnectionIdOffset + connection_id_length +
69 (include_version ? kQuicVersionSize : 0); 69 (include_version ? kQuicVersionSize : 0);
70 } 70 }
71 71
72 size_t GetPacketNumberOffset(bool include_version) { 72 size_t GetPacketNumberOffset(bool include_version) {
73 return GetPacketNumberOffset(PACKET_8BYTE_CONNECTION_ID, include_version); 73 return GetPacketNumberOffset(PACKET_8BYTE_CONNECTION_ID, include_version);
74 } 74 }
75 75
76 // Index into the private flags offset in the data packet header. 76 // Index into the private flags offset in the data packet header.
77 size_t GetPrivateFlagsOffset(QuicConnectionIdLength connection_id_length, 77 size_t GetPrivateFlagsOffset(QuicConnectionIdLength connection_id_length,
78 bool include_version) { 78 bool include_version) {
79 return GetPacketNumberOffset(connection_id_length, include_version) + 79 return GetPacketNumberOffset(connection_id_length, include_version) +
80 PACKET_6BYTE_PACKET_NUMBER; 80 PACKET_6BYTE_PACKET_NUMBER;
81 } 81 }
82 82
83 size_t GetPrivateFlagsOffset(bool include_version) { 83 size_t GetPrivateFlagsOffset(bool include_version) {
84 return GetPrivateFlagsOffset(PACKET_8BYTE_CONNECTION_ID, include_version); 84 return GetPrivateFlagsOffset(PACKET_8BYTE_CONNECTION_ID, include_version);
85 } 85 }
86 86
87 size_t GetPrivateFlagsOffset(bool include_version, 87 size_t GetPrivateFlagsOffset(bool include_version,
88 QuicPacketNumberLength packet_number_length) { 88 QuicPacketNumberLength packet_number_length) {
89 return GetPacketNumberOffset(PACKET_8BYTE_CONNECTION_ID, include_version) + 89 return GetPacketNumberOffset(PACKET_8BYTE_CONNECTION_ID, include_version) +
90 packet_number_length; 90 packet_number_length;
91 } 91 }
92 92
93 // Index into the fec group offset in the header. 93 // Index into the fec group offset in the header.
94 size_t GetFecGroupOffset(QuicConnectionIdLength connection_id_length, 94 size_t GetFecGroupOffset(QuicConnectionIdLength connection_id_length,
95 bool include_version) { 95 bool include_version) {
96 return GetPrivateFlagsOffset(connection_id_length, include_version) + 96 return GetPrivateFlagsOffset(connection_id_length, include_version) +
97 kPrivateFlagsSize; 97 kPrivateFlagsSize;
98 } 98 }
99 99
100 size_t GetFecGroupOffset(bool include_version) { 100 size_t GetFecGroupOffset(bool include_version) {
101 return GetPrivateFlagsOffset(PACKET_8BYTE_CONNECTION_ID, include_version) + 101 return GetPrivateFlagsOffset(PACKET_8BYTE_CONNECTION_ID, include_version) +
102 kPrivateFlagsSize; 102 kPrivateFlagsSize;
103 } 103 }
104 104
105 size_t GetFecGroupOffset(bool include_version, 105 size_t GetFecGroupOffset(bool include_version,
106 QuicPacketNumberLength packet_number_length) { 106 QuicPacketNumberLength packet_number_length) {
107 return GetPrivateFlagsOffset(include_version, packet_number_length) + 107 return GetPrivateFlagsOffset(include_version, packet_number_length) +
108 kPrivateFlagsSize; 108 kPrivateFlagsSize;
109 } 109 }
110 110
111 // Index into the message tag of the public reset packet. 111 // Index into the message tag of the public reset packet.
112 // Public resets always have full connection_ids. 112 // Public resets always have full connection_ids.
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 public: 178 public:
179 TestQuicVisitor() 179 TestQuicVisitor()
180 : error_count_(0), 180 : error_count_(0),
181 version_mismatch_(0), 181 version_mismatch_(0),
182 packet_count_(0), 182 packet_count_(0),
183 frame_count_(0), 183 frame_count_(0),
184 fec_count_(0), 184 fec_count_(0),
185 complete_packets_(0), 185 complete_packets_(0),
186 revived_packets_(0), 186 revived_packets_(0),
187 accept_packet_(true), 187 accept_packet_(true),
188 accept_public_header_(true) { 188 accept_public_header_(true) {}
189 }
190 189
191 ~TestQuicVisitor() override { 190 ~TestQuicVisitor() override {
192 STLDeleteElements(&stream_frames_); 191 STLDeleteElements(&stream_frames_);
193 STLDeleteElements(&ack_frames_); 192 STLDeleteElements(&ack_frames_);
194 STLDeleteElements(&stop_waiting_frames_); 193 STLDeleteElements(&stop_waiting_frames_);
195 STLDeleteElements(&ping_frames_); 194 STLDeleteElements(&ping_frames_);
196 STLDeleteElements(&stream_data_); 195 STLDeleteElements(&stream_data_);
197 } 196 }
198 197
199 void OnError(QuicFramer* f) override { 198 void OnError(QuicFramer* f) override {
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 framer_.set_version(version_); 345 framer_.set_version(version_);
347 framer_.SetDecrypter(ENCRYPTION_NONE, decrypter_); 346 framer_.SetDecrypter(ENCRYPTION_NONE, decrypter_);
348 framer_.SetEncrypter(ENCRYPTION_NONE, encrypter_); 347 framer_.SetEncrypter(ENCRYPTION_NONE, encrypter_);
349 framer_.set_visitor(&visitor_); 348 framer_.set_visitor(&visitor_);
350 framer_.set_received_entropy_calculator(&entropy_calculator_); 349 framer_.set_received_entropy_calculator(&entropy_calculator_);
351 } 350 }
352 351
353 // Helper function to get unsigned char representation of digit in the 352 // Helper function to get unsigned char representation of digit in the
354 // units place of the current QUIC version number. 353 // units place of the current QUIC version number.
355 unsigned char GetQuicVersionDigitOnes() { 354 unsigned char GetQuicVersionDigitOnes() {
356 return static_cast<unsigned char> ('0' + version_%10); 355 return static_cast<unsigned char>('0' + version_ % 10);
357 } 356 }
358 357
359 // Helper function to get unsigned char representation of digit in the 358 // Helper function to get unsigned char representation of digit in the
360 // tens place of the current QUIC version number. 359 // tens place of the current QUIC version number.
361 unsigned char GetQuicVersionDigitTens() { 360 unsigned char GetQuicVersionDigitTens() {
362 return static_cast<unsigned char> ('0' + (version_/10)%10); 361 return static_cast<unsigned char>('0' + (version_ / 10) % 10);
363 } 362 }
364 363
365 bool CheckEncryption(QuicPacketNumber packet_number, QuicPacket* packet) { 364 bool CheckEncryption(QuicPacketNumber packet_number, QuicPacket* packet) {
366 if (packet_number != encrypter_->packet_number_) { 365 if (packet_number != encrypter_->packet_number_) {
367 LOG(ERROR) << "Encrypted incorrect packet number. expected " 366 LOG(ERROR) << "Encrypted incorrect packet number. expected "
368 << packet_number << " actual: " << encrypter_->packet_number_; 367 << packet_number << " actual: " << encrypter_->packet_number_;
369 return false; 368 return false;
370 } 369 }
371 if (packet->AssociatedData() != encrypter_->associated_data_) { 370 if (packet->AssociatedData() != encrypter_->associated_data_) {
372 LOG(ERROR) << "Encrypted incorrect associated data. expected " 371 LOG(ERROR) << "Encrypted incorrect associated data. expected "
373 << packet->AssociatedData() << " actual: " 372 << packet->AssociatedData()
374 << encrypter_->associated_data_; 373 << " actual: " << encrypter_->associated_data_;
375 return false; 374 return false;
376 } 375 }
377 if (packet->Plaintext() != encrypter_->plaintext_) { 376 if (packet->Plaintext() != encrypter_->plaintext_) {
378 LOG(ERROR) << "Encrypted incorrect plaintext data. expected " 377 LOG(ERROR) << "Encrypted incorrect plaintext data. expected "
379 << packet->Plaintext() << " actual: " 378 << packet->Plaintext()
380 << encrypter_->plaintext_; 379 << " actual: " << encrypter_->plaintext_;
381 return false; 380 return false;
382 } 381 }
383 return true; 382 return true;
384 } 383 }
385 384
386 bool CheckDecryption(const QuicEncryptedPacket& encrypted, 385 bool CheckDecryption(const QuicEncryptedPacket& encrypted,
387 bool includes_version) { 386 bool includes_version) {
388 if (visitor_.header_->packet_number != decrypter_->packet_number_) { 387 if (visitor_.header_->packet_number != decrypter_->packet_number_) {
389 LOG(ERROR) << "Decrypted incorrect packet number. expected " 388 LOG(ERROR) << "Decrypted incorrect packet number. expected "
390 << visitor_.header_->packet_number 389 << visitor_.header_->packet_number
391 << " actual: " << decrypter_->packet_number_; 390 << " actual: " << decrypter_->packet_number_;
392 return false; 391 return false;
393 } 392 }
394 if (QuicFramer::GetAssociatedDataFromEncryptedPacket( 393 if (QuicFramer::GetAssociatedDataFromEncryptedPacket(
395 encrypted, PACKET_8BYTE_CONNECTION_ID, includes_version, 394 encrypted, PACKET_8BYTE_CONNECTION_ID, includes_version,
396 PACKET_6BYTE_PACKET_NUMBER) != decrypter_->associated_data_) { 395 PACKET_6BYTE_PACKET_NUMBER) != decrypter_->associated_data_) {
397 LOG(ERROR) << "Decrypted incorrect associated data. expected " 396 LOG(ERROR) << "Decrypted incorrect associated data. expected "
398 << QuicFramer::GetAssociatedDataFromEncryptedPacket( 397 << QuicFramer::GetAssociatedDataFromEncryptedPacket(
399 encrypted, PACKET_8BYTE_CONNECTION_ID, includes_version, 398 encrypted, PACKET_8BYTE_CONNECTION_ID, includes_version,
400 PACKET_6BYTE_PACKET_NUMBER) 399 PACKET_6BYTE_PACKET_NUMBER)
401 << " actual: " << decrypter_->associated_data_; 400 << " actual: " << decrypter_->associated_data_;
402 return false; 401 return false;
403 } 402 }
404 StringPiece ciphertext(encrypted.AsStringPiece().substr( 403 StringPiece ciphertext(encrypted.AsStringPiece().substr(
405 GetStartOfEncryptedData(PACKET_8BYTE_CONNECTION_ID, includes_version, 404 GetStartOfEncryptedData(PACKET_8BYTE_CONNECTION_ID, includes_version,
406 PACKET_6BYTE_PACKET_NUMBER))); 405 PACKET_6BYTE_PACKET_NUMBER)));
407 if (ciphertext != decrypter_->ciphertext_) { 406 if (ciphertext != decrypter_->ciphertext_) {
408 LOG(ERROR) << "Decrypted incorrect ciphertext data. expected " 407 LOG(ERROR) << "Decrypted incorrect ciphertext data. expected "
409 << ciphertext << " actual: " 408 << ciphertext << " actual: " << decrypter_->ciphertext_;
410 << decrypter_->ciphertext_;
411 return false; 409 return false;
412 } 410 }
413 return true; 411 return true;
414 } 412 }
415 413
416 char* AsChars(unsigned char* data) { 414 char* AsChars(unsigned char* data) { return reinterpret_cast<char*>(data); }
417 return reinterpret_cast<char*>(data);
418 }
419 415
420 void CheckProcessingFails(unsigned char* packet, 416 void CheckProcessingFails(unsigned char* packet,
421 size_t len, 417 size_t len,
422 string expected_error, 418 string expected_error,
423 QuicErrorCode error_code) { 419 QuicErrorCode error_code) {
424 QuicEncryptedPacket encrypted(AsChars(packet), len, false); 420 QuicEncryptedPacket encrypted(AsChars(packet), len, false);
425 EXPECT_FALSE(framer_.ProcessPacket(encrypted)) << "len: " << len; 421 EXPECT_FALSE(framer_.ProcessPacket(encrypted)) << "len: " << len;
426 EXPECT_EQ(expected_error, framer_.detailed_error()) << "len: " << len; 422 EXPECT_EQ(expected_error, framer_.detailed_error()) << "len: " << len;
427 EXPECT_EQ(error_code, framer_.error()) << "len: " << len; 423 EXPECT_EQ(error_code, framer_.error()) << "len: " << len;
428 } 424 }
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 581
586 // Large numbers should not wrap either. 582 // Large numbers should not wrap either.
587 for (uint64 j = 0; j < 10; j++) { 583 for (uint64 j = 0; j < 10; j++) {
588 uint64 num = kEpoch - 1 - j; 584 uint64 num = kEpoch - 1 - j;
589 CheckCalculatePacketNumber(max_epoch + num, last); 585 CheckCalculatePacketNumber(max_epoch + num, last);
590 } 586 }
591 } 587 }
592 } 588 }
593 589
594 TEST_P(QuicFramerTest, EmptyPacket) { 590 TEST_P(QuicFramerTest, EmptyPacket) {
595 char packet[] = { 0x00 }; 591 char packet[] = {0x00};
596 QuicEncryptedPacket encrypted(packet, 0, false); 592 QuicEncryptedPacket encrypted(packet, 0, false);
597 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); 593 EXPECT_FALSE(framer_.ProcessPacket(encrypted));
598 EXPECT_EQ(QUIC_INVALID_PACKET_HEADER, framer_.error()); 594 EXPECT_EQ(QUIC_INVALID_PACKET_HEADER, framer_.error());
599 } 595 }
600 596
601 TEST_P(QuicFramerTest, LargePacket) { 597 TEST_P(QuicFramerTest, LargePacket) {
602 // clang-format off 598 // clang-format off
603 unsigned char packet[kMaxPacketSize + 1] = { 599 unsigned char packet[kMaxPacketSize + 1] = {
604 // public flags (8 byte connection_id) 600 // public flags (8 byte connection_id)
605 0x3C, 601 0x3C,
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after
1064 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, 1060 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
1065 // private flags 1061 // private flags
1066 0x00, 1062 0x00,
1067 1063
1068 // frame type (padding) 1064 // frame type (padding)
1069 0x00, 1065 0x00,
1070 0x00, 0x00, 0x00, 0x00 1066 0x00, 0x00, 0x00, 0x00
1071 }; 1067 };
1072 // clang-format on 1068 // clang-format on
1073 1069
1074 CheckProcessingFails(packet, 1070 CheckProcessingFails(packet, arraysize(packet), "Illegal public flags value.",
1075 arraysize(packet),
1076 "Illegal public flags value.",
1077 QUIC_INVALID_PACKET_HEADER); 1071 QUIC_INVALID_PACKET_HEADER);
1078 1072
1079 // Now turn off validation. 1073 // Now turn off validation.
1080 framer_.set_validate_flags(false); 1074 framer_.set_validate_flags(false);
1081 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 1075 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
1082 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 1076 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
1083 }; 1077 };
1084 1078
1085 TEST_P(QuicFramerTest, InvalidPublicFlagWithMatchingVersions) { 1079 TEST_P(QuicFramerTest, InvalidPublicFlagWithMatchingVersions) {
1086 // clang-format off 1080 // clang-format off
1087 unsigned char packet[] = { 1081 unsigned char packet[] = {
1088 // public flags (8 byte connection_id and version flag and an unknown flag) 1082 // public flags (8 byte connection_id and version flag and an unknown flag)
1089 0x4D, 1083 0x4D,
1090 // connection_id 1084 // connection_id
1091 0x10, 0x32, 0x54, 0x76, 1085 0x10, 0x32, 0x54, 0x76,
1092 0x98, 0xBA, 0xDC, 0xFE, 1086 0x98, 0xBA, 0xDC, 0xFE,
1093 // version tag 1087 // version tag
1094 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(), 1088 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(),
1095 // packet number 1089 // packet number
1096 0xBC, 0x9A, 0x78, 0x56, 1090 0xBC, 0x9A, 0x78, 0x56,
1097 0x34, 0x12, 1091 0x34, 0x12,
1098 // private flags 1092 // private flags
1099 0x00, 1093 0x00,
1100 1094
1101 // frame type (padding) 1095 // frame type (padding)
1102 0x00, 1096 0x00,
1103 0x00, 0x00, 0x00, 0x00 1097 0x00, 0x00, 0x00, 0x00
1104 }; 1098 };
1105 // clang-format on 1099 // clang-format on
1106 CheckProcessingFails(packet, 1100 CheckProcessingFails(packet, arraysize(packet), "Illegal public flags value.",
1107 arraysize(packet),
1108 "Illegal public flags value.",
1109 QUIC_INVALID_PACKET_HEADER); 1101 QUIC_INVALID_PACKET_HEADER);
1110 }; 1102 };
1111 1103
1112 TEST_P(QuicFramerTest, LargePublicFlagWithMismatchedVersions) { 1104 TEST_P(QuicFramerTest, LargePublicFlagWithMismatchedVersions) {
1113 // clang-format off 1105 // clang-format off
1114 unsigned char packet[] = { 1106 unsigned char packet[] = {
1115 // public flags (8 byte connection_id, version flag and an unknown flag) 1107 // public flags (8 byte connection_id, version flag and an unknown flag)
1116 0x7D, 1108 0x7D,
1117 // connection_id 1109 // connection_id
1118 0x10, 0x32, 0x54, 0x76, 1110 0x10, 0x32, 0x54, 0x76,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1150 0xBC, 0x9A, 0x78, 0x56, 1142 0xBC, 0x9A, 0x78, 0x56,
1151 0x34, 0x12, 1143 0x34, 0x12,
1152 // private flags 1144 // private flags
1153 0x10, 1145 0x10,
1154 1146
1155 // frame type (padding) 1147 // frame type (padding)
1156 0x00, 1148 0x00,
1157 0x00, 0x00, 0x00, 0x00 1149 0x00, 0x00, 0x00, 0x00
1158 }; 1150 };
1159 // clang-format on 1151 // clang-format on
1160 CheckProcessingFails(packet, 1152 CheckProcessingFails(packet, arraysize(packet),
1161 arraysize(packet),
1162 "Illegal private flags value.", 1153 "Illegal private flags value.",
1163 QUIC_INVALID_PACKET_HEADER); 1154 QUIC_INVALID_PACKET_HEADER);
1164 }; 1155 };
1165 1156
1166 TEST_P(QuicFramerTest, InvalidFECGroupOffset) { 1157 TEST_P(QuicFramerTest, InvalidFECGroupOffset) {
1167 // clang-format off 1158 // clang-format off
1168 unsigned char packet[] = { 1159 unsigned char packet[] = {
1169 // public flags (8 byte connection_id) 1160 // public flags (8 byte connection_id)
1170 0x3C, 1161 0x3C,
1171 // connection_id 1162 // connection_id
(...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after
1570 QuicPacketHeader header; 1561 QuicPacketHeader header;
1571 header.public_header.connection_id = kConnectionId; 1562 header.public_header.connection_id = kConnectionId;
1572 header.public_header.reset_flag = false; 1563 header.public_header.reset_flag = false;
1573 header.public_header.version_flag = false; 1564 header.public_header.version_flag = false;
1574 header.fec_flag = true; 1565 header.fec_flag = true;
1575 header.entropy_flag = true; 1566 header.entropy_flag = true;
1576 header.packet_number = kPacketNumber; 1567 header.packet_number = kPacketNumber;
1577 header.fec_group = 0; 1568 header.fec_group = 0;
1578 1569
1579 // Do not encrypt the payload because the revived payload is post-encryption. 1570 // Do not encrypt the payload because the revived payload is post-encryption.
1580 EXPECT_TRUE(framer_.ProcessRevivedPacket(&header, 1571 EXPECT_TRUE(framer_.ProcessRevivedPacket(
1581 StringPiece(AsChars(payload), 1572 &header, StringPiece(AsChars(payload), arraysize(payload))));
1582 arraysize(payload))));
1583 1573
1584 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 1574 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
1585 ASSERT_EQ(1, visitor_.revived_packets_); 1575 ASSERT_EQ(1, visitor_.revived_packets_);
1586 ASSERT_TRUE(visitor_.header_.get()); 1576 ASSERT_TRUE(visitor_.header_.get());
1587 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); 1577 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id);
1588 EXPECT_FALSE(visitor_.header_->public_header.reset_flag); 1578 EXPECT_FALSE(visitor_.header_->public_header.reset_flag);
1589 EXPECT_FALSE(visitor_.header_->public_header.version_flag); 1579 EXPECT_FALSE(visitor_.header_->public_header.version_flag);
1590 EXPECT_TRUE(visitor_.header_->fec_flag); 1580 EXPECT_TRUE(visitor_.header_->fec_flag);
1591 EXPECT_TRUE(visitor_.header_->entropy_flag); 1581 EXPECT_TRUE(visitor_.header_->entropy_flag);
1592 EXPECT_EQ(1 << (header.packet_number % 8), visitor_.header_->entropy_hash); 1582 EXPECT_EQ(1 << (header.packet_number % 8), visitor_.header_->entropy_hash);
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
1708 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 1698 EXPECT_EQ(0u, visitor_.stream_frames_.size());
1709 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 1699 ASSERT_EQ(1u, visitor_.ack_frames_.size());
1710 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; 1700 const QuicAckFrame& frame = *visitor_.ack_frames_[0];
1711 EXPECT_EQ(0xBA, frame.entropy_hash); 1701 EXPECT_EQ(0xBA, frame.entropy_hash);
1712 EXPECT_EQ(kLargestObserved, frame.largest_observed); 1702 EXPECT_EQ(kLargestObserved, frame.largest_observed);
1713 ASSERT_EQ(1u, frame.missing_packets.NumPacketsSlow()); 1703 ASSERT_EQ(1u, frame.missing_packets.NumPacketsSlow());
1714 ASSERT_EQ(2u, frame.received_packet_times.size()); 1704 ASSERT_EQ(2u, frame.received_packet_times.size());
1715 EXPECT_EQ(kMissingPacket, frame.missing_packets.Min()); 1705 EXPECT_EQ(kMissingPacket, frame.missing_packets.Min());
1716 1706
1717 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; 1707 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize;
1718 const size_t kLargestObservedOffset = kReceivedEntropyOffset + 1708 const size_t kLargestObservedOffset =
1719 kQuicEntropyHashSize; 1709 kReceivedEntropyOffset + kQuicEntropyHashSize;
1720 const size_t kMissingDeltaTimeOffset = 1710 const size_t kMissingDeltaTimeOffset =
1721 kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER; 1711 kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER;
1722 const size_t kNumTimestampsOffset = 1712 const size_t kNumTimestampsOffset =
1723 kMissingDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize; 1713 kMissingDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize;
1724 const size_t kTimestampDeltaLargestObserved1 = 1714 const size_t kTimestampDeltaLargestObserved1 =
1725 kNumTimestampsOffset + kQuicNumTimestampsSize; 1715 kNumTimestampsOffset + kQuicNumTimestampsSize;
1726 const size_t kTimestampTimeDeltaLargestObserved1 = 1716 const size_t kTimestampTimeDeltaLargestObserved1 =
1727 kTimestampDeltaLargestObserved1 + 1; 1717 kTimestampDeltaLargestObserved1 + 1;
1728 const size_t kTimestampDeltaLargestObserved2 = 1718 const size_t kTimestampDeltaLargestObserved2 =
1729 kTimestampTimeDeltaLargestObserved1 + 4; 1719 kTimestampTimeDeltaLargestObserved1 + 4;
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
1833 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; 1823 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize;
1834 const size_t kLargestObservedOffset = 1824 const size_t kLargestObservedOffset =
1835 kReceivedEntropyOffset + kQuicEntropyHashSize; 1825 kReceivedEntropyOffset + kQuicEntropyHashSize;
1836 const size_t kMissingDeltaTimeOffset = 1826 const size_t kMissingDeltaTimeOffset =
1837 kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER; 1827 kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER;
1838 const size_t kNumTimestampsOffset = 1828 const size_t kNumTimestampsOffset =
1839 kMissingDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize; 1829 kMissingDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize;
1840 const size_t kTimestampDeltaLargestObserved = 1830 const size_t kTimestampDeltaLargestObserved =
1841 kNumTimestampsOffset + kQuicNumTimestampsSize; 1831 kNumTimestampsOffset + kQuicNumTimestampsSize;
1842 const size_t kTimestampTimeDeltaLargestObserved = 1832 const size_t kTimestampTimeDeltaLargestObserved =
1843 kTimestampDeltaLargestObserved + 1; 1833 kTimestampDeltaLargestObserved + 1;
1844 const size_t kNumMissingPacketOffset = kTimestampTimeDeltaLargestObserved + 4; 1834 const size_t kNumMissingPacketOffset = kTimestampTimeDeltaLargestObserved + 4;
1845 const size_t kMissingPacketsOffset = 1835 const size_t kMissingPacketsOffset =
1846 kNumMissingPacketOffset + kNumberOfNackRangesSize; 1836 kNumMissingPacketOffset + kNumberOfNackRangesSize;
1847 const size_t kMissingPacketsRange = 1837 const size_t kMissingPacketsRange =
1848 kMissingPacketsOffset + PACKET_1BYTE_PACKET_NUMBER; 1838 kMissingPacketsOffset + PACKET_1BYTE_PACKET_NUMBER;
1849 const size_t kRevivedPacketsLength = 1839 const size_t kRevivedPacketsLength =
1850 kMissingPacketsRange + PACKET_1BYTE_PACKET_NUMBER; 1840 kMissingPacketsRange + PACKET_1BYTE_PACKET_NUMBER;
1851 // Now test framing boundaries. 1841 // Now test framing boundaries.
1852 const size_t ack_frame_size = 1842 const size_t ack_frame_size =
1853 kRevivedPacketsLength + PACKET_1BYTE_PACKET_NUMBER; 1843 kRevivedPacketsLength + PACKET_1BYTE_PACKET_NUMBER;
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
1925 1915
1926 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 1916 EXPECT_EQ(0u, visitor_.stream_frames_.size());
1927 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 1917 ASSERT_EQ(1u, visitor_.ack_frames_.size());
1928 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; 1918 const QuicAckFrame& frame = *visitor_.ack_frames_[0];
1929 EXPECT_EQ(0xBA, frame.entropy_hash); 1919 EXPECT_EQ(0xBA, frame.entropy_hash);
1930 EXPECT_EQ(kLargestObserved, frame.largest_observed); 1920 EXPECT_EQ(kLargestObserved, frame.largest_observed);
1931 ASSERT_EQ(1u, frame.missing_packets.NumPacketsSlow()); 1921 ASSERT_EQ(1u, frame.missing_packets.NumPacketsSlow());
1932 EXPECT_EQ(kMissingPacket, frame.missing_packets.Min()); 1922 EXPECT_EQ(kMissingPacket, frame.missing_packets.Min());
1933 1923
1934 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; 1924 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize;
1935 const size_t kLargestObservedOffset = kReceivedEntropyOffset + 1925 const size_t kLargestObservedOffset =
1936 kQuicEntropyHashSize; 1926 kReceivedEntropyOffset + kQuicEntropyHashSize;
1937 const size_t kMissingDeltaTimeOffset = 1927 const size_t kMissingDeltaTimeOffset =
1938 kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER; 1928 kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER;
1939 const size_t kNumTimestampsOffset = kMissingDeltaTimeOffset + 1929 const size_t kNumTimestampsOffset =
1940 kQuicDeltaTimeLargestObservedSize; 1930 kMissingDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize;
1941 const size_t kNumMissingPacketOffset = kNumTimestampsOffset + 1931 const size_t kNumMissingPacketOffset =
1942 kQuicNumTimestampsSize; 1932 kNumTimestampsOffset + kQuicNumTimestampsSize;
1943 const size_t kMissingPacketsOffset = kNumMissingPacketOffset + 1933 const size_t kMissingPacketsOffset =
1944 kNumberOfNackRangesSize; 1934 kNumMissingPacketOffset + kNumberOfNackRangesSize;
1945 const size_t kMissingPacketsRange = 1935 const size_t kMissingPacketsRange =
1946 kMissingPacketsOffset + PACKET_1BYTE_PACKET_NUMBER; 1936 kMissingPacketsOffset + PACKET_1BYTE_PACKET_NUMBER;
1947 const size_t kRevivedPacketsLength = 1937 const size_t kRevivedPacketsLength =
1948 kMissingPacketsRange + PACKET_1BYTE_PACKET_NUMBER; 1938 kMissingPacketsRange + PACKET_1BYTE_PACKET_NUMBER;
1949 // Now test framing boundaries. 1939 // Now test framing boundaries.
1950 const size_t ack_frame_size = 1940 const size_t ack_frame_size =
1951 kRevivedPacketsLength + PACKET_1BYTE_PACKET_NUMBER; 1941 kRevivedPacketsLength + PACKET_1BYTE_PACKET_NUMBER;
1952 for (size_t i = kQuicFrameTypeSize; i < ack_frame_size; ++i) { 1942 for (size_t i = kQuicFrameTypeSize; i < ack_frame_size; ++i) {
1953 string expected_error; 1943 string expected_error;
1954 if (i < kLargestObservedOffset) { 1944 if (i < kLargestObservedOffset) {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
2023 2013
2024 EXPECT_EQ(0u, visitor_.stream_frames_.size()); 2014 EXPECT_EQ(0u, visitor_.stream_frames_.size());
2025 ASSERT_EQ(1u, visitor_.ack_frames_.size()); 2015 ASSERT_EQ(1u, visitor_.ack_frames_.size());
2026 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; 2016 const QuicAckFrame& frame = *visitor_.ack_frames_[0];
2027 EXPECT_EQ(0xBA, frame.entropy_hash); 2017 EXPECT_EQ(0xBA, frame.entropy_hash);
2028 EXPECT_EQ(kLargestObserved, frame.largest_observed); 2018 EXPECT_EQ(kLargestObserved, frame.largest_observed);
2029 ASSERT_EQ(1u, frame.missing_packets.NumPacketsSlow()); 2019 ASSERT_EQ(1u, frame.missing_packets.NumPacketsSlow());
2030 EXPECT_EQ(kMissingPacket, frame.missing_packets.Min()); 2020 EXPECT_EQ(kMissingPacket, frame.missing_packets.Min());
2031 2021
2032 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize; 2022 const size_t kReceivedEntropyOffset = kQuicFrameTypeSize;
2033 const size_t kLargestObservedOffset = kReceivedEntropyOffset + 2023 const size_t kLargestObservedOffset =
2034 kQuicEntropyHashSize; 2024 kReceivedEntropyOffset + kQuicEntropyHashSize;
2035 const size_t kMissingDeltaTimeOffset = 2025 const size_t kMissingDeltaTimeOffset =
2036 kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER; 2026 kLargestObservedOffset + PACKET_6BYTE_PACKET_NUMBER;
2037 const size_t kNumTimestampsOffset = kMissingDeltaTimeOffset + 2027 const size_t kNumTimestampsOffset =
2038 kQuicDeltaTimeLargestObservedSize; 2028 kMissingDeltaTimeOffset + kQuicDeltaTimeLargestObservedSize;
2039 const size_t kNumMissingPacketOffset = kNumTimestampsOffset + 2029 const size_t kNumMissingPacketOffset =
2040 kQuicNumTimestampsSize; 2030 kNumTimestampsOffset + kQuicNumTimestampsSize;
2041 const size_t kMissingPacketsOffset = kNumMissingPacketOffset + 2031 const size_t kMissingPacketsOffset =
2042 kNumberOfNackRangesSize; 2032 kNumMissingPacketOffset + kNumberOfNackRangesSize;
2043 const size_t kMissingPacketsRange = 2033 const size_t kMissingPacketsRange =
2044 kMissingPacketsOffset + PACKET_1BYTE_PACKET_NUMBER; 2034 kMissingPacketsOffset + PACKET_1BYTE_PACKET_NUMBER;
2045 const size_t kRevivedPacketsLength = 2035 const size_t kRevivedPacketsLength =
2046 kMissingPacketsRange + PACKET_1BYTE_PACKET_NUMBER; 2036 kMissingPacketsRange + PACKET_1BYTE_PACKET_NUMBER;
2047 const size_t kRevivedPacketSequenceNumberLength = 2037 const size_t kRevivedPacketSequenceNumberLength =
2048 kRevivedPacketsLength + PACKET_1BYTE_PACKET_NUMBER; 2038 kRevivedPacketsLength + PACKET_1BYTE_PACKET_NUMBER;
2049 // Now test framing boundaries. 2039 // Now test framing boundaries.
2050 const size_t ack_frame_size = 2040 const size_t ack_frame_size =
2051 kRevivedPacketSequenceNumberLength + PACKET_6BYTE_PACKET_NUMBER; 2041 kRevivedPacketSequenceNumberLength + PACKET_6BYTE_PACKET_NUMBER;
2052 for (size_t i = kQuicFrameTypeSize; i < ack_frame_size; ++i) { 2042 for (size_t i = kQuicFrameTypeSize; i < ack_frame_size; ++i) {
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
2187 ASSERT_EQ(500u, frame->missing_packets.NumPacketsSlow()); 2177 ASSERT_EQ(500u, frame->missing_packets.NumPacketsSlow());
2188 EXPECT_EQ(kMissingPacket - 499, frame->missing_packets.Min()); 2178 EXPECT_EQ(kMissingPacket - 499, frame->missing_packets.Min());
2189 EXPECT_EQ(kMissingPacket, frame->missing_packets.Max()); 2179 EXPECT_EQ(kMissingPacket, frame->missing_packets.Max());
2190 2180
2191 // Verify that the packet re-serializes identically. 2181 // Verify that the packet re-serializes identically.
2192 QuicFrames frames; 2182 QuicFrames frames;
2193 frames.push_back(QuicFrame(frame)); 2183 frames.push_back(QuicFrame(frame));
2194 scoped_ptr<QuicPacket> data(BuildDataPacket(*visitor_.header_, frames)); 2184 scoped_ptr<QuicPacket> data(BuildDataPacket(*visitor_.header_, frames));
2195 ASSERT_TRUE(data != nullptr); 2185 ASSERT_TRUE(data != nullptr);
2196 2186
2197 test::CompareCharArraysWithHexError("constructed packet", 2187 test::CompareCharArraysWithHexError("constructed packet", data->data(),
2198 data->data(), data->length(), 2188 data->length(), AsChars(packet),
2199 AsChars(packet), arraysize(packet)); 2189 arraysize(packet));
2200 } 2190 }
2201 2191
2202 TEST_P(QuicFramerTest, StopWaitingFrame) { 2192 TEST_P(QuicFramerTest, StopWaitingFrame) {
2203 // clang-format off 2193 // clang-format off
2204 unsigned char packet[] = { 2194 unsigned char packet[] = {
2205 // public flags (8 byte connection_id) 2195 // public flags (8 byte connection_id)
2206 0x3C, 2196 0x3C,
2207 // connection_id 2197 // connection_id
2208 0x10, 0x32, 0x54, 0x76, 2198 0x10, 0x32, 0x54, 0x76,
2209 0x98, 0xBA, 0xDC, 0xFE, 2199 0x98, 0xBA, 0xDC, 0xFE,
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
2416 EXPECT_EQ(0x9, visitor_.goaway_frame_.error_code); 2406 EXPECT_EQ(0x9, visitor_.goaway_frame_.error_code);
2417 EXPECT_EQ("because I can", visitor_.goaway_frame_.reason_phrase); 2407 EXPECT_EQ("because I can", visitor_.goaway_frame_.reason_phrase);
2418 2408
2419 const size_t reason_size = arraysize("because I can") - 1; 2409 const size_t reason_size = arraysize("because I can") - 1;
2420 // Now test framing boundaries. 2410 // Now test framing boundaries.
2421 for (size_t i = kQuicFrameTypeSize; 2411 for (size_t i = kQuicFrameTypeSize;
2422 i < QuicFramer::GetMinGoAwayFrameSize() + reason_size; ++i) { 2412 i < QuicFramer::GetMinGoAwayFrameSize() + reason_size; ++i) {
2423 string expected_error; 2413 string expected_error;
2424 if (i < kQuicFrameTypeSize + kQuicErrorCodeSize) { 2414 if (i < kQuicFrameTypeSize + kQuicErrorCodeSize) {
2425 expected_error = "Unable to read go away error code."; 2415 expected_error = "Unable to read go away error code.";
2426 } else if (i < kQuicFrameTypeSize + kQuicErrorCodeSize + 2416 } else if (i <
2427 kQuicMaxStreamIdSize) { 2417 kQuicFrameTypeSize + kQuicErrorCodeSize + kQuicMaxStreamIdSize) {
2428 expected_error = "Unable to read last good stream id."; 2418 expected_error = "Unable to read last good stream id.";
2429 } else { 2419 } else {
2430 expected_error = "Unable to read goaway reason."; 2420 expected_error = "Unable to read goaway reason.";
2431 } 2421 }
2432 CheckProcessingFails( 2422 CheckProcessingFails(
2433 packet, 2423 packet,
2434 i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, 2424 i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
2435 PACKET_6BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP), 2425 PACKET_6BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP),
2436 expected_error, QUIC_INVALID_GOAWAY_DATA); 2426 expected_error, QUIC_INVALID_GOAWAY_DATA);
2437 } 2427 }
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
2596 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 2586 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
2597 ASSERT_EQ(QUIC_NO_ERROR, framer_.error()); 2587 ASSERT_EQ(QUIC_NO_ERROR, framer_.error());
2598 ASSERT_TRUE(visitor_.public_reset_packet_.get()); 2588 ASSERT_TRUE(visitor_.public_reset_packet_.get());
2599 EXPECT_EQ(kConnectionId, 2589 EXPECT_EQ(kConnectionId,
2600 visitor_.public_reset_packet_->public_header.connection_id); 2590 visitor_.public_reset_packet_->public_header.connection_id);
2601 EXPECT_TRUE(visitor_.public_reset_packet_->public_header.reset_flag); 2591 EXPECT_TRUE(visitor_.public_reset_packet_->public_header.reset_flag);
2602 EXPECT_FALSE(visitor_.public_reset_packet_->public_header.version_flag); 2592 EXPECT_FALSE(visitor_.public_reset_packet_->public_header.version_flag);
2603 EXPECT_EQ(kNonceProof, visitor_.public_reset_packet_->nonce_proof); 2593 EXPECT_EQ(kNonceProof, visitor_.public_reset_packet_->nonce_proof);
2604 EXPECT_EQ(kPacketNumber, 2594 EXPECT_EQ(kPacketNumber,
2605 visitor_.public_reset_packet_->rejected_packet_number); 2595 visitor_.public_reset_packet_->rejected_packet_number);
2606 EXPECT_TRUE( 2596 EXPECT_EQ(
2607 visitor_.public_reset_packet_->client_address.address().empty()); 2597 ADDRESS_FAMILY_UNSPECIFIED,
2598 visitor_.public_reset_packet_->client_address.GetFamily());
2608 2599
2609 // Now test framing boundaries. 2600 // Now test framing boundaries.
2610 for (size_t i = 0; i < arraysize(packet); ++i) { 2601 for (size_t i = 0; i < arraysize(packet); ++i) {
2611 string expected_error; 2602 string expected_error;
2612 DVLOG(1) << "iteration: " << i; 2603 DVLOG(1) << "iteration: " << i;
2613 if (i < kConnectionIdOffset) { 2604 if (i < kConnectionIdOffset) {
2614 expected_error = "Unable to read public flags."; 2605 expected_error = "Unable to read public flags.";
2615 CheckProcessingFails(packet, i, expected_error, 2606 CheckProcessingFails(packet, i, expected_error,
2616 QUIC_INVALID_PACKET_HEADER); 2607 QUIC_INVALID_PACKET_HEADER);
2617 } else if (i < kPublicResetPacketMessageTagOffset) { 2608 } else if (i < kPublicResetPacketMessageTagOffset) {
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
2845 // clang-format on 2836 // clang-format on
2846 2837
2847 uint64 header_size = 2838 uint64 header_size =
2848 GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, 2839 GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
2849 PACKET_6BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP); 2840 PACKET_6BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP);
2850 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); 2841 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1);
2851 2842
2852 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); 2843 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames));
2853 ASSERT_TRUE(data != nullptr); 2844 ASSERT_TRUE(data != nullptr);
2854 2845
2855 test::CompareCharArraysWithHexError("constructed packet", 2846 test::CompareCharArraysWithHexError("constructed packet", data->data(),
2856 data->data(), data->length(), 2847 data->length(), AsChars(packet),
2857 AsChars(packet),
2858 arraysize(packet)); 2848 arraysize(packet));
2859 } 2849 }
2860 2850
2861 TEST_P(QuicFramerTest, Build4ByteSequenceNumberPaddingFramePacket) { 2851 TEST_P(QuicFramerTest, Build4ByteSequenceNumberPaddingFramePacket) {
2862 QuicPacketHeader header; 2852 QuicPacketHeader header;
2863 header.public_header.connection_id = kConnectionId; 2853 header.public_header.connection_id = kConnectionId;
2864 header.public_header.reset_flag = false; 2854 header.public_header.reset_flag = false;
2865 header.public_header.version_flag = false; 2855 header.public_header.version_flag = false;
2866 header.fec_flag = false; 2856 header.fec_flag = false;
2867 header.entropy_flag = false; 2857 header.entropy_flag = false;
(...skipping 25 matching lines...) Expand all
2893 // clang-format on 2883 // clang-format on
2894 2884
2895 uint64 header_size = 2885 uint64 header_size =
2896 GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, 2886 GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
2897 PACKET_4BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP); 2887 PACKET_4BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP);
2898 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); 2888 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1);
2899 2889
2900 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); 2890 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames));
2901 ASSERT_TRUE(data != nullptr); 2891 ASSERT_TRUE(data != nullptr);
2902 2892
2903 test::CompareCharArraysWithHexError("constructed packet", 2893 test::CompareCharArraysWithHexError("constructed packet", data->data(),
2904 data->data(), data->length(), 2894 data->length(), AsChars(packet),
2905 AsChars(packet),
2906 arraysize(packet)); 2895 arraysize(packet));
2907 } 2896 }
2908 2897
2909 TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) { 2898 TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) {
2910 QuicPacketHeader header; 2899 QuicPacketHeader header;
2911 header.public_header.connection_id = kConnectionId; 2900 header.public_header.connection_id = kConnectionId;
2912 header.public_header.reset_flag = false; 2901 header.public_header.reset_flag = false;
2913 header.public_header.version_flag = false; 2902 header.public_header.version_flag = false;
2914 header.fec_flag = false; 2903 header.fec_flag = false;
2915 header.entropy_flag = false; 2904 header.entropy_flag = false;
(...skipping 25 matching lines...) Expand all
2941 // clang-format on 2930 // clang-format on
2942 2931
2943 uint64 header_size = 2932 uint64 header_size =
2944 GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, 2933 GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
2945 PACKET_2BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP); 2934 PACKET_2BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP);
2946 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); 2935 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1);
2947 2936
2948 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); 2937 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames));
2949 ASSERT_TRUE(data != nullptr); 2938 ASSERT_TRUE(data != nullptr);
2950 2939
2951 test::CompareCharArraysWithHexError("constructed packet", 2940 test::CompareCharArraysWithHexError("constructed packet", data->data(),
2952 data->data(), data->length(), 2941 data->length(), AsChars(packet),
2953 AsChars(packet),
2954 arraysize(packet)); 2942 arraysize(packet));
2955 } 2943 }
2956 2944
2957 TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) { 2945 TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) {
2958 QuicPacketHeader header; 2946 QuicPacketHeader header;
2959 header.public_header.connection_id = kConnectionId; 2947 header.public_header.connection_id = kConnectionId;
2960 header.public_header.reset_flag = false; 2948 header.public_header.reset_flag = false;
2961 header.public_header.version_flag = false; 2949 header.public_header.version_flag = false;
2962 header.fec_flag = false; 2950 header.fec_flag = false;
2963 header.entropy_flag = false; 2951 header.entropy_flag = false;
(...skipping 25 matching lines...) Expand all
2989 // clang-format on 2977 // clang-format on
2990 2978
2991 uint64 header_size = 2979 uint64 header_size =
2992 GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, 2980 GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
2993 PACKET_1BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP); 2981 PACKET_1BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP);
2994 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); 2982 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1);
2995 2983
2996 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); 2984 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames));
2997 ASSERT_TRUE(data != nullptr); 2985 ASSERT_TRUE(data != nullptr);
2998 2986
2999 test::CompareCharArraysWithHexError("constructed packet", 2987 test::CompareCharArraysWithHexError("constructed packet", data->data(),
3000 data->data(), data->length(), 2988 data->length(), AsChars(packet),
3001 AsChars(packet),
3002 arraysize(packet)); 2989 arraysize(packet));
3003 } 2990 }
3004 2991
3005 TEST_P(QuicFramerTest, BuildStreamFramePacket) { 2992 TEST_P(QuicFramerTest, BuildStreamFramePacket) {
3006 QuicPacketHeader header; 2993 QuicPacketHeader header;
3007 header.public_header.connection_id = kConnectionId; 2994 header.public_header.connection_id = kConnectionId;
3008 header.public_header.reset_flag = false; 2995 header.public_header.reset_flag = false;
3009 header.public_header.version_flag = false; 2996 header.public_header.version_flag = false;
3010 header.fec_flag = false; 2997 header.fec_flag = false;
3011 header.entropy_flag = true; 2998 header.entropy_flag = true;
(...skipping 29 matching lines...) Expand all
3041 // data 3028 // data
3042 'h', 'e', 'l', 'l', 3029 'h', 'e', 'l', 'l',
3043 'o', ' ', 'w', 'o', 3030 'o', ' ', 'w', 'o',
3044 'r', 'l', 'd', '!', 3031 'r', 'l', 'd', '!',
3045 }; 3032 };
3046 // clang-format on 3033 // clang-format on
3047 3034
3048 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); 3035 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames));
3049 ASSERT_TRUE(data != nullptr); 3036 ASSERT_TRUE(data != nullptr);
3050 3037
3051 test::CompareCharArraysWithHexError("constructed packet", 3038 test::CompareCharArraysWithHexError("constructed packet", data->data(),
3052 data->data(), data->length(), 3039 data->length(), AsChars(packet),
3053 AsChars(packet), arraysize(packet)); 3040 arraysize(packet));
3054 } 3041 }
3055 3042
3056 TEST_P(QuicFramerTest, BuildStreamFramePacketInFecGroup) { 3043 TEST_P(QuicFramerTest, BuildStreamFramePacketInFecGroup) {
3057 QuicPacketHeader header; 3044 QuicPacketHeader header;
3058 header.public_header.connection_id = kConnectionId; 3045 header.public_header.connection_id = kConnectionId;
3059 header.public_header.reset_flag = false; 3046 header.public_header.reset_flag = false;
3060 header.public_header.version_flag = false; 3047 header.public_header.version_flag = false;
3061 header.fec_flag = false; 3048 header.fec_flag = false;
3062 header.entropy_flag = true; 3049 header.entropy_flag = true;
3063 header.packet_number = kPacketNumber; 3050 header.packet_number = kPacketNumber;
(...skipping 26 matching lines...) Expand all
3090 // data length (since packet is in an FEC group) 3077 // data length (since packet is in an FEC group)
3091 0x0C, 0x00, 3078 0x0C, 0x00,
3092 // data 3079 // data
3093 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!', 3080 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!',
3094 }; 3081 };
3095 // clang-format on 3082 // clang-format on
3096 3083
3097 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); 3084 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames));
3098 ASSERT_TRUE(data != nullptr); 3085 ASSERT_TRUE(data != nullptr);
3099 3086
3100 test::CompareCharArraysWithHexError("constructed packet", 3087 test::CompareCharArraysWithHexError("constructed packet", data->data(),
3101 data->data(), data->length(), 3088 data->length(), AsChars(packet),
3102 AsChars(packet), arraysize(packet)); 3089 arraysize(packet));
3103 } 3090 }
3104 3091
3105 TEST_P(QuicFramerTest, BuildStreamFramePacketWithVersionFlag) { 3092 TEST_P(QuicFramerTest, BuildStreamFramePacketWithVersionFlag) {
3106 QuicPacketHeader header; 3093 QuicPacketHeader header;
3107 header.public_header.connection_id = kConnectionId; 3094 header.public_header.connection_id = kConnectionId;
3108 header.public_header.reset_flag = false; 3095 header.public_header.reset_flag = false;
3109 header.public_header.version_flag = true; 3096 header.public_header.version_flag = true;
3110 header.fec_flag = false; 3097 header.fec_flag = false;
3111 header.entropy_flag = true; 3098 header.entropy_flag = true;
3112 header.packet_number = kPacketNumber; 3099 header.packet_number = kPacketNumber;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
3175 'l', 3162 'l',
3176 'd', 3163 'd',
3177 '!', 3164 '!',
3178 }; 3165 };
3179 // clang-format on 3166 // clang-format on
3180 3167
3181 QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT); 3168 QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT);
3182 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); 3169 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames));
3183 ASSERT_TRUE(data != nullptr); 3170 ASSERT_TRUE(data != nullptr);
3184 3171
3185 test::CompareCharArraysWithHexError("constructed packet", 3172 test::CompareCharArraysWithHexError("constructed packet", data->data(),
3186 data->data(), data->length(), 3173 data->length(), AsChars(packet),
3187 AsChars(packet), arraysize(packet)); 3174 arraysize(packet));
3188 } 3175 }
3189 3176
3190 TEST_P(QuicFramerTest, BuildVersionNegotiationPacket) { 3177 TEST_P(QuicFramerTest, BuildVersionNegotiationPacket) {
3191 // clang-format off 3178 // clang-format off
3192 unsigned char packet[] = { 3179 unsigned char packet[] = {
3193 // public flags (version, 8 byte connection_id) 3180 // public flags (version, 8 byte connection_id)
3194 0x0D, 3181 0x0D,
3195 // connection_id 3182 // connection_id
3196 0x10, 3183 0x10,
3197 0x32, 3184 0x32,
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
3265 // 0 more missing packets in range. 3252 // 0 more missing packets in range.
3266 0x00, 3253 0x00,
3267 // 0 revived packets. 3254 // 0 revived packets.
3268 0x00, 3255 0x00,
3269 }; 3256 };
3270 // clang-format on 3257 // clang-format on
3271 3258
3272 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); 3259 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames));
3273 ASSERT_TRUE(data != nullptr); 3260 ASSERT_TRUE(data != nullptr);
3274 3261
3275 test::CompareCharArraysWithHexError("constructed packet", 3262 test::CompareCharArraysWithHexError("constructed packet", data->data(),
3276 data->data(), data->length(), 3263 data->length(), AsChars(packet),
3277 AsChars(packet), arraysize(packet)); 3264 arraysize(packet));
3278 } 3265 }
3279 3266
3280 // TODO(jri): Add test for tuncated packets in which the original ack frame had 3267 // TODO(jri): Add test for tuncated packets in which the original ack frame had
3281 // revived packets. (In both the large and small packet cases below). 3268 // revived packets. (In both the large and small packet cases below).
3282 3269
3283 TEST_P(QuicFramerTest, BuildTruncatedAckFrameLargePacket) { 3270 TEST_P(QuicFramerTest, BuildTruncatedAckFrameLargePacket) {
3284 QuicPacketHeader header; 3271 QuicPacketHeader header;
3285 header.public_header.connection_id = kConnectionId; 3272 header.public_header.connection_id = kConnectionId;
3286 header.public_header.reset_flag = false; 3273 header.public_header.reset_flag = false;
3287 header.public_header.version_flag = false; 3274 header.public_header.version_flag = false;
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
3379 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 3366 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
3380 3367
3381 // 0 revived packets. 3368 // 0 revived packets.
3382 0x00, 3369 0x00,
3383 }; 3370 };
3384 // clang-format on 3371 // clang-format on
3385 3372
3386 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); 3373 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames));
3387 ASSERT_TRUE(data != nullptr); 3374 ASSERT_TRUE(data != nullptr);
3388 3375
3389 test::CompareCharArraysWithHexError("constructed packet", 3376 test::CompareCharArraysWithHexError("constructed packet", data->data(),
3390 data->data(), data->length(), 3377 data->length(), AsChars(packet),
3391 AsChars(packet), arraysize(packet)); 3378 arraysize(packet));
3392 } 3379 }
3393 3380
3394 TEST_P(QuicFramerTest, BuildTruncatedAckFrameSmallPacket) { 3381 TEST_P(QuicFramerTest, BuildTruncatedAckFrameSmallPacket) {
3395 QuicPacketHeader header; 3382 QuicPacketHeader header;
3396 header.public_header.connection_id = kConnectionId; 3383 header.public_header.connection_id = kConnectionId;
3397 header.public_header.reset_flag = false; 3384 header.public_header.reset_flag = false;
3398 header.public_header.version_flag = false; 3385 header.public_header.version_flag = false;
3399 header.fec_flag = false; 3386 header.fec_flag = false;
3400 header.entropy_flag = true; 3387 header.entropy_flag = true;
3401 header.packet_number = kPacketNumber; 3388 header.packet_number = kPacketNumber;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
3444 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 3431 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
3445 // 0 revived packets. 3432 // 0 revived packets.
3446 0x00, 3433 0x00,
3447 }; 3434 };
3448 // clang-format on 3435 // clang-format on
3449 3436
3450 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames, 37u)); 3437 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames, 37u));
3451 ASSERT_TRUE(data != nullptr); 3438 ASSERT_TRUE(data != nullptr);
3452 // Expect 1 byte unused since at least 2 bytes are needed to fit more nacks. 3439 // Expect 1 byte unused since at least 2 bytes are needed to fit more nacks.
3453 EXPECT_EQ(36u, data->length()); 3440 EXPECT_EQ(36u, data->length());
3454 test::CompareCharArraysWithHexError("constructed packet", 3441 test::CompareCharArraysWithHexError("constructed packet", data->data(),
3455 data->data(), data->length(), 3442 data->length(), AsChars(packet),
3456 AsChars(packet), arraysize(packet)); 3443 arraysize(packet));
3457 } 3444 }
3458 3445
3459 TEST_P(QuicFramerTest, BuildStopWaitingPacket) { 3446 TEST_P(QuicFramerTest, BuildStopWaitingPacket) {
3460 QuicPacketHeader header; 3447 QuicPacketHeader header;
3461 header.public_header.connection_id = kConnectionId; 3448 header.public_header.connection_id = kConnectionId;
3462 header.public_header.reset_flag = false; 3449 header.public_header.reset_flag = false;
3463 header.public_header.version_flag = false; 3450 header.public_header.version_flag = false;
3464 header.fec_flag = false; 3451 header.fec_flag = false;
3465 header.entropy_flag = true; 3452 header.entropy_flag = true;
3466 header.packet_number = kPacketNumber; 3453 header.packet_number = kPacketNumber;
(...skipping 24 matching lines...) Expand all
3491 0x14, 3478 0x14,
3492 // least packet number awaiting an ack, delta from packet number. 3479 // least packet number awaiting an ack, delta from packet number.
3493 0x1C, 0x00, 0x00, 0x00, 3480 0x1C, 0x00, 0x00, 0x00,
3494 0x00, 0x00, 3481 0x00, 0x00,
3495 }; 3482 };
3496 // clang-format on 3483 // clang-format on
3497 3484
3498 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); 3485 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames));
3499 ASSERT_TRUE(data != nullptr); 3486 ASSERT_TRUE(data != nullptr);
3500 3487
3501 test::CompareCharArraysWithHexError("constructed packet", 3488 test::CompareCharArraysWithHexError("constructed packet", data->data(),
3502 data->data(), data->length(), 3489 data->length(), AsChars(packet),
3503 AsChars(packet), arraysize(packet)); 3490 arraysize(packet));
3504 } 3491 }
3505 3492
3506 TEST_P(QuicFramerTest, BuildRstFramePacketQuic) { 3493 TEST_P(QuicFramerTest, BuildRstFramePacketQuic) {
3507 QuicPacketHeader header; 3494 QuicPacketHeader header;
3508 header.public_header.connection_id = kConnectionId; 3495 header.public_header.connection_id = kConnectionId;
3509 header.public_header.reset_flag = false; 3496 header.public_header.reset_flag = false;
3510 header.public_header.version_flag = false; 3497 header.public_header.version_flag = false;
3511 header.fec_flag = false; 3498 header.fec_flag = false;
3512 header.entropy_flag = false; 3499 header.entropy_flag = false;
3513 header.packet_number = kPacketNumber; 3500 header.packet_number = kPacketNumber;
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
3594 'b', 'e', 'c', 'a', 3581 'b', 'e', 'c', 'a',
3595 'u', 's', 'e', ' ', 3582 'u', 's', 'e', ' ',
3596 'I', ' ', 'c', 'a', 3583 'I', ' ', 'c', 'a',
3597 'n', 3584 'n',
3598 }; 3585 };
3599 // clang-format on 3586 // clang-format on
3600 3587
3601 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); 3588 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames));
3602 ASSERT_TRUE(data != nullptr); 3589 ASSERT_TRUE(data != nullptr);
3603 3590
3604 test::CompareCharArraysWithHexError("constructed packet", 3591 test::CompareCharArraysWithHexError("constructed packet", data->data(),
3605 data->data(), data->length(), 3592 data->length(), AsChars(packet),
3606 AsChars(packet), arraysize(packet)); 3593 arraysize(packet));
3607 } 3594 }
3608 3595
3609 TEST_P(QuicFramerTest, BuildGoAwayPacket) { 3596 TEST_P(QuicFramerTest, BuildGoAwayPacket) {
3610 QuicPacketHeader header; 3597 QuicPacketHeader header;
3611 header.public_header.connection_id = kConnectionId; 3598 header.public_header.connection_id = kConnectionId;
3612 header.public_header.reset_flag = false; 3599 header.public_header.reset_flag = false;
3613 header.public_header.version_flag = false; 3600 header.public_header.version_flag = false;
3614 header.fec_flag = false; 3601 header.fec_flag = false;
3615 header.entropy_flag = true; 3602 header.entropy_flag = true;
3616 header.packet_number = kPacketNumber; 3603 header.packet_number = kPacketNumber;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
3649 'b', 'e', 'c', 'a', 3636 'b', 'e', 'c', 'a',
3650 'u', 's', 'e', ' ', 3637 'u', 's', 'e', ' ',
3651 'I', ' ', 'c', 'a', 3638 'I', ' ', 'c', 'a',
3652 'n', 3639 'n',
3653 }; 3640 };
3654 // clang-format on 3641 // clang-format on
3655 3642
3656 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); 3643 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames));
3657 ASSERT_TRUE(data != nullptr); 3644 ASSERT_TRUE(data != nullptr);
3658 3645
3659 test::CompareCharArraysWithHexError("constructed packet", 3646 test::CompareCharArraysWithHexError("constructed packet", data->data(),
3660 data->data(), data->length(), 3647 data->length(), AsChars(packet),
3661 AsChars(packet), arraysize(packet)); 3648 arraysize(packet));
3662 } 3649 }
3663 3650
3664 TEST_P(QuicFramerTest, BuildWindowUpdatePacket) { 3651 TEST_P(QuicFramerTest, BuildWindowUpdatePacket) {
3665 QuicPacketHeader header; 3652 QuicPacketHeader header;
3666 header.public_header.connection_id = kConnectionId; 3653 header.public_header.connection_id = kConnectionId;
3667 header.public_header.reset_flag = false; 3654 header.public_header.reset_flag = false;
3668 header.public_header.version_flag = false; 3655 header.public_header.version_flag = false;
3669 header.fec_flag = false; 3656 header.fec_flag = false;
3670 header.entropy_flag = true; 3657 header.entropy_flag = true;
3671 header.packet_number = kPacketNumber; 3658 header.packet_number = kPacketNumber;
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
3869 // rejected packet number 3856 // rejected packet number
3870 0xBC, 0x9A, 0x78, 0x56, 3857 0xBC, 0x9A, 0x78, 0x56,
3871 0x34, 0x12, 0x00, 0x00, 3858 0x34, 0x12, 0x00, 0x00,
3872 }; 3859 };
3873 // clang-format on 3860 // clang-format on
3874 3861
3875 scoped_ptr<QuicEncryptedPacket> data( 3862 scoped_ptr<QuicEncryptedPacket> data(
3876 framer_.BuildPublicResetPacket(reset_packet)); 3863 framer_.BuildPublicResetPacket(reset_packet));
3877 ASSERT_TRUE(data != nullptr); 3864 ASSERT_TRUE(data != nullptr);
3878 3865
3879 test::CompareCharArraysWithHexError("constructed packet", 3866 test::CompareCharArraysWithHexError("constructed packet", data->data(),
3880 data->data(), data->length(), 3867 data->length(), AsChars(packet),
3881 AsChars(packet), arraysize(packet)); 3868 arraysize(packet));
3882 } 3869 }
3883 3870
3884 TEST_P(QuicFramerTest, BuildPublicResetPacketWithClientAddress) { 3871 TEST_P(QuicFramerTest, BuildPublicResetPacketWithClientAddress) {
3885 QuicPublicResetPacket reset_packet; 3872 QuicPublicResetPacket reset_packet;
3886 reset_packet.public_header.connection_id = kConnectionId; 3873 reset_packet.public_header.connection_id = kConnectionId;
3887 reset_packet.public_header.reset_flag = true; 3874 reset_packet.public_header.reset_flag = true;
3888 reset_packet.public_header.version_flag = false; 3875 reset_packet.public_header.version_flag = false;
3889 reset_packet.rejected_packet_number = kPacketNumber; 3876 reset_packet.rejected_packet_number = kPacketNumber;
3890 reset_packet.nonce_proof = kNonceProof; 3877 reset_packet.nonce_proof = kNonceProof;
3891 reset_packet.client_address = IPEndPoint(Loopback4(), 0x1234); 3878 reset_packet.client_address = IPEndPoint(Loopback4(), 0x1234);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
3923 0x02, 0x00, 3910 0x02, 0x00,
3924 0x7F, 0x00, 0x00, 0x01, 3911 0x7F, 0x00, 0x00, 0x01,
3925 0x34, 0x12, 3912 0x34, 0x12,
3926 }; 3913 };
3927 // clang-format on 3914 // clang-format on
3928 3915
3929 scoped_ptr<QuicEncryptedPacket> data( 3916 scoped_ptr<QuicEncryptedPacket> data(
3930 framer_.BuildPublicResetPacket(reset_packet)); 3917 framer_.BuildPublicResetPacket(reset_packet));
3931 ASSERT_TRUE(data != nullptr); 3918 ASSERT_TRUE(data != nullptr);
3932 3919
3933 test::CompareCharArraysWithHexError("constructed packet", 3920 test::CompareCharArraysWithHexError("constructed packet", data->data(),
3934 data->data(), data->length(), 3921 data->length(), AsChars(packet),
3935 AsChars(packet), arraysize(packet)); 3922 arraysize(packet));
3936 } 3923 }
3937 3924
3938 TEST_P(QuicFramerTest, BuildFecPacket) { 3925 TEST_P(QuicFramerTest, BuildFecPacket) {
3939 QuicPacketHeader header; 3926 QuicPacketHeader header;
3940 header.public_header.connection_id = kConnectionId; 3927 header.public_header.connection_id = kConnectionId;
3941 header.public_header.reset_flag = false; 3928 header.public_header.reset_flag = false;
3942 header.public_header.version_flag = false; 3929 header.public_header.version_flag = false;
3943 header.fec_flag = true; 3930 header.fec_flag = true;
3944 header.entropy_flag = true; 3931 header.entropy_flag = true;
3945 header.packet_number = kPacketNumber; 3932 header.packet_number = kPacketNumber;
(...skipping 21 matching lines...) Expand all
3967 'a', 'b', 'c', 'd', 3954 'a', 'b', 'c', 'd',
3968 'e', 'f', 'g', 'h', 3955 'e', 'f', 'g', 'h',
3969 'i', 'j', 'k', 'l', 3956 'i', 'j', 'k', 'l',
3970 'm', 'n', 'o', 'p', 3957 'm', 'n', 'o', 'p',
3971 }; 3958 };
3972 // clang-format on 3959 // clang-format on
3973 3960
3974 scoped_ptr<QuicPacket> data(framer_.BuildFecPacket(header, redundancy)); 3961 scoped_ptr<QuicPacket> data(framer_.BuildFecPacket(header, redundancy));
3975 ASSERT_TRUE(data != nullptr); 3962 ASSERT_TRUE(data != nullptr);
3976 3963
3977 test::CompareCharArraysWithHexError("constructed packet", 3964 test::CompareCharArraysWithHexError("constructed packet", data->data(),
3978 data->data(), data->length(), 3965 data->length(), AsChars(packet),
3979 AsChars(packet), arraysize(packet)); 3966 arraysize(packet));
3980 } 3967 }
3981 3968
3982 TEST_P(QuicFramerTest, EncryptPacket) { 3969 TEST_P(QuicFramerTest, EncryptPacket) {
3983 QuicPacketNumber packet_number = kPacketNumber; 3970 QuicPacketNumber packet_number = kPacketNumber;
3984 // clang-format off 3971 // clang-format off
3985 unsigned char packet[] = { 3972 unsigned char packet[] = {
3986 // public flags (8 byte connection_id) 3973 // public flags (8 byte connection_id)
3987 0x3C, 3974 0x3C,
3988 // connection_id 3975 // connection_id
3989 0x10, 0x32, 0x54, 0x76, 3976 0x10, 0x32, 0x54, 0x76,
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after
4386 EXPECT_CALL(visitor, OnStreamFrame(_)).Times(0); 4373 EXPECT_CALL(visitor, OnStreamFrame(_)).Times(0);
4387 EXPECT_CALL(visitor, OnAckFrame(_)).Times(0); 4374 EXPECT_CALL(visitor, OnAckFrame(_)).Times(0);
4388 EXPECT_CALL(visitor, OnPacketComplete()).Times(0); 4375 EXPECT_CALL(visitor, OnPacketComplete()).Times(0);
4389 4376
4390 EXPECT_FALSE(framer_.ProcessPacket(*packet)); 4377 EXPECT_FALSE(framer_.ProcessPacket(*packet));
4391 EXPECT_EQ(QUIC_INVALID_PACKET_HEADER, framer_.error()); 4378 EXPECT_EQ(QUIC_INVALID_PACKET_HEADER, framer_.error());
4392 } 4379 }
4393 4380
4394 } // namespace test 4381 } // namespace test
4395 } // namespace net 4382 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_framer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698