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

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

Issue 1535363003: Switch to standard integer types in net/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: stddef Created 5 years 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') | net/quic/quic_headers_stream.h » ('j') | 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 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 associated_data_ = associated_data.as_string(); 182 associated_data_ = associated_data.as_string();
183 ciphertext_ = ciphertext.as_string(); 183 ciphertext_ = ciphertext.as_string();
184 memcpy(output, ciphertext.data(), ciphertext.length()); 184 memcpy(output, ciphertext.data(), ciphertext.length());
185 *output_length = ciphertext.length(); 185 *output_length = ciphertext.length();
186 return true; 186 return true;
187 } 187 }
188 StringPiece GetKey() const override { return StringPiece(); } 188 StringPiece GetKey() const override { return StringPiece(); }
189 StringPiece GetNoncePrefix() const override { return StringPiece(); } 189 StringPiece GetNoncePrefix() const override { return StringPiece(); }
190 const char* cipher_name() const override { return "Test"; } 190 const char* cipher_name() const override { return "Test"; }
191 // Use a distinct value starting with 0xFFFFFF, which is never used by TLS. 191 // Use a distinct value starting with 0xFFFFFF, which is never used by TLS.
192 uint32 cipher_id() const override { return 0xFFFFFFF2; } 192 uint32_t cipher_id() const override { return 0xFFFFFFF2; }
193 QuicPacketNumber packet_number_; 193 QuicPacketNumber packet_number_;
194 string associated_data_; 194 string associated_data_;
195 string ciphertext_; 195 string ciphertext_;
196 }; 196 };
197 197
198 class TestQuicVisitor : public QuicFramerVisitorInterface { 198 class TestQuicVisitor : public QuicFramerVisitorInterface {
199 public: 199 public:
200 TestQuicVisitor() 200 TestQuicVisitor()
201 : error_count_(0), 201 : error_count_(0),
202 version_mismatch_(0), 202 version_mismatch_(0),
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
507 QuicFramerTest, 507 QuicFramerTest,
508 ::testing::ValuesIn(kSupportedQuicVersions)); 508 ::testing::ValuesIn(kSupportedQuicVersions));
509 509
510 TEST_P(QuicFramerTest, CalculatePacketNumberFromWireNearEpochStart) { 510 TEST_P(QuicFramerTest, CalculatePacketNumberFromWireNearEpochStart) {
511 // A few quick manual sanity checks. 511 // A few quick manual sanity checks.
512 CheckCalculatePacketNumber(UINT64_C(1), UINT64_C(0)); 512 CheckCalculatePacketNumber(UINT64_C(1), UINT64_C(0));
513 CheckCalculatePacketNumber(kEpoch + 1, kMask); 513 CheckCalculatePacketNumber(kEpoch + 1, kMask);
514 CheckCalculatePacketNumber(kEpoch, kMask); 514 CheckCalculatePacketNumber(kEpoch, kMask);
515 515
516 // Cases where the last number was close to the start of the range. 516 // Cases where the last number was close to the start of the range.
517 for (uint64 last = 0; last < 10; last++) { 517 for (uint64_t last = 0; last < 10; last++) {
518 // Small numbers should not wrap (even if they're out of order). 518 // Small numbers should not wrap (even if they're out of order).
519 for (uint64 j = 0; j < 10; j++) { 519 for (uint64_t j = 0; j < 10; j++) {
520 CheckCalculatePacketNumber(j, last); 520 CheckCalculatePacketNumber(j, last);
521 } 521 }
522 522
523 // Large numbers should not wrap either (because we're near 0 already). 523 // Large numbers should not wrap either (because we're near 0 already).
524 for (uint64 j = 0; j < 10; j++) { 524 for (uint64_t j = 0; j < 10; j++) {
525 CheckCalculatePacketNumber(kEpoch - 1 - j, last); 525 CheckCalculatePacketNumber(kEpoch - 1 - j, last);
526 } 526 }
527 } 527 }
528 } 528 }
529 529
530 TEST_P(QuicFramerTest, CalculatePacketNumberFromWireNearEpochEnd) { 530 TEST_P(QuicFramerTest, CalculatePacketNumberFromWireNearEpochEnd) {
531 // Cases where the last number was close to the end of the range 531 // Cases where the last number was close to the end of the range
532 for (uint64 i = 0; i < 10; i++) { 532 for (uint64_t i = 0; i < 10; i++) {
533 QuicPacketNumber last = kEpoch - i; 533 QuicPacketNumber last = kEpoch - i;
534 534
535 // Small numbers should wrap. 535 // Small numbers should wrap.
536 for (uint64 j = 0; j < 10; j++) { 536 for (uint64_t j = 0; j < 10; j++) {
537 CheckCalculatePacketNumber(kEpoch + j, last); 537 CheckCalculatePacketNumber(kEpoch + j, last);
538 } 538 }
539 539
540 // Large numbers should not (even if they're out of order). 540 // Large numbers should not (even if they're out of order).
541 for (uint64 j = 0; j < 10; j++) { 541 for (uint64_t j = 0; j < 10; j++) {
542 CheckCalculatePacketNumber(kEpoch - 1 - j, last); 542 CheckCalculatePacketNumber(kEpoch - 1 - j, last);
543 } 543 }
544 } 544 }
545 } 545 }
546 546
547 // Next check where we're in a non-zero epoch to verify we handle 547 // Next check where we're in a non-zero epoch to verify we handle
548 // reverse wrapping, too. 548 // reverse wrapping, too.
549 TEST_P(QuicFramerTest, CalculatePacketNumberFromWireNearPrevEpoch) { 549 TEST_P(QuicFramerTest, CalculatePacketNumberFromWireNearPrevEpoch) {
550 const uint64 prev_epoch = 1 * kEpoch; 550 const uint64_t prev_epoch = 1 * kEpoch;
551 const uint64 cur_epoch = 2 * kEpoch; 551 const uint64_t cur_epoch = 2 * kEpoch;
552 // Cases where the last number was close to the start of the range 552 // Cases where the last number was close to the start of the range
553 for (uint64 i = 0; i < 10; i++) { 553 for (uint64_t i = 0; i < 10; i++) {
554 uint64 last = cur_epoch + i; 554 uint64_t last = cur_epoch + i;
555 // Small number should not wrap (even if they're out of order). 555 // Small number should not wrap (even if they're out of order).
556 for (uint64 j = 0; j < 10; j++) { 556 for (uint64_t j = 0; j < 10; j++) {
557 CheckCalculatePacketNumber(cur_epoch + j, last); 557 CheckCalculatePacketNumber(cur_epoch + j, last);
558 } 558 }
559 559
560 // But large numbers should reverse wrap. 560 // But large numbers should reverse wrap.
561 for (uint64 j = 0; j < 10; j++) { 561 for (uint64_t j = 0; j < 10; j++) {
562 uint64 num = kEpoch - 1 - j; 562 uint64_t num = kEpoch - 1 - j;
563 CheckCalculatePacketNumber(prev_epoch + num, last); 563 CheckCalculatePacketNumber(prev_epoch + num, last);
564 } 564 }
565 } 565 }
566 } 566 }
567 567
568 TEST_P(QuicFramerTest, CalculatePacketNumberFromWireNearNextEpoch) { 568 TEST_P(QuicFramerTest, CalculatePacketNumberFromWireNearNextEpoch) {
569 const uint64 cur_epoch = 2 * kEpoch; 569 const uint64_t cur_epoch = 2 * kEpoch;
570 const uint64 next_epoch = 3 * kEpoch; 570 const uint64_t next_epoch = 3 * kEpoch;
571 // Cases where the last number was close to the end of the range 571 // Cases where the last number was close to the end of the range
572 for (uint64 i = 0; i < 10; i++) { 572 for (uint64_t i = 0; i < 10; i++) {
573 QuicPacketNumber last = next_epoch - 1 - i; 573 QuicPacketNumber last = next_epoch - 1 - i;
574 574
575 // Small numbers should wrap. 575 // Small numbers should wrap.
576 for (uint64 j = 0; j < 10; j++) { 576 for (uint64_t j = 0; j < 10; j++) {
577 CheckCalculatePacketNumber(next_epoch + j, last); 577 CheckCalculatePacketNumber(next_epoch + j, last);
578 } 578 }
579 579
580 // but large numbers should not (even if they're out of order). 580 // but large numbers should not (even if they're out of order).
581 for (uint64 j = 0; j < 10; j++) { 581 for (uint64_t j = 0; j < 10; j++) {
582 uint64 num = kEpoch - 1 - j; 582 uint64_t num = kEpoch - 1 - j;
583 CheckCalculatePacketNumber(cur_epoch + num, last); 583 CheckCalculatePacketNumber(cur_epoch + num, last);
584 } 584 }
585 } 585 }
586 } 586 }
587 587
588 TEST_P(QuicFramerTest, CalculatePacketNumberFromWireNearNextMax) { 588 TEST_P(QuicFramerTest, CalculatePacketNumberFromWireNearNextMax) {
589 const uint64 max_number = numeric_limits<uint64>::max(); 589 const uint64_t max_number = numeric_limits<uint64_t>::max();
590 const uint64 max_epoch = max_number & ~kMask; 590 const uint64_t max_epoch = max_number & ~kMask;
591 591
592 // Cases where the last number was close to the end of the range 592 // Cases where the last number was close to the end of the range
593 for (uint64 i = 0; i < 10; i++) { 593 for (uint64_t i = 0; i < 10; i++) {
594 // Subtract 1, because the expected next packet number is 1 more than the 594 // Subtract 1, because the expected next packet number is 1 more than the
595 // last packet number. 595 // last packet number.
596 QuicPacketNumber last = max_number - i - 1; 596 QuicPacketNumber last = max_number - i - 1;
597 597
598 // Small numbers should not wrap, because they have nowhere to go. 598 // Small numbers should not wrap, because they have nowhere to go.
599 for (uint64 j = 0; j < 10; j++) { 599 for (uint64_t j = 0; j < 10; j++) {
600 CheckCalculatePacketNumber(max_epoch + j, last); 600 CheckCalculatePacketNumber(max_epoch + j, last);
601 } 601 }
602 602
603 // Large numbers should not wrap either. 603 // Large numbers should not wrap either.
604 for (uint64 j = 0; j < 10; j++) { 604 for (uint64_t j = 0; j < 10; j++) {
605 uint64 num = kEpoch - 1 - j; 605 uint64_t num = kEpoch - 1 - j;
606 CheckCalculatePacketNumber(max_epoch + num, last); 606 CheckCalculatePacketNumber(max_epoch + num, last);
607 } 607 }
608 } 608 }
609 } 609 }
610 610
611 TEST_P(QuicFramerTest, EmptyPacket) { 611 TEST_P(QuicFramerTest, EmptyPacket) {
612 char packet[] = {0x00}; 612 char packet[] = {0x00};
613 QuicEncryptedPacket encrypted(packet, 0, false); 613 QuicEncryptedPacket encrypted(packet, 0, false);
614 EXPECT_FALSE(framer_.ProcessPacket(encrypted)); 614 EXPECT_FALSE(framer_.ProcessPacket(encrypted));
615 EXPECT_EQ(QUIC_INVALID_PACKET_HEADER, framer_.error()); 615 EXPECT_EQ(QUIC_INVALID_PACKET_HEADER, framer_.error());
(...skipping 2378 matching lines...) Expand 10 before | Expand all | Expand 10 after
2994 0x34, 0x12, 2994 0x34, 0x12,
2995 // private flags 2995 // private flags
2996 0x00, 2996 0x00,
2997 2997
2998 // frame type (padding frame) 2998 // frame type (padding frame)
2999 0x00, 2999 0x00,
3000 0x00, 0x00, 0x00, 0x00 3000 0x00, 0x00, 0x00, 0x00
3001 }; 3001 };
3002 // clang-format on 3002 // clang-format on
3003 3003
3004 uint64 header_size = GetPacketHeaderSize( 3004 uint64_t header_size = GetPacketHeaderSize(
3005 PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId, 3005 PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId,
3006 PACKET_6BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP); 3006 PACKET_6BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP);
3007 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); 3007 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1);
3008 3008
3009 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); 3009 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames));
3010 ASSERT_TRUE(data != nullptr); 3010 ASSERT_TRUE(data != nullptr);
3011 3011
3012 test::CompareCharArraysWithHexError("constructed packet", data->data(), 3012 test::CompareCharArraysWithHexError("constructed packet", data->data(),
3013 data->length(), AsChars(packet), 3013 data->length(), AsChars(packet),
3014 arraysize(packet)); 3014 arraysize(packet));
(...skipping 26 matching lines...) Expand all
3041 0xBC, 0x9A, 0x78, 0x56, 3041 0xBC, 0x9A, 0x78, 0x56,
3042 // private flags 3042 // private flags
3043 0x00, 3043 0x00,
3044 3044
3045 // frame type (padding frame) 3045 // frame type (padding frame)
3046 0x00, 3046 0x00,
3047 0x00, 0x00, 0x00, 0x00 3047 0x00, 0x00, 0x00, 0x00
3048 }; 3048 };
3049 // clang-format on 3049 // clang-format on
3050 3050
3051 uint64 header_size = GetPacketHeaderSize( 3051 uint64_t header_size = GetPacketHeaderSize(
3052 PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId, 3052 PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId,
3053 PACKET_4BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP); 3053 PACKET_4BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP);
3054 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); 3054 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1);
3055 3055
3056 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); 3056 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames));
3057 ASSERT_TRUE(data != nullptr); 3057 ASSERT_TRUE(data != nullptr);
3058 3058
3059 test::CompareCharArraysWithHexError("constructed packet", data->data(), 3059 test::CompareCharArraysWithHexError("constructed packet", data->data(),
3060 data->length(), AsChars(packet), 3060 data->length(), AsChars(packet),
3061 arraysize(packet)); 3061 arraysize(packet));
(...skipping 26 matching lines...) Expand all
3088 0xBC, 0x9A, 3088 0xBC, 0x9A,
3089 // private flags 3089 // private flags
3090 0x00, 3090 0x00,
3091 3091
3092 // frame type (padding frame) 3092 // frame type (padding frame)
3093 0x00, 3093 0x00,
3094 0x00, 0x00, 0x00, 0x00 3094 0x00, 0x00, 0x00, 0x00
3095 }; 3095 };
3096 // clang-format on 3096 // clang-format on
3097 3097
3098 uint64 header_size = GetPacketHeaderSize( 3098 uint64_t header_size = GetPacketHeaderSize(
3099 PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId, 3099 PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId,
3100 PACKET_2BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP); 3100 PACKET_2BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP);
3101 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); 3101 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1);
3102 3102
3103 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); 3103 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames));
3104 ASSERT_TRUE(data != nullptr); 3104 ASSERT_TRUE(data != nullptr);
3105 3105
3106 test::CompareCharArraysWithHexError("constructed packet", data->data(), 3106 test::CompareCharArraysWithHexError("constructed packet", data->data(),
3107 data->length(), AsChars(packet), 3107 data->length(), AsChars(packet),
3108 arraysize(packet)); 3108 arraysize(packet));
(...skipping 26 matching lines...) Expand all
3135 0xBC, 3135 0xBC,
3136 // private flags 3136 // private flags
3137 0x00, 3137 0x00,
3138 3138
3139 // frame type (padding frame) 3139 // frame type (padding frame)
3140 0x00, 3140 0x00,
3141 0x00, 0x00, 0x00, 0x00 3141 0x00, 0x00, 0x00, 0x00
3142 }; 3142 };
3143 // clang-format on 3143 // clang-format on
3144 3144
3145 uint64 header_size = GetPacketHeaderSize( 3145 uint64_t header_size = GetPacketHeaderSize(
3146 PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId, 3146 PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId,
3147 PACKET_1BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP); 3147 PACKET_1BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP);
3148 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1); 3148 memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1);
3149 3149
3150 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames)); 3150 scoped_ptr<QuicPacket> data(BuildDataPacket(header, frames));
3151 ASSERT_TRUE(data != nullptr); 3151 ASSERT_TRUE(data != nullptr);
3152 3152
3153 test::CompareCharArraysWithHexError("constructed packet", data->data(), 3153 test::CompareCharArraysWithHexError("constructed packet", data->data(),
3154 data->length(), AsChars(packet), 3154 data->length(), AsChars(packet),
3155 arraysize(packet)); 3155 arraysize(packet));
(...skipping 1512 matching lines...) Expand 10 before | Expand all | Expand 10 after
4668 'o', ' ', 'w', 'o', 4668 'o', ' ', 'w', 'o',
4669 'r', 'l', 'd', '!', 4669 'r', 'l', 'd', '!',
4670 }; 4670 };
4671 // clang-format on 4671 // clang-format on
4672 4672
4673 QuicFramerFuzzFunc(packet, arraysize(packet)); 4673 QuicFramerFuzzFunc(packet, arraysize(packet));
4674 } 4674 }
4675 4675
4676 } // namespace test 4676 } // namespace test
4677 } // namespace net 4677 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_framer.cc ('k') | net/quic/quic_headers_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698