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

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

Issue 2547583002: Landing Recent QUIC changes until Fri Nov 18 23:21:04 2016 +0000 (Closed)
Patch Set: Remove explicit HTTP/2 enum usage Created 4 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/core/quic_framer.cc ('k') | net/quic/core/quic_header_list.cc » ('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/core/quic_framer.h" 5 #include "net/quic/core/quic_framer.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <map> 10 #include <map>
11 #include <memory> 11 #include <memory>
12 #include <string> 12 #include <string>
13 #include <vector> 13 #include <vector>
14 14
15 #include "base/logging.h" 15 #include "base/logging.h"
16 #include "base/memory/ptr_util.h" 16 #include "base/memory/ptr_util.h"
17 #include "net/quic/core/crypto/null_decrypter.h" 17 #include "net/quic/core/crypto/null_decrypter.h"
18 #include "net/quic/core/crypto/quic_decrypter.h" 18 #include "net/quic/core/crypto/quic_decrypter.h"
19 #include "net/quic/core/crypto/quic_encrypter.h" 19 #include "net/quic/core/crypto/quic_encrypter.h"
20 #include "net/quic/core/quic_protocol.h" 20 #include "net/quic/core/quic_packets.h"
21 #include "net/quic/core/quic_utils.h" 21 #include "net/quic/core/quic_utils.h"
22 #include "net/quic/test_tools/quic_framer_peer.h" 22 #include "net/quic/test_tools/quic_framer_peer.h"
23 #include "net/quic/test_tools/quic_test_utils.h" 23 #include "net/quic/test_tools/quic_test_utils.h"
24 #include "net/test/gtest_util.h" 24 #include "net/test/gtest_util.h"
25 25
26 using base::StringPiece; 26 using base::StringPiece;
27 using std::make_pair; 27 using std::make_pair;
28 using std::map; 28 using std::map;
29 using std::numeric_limits; 29 using std::numeric_limits;
30 using std::pair; 30 using std::pair;
(...skipping 1077 matching lines...) Expand 10 before | Expand all | Expand 10 after
1108 1108
1109 TEST_P(QuicFramerTest, PacketNumberDecreasesThenIncreases) { 1109 TEST_P(QuicFramerTest, PacketNumberDecreasesThenIncreases) {
1110 // Test the case when a packet is received from the past and future packet 1110 // Test the case when a packet is received from the past and future packet
1111 // numbers are still calculated relative to the largest received packet. 1111 // numbers are still calculated relative to the largest received packet.
1112 QuicPacketHeader header; 1112 QuicPacketHeader header;
1113 header.public_header.connection_id = kConnectionId; 1113 header.public_header.connection_id = kConnectionId;
1114 header.public_header.reset_flag = false; 1114 header.public_header.reset_flag = false;
1115 header.public_header.version_flag = false; 1115 header.public_header.version_flag = false;
1116 header.packet_number = kPacketNumber - 2; 1116 header.packet_number = kPacketNumber - 2;
1117 1117
1118 QuicPaddingFrame padding_frame; 1118 QuicFrames frames = {QuicFrame(QuicPaddingFrame())};
1119 QuicFrames frames;
1120 frames.push_back(QuicFrame(padding_frame));
1121 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); 1119 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
1122 ASSERT_TRUE(data != nullptr); 1120 ASSERT_TRUE(data != nullptr);
1123 1121
1124 QuicEncryptedPacket encrypted(data->data(), data->length(), false); 1122 QuicEncryptedPacket encrypted(data->data(), data->length(), false);
1125 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 1123 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
1126 ASSERT_TRUE(visitor_.header_.get()); 1124 ASSERT_TRUE(visitor_.header_.get());
1127 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id); 1125 EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id);
1128 EXPECT_EQ(PACKET_6BYTE_PACKET_NUMBER, 1126 EXPECT_EQ(PACKET_6BYTE_PACKET_NUMBER,
1129 visitor_.header_->public_header.packet_number_length); 1127 visitor_.header_->public_header.packet_number_length);
1130 EXPECT_EQ(kPacketNumber - 2, visitor_.header_->packet_number); 1128 EXPECT_EQ(kPacketNumber - 2, visitor_.header_->packet_number);
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after
1611 // clang-format on 1609 // clang-format on
1612 1610
1613 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 1611 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
1614 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 1612 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
1615 1613
1616 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 1614 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
1617 ASSERT_TRUE(visitor_.public_header_.get()); 1615 ASSERT_TRUE(visitor_.public_header_.get());
1618 ASSERT_FALSE(visitor_.header_.get()); 1616 ASSERT_FALSE(visitor_.header_.get());
1619 } 1617 }
1620 1618
1621 TEST_P(QuicFramerTest, NewAckFrameOneAckBlock) { 1619 TEST_P(QuicFramerTest, AckFrameOneAckBlock) {
1622 // clang-format off 1620 // clang-format off
1623 unsigned char packet[] = { 1621 unsigned char packet[] = {
1624 // public flags (8 byte connection_id) 1622 // public flags (8 byte connection_id)
1625 0x3C, 1623 0x3C,
1626 // connection_id 1624 // connection_id
1627 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, 1625 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
1628 // packet number 1626 // packet number
1629 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, 1627 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
1630 1628
1631 // frame type (ack frame) 1629 // frame type (ack frame)
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1680 CheckProcessingFails( 1678 CheckProcessingFails(
1681 packet, 1679 packet,
1682 i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID, 1680 i + GetPacketHeaderSize(framer_.version(), PACKET_8BYTE_CONNECTION_ID,
1683 !kIncludeVersion, !kIncludePathId, 1681 !kIncludeVersion, !kIncludePathId,
1684 !kIncludeDiversificationNonce, 1682 !kIncludeDiversificationNonce,
1685 PACKET_6BYTE_PACKET_NUMBER), 1683 PACKET_6BYTE_PACKET_NUMBER),
1686 expected_error, QUIC_INVALID_ACK_DATA); 1684 expected_error, QUIC_INVALID_ACK_DATA);
1687 } 1685 }
1688 } 1686 }
1689 1687
1690 TEST_P(QuicFramerTest, NewAckFrameTwoTimeStampsMultipleAckBlocks) { 1688 TEST_P(QuicFramerTest, AckFrameTwoTimeStampsMultipleAckBlocks) {
1691 // clang-format off 1689 // clang-format off
1692 unsigned char packet[] = { 1690 unsigned char packet[] = {
1693 // public flags (8 byte connection_id) 1691 // public flags (8 byte connection_id)
1694 0x3C, 1692 0x3C,
1695 // connection_id 1693 // connection_id
1696 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, 1694 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
1697 // packet number 1695 // packet number
1698 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, 1696 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
1699 1697
1700 // frame type (ack frame) 1698 // frame type (ack frame)
(...skipping 843 matching lines...) Expand 10 before | Expand all | Expand 10 after
2544 } 2542 }
2545 } 2543 }
2546 2544
2547 TEST_P(QuicFramerTest, BuildPaddingFramePacket) { 2545 TEST_P(QuicFramerTest, BuildPaddingFramePacket) {
2548 QuicPacketHeader header; 2546 QuicPacketHeader header;
2549 header.public_header.connection_id = kConnectionId; 2547 header.public_header.connection_id = kConnectionId;
2550 header.public_header.reset_flag = false; 2548 header.public_header.reset_flag = false;
2551 header.public_header.version_flag = false; 2549 header.public_header.version_flag = false;
2552 header.packet_number = kPacketNumber; 2550 header.packet_number = kPacketNumber;
2553 2551
2554 QuicPaddingFrame padding_frame; 2552 QuicFrames frames = {QuicFrame(QuicPaddingFrame())};
2555
2556 QuicFrames frames;
2557 frames.push_back(QuicFrame(padding_frame));
2558 2553
2559 // clang-format off 2554 // clang-format off
2560 unsigned char packet[kMaxPacketSize] = { 2555 unsigned char packet[kMaxPacketSize] = {
2561 // public flags (8 byte connection_id) 2556 // public flags (8 byte connection_id)
2562 0x38, 2557 0x38,
2563 // connection_id 2558 // connection_id
2564 0x10, 0x32, 0x54, 0x76, 2559 0x10, 0x32, 0x54, 0x76,
2565 0x98, 0xBA, 0xDC, 0xFE, 2560 0x98, 0xBA, 0xDC, 0xFE,
2566 // packet number 2561 // packet number
2567 0xBC, 0x9A, 0x78, 0x56, 2562 0xBC, 0x9A, 0x78, 0x56,
(...skipping 20 matching lines...) Expand all
2588 } 2583 }
2589 2584
2590 TEST_P(QuicFramerTest, Build4ByteSequenceNumberPaddingFramePacket) { 2585 TEST_P(QuicFramerTest, Build4ByteSequenceNumberPaddingFramePacket) {
2591 QuicPacketHeader header; 2586 QuicPacketHeader header;
2592 header.public_header.connection_id = kConnectionId; 2587 header.public_header.connection_id = kConnectionId;
2593 header.public_header.reset_flag = false; 2588 header.public_header.reset_flag = false;
2594 header.public_header.version_flag = false; 2589 header.public_header.version_flag = false;
2595 header.public_header.packet_number_length = PACKET_4BYTE_PACKET_NUMBER; 2590 header.public_header.packet_number_length = PACKET_4BYTE_PACKET_NUMBER;
2596 header.packet_number = kPacketNumber; 2591 header.packet_number = kPacketNumber;
2597 2592
2598 QuicPaddingFrame padding_frame; 2593 QuicFrames frames = {QuicFrame(QuicPaddingFrame())};
2599
2600 QuicFrames frames;
2601 frames.push_back(QuicFrame(padding_frame));
2602 2594
2603 // clang-format off 2595 // clang-format off
2604 unsigned char packet[kMaxPacketSize] = { 2596 unsigned char packet[kMaxPacketSize] = {
2605 // public flags (8 byte connection_id and 4 byte packet number) 2597 // public flags (8 byte connection_id and 4 byte packet number)
2606 0x28, 2598 0x28,
2607 // connection_id 2599 // connection_id
2608 0x10, 0x32, 0x54, 0x76, 2600 0x10, 0x32, 0x54, 0x76,
2609 0x98, 0xBA, 0xDC, 0xFE, 2601 0x98, 0xBA, 0xDC, 0xFE,
2610 // packet number 2602 // packet number
2611 0xBC, 0x9A, 0x78, 0x56, 2603 0xBC, 0x9A, 0x78, 0x56,
(...skipping 19 matching lines...) Expand all
2631 } 2623 }
2632 2624
2633 TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) { 2625 TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) {
2634 QuicPacketHeader header; 2626 QuicPacketHeader header;
2635 header.public_header.connection_id = kConnectionId; 2627 header.public_header.connection_id = kConnectionId;
2636 header.public_header.reset_flag = false; 2628 header.public_header.reset_flag = false;
2637 header.public_header.version_flag = false; 2629 header.public_header.version_flag = false;
2638 header.public_header.packet_number_length = PACKET_2BYTE_PACKET_NUMBER; 2630 header.public_header.packet_number_length = PACKET_2BYTE_PACKET_NUMBER;
2639 header.packet_number = kPacketNumber; 2631 header.packet_number = kPacketNumber;
2640 2632
2641 QuicPaddingFrame padding_frame; 2633 QuicFrames frames = {QuicFrame(QuicPaddingFrame())};
2642
2643 QuicFrames frames;
2644 frames.push_back(QuicFrame(padding_frame));
2645 2634
2646 // clang-format off 2635 // clang-format off
2647 unsigned char packet[kMaxPacketSize] = { 2636 unsigned char packet[kMaxPacketSize] = {
2648 // public flags (8 byte connection_id and 2 byte packet number) 2637 // public flags (8 byte connection_id and 2 byte packet number)
2649 0x18, 2638 0x18,
2650 // connection_id 2639 // connection_id
2651 0x10, 0x32, 0x54, 0x76, 2640 0x10, 0x32, 0x54, 0x76,
2652 0x98, 0xBA, 0xDC, 0xFE, 2641 0x98, 0xBA, 0xDC, 0xFE,
2653 // packet number 2642 // packet number
2654 0xBC, 0x9A, 2643 0xBC, 0x9A,
(...skipping 19 matching lines...) Expand all
2674 } 2663 }
2675 2664
2676 TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) { 2665 TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) {
2677 QuicPacketHeader header; 2666 QuicPacketHeader header;
2678 header.public_header.connection_id = kConnectionId; 2667 header.public_header.connection_id = kConnectionId;
2679 header.public_header.reset_flag = false; 2668 header.public_header.reset_flag = false;
2680 header.public_header.version_flag = false; 2669 header.public_header.version_flag = false;
2681 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; 2670 header.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER;
2682 header.packet_number = kPacketNumber; 2671 header.packet_number = kPacketNumber;
2683 2672
2684 QuicPaddingFrame padding_frame; 2673 QuicFrames frames = {QuicFrame(QuicPaddingFrame())};
2685
2686 QuicFrames frames;
2687 frames.push_back(QuicFrame(padding_frame));
2688 2674
2689 // clang-format off 2675 // clang-format off
2690 unsigned char packet[kMaxPacketSize] = { 2676 unsigned char packet[kMaxPacketSize] = {
2691 // public flags (8 byte connection_id and 1 byte packet number) 2677 // public flags (8 byte connection_id and 1 byte packet number)
2692 0x08, 2678 0x08,
2693 // connection_id 2679 // connection_id
2694 0x10, 0x32, 0x54, 0x76, 2680 0x10, 0x32, 0x54, 0x76,
2695 0x98, 0xBA, 0xDC, 0xFE, 2681 0x98, 0xBA, 0xDC, 0xFE,
2696 // packet number 2682 // packet number
2697 0xBC, 2683 0xBC,
(...skipping 21 matching lines...) Expand all
2719 TEST_P(QuicFramerTest, BuildStreamFramePacket) { 2705 TEST_P(QuicFramerTest, BuildStreamFramePacket) {
2720 QuicPacketHeader header; 2706 QuicPacketHeader header;
2721 header.public_header.connection_id = kConnectionId; 2707 header.public_header.connection_id = kConnectionId;
2722 header.public_header.reset_flag = false; 2708 header.public_header.reset_flag = false;
2723 header.public_header.version_flag = false; 2709 header.public_header.version_flag = false;
2724 header.packet_number = kPacketNumber; 2710 header.packet_number = kPacketNumber;
2725 2711
2726 QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset, 2712 QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset,
2727 StringPiece("hello world!")); 2713 StringPiece("hello world!"));
2728 2714
2729 QuicFrames frames; 2715 QuicFrames frames = {QuicFrame(&stream_frame)};
2730 frames.push_back(QuicFrame(&stream_frame));
2731 2716
2732 // clang-format off 2717 // clang-format off
2733 unsigned char packet[] = { 2718 unsigned char packet[] = {
2734 // public flags (8 byte connection_id) 2719 // public flags (8 byte connection_id)
2735 0x38, 2720 0x38,
2736 // connection_id 2721 // connection_id
2737 0x10, 0x32, 0x54, 0x76, 2722 0x10, 0x32, 0x54, 0x76,
2738 0x98, 0xBA, 0xDC, 0xFE, 2723 0x98, 0xBA, 0xDC, 0xFE,
2739 // packet number 2724 // packet number
2740 0xBC, 0x9A, 0x78, 0x56, 2725 0xBC, 0x9A, 0x78, 0x56,
(...skipping 23 matching lines...) Expand all
2764 2749
2765 TEST_P(QuicFramerTest, BuildStreamFramePacketWithVersionFlag) { 2750 TEST_P(QuicFramerTest, BuildStreamFramePacketWithVersionFlag) {
2766 QuicPacketHeader header; 2751 QuicPacketHeader header;
2767 header.public_header.connection_id = kConnectionId; 2752 header.public_header.connection_id = kConnectionId;
2768 header.public_header.reset_flag = false; 2753 header.public_header.reset_flag = false;
2769 header.public_header.version_flag = true; 2754 header.public_header.version_flag = true;
2770 header.packet_number = kPacketNumber; 2755 header.packet_number = kPacketNumber;
2771 2756
2772 QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset, 2757 QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset,
2773 StringPiece("hello world!")); 2758 StringPiece("hello world!"));
2774 2759 QuicFrames frames = {QuicFrame(&stream_frame)};
2775 QuicFrames frames;
2776 frames.push_back(QuicFrame(&stream_frame));
2777 2760
2778 // clang-format off 2761 // clang-format off
2779 unsigned char packet[] = { 2762 unsigned char packet[] = {
2780 // public flags (version, 8 byte connection_id) 2763 // public flags (version, 8 byte connection_id)
2781 static_cast<unsigned char>( 2764 static_cast<unsigned char>(
2782 FLAGS_quic_remove_v33_hacks2 ? 0x39 : 0x3D), 2765 FLAGS_quic_remove_v33_hacks2 ? 0x39 : 0x3D),
2783 // connection_id 2766 // connection_id
2784 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, 2767 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
2785 // version tag 2768 // version tag
2786 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(), 2769 'Q', '0', GetQuicVersionDigitTens(), GetQuicVersionDigitOnes(),
(...skipping 24 matching lines...) Expand all
2811 QuicPacketHeader header; 2794 QuicPacketHeader header;
2812 header.public_header.connection_id = kConnectionId; 2795 header.public_header.connection_id = kConnectionId;
2813 header.public_header.multipath_flag = true; 2796 header.public_header.multipath_flag = true;
2814 header.public_header.reset_flag = false; 2797 header.public_header.reset_flag = false;
2815 header.public_header.version_flag = false; 2798 header.public_header.version_flag = false;
2816 header.path_id = kPathId; 2799 header.path_id = kPathId;
2817 header.packet_number = kPacketNumber; 2800 header.packet_number = kPacketNumber;
2818 2801
2819 QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset, 2802 QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset,
2820 StringPiece("hello world!")); 2803 StringPiece("hello world!"));
2821 2804 QuicFrames frames = {QuicFrame(&stream_frame)};
2822 QuicFrames frames;
2823 frames.push_back(QuicFrame(&stream_frame));
2824 2805
2825 // clang-format off 2806 // clang-format off
2826 unsigned char packet[] = { 2807 unsigned char packet[] = {
2827 // public flags (8 byte connection_id) 2808 // public flags (8 byte connection_id)
2828 0x78, 2809 0x78,
2829 // connection_id 2810 // connection_id
2830 0x10, 0x32, 0x54, 0x76, 2811 0x10, 0x32, 0x54, 0x76,
2831 0x98, 0xBA, 0xDC, 0xFE, 2812 0x98, 0xBA, 0xDC, 0xFE,
2832 // path_id 2813 // path_id
2833 0x42, 2814 0x42,
(...skipping 27 matching lines...) Expand all
2861 QuicPacketHeader header; 2842 QuicPacketHeader header;
2862 header.public_header.connection_id = kConnectionId; 2843 header.public_header.connection_id = kConnectionId;
2863 header.public_header.multipath_flag = true; 2844 header.public_header.multipath_flag = true;
2864 header.public_header.reset_flag = false; 2845 header.public_header.reset_flag = false;
2865 header.public_header.version_flag = true; 2846 header.public_header.version_flag = true;
2866 header.path_id = kPathId; 2847 header.path_id = kPathId;
2867 header.packet_number = kPacketNumber; 2848 header.packet_number = kPacketNumber;
2868 2849
2869 QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset, 2850 QuicStreamFrame stream_frame(kStreamId, true, kStreamOffset,
2870 StringPiece("hello world!")); 2851 StringPiece("hello world!"));
2871 2852 QuicFrames frames = {QuicFrame(&stream_frame)};
2872 QuicFrames frames;
2873 frames.push_back(QuicFrame(&stream_frame));
2874 2853
2875 // clang-format off 2854 // clang-format off
2876 unsigned char packet[] = { 2855 unsigned char packet[] = {
2877 // public flags (8 byte connection_id) 2856 // public flags (8 byte connection_id)
2878 static_cast<unsigned char>( 2857 static_cast<unsigned char>(
2879 FLAGS_quic_remove_v33_hacks2 ? 0x79 : 0x7D), 2858 FLAGS_quic_remove_v33_hacks2 ? 0x79 : 0x7D),
2880 // connection_id 2859 // connection_id
2881 0x10, 0x32, 0x54, 0x76, 2860 0x10, 0x32, 0x54, 0x76,
2882 0x98, 0xBA, 0xDC, 0xFE, 2861 0x98, 0xBA, 0xDC, 0xFE,
2883 // version tag 2862 // version tag
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
2925 2904
2926 QuicConnectionId connection_id = kConnectionId; 2905 QuicConnectionId connection_id = kConnectionId;
2927 std::unique_ptr<QuicEncryptedPacket> data( 2906 std::unique_ptr<QuicEncryptedPacket> data(
2928 framer_.BuildVersionNegotiationPacket(connection_id, 2907 framer_.BuildVersionNegotiationPacket(connection_id,
2929 SupportedVersions(GetParam()))); 2908 SupportedVersions(GetParam())));
2930 test::CompareCharArraysWithHexError("constructed packet", data->data(), 2909 test::CompareCharArraysWithHexError("constructed packet", data->data(),
2931 data->length(), AsChars(packet), 2910 data->length(), AsChars(packet),
2932 arraysize(packet)); 2911 arraysize(packet));
2933 } 2912 }
2934 2913
2935 TEST_P(QuicFramerTest, BuildNewAckFramePacketOneAckBlock) { 2914 TEST_P(QuicFramerTest, BuildAckFramePacketOneAckBlock) {
2936 QuicPacketHeader header; 2915 QuicPacketHeader header;
2937 header.public_header.connection_id = kConnectionId; 2916 header.public_header.connection_id = kConnectionId;
2938 header.public_header.reset_flag = false; 2917 header.public_header.reset_flag = false;
2939 header.public_header.version_flag = false; 2918 header.public_header.version_flag = false;
2940 header.packet_number = kPacketNumber; 2919 header.packet_number = kPacketNumber;
2941 2920
2942 // Use kSmallLargestObserved to make this test finished in a short time. 2921 // Use kSmallLargestObserved to make this test finished in a short time.
2943 QuicAckFrame ack_frame; 2922 QuicAckFrame ack_frame;
2944 ack_frame.largest_observed = kSmallLargestObserved; 2923 ack_frame.largest_observed = kSmallLargestObserved;
2945 ack_frame.ack_delay_time = QuicTime::Delta::Zero(); 2924 ack_frame.ack_delay_time = QuicTime::Delta::Zero();
2946 ack_frame.packets.Add(1, kSmallLargestObserved + 1); 2925 ack_frame.packets.Add(1, kSmallLargestObserved + 1);
2947 2926
2948 QuicFrames frames; 2927 QuicFrames frames = {QuicFrame(&ack_frame)};
2949 frames.push_back(QuicFrame(&ack_frame));
2950 2928
2951 // clang-format off 2929 // clang-format off
2952 unsigned char packet[] = { 2930 unsigned char packet[] = {
2953 // public flags (8 byte connection_id) 2931 // public flags (8 byte connection_id)
2954 0x38, 2932 0x38,
2955 // connection_id 2933 // connection_id
2956 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, 2934 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
2957 // packet number 2935 // packet number
2958 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, 2936 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
2959 2937
(...skipping 12 matching lines...) Expand all
2972 // clang-format on 2950 // clang-format on
2973 2951
2974 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); 2952 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
2975 ASSERT_TRUE(data != nullptr); 2953 ASSERT_TRUE(data != nullptr);
2976 2954
2977 test::CompareCharArraysWithHexError("constructed packet", data->data(), 2955 test::CompareCharArraysWithHexError("constructed packet", data->data(),
2978 data->length(), AsChars(packet), 2956 data->length(), AsChars(packet),
2979 arraysize(packet)); 2957 arraysize(packet));
2980 } 2958 }
2981 2959
2982 TEST_P(QuicFramerTest, BuildNewAckFramePacketMultipleAckBlocks) { 2960 TEST_P(QuicFramerTest, BuildAckFramePacketMultipleAckBlocks) {
2983 QuicPacketHeader header; 2961 QuicPacketHeader header;
2984 header.public_header.connection_id = kConnectionId; 2962 header.public_header.connection_id = kConnectionId;
2985 header.public_header.reset_flag = false; 2963 header.public_header.reset_flag = false;
2986 header.public_header.version_flag = false; 2964 header.public_header.version_flag = false;
2987 header.packet_number = kPacketNumber; 2965 header.packet_number = kPacketNumber;
2988 2966
2989 // Use kSmallLargestObserved to make this test finished in a short time. 2967 // Use kSmallLargestObserved to make this test finished in a short time.
2990 QuicAckFrame ack_frame; 2968 QuicAckFrame ack_frame;
2991 ack_frame.largest_observed = kSmallLargestObserved; 2969 ack_frame.largest_observed = kSmallLargestObserved;
2992 ack_frame.ack_delay_time = QuicTime::Delta::Zero(); 2970 ack_frame.ack_delay_time = QuicTime::Delta::Zero();
2993 ack_frame.packets.Add(1, 5); 2971 ack_frame.packets.Add(1, 5);
2994 ack_frame.packets.Add(10, 500); 2972 ack_frame.packets.Add(10, 500);
2995 ack_frame.packets.Add(900, kSmallMissingPacket); 2973 ack_frame.packets.Add(900, kSmallMissingPacket);
2996 ack_frame.packets.Add(kSmallMissingPacket + 1, kSmallLargestObserved + 1); 2974 ack_frame.packets.Add(kSmallMissingPacket + 1, kSmallLargestObserved + 1);
2997 2975
2998 QuicFrames frames; 2976 QuicFrames frames = {QuicFrame(&ack_frame)};
2999 frames.push_back(QuicFrame(&ack_frame));
3000 2977
3001 // clang-format off 2978 // clang-format off
3002 unsigned char packet[] = { 2979 unsigned char packet[] = {
3003 // public flags (8 byte connection_id) 2980 // public flags (8 byte connection_id)
3004 0x38, 2981 0x38,
3005 // connection_id 2982 // connection_id
3006 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, 2983 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
3007 // packet number 2984 // packet number
3008 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, 2985 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
3009 2986
(...skipping 30 matching lines...) Expand all
3040 // clang-format on 3017 // clang-format on
3041 3018
3042 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); 3019 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
3043 ASSERT_TRUE(data != nullptr); 3020 ASSERT_TRUE(data != nullptr);
3044 3021
3045 test::CompareCharArraysWithHexError("constructed packet", data->data(), 3022 test::CompareCharArraysWithHexError("constructed packet", data->data(),
3046 data->length(), AsChars(packet), 3023 data->length(), AsChars(packet),
3047 arraysize(packet)); 3024 arraysize(packet));
3048 } 3025 }
3049 3026
3050 TEST_P(QuicFramerTest, BuildNewAckFramePacketMaxAckBlocks) { 3027 TEST_P(QuicFramerTest, BuildAckFramePacketMaxAckBlocks) {
3051 QuicPacketHeader header; 3028 QuicPacketHeader header;
3052 header.public_header.connection_id = kConnectionId; 3029 header.public_header.connection_id = kConnectionId;
3053 header.public_header.reset_flag = false; 3030 header.public_header.reset_flag = false;
3054 header.public_header.version_flag = false; 3031 header.public_header.version_flag = false;
3055 header.packet_number = kPacketNumber; 3032 header.packet_number = kPacketNumber;
3056 3033
3057 // Use kSmallLargestObservedto make this test finished in a short time. 3034 // Use kSmallLargestObservedto make this test finished in a short time.
3058 QuicAckFrame ack_frame; 3035 QuicAckFrame ack_frame;
3059 ack_frame.largest_observed = kSmallLargestObserved; 3036 ack_frame.largest_observed = kSmallLargestObserved;
3060 ack_frame.ack_delay_time = QuicTime::Delta::Zero(); 3037 ack_frame.ack_delay_time = QuicTime::Delta::Zero();
3061 // 300 ack blocks. 3038 // 300 ack blocks.
3062 for (size_t i = 2; i < 2 * 300; i += 2) { 3039 for (size_t i = 2; i < 2 * 300; i += 2) {
3063 ack_frame.packets.Add(i); 3040 ack_frame.packets.Add(i);
3064 } 3041 }
3065 ack_frame.packets.Add(600, kSmallLargestObserved + 1); 3042 ack_frame.packets.Add(600, kSmallLargestObserved + 1);
3066 3043
3067 QuicFrames frames; 3044 QuicFrames frames = {QuicFrame(&ack_frame)};
3068 frames.push_back(QuicFrame(&ack_frame));
3069 3045
3070 // clang-format off 3046 // clang-format off
3071 unsigned char packet[] = { 3047 unsigned char packet[] = {
3072 // public flags (8 byte connection_id) 3048 // public flags (8 byte connection_id)
3073 0x38, 3049 0x38,
3074 // connection_id 3050 // connection_id
3075 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, 3051 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
3076 // packet number 3052 // packet number
3077 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, 3053 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
3078 // frame type (ack frame) 3054 // frame type (ack frame)
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
3172 TEST_P(QuicFramerTest, BuildNewStopWaitingPacket) { 3148 TEST_P(QuicFramerTest, BuildNewStopWaitingPacket) {
3173 QuicPacketHeader header; 3149 QuicPacketHeader header;
3174 header.public_header.connection_id = kConnectionId; 3150 header.public_header.connection_id = kConnectionId;
3175 header.public_header.reset_flag = false; 3151 header.public_header.reset_flag = false;
3176 header.public_header.version_flag = false; 3152 header.public_header.version_flag = false;
3177 header.packet_number = kPacketNumber; 3153 header.packet_number = kPacketNumber;
3178 3154
3179 QuicStopWaitingFrame stop_waiting_frame; 3155 QuicStopWaitingFrame stop_waiting_frame;
3180 stop_waiting_frame.least_unacked = kLeastUnacked; 3156 stop_waiting_frame.least_unacked = kLeastUnacked;
3181 3157
3182 QuicFrames frames; 3158 QuicFrames frames = {QuicFrame(&stop_waiting_frame)};
3183 frames.push_back(QuicFrame(&stop_waiting_frame));
3184 3159
3185 // clang-format off 3160 // clang-format off
3186 unsigned char packet[] = { 3161 unsigned char packet[] = {
3187 // public flags (8 byte connection_id) 3162 // public flags (8 byte connection_id)
3188 0x38, 3163 0x38,
3189 // connection_id 3164 // connection_id
3190 0x10, 0x32, 0x54, 0x76, 3165 0x10, 0x32, 0x54, 0x76,
3191 0x98, 0xBA, 0xDC, 0xFE, 3166 0x98, 0xBA, 0xDC, 0xFE,
3192 // packet number 3167 // packet number
3193 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, 3168 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
3236 // stream id 3211 // stream id
3237 0x04, 0x03, 0x02, 0x01, 3212 0x04, 0x03, 0x02, 0x01,
3238 // sent byte offset 3213 // sent byte offset
3239 0x01, 0x02, 0x03, 0x04, 3214 0x01, 0x02, 0x03, 0x04,
3240 0x05, 0x06, 0x07, 0x08, 3215 0x05, 0x06, 0x07, 0x08,
3241 // error code 3216 // error code
3242 0x08, 0x07, 0x06, 0x05, 3217 0x08, 0x07, 0x06, 0x05,
3243 }; 3218 };
3244 // clang-format on 3219 // clang-format on
3245 3220
3246 QuicFrames frames; 3221 QuicFrames frames = {QuicFrame(&rst_frame)};
3247 frames.push_back(QuicFrame(&rst_frame));
3248 3222
3249 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames)); 3223 std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
3250 ASSERT_TRUE(data != nullptr); 3224 ASSERT_TRUE(data != nullptr);
3251 3225
3252 test::CompareCharArraysWithHexError("constructed packet", data->data(), 3226 test::CompareCharArraysWithHexError("constructed packet", data->data(),
3253 data->length(), AsChars(packet), 3227 data->length(), AsChars(packet),
3254 arraysize(packet)); 3228 arraysize(packet));
3255 } 3229 }
3256 3230
3257 TEST_P(QuicFramerTest, BuildCloseFramePacket) { 3231 TEST_P(QuicFramerTest, BuildCloseFramePacket) {
3258 QuicPacketHeader header; 3232 QuicPacketHeader header;
3259 header.public_header.connection_id = kConnectionId; 3233 header.public_header.connection_id = kConnectionId;
3260 header.public_header.reset_flag = false; 3234 header.public_header.reset_flag = false;
3261 header.public_header.version_flag = false; 3235 header.public_header.version_flag = false;
3262 header.packet_number = kPacketNumber; 3236 header.packet_number = kPacketNumber;
3263 3237
3264 QuicConnectionCloseFrame close_frame; 3238 QuicConnectionCloseFrame close_frame;
3265 close_frame.error_code = static_cast<QuicErrorCode>(0x05060708); 3239 close_frame.error_code = static_cast<QuicErrorCode>(0x05060708);
3266 close_frame.error_details = "because I can"; 3240 close_frame.error_details = "because I can";
3267 3241
3268 QuicFrames frames; 3242 QuicFrames frames = {QuicFrame(&close_frame)};
3269 frames.push_back(QuicFrame(&close_frame));
3270 3243
3271 // clang-format off 3244 // clang-format off
3272 unsigned char packet[] = { 3245 unsigned char packet[] = {
3273 // public flags (8 byte connection_id) 3246 // public flags (8 byte connection_id)
3274 0x38, 3247 0x38,
3275 // connection_id 3248 // connection_id
3276 0x10, 0x32, 0x54, 0x76, 3249 0x10, 0x32, 0x54, 0x76,
3277 0x98, 0xBA, 0xDC, 0xFE, 3250 0x98, 0xBA, 0xDC, 0xFE,
3278 // packet number 3251 // packet number
3279 0xBC, 0x9A, 0x78, 0x56, 3252 0xBC, 0x9A, 0x78, 0x56,
(...skipping 26 matching lines...) Expand all
3306 header.public_header.connection_id = kConnectionId; 3279 header.public_header.connection_id = kConnectionId;
3307 header.public_header.reset_flag = false; 3280 header.public_header.reset_flag = false;
3308 header.public_header.version_flag = false; 3281 header.public_header.version_flag = false;
3309 header.packet_number = kPacketNumber; 3282 header.packet_number = kPacketNumber;
3310 3283
3311 QuicGoAwayFrame goaway_frame; 3284 QuicGoAwayFrame goaway_frame;
3312 goaway_frame.error_code = static_cast<QuicErrorCode>(0x05060708); 3285 goaway_frame.error_code = static_cast<QuicErrorCode>(0x05060708);
3313 goaway_frame.last_good_stream_id = kStreamId; 3286 goaway_frame.last_good_stream_id = kStreamId;
3314 goaway_frame.reason_phrase = "because I can"; 3287 goaway_frame.reason_phrase = "because I can";
3315 3288
3316 QuicFrames frames; 3289 QuicFrames frames = {QuicFrame(&goaway_frame)};
3317 frames.push_back(QuicFrame(&goaway_frame));
3318 3290
3319 // clang-format off 3291 // clang-format off
3320 unsigned char packet[] = { 3292 unsigned char packet[] = {
3321 // public flags (8 byte connection_id) 3293 // public flags (8 byte connection_id)
3322 0x38, 3294 0x38,
3323 // connection_id 3295 // connection_id
3324 0x10, 0x32, 0x54, 0x76, 3296 0x10, 0x32, 0x54, 0x76,
3325 0x98, 0xBA, 0xDC, 0xFE, 3297 0x98, 0xBA, 0xDC, 0xFE,
3326 // packet number 3298 // packet number
3327 0xBC, 0x9A, 0x78, 0x56, 3299 0xBC, 0x9A, 0x78, 0x56,
(...skipping 27 matching lines...) Expand all
3355 QuicPacketHeader header; 3327 QuicPacketHeader header;
3356 header.public_header.connection_id = kConnectionId; 3328 header.public_header.connection_id = kConnectionId;
3357 header.public_header.reset_flag = false; 3329 header.public_header.reset_flag = false;
3358 header.public_header.version_flag = false; 3330 header.public_header.version_flag = false;
3359 header.packet_number = kPacketNumber; 3331 header.packet_number = kPacketNumber;
3360 3332
3361 QuicWindowUpdateFrame window_update_frame; 3333 QuicWindowUpdateFrame window_update_frame;
3362 window_update_frame.stream_id = kStreamId; 3334 window_update_frame.stream_id = kStreamId;
3363 window_update_frame.byte_offset = 0x1122334455667788; 3335 window_update_frame.byte_offset = 0x1122334455667788;
3364 3336
3365 QuicFrames frames; 3337 QuicFrames frames = {QuicFrame(&window_update_frame)};
3366 frames.push_back(QuicFrame(&window_update_frame));
3367 3338
3368 // clang-format off 3339 // clang-format off
3369 unsigned char packet[] = { 3340 unsigned char packet[] = {
3370 // public flags (8 byte connection_id) 3341 // public flags (8 byte connection_id)
3371 0x38, 3342 0x38,
3372 // connection_id 3343 // connection_id
3373 0x10, 0x32, 0x54, 0x76, 3344 0x10, 0x32, 0x54, 0x76,
3374 0x98, 0xBA, 0xDC, 0xFE, 3345 0x98, 0xBA, 0xDC, 0xFE,
3375 // packet number 3346 // packet number
3376 0xBC, 0x9A, 0x78, 0x56, 3347 0xBC, 0x9A, 0x78, 0x56,
(...skipping 20 matching lines...) Expand all
3397 TEST_P(QuicFramerTest, BuildBlockedPacket) { 3368 TEST_P(QuicFramerTest, BuildBlockedPacket) {
3398 QuicPacketHeader header; 3369 QuicPacketHeader header;
3399 header.public_header.connection_id = kConnectionId; 3370 header.public_header.connection_id = kConnectionId;
3400 header.public_header.reset_flag = false; 3371 header.public_header.reset_flag = false;
3401 header.public_header.version_flag = false; 3372 header.public_header.version_flag = false;
3402 header.packet_number = kPacketNumber; 3373 header.packet_number = kPacketNumber;
3403 3374
3404 QuicBlockedFrame blocked_frame; 3375 QuicBlockedFrame blocked_frame;
3405 blocked_frame.stream_id = kStreamId; 3376 blocked_frame.stream_id = kStreamId;
3406 3377
3407 QuicFrames frames; 3378 QuicFrames frames = {QuicFrame(&blocked_frame)};
3408 frames.push_back(QuicFrame(&blocked_frame));
3409 3379
3410 // clang-format off 3380 // clang-format off
3411 unsigned char packet[] = { 3381 unsigned char packet[] = {
3412 // public flags (8 byte connection_id) 3382 // public flags (8 byte connection_id)
3413 0x38, 3383 0x38,
3414 // connection_id 3384 // connection_id
3415 0x10, 0x32, 0x54, 0x76, 3385 0x10, 0x32, 0x54, 0x76,
3416 0x98, 0xBA, 0xDC, 0xFE, 3386 0x98, 0xBA, 0xDC, 0xFE,
3417 // packet number 3387 // packet number
3418 0xBC, 0x9A, 0x78, 0x56, 3388 0xBC, 0x9A, 0x78, 0x56,
(...skipping 14 matching lines...) Expand all
3433 arraysize(packet)); 3403 arraysize(packet));
3434 } 3404 }
3435 3405
3436 TEST_P(QuicFramerTest, BuildPingPacket) { 3406 TEST_P(QuicFramerTest, BuildPingPacket) {
3437 QuicPacketHeader header; 3407 QuicPacketHeader header;
3438 header.public_header.connection_id = kConnectionId; 3408 header.public_header.connection_id = kConnectionId;
3439 header.public_header.reset_flag = false; 3409 header.public_header.reset_flag = false;
3440 header.public_header.version_flag = false; 3410 header.public_header.version_flag = false;
3441 header.packet_number = kPacketNumber; 3411 header.packet_number = kPacketNumber;
3442 3412
3443 QuicPingFrame ping_frame; 3413 QuicFrames frames = {QuicFrame(QuicPingFrame())};
3444
3445 QuicFrames frames;
3446 frames.push_back(QuicFrame(ping_frame));
3447 3414
3448 // clang-format off 3415 // clang-format off
3449 unsigned char packet[] = { 3416 unsigned char packet[] = {
3450 // public flags (8 byte connection_id) 3417 // public flags (8 byte connection_id)
3451 0x38, 3418 0x38,
3452 // connection_id 3419 // connection_id
3453 0x10, 0x32, 0x54, 0x76, 3420 0x10, 0x32, 0x54, 0x76,
3454 0x98, 0xBA, 0xDC, 0xFE, 3421 0x98, 0xBA, 0xDC, 0xFE,
3455 // packet number 3422 // packet number
3456 0xBC, 0x9A, 0x78, 0x56, 3423 0xBC, 0x9A, 0x78, 0x56,
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
3510 } 3477 }
3511 3478
3512 // Test that the MTU discovery packet is serialized correctly as a PING packet. 3479 // Test that the MTU discovery packet is serialized correctly as a PING packet.
3513 TEST_P(QuicFramerTest, BuildMtuDiscoveryPacket) { 3480 TEST_P(QuicFramerTest, BuildMtuDiscoveryPacket) {
3514 QuicPacketHeader header; 3481 QuicPacketHeader header;
3515 header.public_header.connection_id = kConnectionId; 3482 header.public_header.connection_id = kConnectionId;
3516 header.public_header.reset_flag = false; 3483 header.public_header.reset_flag = false;
3517 header.public_header.version_flag = false; 3484 header.public_header.version_flag = false;
3518 header.packet_number = kPacketNumber; 3485 header.packet_number = kPacketNumber;
3519 3486
3520 QuicMtuDiscoveryFrame mtu_discovery_frame; 3487 QuicFrames frames = {QuicFrame(QuicMtuDiscoveryFrame())};
3521
3522 QuicFrames frames;
3523 frames.push_back(QuicFrame(mtu_discovery_frame));
3524 3488
3525 // clang-format off 3489 // clang-format off
3526 unsigned char packet[] = { 3490 unsigned char packet[] = {
3527 // public flags (8 byte connection_id) 3491 // public flags (8 byte connection_id)
3528 0x38, 3492 0x38,
3529 // connection_id 3493 // connection_id
3530 0x10, 0x32, 0x54, 0x76, 3494 0x10, 0x32, 0x54, 0x76,
3531 0x98, 0xBA, 0xDC, 0xFE, 3495 0x98, 0xBA, 0xDC, 0xFE,
3532 // packet number 3496 // packet number
3533 0xBC, 0x9A, 0x78, 0x56, 3497 0xBC, 0x9A, 0x78, 0x56,
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
3921 TEST_P(QuicFramerTest, AckTruncationLargePacket) { 3885 TEST_P(QuicFramerTest, AckTruncationLargePacket) {
3922 QuicPacketHeader header; 3886 QuicPacketHeader header;
3923 header.public_header.connection_id = kConnectionId; 3887 header.public_header.connection_id = kConnectionId;
3924 header.public_header.reset_flag = false; 3888 header.public_header.reset_flag = false;
3925 header.public_header.version_flag = false; 3889 header.public_header.version_flag = false;
3926 header.packet_number = kPacketNumber; 3890 header.packet_number = kPacketNumber;
3927 3891
3928 QuicAckFrame ack_frame; 3892 QuicAckFrame ack_frame;
3929 // Create a packet with just the ack. 3893 // Create a packet with just the ack.
3930 ack_frame = MakeAckFrameWithAckBlocks(300, 0u); 3894 ack_frame = MakeAckFrameWithAckBlocks(300, 0u);
3931 QuicFrame frame; 3895 QuicFrames frames = {QuicFrame(&ack_frame)};
3932 frame.type = ACK_FRAME;
3933 frame.ack_frame = &ack_frame;
3934 QuicFrames frames;
3935 frames.push_back(frame);
3936 3896
3937 // Build an ack packet with truncation due to limit in number of nack ranges. 3897 // Build an ack packet with truncation due to limit in number of nack ranges.
3938 std::unique_ptr<QuicPacket> raw_ack_packet(BuildDataPacket(header, frames)); 3898 std::unique_ptr<QuicPacket> raw_ack_packet(BuildDataPacket(header, frames));
3939 ASSERT_TRUE(raw_ack_packet != nullptr); 3899 ASSERT_TRUE(raw_ack_packet != nullptr);
3940 char buffer[kMaxPacketSize]; 3900 char buffer[kMaxPacketSize];
3941 size_t encrypted_length = framer_.EncryptPayload( 3901 size_t encrypted_length = framer_.EncryptPayload(
3942 ENCRYPTION_NONE, kDefaultPathId, header.packet_number, *raw_ack_packet, 3902 ENCRYPTION_NONE, kDefaultPathId, header.packet_number, *raw_ack_packet,
3943 buffer, kMaxPacketSize); 3903 buffer, kMaxPacketSize);
3944 ASSERT_NE(0u, encrypted_length); 3904 ASSERT_NE(0u, encrypted_length);
3945 // Now make sure we can turn our ack packet back into an ack frame. 3905 // Now make sure we can turn our ack packet back into an ack frame.
(...skipping 10 matching lines...) Expand all
3956 TEST_P(QuicFramerTest, AckTruncationSmallPacket) { 3916 TEST_P(QuicFramerTest, AckTruncationSmallPacket) {
3957 QuicPacketHeader header; 3917 QuicPacketHeader header;
3958 header.public_header.connection_id = kConnectionId; 3918 header.public_header.connection_id = kConnectionId;
3959 header.public_header.reset_flag = false; 3919 header.public_header.reset_flag = false;
3960 header.public_header.version_flag = false; 3920 header.public_header.version_flag = false;
3961 header.packet_number = kPacketNumber; 3921 header.packet_number = kPacketNumber;
3962 3922
3963 // Create a packet with just the ack. 3923 // Create a packet with just the ack.
3964 QuicAckFrame ack_frame; 3924 QuicAckFrame ack_frame;
3965 ack_frame = MakeAckFrameWithAckBlocks(300, 0u); 3925 ack_frame = MakeAckFrameWithAckBlocks(300, 0u);
3966 QuicFrame frame; 3926 QuicFrames frames = {QuicFrame(&ack_frame)};
3967 frame.type = ACK_FRAME;
3968 frame.ack_frame = &ack_frame;
3969 QuicFrames frames;
3970 frames.push_back(frame);
3971 3927
3972 // Build an ack packet with truncation due to limit in number of nack ranges. 3928 // Build an ack packet with truncation due to limit in number of nack ranges.
3973 std::unique_ptr<QuicPacket> raw_ack_packet( 3929 std::unique_ptr<QuicPacket> raw_ack_packet(
3974 BuildDataPacket(header, frames, 500)); 3930 BuildDataPacket(header, frames, 500));
3975 ASSERT_TRUE(raw_ack_packet != nullptr); 3931 ASSERT_TRUE(raw_ack_packet != nullptr);
3976 char buffer[kMaxPacketSize]; 3932 char buffer[kMaxPacketSize];
3977 size_t encrypted_length = framer_.EncryptPayload( 3933 size_t encrypted_length = framer_.EncryptPayload(
3978 ENCRYPTION_NONE, kDefaultPathId, header.packet_number, *raw_ack_packet, 3934 ENCRYPTION_NONE, kDefaultPathId, header.packet_number, *raw_ack_packet,
3979 buffer, kMaxPacketSize); 3935 buffer, kMaxPacketSize);
3980 ASSERT_NE(0u, encrypted_length); 3936 ASSERT_NE(0u, encrypted_length);
(...skipping 13 matching lines...) Expand all
3994 header.public_header.connection_id = kConnectionId; 3950 header.public_header.connection_id = kConnectionId;
3995 header.public_header.reset_flag = false; 3951 header.public_header.reset_flag = false;
3996 header.public_header.version_flag = false; 3952 header.public_header.version_flag = false;
3997 header.packet_number = kPacketNumber; 3953 header.packet_number = kPacketNumber;
3998 3954
3999 QuicAckFrame ack_frame; 3955 QuicAckFrame ack_frame;
4000 ack_frame.largest_observed = 201; 3956 ack_frame.largest_observed = 201;
4001 ack_frame.packets.Add(1, ack_frame.largest_observed); 3957 ack_frame.packets.Add(1, ack_frame.largest_observed);
4002 3958
4003 // Create a packet with just the ack. 3959 // Create a packet with just the ack.
4004 QuicFrame frame; 3960 QuicFrames frames = {QuicFrame(&ack_frame)};
4005 frame.type = ACK_FRAME;
4006 frame.ack_frame = &ack_frame;
4007 QuicFrames frames;
4008 frames.push_back(frame);
4009 3961
4010 std::unique_ptr<QuicPacket> raw_ack_packet(BuildDataPacket(header, frames)); 3962 std::unique_ptr<QuicPacket> raw_ack_packet(BuildDataPacket(header, frames));
4011 ASSERT_TRUE(raw_ack_packet != nullptr); 3963 ASSERT_TRUE(raw_ack_packet != nullptr);
4012 3964
4013 char buffer[kMaxPacketSize]; 3965 char buffer[kMaxPacketSize];
4014 size_t encrypted_length = framer_.EncryptPayload( 3966 size_t encrypted_length = framer_.EncryptPayload(
4015 ENCRYPTION_NONE, kDefaultPathId, header.packet_number, *raw_ack_packet, 3967 ENCRYPTION_NONE, kDefaultPathId, header.packet_number, *raw_ack_packet,
4016 buffer, kMaxPacketSize); 3968 buffer, kMaxPacketSize);
4017 ASSERT_NE(0u, encrypted_length); 3969 ASSERT_NE(0u, encrypted_length);
4018 3970
4019 // Now make sure we can turn our ack packet back into an ack frame. 3971 // Now make sure we can turn our ack packet back into an ack frame.
4020 ASSERT_TRUE(framer_.ProcessPacket( 3972 ASSERT_TRUE(framer_.ProcessPacket(
4021 QuicEncryptedPacket(buffer, encrypted_length, false))); 3973 QuicEncryptedPacket(buffer, encrypted_length, false)));
4022 3974
4023 // Test for clean truncation of the ack by comparing the length of the 3975 // Test for clean truncation of the ack by comparing the length of the
4024 // original packets to the re-serialized packets. 3976 // original packets to the re-serialized packets.
4025 frames.clear(); 3977 frames.clear();
4026 frame.type = ACK_FRAME; 3978 frames.push_back(QuicFrame(visitor_.ack_frames_[0].get()));
4027 frame.ack_frame = visitor_.ack_frames_[0].get();
4028 frames.push_back(frame);
4029 3979
4030 size_t original_raw_length = raw_ack_packet->length(); 3980 size_t original_raw_length = raw_ack_packet->length();
4031 raw_ack_packet.reset(BuildDataPacket(header, frames)); 3981 raw_ack_packet.reset(BuildDataPacket(header, frames));
4032 ASSERT_TRUE(raw_ack_packet != nullptr); 3982 ASSERT_TRUE(raw_ack_packet != nullptr);
4033 EXPECT_EQ(original_raw_length, raw_ack_packet->length()); 3983 EXPECT_EQ(original_raw_length, raw_ack_packet->length());
4034 ASSERT_TRUE(raw_ack_packet != nullptr); 3984 ASSERT_TRUE(raw_ack_packet != nullptr);
4035 } 3985 }
4036 3986
4037 TEST_P(QuicFramerTest, StopPacketProcessing) { 3987 TEST_P(QuicFramerTest, StopPacketProcessing) {
4038 // clang-format off 3988 // clang-format off
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
4226 'o', ' ', 'w', 'o', 4176 'o', ' ', 'w', 'o',
4227 'r', 'l', 'd', '!', 4177 'r', 'l', 'd', '!',
4228 }; 4178 };
4229 // clang-format on 4179 // clang-format on
4230 4180
4231 QuicFramerFuzzFunc(packet, arraysize(packet)); 4181 QuicFramerFuzzFunc(packet, arraysize(packet));
4232 } 4182 }
4233 4183
4234 } // namespace test 4184 } // namespace test
4235 } // namespace net 4185 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/quic_framer.cc ('k') | net/quic/core/quic_header_list.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698