| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/quic/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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |