| 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 <algorithm> | 5 #include <algorithm> |
| 6 #include <map> |
| 7 #include <string> |
| 6 #include <vector> | 8 #include <vector> |
| 7 | 9 |
| 8 #include "base/hash_tables.h" | 10 #include "base/hash_tables.h" |
| 9 #include "base/logging.h" | 11 #include "base/logging.h" |
| 10 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
| 11 #include "base/port.h" | 13 #include "base/port.h" |
| 12 #include "base/stl_util.h" | 14 #include "base/stl_util.h" |
| 13 #include "net/quic/quic_framer.h" | 15 #include "net/quic/quic_framer.h" |
| 14 #include "net/quic/quic_protocol.h" | 16 #include "net/quic/quic_protocol.h" |
| 15 #include "net/quic/quic_utils.h" | 17 #include "net/quic/quic_utils.h" |
| 16 #include "net/quic/test_tools/quic_test_utils.h" | 18 #include "net/quic/test_tools/quic_test_utils.h" |
| 17 | 19 |
| 18 using base::hash_set; | 20 using base::hash_set; |
| 19 using base::StringPiece; | 21 using base::StringPiece; |
| 22 using std::map; |
| 20 using std::string; | 23 using std::string; |
| 21 using std::vector; | 24 using std::vector; |
| 22 | 25 |
| 23 namespace net { | 26 namespace net { |
| 24 | 27 |
| 25 namespace test { | 28 namespace test { |
| 26 | 29 |
| 27 class TestEncrypter : public QuicEncrypter { | 30 class TestEncrypter : public QuicEncrypter { |
| 28 public: | 31 public: |
| 29 virtual ~TestEncrypter() {} | 32 virtual ~TestEncrypter() {} |
| (...skipping 21 matching lines...) Expand all Loading... |
| 51 associated_data_ = associated_data.as_string(); | 54 associated_data_ = associated_data.as_string(); |
| 52 ciphertext_ = ciphertext.as_string(); | 55 ciphertext_ = ciphertext.as_string(); |
| 53 return new QuicData(ciphertext.data(), ciphertext.length()); | 56 return new QuicData(ciphertext.data(), ciphertext.length()); |
| 54 } | 57 } |
| 55 string associated_data_; | 58 string associated_data_; |
| 56 string ciphertext_; | 59 string ciphertext_; |
| 57 }; | 60 }; |
| 58 | 61 |
| 59 // The offset of congestion info in our tests, given the size of our usual ack | 62 // The offset of congestion info in our tests, given the size of our usual ack |
| 60 // frame. This does NOT work for all packets. | 63 // frame. This does NOT work for all packets. |
| 61 const int kCongestionInfoOffset = kPacketHeaderSize + 54; | 64 const int kCongestionInfoOffset = kPacketHeaderSize + 33; |
| 62 | 65 |
| 63 class TestQuicVisitor : public ::net::QuicFramerVisitorInterface { | 66 class TestQuicVisitor : public ::net::QuicFramerVisitorInterface { |
| 64 public: | 67 public: |
| 65 TestQuicVisitor() | 68 TestQuicVisitor() |
| 66 : error_count_(0), | 69 : error_count_(0), |
| 67 packet_count_(0), | 70 packet_count_(0), |
| 68 frame_count_(0), | 71 frame_count_(0), |
| 69 fec_count_(0), | 72 fec_count_(0), |
| 70 complete_packets_(0), | 73 complete_packets_(0), |
| 71 revived_packets_(0), | 74 revived_packets_(0), |
| (...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 531 0x34, 0x12, | 534 0x34, 0x12, |
| 532 // flags | 535 // flags |
| 533 0x00, | 536 0x00, |
| 534 // fec group | 537 // fec group |
| 535 0x00, | 538 0x00, |
| 536 | 539 |
| 537 // frame count | 540 // frame count |
| 538 0x01, | 541 0x01, |
| 539 // frame type (ack frame) | 542 // frame type (ack frame) |
| 540 0x02, | 543 0x02, |
| 541 // largest received packet sequence number | 544 // num_acked_packets |
| 542 0xBC, 0x9A, 0x78, 0x56, | 545 0x03, |
| 546 // smallest received packet sequence number |
| 547 0xBA, 0x9A, 0x78, 0x56, |
| 543 0x34, 0x12, | 548 0x34, 0x12, |
| 544 // time delta | 549 // time |
| 545 0x87, 0x96, 0xA5, 0xB4, | 550 0x87, 0x96, 0xA5, 0xB4, |
| 546 0xC3, 0xD2, 0xE1, 0x07, | 551 0xC3, 0xD2, 0xE1, 0x07, |
| 547 // num_unacked_packets | 552 // sequence delta |
| 548 0x02, | 553 0x01, |
| 549 // unacked packet sequence number | 554 // time delta |
| 550 0xBA, 0x9A, 0x78, 0x56, | 555 0x01, 0x00, 0x00, 0x00, |
| 551 0x34, 0x12, | 556 // sequence delta (skip one packet) |
| 552 // unacked packet sequence number | 557 0x03, |
| 553 0xBB, 0x9A, 0x78, 0x56, | 558 // time delta |
| 554 0x34, 0x12, | 559 0x02, 0x00, 0x00, 0x00, |
| 555 // least packet sequence number awaiting an ack | 560 // least packet sequence number awaiting an ack |
| 556 0xA0, 0x9A, 0x78, 0x56, | 561 0xA0, 0x9A, 0x78, 0x56, |
| 557 0x34, 0x12, | 562 0x34, 0x12, |
| 558 // num non retransmitting packets | |
| 559 0x03, | |
| 560 // non retransmitting packet sequence number | |
| 561 0xAE, 0x9A, 0x78, 0x56, | |
| 562 0x34, 0x12, | |
| 563 // non retransmitting packet sequence number | |
| 564 0xAF, 0x9A, 0x78, 0x56, | |
| 565 0x34, 0x12, | |
| 566 // non retransmitting packet sequence number | |
| 567 0xB0, 0x9A, 0x78, 0x56, | |
| 568 0x34, 0x12, | |
| 569 // congestion feedback type (none) | 563 // congestion feedback type (none) |
| 570 0x00, | 564 0x00, |
| 571 }; | 565 }; |
| 572 | 566 |
| 573 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); | 567 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); |
| 574 EXPECT_TRUE(framer_.ProcessPacket(self_address_, peer_address_, encrypted)); | 568 EXPECT_TRUE(framer_.ProcessPacket(self_address_, peer_address_, encrypted)); |
| 575 | 569 |
| 576 EXPECT_TRUE(CheckDecryption(StringPiece(AsChars(packet), arraysize(packet)))); | 570 EXPECT_TRUE(CheckDecryption(StringPiece(AsChars(packet), arraysize(packet)))); |
| 577 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 571 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 578 ASSERT_TRUE(visitor_.header_.get()); | 572 ASSERT_TRUE(visitor_.header_.get()); |
| 579 | 573 |
| 580 EXPECT_EQ(0u, visitor_.stream_frames_.size()); | 574 EXPECT_EQ(0u, visitor_.stream_frames_.size()); |
| 581 ASSERT_EQ(1u, visitor_.ack_frames_.size()); | 575 ASSERT_EQ(1u, visitor_.ack_frames_.size()); |
| 582 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; | 576 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; |
| 583 EXPECT_EQ(GG_UINT64_C(0x0123456789ABC), | 577 ASSERT_EQ(3u, frame.received_info.received_packet_times.size()); |
| 584 frame.received_info.largest_received); | 578 map<QuicPacketSequenceNumber, QuicTime>::const_iterator iter = |
| 585 EXPECT_EQ(QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59687)), | 579 frame.received_info.received_packet_times.begin(); |
| 586 frame.received_info.time_received); | 580 EXPECT_EQ(GG_UINT64_C(0x0123456789ABA), iter->first); |
| 581 EXPECT_EQ(QuicTime::FromMicroseconds(0x07E1D2C3B4A59687), iter->second); |
| 582 ++iter; |
| 583 EXPECT_EQ(GG_UINT64_C(0x0123456789ABB), iter->first); |
| 584 EXPECT_EQ(QuicTime::FromMicroseconds(0x07E1D2C3B4A59688), iter->second); |
| 585 ++iter; |
| 586 EXPECT_EQ(GG_UINT64_C(0x0123456789ABD), iter->first); |
| 587 EXPECT_EQ(QuicTime::FromMicroseconds(0x07E1D2C3B4A59689), iter->second); |
| 587 | 588 |
| 588 const SequenceSet& sequence_nums = frame.received_info.missing_packets; | |
| 589 ASSERT_EQ(2u, sequence_nums.size()); | |
| 590 EXPECT_EQ(1u, sequence_nums.count(GG_UINT64_C(0x0123456789ABB))); | |
| 591 EXPECT_EQ(1u, sequence_nums.count(GG_UINT64_C(0x0123456789ABA))); | |
| 592 EXPECT_EQ(GG_UINT64_C(0x0123456789AA0), frame.sent_info.least_unacked); | 589 EXPECT_EQ(GG_UINT64_C(0x0123456789AA0), frame.sent_info.least_unacked); |
| 593 ASSERT_EQ(3u, frame.sent_info.non_retransmiting.size()); | |
| 594 const SequenceSet& non_retrans = frame.sent_info.non_retransmiting; | |
| 595 EXPECT_EQ(1u, non_retrans.count(GG_UINT64_C(0x0123456789AB0))); | |
| 596 EXPECT_EQ(1u, non_retrans.count(GG_UINT64_C(0x0123456789AAF))); | |
| 597 EXPECT_EQ(1u, non_retrans.count(GG_UINT64_C(0x0123456789AAE))); | |
| 598 ASSERT_EQ(kNone, frame.congestion_info.type); | 590 ASSERT_EQ(kNone, frame.congestion_info.type); |
| 599 | 591 |
| 600 // Now test framing boundaries | 592 // Now test framing boundaries |
| 601 for (size_t i = kPacketHeaderSize; i < kPacketHeaderSize + 55; ++i) { | 593 for (size_t i = kPacketHeaderSize; i < kPacketHeaderSize + 34; ++i) { |
| 602 string expected_error; | 594 string expected_error; |
| 603 if (i < kPacketHeaderSize + 1) { | 595 if (i < kPacketHeaderSize + 1) { |
| 604 expected_error = "Unable to read frame count."; | 596 expected_error = "Unable to read frame count."; |
| 605 } else if (i < kPacketHeaderSize + 2) { | 597 } else if (i < kPacketHeaderSize + 2) { |
| 606 expected_error = "Unable to read frame type."; | 598 expected_error = "Unable to read frame type."; |
| 607 } else if (i < kPacketHeaderSize + 8) { | 599 } else if (i < kPacketHeaderSize + 3) { |
| 608 expected_error = "Unable to read largest received."; | 600 expected_error = "Unable to read num acked packets."; |
| 609 } else if (i < kPacketHeaderSize + 16) { | 601 } else if (i < kPacketHeaderSize + 9) { |
| 602 expected_error = "Unable to read smallest received."; |
| 603 } else if (i < kPacketHeaderSize + 17) { |
| 610 expected_error = "Unable to read time received."; | 604 expected_error = "Unable to read time received."; |
| 611 } else if (i < kPacketHeaderSize + 17) { | 605 } else if (i < kPacketHeaderSize + 18) { |
| 612 expected_error = "Unable to read num unacked packets."; | 606 expected_error = "Unable to read sequence delta in acked packets."; |
| 613 } else if (i < kPacketHeaderSize + 29) { | 607 } else if (i < kPacketHeaderSize + 22) { |
| 614 expected_error = "Unable to read sequence number in unacked packets."; | 608 expected_error = "Unable to read time delta in acked packets."; |
| 615 } else if (i < kPacketHeaderSize + 35) { | 609 } else if (i < kPacketHeaderSize + 23) { |
| 610 expected_error = "Unable to read sequence delta in acked packets."; |
| 611 } else if (i < kPacketHeaderSize + 27) { |
| 612 expected_error = "Unable to read time delta in acked packets."; |
| 613 } else if (i < kPacketHeaderSize + 33) { |
| 616 expected_error = "Unable to read least unacked."; | 614 expected_error = "Unable to read least unacked."; |
| 617 } else if (i < kPacketHeaderSize + 36) { | 615 } else if (i < kPacketHeaderSize + 34) { |
| 618 expected_error = "Unable to read num non-retransmitting."; | |
| 619 } else if (i < kPacketHeaderSize + 54) { | |
| 620 expected_error = "Unable to read sequence number in non-retransmitting."; | |
| 621 } else if (i < kPacketHeaderSize + 55) { | |
| 622 expected_error = "Unable to read congestion info type."; | 616 expected_error = "Unable to read congestion info type."; |
| 623 } | 617 } |
| 624 | 618 |
| 625 QuicEncryptedPacket encrypted(AsChars(packet), i, false); | 619 QuicEncryptedPacket encrypted(AsChars(packet), i, false); |
| 626 EXPECT_FALSE(framer_.ProcessPacket(self_address_, peer_address_, | 620 EXPECT_FALSE(framer_.ProcessPacket(self_address_, peer_address_, |
| 627 encrypted)); | 621 encrypted)); |
| 628 EXPECT_EQ(expected_error, framer_.detailed_error()); | 622 EXPECT_EQ(expected_error, framer_.detailed_error()); |
| 629 EXPECT_EQ(QUIC_INVALID_FRAME_DATA, framer_.error()); | 623 EXPECT_EQ(QUIC_INVALID_FRAME_DATA, framer_.error()); |
| 630 } | 624 } |
| 631 } | 625 } |
| 632 | 626 |
| 633 TEST_F(QuicFramerTest, AckFrameTCP) { | 627 TEST_F(QuicFramerTest, AckFrameTCP) { |
| 634 unsigned char packet[] = { | 628 unsigned char packet[] = { |
| 635 // guid | 629 // guid |
| 636 0x10, 0x32, 0x54, 0x76, | 630 0x10, 0x32, 0x54, 0x76, |
| 637 0x98, 0xBA, 0xDC, 0xFE, | 631 0x98, 0xBA, 0xDC, 0xFE, |
| 638 // packet id | 632 // packet id |
| 639 0xBC, 0x9A, 0x78, 0x56, | 633 0xBC, 0x9A, 0x78, 0x56, |
| 640 0x34, 0x12, | 634 0x34, 0x12, |
| 641 // flags | 635 // flags |
| 642 0x00, | 636 0x00, |
| 643 // fec group | 637 // fec group |
| 644 0x00, | 638 0x00, |
| 645 | 639 |
| 646 // frame count | 640 // frame count |
| 647 0x01, | 641 0x01, |
| 648 // frame type (ack frame) | 642 // frame type (ack frame) |
| 649 0x02, | 643 0x02, |
| 650 // largest received packet sequence number | 644 // num_acked_packets |
| 651 0xBC, 0x9A, 0x78, 0x56, | 645 0x03, |
| 646 // smallest received packet sequence number |
| 647 0xBA, 0x9A, 0x78, 0x56, |
| 652 0x34, 0x12, | 648 0x34, 0x12, |
| 653 // time delta | 649 // time |
| 654 0x87, 0x96, 0xA5, 0xB4, | 650 0x87, 0x96, 0xA5, 0xB4, |
| 655 0xC3, 0xD2, 0xE1, 0x07, | 651 0xC3, 0xD2, 0xE1, 0x07, |
| 656 // num_unacked_packets | 652 // sequence delta |
| 657 0x02, | 653 0x01, |
| 658 // unacked packet sequence number | 654 // time delta |
| 659 0xBA, 0x9A, 0x78, 0x56, | 655 0x01, 0x00, 0x00, 0x00, |
| 660 0x34, 0x12, | 656 // sequence delta (skip one packet) |
| 661 // unacked packet sequence number | 657 0x03, |
| 662 0xBB, 0x9A, 0x78, 0x56, | 658 // time delta |
| 663 0x34, 0x12, | 659 0x02, 0x00, 0x00, 0x00, |
| 664 // least packet sequence number awaiting an ack | 660 // least packet sequence number awaiting an ack |
| 665 0xA0, 0x9A, 0x78, 0x56, | 661 0xA0, 0x9A, 0x78, 0x56, |
| 666 0x34, 0x12, | 662 0x34, 0x12, |
| 667 // num non retransmitting packets | |
| 668 0x03, | |
| 669 // non retransmitting packet sequence number | |
| 670 0xAE, 0x9A, 0x78, 0x56, | |
| 671 0x34, 0x12, | |
| 672 // non retransmitting packet sequence number | |
| 673 0xAF, 0x9A, 0x78, 0x56, | |
| 674 0x34, 0x12, | |
| 675 // non retransmitting packet sequence number | |
| 676 0xB0, 0x9A, 0x78, 0x56, | |
| 677 0x34, 0x12, | |
| 678 // congestion feedback type (tcp) | 663 // congestion feedback type (tcp) |
| 679 0x01, | 664 0x01, |
| 680 // ack_frame.congestion_info.tcp.accumulated_number_of_lost_packets | 665 // ack_frame.congestion_info.tcp.accumulated_number_of_lost_packets |
| 681 0x01, 0x02, | 666 0x01, 0x02, |
| 682 // ack_frame.congestion_info.tcp.receive_window | 667 // ack_frame.congestion_info.tcp.receive_window |
| 683 0x03, 0x04, | 668 0x03, 0x04, |
| 684 }; | 669 }; |
| 685 | 670 |
| 686 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); | 671 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); |
| 687 EXPECT_TRUE(framer_.ProcessPacket(self_address_, peer_address_, encrypted)); | 672 EXPECT_TRUE(framer_.ProcessPacket(self_address_, peer_address_, encrypted)); |
| 688 | 673 |
| 689 EXPECT_TRUE(CheckDecryption(StringPiece(AsChars(packet), arraysize(packet)))); | 674 EXPECT_TRUE(CheckDecryption(StringPiece(AsChars(packet), arraysize(packet)))); |
| 690 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 675 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 691 ASSERT_TRUE(visitor_.header_.get()); | 676 ASSERT_TRUE(visitor_.header_.get()); |
| 692 | 677 |
| 693 EXPECT_EQ(0u, visitor_.stream_frames_.size()); | 678 EXPECT_EQ(0u, visitor_.stream_frames_.size()); |
| 694 ASSERT_EQ(1u, visitor_.ack_frames_.size()); | 679 ASSERT_EQ(1u, visitor_.ack_frames_.size()); |
| 695 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; | 680 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; |
| 696 EXPECT_EQ(GG_UINT64_C(0x0123456789ABC), | 681 ASSERT_EQ(3u, frame.received_info.received_packet_times.size()); |
| 697 frame.received_info.largest_received); | 682 map<QuicPacketSequenceNumber, QuicTime>::const_iterator iter = |
| 698 EXPECT_EQ(QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59687)), | 683 frame.received_info.received_packet_times.begin(); |
| 699 frame.received_info.time_received); | 684 EXPECT_EQ(GG_UINT64_C(0x0123456789ABA), iter->first); |
| 685 EXPECT_EQ(QuicTime::FromMicroseconds(0x07E1D2C3B4A59687), iter->second); |
| 686 ++iter; |
| 687 EXPECT_EQ(GG_UINT64_C(0x0123456789ABB), iter->first); |
| 688 EXPECT_EQ(QuicTime::FromMicroseconds(0x07E1D2C3B4A59688), iter->second); |
| 689 ++iter; |
| 690 EXPECT_EQ(GG_UINT64_C(0x0123456789ABD), iter->first); |
| 691 EXPECT_EQ(QuicTime::FromMicroseconds(0x07E1D2C3B4A59689), iter->second); |
| 700 | 692 |
| 701 const SequenceSet& sequence_nums = frame.received_info.missing_packets; | |
| 702 ASSERT_EQ(2u, sequence_nums.size()); | |
| 703 EXPECT_EQ(1u, sequence_nums.count(GG_UINT64_C(0x0123456789ABB))); | |
| 704 EXPECT_EQ(1u, sequence_nums.count(GG_UINT64_C(0x0123456789ABA))); | |
| 705 EXPECT_EQ(GG_UINT64_C(0x0123456789AA0), frame.sent_info.least_unacked); | 693 EXPECT_EQ(GG_UINT64_C(0x0123456789AA0), frame.sent_info.least_unacked); |
| 706 ASSERT_EQ(3u, frame.sent_info.non_retransmiting.size()); | |
| 707 const SequenceSet& non_retrans = frame.sent_info.non_retransmiting; | |
| 708 EXPECT_EQ(1u, non_retrans.count(GG_UINT64_C(0x0123456789AB0))); | |
| 709 EXPECT_EQ(1u, non_retrans.count(GG_UINT64_C(0x0123456789AAF))); | |
| 710 EXPECT_EQ(1u, non_retrans.count(GG_UINT64_C(0x0123456789AAE))); | |
| 711 ASSERT_EQ(kTCP, frame.congestion_info.type); | 694 ASSERT_EQ(kTCP, frame.congestion_info.type); |
| 712 EXPECT_EQ(0x0201, | 695 EXPECT_EQ(0x0201, |
| 713 frame.congestion_info.tcp.accumulated_number_of_lost_packets); | 696 frame.congestion_info.tcp.accumulated_number_of_lost_packets); |
| 714 EXPECT_EQ(0x0403, frame.congestion_info.tcp.receive_window); | 697 EXPECT_EQ(0x0403, frame.congestion_info.tcp.receive_window); |
| 715 | 698 |
| 716 // Now test framing boundaries | 699 // Now test framing boundaries |
| 717 for (size_t i = kCongestionInfoOffset; i < kCongestionInfoOffset + 5; ++i) { | 700 for (size_t i = kCongestionInfoOffset; i < kCongestionInfoOffset + 5; ++i) { |
| 718 string expected_error; | 701 string expected_error; |
| 719 if (i < kCongestionInfoOffset + 1) { | 702 if (i < kCongestionInfoOffset + 1) { |
| 720 expected_error = "Unable to read congestion info type."; | 703 expected_error = "Unable to read congestion info type."; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 742 0x34, 0x12, | 725 0x34, 0x12, |
| 743 // flags | 726 // flags |
| 744 0x00, | 727 0x00, |
| 745 // fec group | 728 // fec group |
| 746 0x00, | 729 0x00, |
| 747 | 730 |
| 748 // frame count | 731 // frame count |
| 749 0x01, | 732 0x01, |
| 750 // frame type (ack frame) | 733 // frame type (ack frame) |
| 751 0x02, | 734 0x02, |
| 752 // largest received packet sequence number | 735 // num_acked_packets |
| 753 0xBC, 0x9A, 0x78, 0x56, | 736 0x03, |
| 737 // smallest received packet sequence number |
| 738 0xBA, 0x9A, 0x78, 0x56, |
| 754 0x34, 0x12, | 739 0x34, 0x12, |
| 755 // time delta | 740 // time |
| 756 0x87, 0x96, 0xA5, 0xB4, | 741 0x87, 0x96, 0xA5, 0xB4, |
| 757 0xC3, 0xD2, 0xE1, 0x07, | 742 0xC3, 0xD2, 0xE1, 0x07, |
| 758 // num_unacked_packets | 743 // sequence delta |
| 759 0x02, | 744 0x01, |
| 760 // unacked packet sequence number | 745 // time delta |
| 761 0xBA, 0x9A, 0x78, 0x56, | 746 0x01, 0x00, 0x00, 0x00, |
| 762 0x34, 0x12, | 747 // sequence delta (skip one packet) |
| 763 // unacked packet sequence number | 748 0x03, |
| 764 0xBB, 0x9A, 0x78, 0x56, | 749 // time delta |
| 765 0x34, 0x12, | 750 0x02, 0x00, 0x00, 0x00, |
| 766 // least packet sequence number awaiting an ack | 751 // least packet sequence number awaiting an ack |
| 767 0xA0, 0x9A, 0x78, 0x56, | 752 0xA0, 0x9A, 0x78, 0x56, |
| 768 0x34, 0x12, | 753 0x34, 0x12, |
| 769 // num non retransmitting packets | |
| 770 0x03, | |
| 771 // non retransmitting packet sequence number | |
| 772 0xAE, 0x9A, 0x78, 0x56, | |
| 773 0x34, 0x12, | |
| 774 // non retransmitting packet sequence number | |
| 775 0xAF, 0x9A, 0x78, 0x56, | |
| 776 0x34, 0x12, | |
| 777 // non retransmitting packet sequence number | |
| 778 0xB0, 0x9A, 0x78, 0x56, | |
| 779 0x34, 0x12, | |
| 780 // congestion feedback type (inter arrival) | 754 // congestion feedback type (inter arrival) |
| 781 0x02, | 755 0x02, |
| 782 // accumulated_number_of_lost_packets | 756 // accumulated_number_of_lost_packets |
| 783 0x02, 0x03, | 757 0x02, 0x03, |
| 784 // offset_time | 758 // offset_time |
| 785 0x04, 0x05, | 759 0x04, 0x05, |
| 786 // delta_time | 760 // delta_time |
| 787 0x06, 0x07, | 761 0x06, 0x07, |
| 788 }; | 762 }; |
| 789 | 763 |
| 790 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); | 764 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); |
| 791 EXPECT_TRUE(framer_.ProcessPacket(self_address_, peer_address_, encrypted)); | 765 EXPECT_TRUE(framer_.ProcessPacket(self_address_, peer_address_, encrypted)); |
| 792 | 766 |
| 793 EXPECT_TRUE(CheckDecryption(StringPiece(AsChars(packet), arraysize(packet)))); | 767 EXPECT_TRUE(CheckDecryption(StringPiece(AsChars(packet), arraysize(packet)))); |
| 794 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 768 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 795 ASSERT_TRUE(visitor_.header_.get()); | 769 ASSERT_TRUE(visitor_.header_.get()); |
| 796 | 770 |
| 797 EXPECT_EQ(0u, visitor_.stream_frames_.size()); | 771 EXPECT_EQ(0u, visitor_.stream_frames_.size()); |
| 798 ASSERT_EQ(1u, visitor_.ack_frames_.size()); | 772 ASSERT_EQ(1u, visitor_.ack_frames_.size()); |
| 799 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; | 773 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; |
| 800 EXPECT_EQ(GG_UINT64_C(0x0123456789ABC), | 774 ASSERT_EQ(3u, frame.received_info.received_packet_times.size()); |
| 801 frame.received_info.largest_received); | 775 map<QuicPacketSequenceNumber, QuicTime>::const_iterator iter = |
| 802 EXPECT_EQ(QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59687)), | 776 frame.received_info.received_packet_times.begin(); |
| 803 frame.received_info.time_received); | 777 EXPECT_EQ(GG_UINT64_C(0x0123456789ABA), iter->first); |
| 778 EXPECT_EQ(QuicTime::FromMicroseconds(0x07E1D2C3B4A59687), iter->second); |
| 779 ++iter; |
| 780 EXPECT_EQ(GG_UINT64_C(0x0123456789ABB), iter->first); |
| 781 EXPECT_EQ(QuicTime::FromMicroseconds(0x07E1D2C3B4A59688), iter->second); |
| 782 ++iter; |
| 783 EXPECT_EQ(GG_UINT64_C(0x0123456789ABD), iter->first); |
| 784 EXPECT_EQ(QuicTime::FromMicroseconds(0x07E1D2C3B4A59689), iter->second); |
| 804 | 785 |
| 805 const SequenceSet& sequence_nums = frame.received_info.missing_packets; | 786 EXPECT_EQ(GG_UINT64_C(0x0123456789AA0), |
| 806 ASSERT_EQ(2u, sequence_nums.size()); | 787 frame.sent_info.least_unacked); |
| 807 EXPECT_EQ(1u, sequence_nums.count(GG_UINT64_C(0x0123456789ABB))); | |
| 808 EXPECT_EQ(1u, sequence_nums.count(GG_UINT64_C(0x0123456789ABA))); | |
| 809 EXPECT_EQ(GG_UINT64_C(0x0123456789AA0), frame.sent_info.least_unacked); | |
| 810 ASSERT_EQ(3u, frame.sent_info.non_retransmiting.size()); | |
| 811 const SequenceSet& non_retrans = frame.sent_info.non_retransmiting; | |
| 812 EXPECT_EQ(1u, non_retrans.count(GG_UINT64_C(0x0123456789AB0))); | |
| 813 EXPECT_EQ(1u, non_retrans.count(GG_UINT64_C(0x0123456789AAF))); | |
| 814 EXPECT_EQ(1u, non_retrans.count(GG_UINT64_C(0x0123456789AAE))); | |
| 815 ASSERT_EQ(kInterArrival, frame.congestion_info.type); | 788 ASSERT_EQ(kInterArrival, frame.congestion_info.type); |
| 816 EXPECT_EQ(0x0302, frame.congestion_info.inter_arrival. | 789 EXPECT_EQ(0x0302, frame.congestion_info.inter_arrival. |
| 817 accumulated_number_of_lost_packets); | 790 accumulated_number_of_lost_packets); |
| 818 EXPECT_EQ(0x0504, frame.congestion_info.inter_arrival.offset_time); | 791 EXPECT_EQ(0x0504, frame.congestion_info.inter_arrival.offset_time); |
| 819 EXPECT_EQ(0x0706, frame.congestion_info.inter_arrival.delta_time); | 792 EXPECT_EQ(0x0706, frame.congestion_info.inter_arrival.delta_time); |
| 820 | 793 |
| 821 // Now test framing boundaries | 794 // Now test framing boundaries |
| 822 for (size_t i = kCongestionInfoOffset; i < kCongestionInfoOffset + 5; ++i) { | 795 for (size_t i = kCongestionInfoOffset; i < kCongestionInfoOffset + 5; ++i) { |
| 823 string expected_error; | 796 string expected_error; |
| 824 if (i < kCongestionInfoOffset + 1) { | 797 if (i < kCongestionInfoOffset + 1) { |
| (...skipping 23 matching lines...) Expand all Loading... |
| 848 0x34, 0x12, | 821 0x34, 0x12, |
| 849 // flags | 822 // flags |
| 850 0x00, | 823 0x00, |
| 851 // fec group | 824 // fec group |
| 852 0x00, | 825 0x00, |
| 853 | 826 |
| 854 // frame count | 827 // frame count |
| 855 0x01, | 828 0x01, |
| 856 // frame type (ack frame) | 829 // frame type (ack frame) |
| 857 0x02, | 830 0x02, |
| 858 // largest received packet sequence number | 831 // num_acked_packets |
| 859 0xBC, 0x9A, 0x78, 0x56, | 832 0x03, |
| 833 // smallest received packet sequence number |
| 834 0xBA, 0x9A, 0x78, 0x56, |
| 860 0x34, 0x12, | 835 0x34, 0x12, |
| 861 // time delta | 836 // time |
| 862 0x87, 0x96, 0xA5, 0xB4, | 837 0x87, 0x96, 0xA5, 0xB4, |
| 863 0xC3, 0xD2, 0xE1, 0x07, | 838 0xC3, 0xD2, 0xE1, 0x07, |
| 864 // num_unacked_packets | 839 // sequence delta |
| 865 0x02, | 840 0x01, |
| 866 // unacked packet sequence number | 841 // time delta |
| 867 0xBA, 0x9A, 0x78, 0x56, | 842 0x01, 0x00, 0x00, 0x00, |
| 868 0x34, 0x12, | 843 // sequence delta (skip one packet) |
| 869 // unacked packet sequence number | 844 0x03, |
| 870 0xBB, 0x9A, 0x78, 0x56, | 845 // time delta |
| 871 0x34, 0x12, | 846 0x02, 0x00, 0x00, 0x00, |
| 872 // least packet sequence number awaiting an ack | 847 // least packet sequence number awaiting an ack |
| 873 0xA0, 0x9A, 0x78, 0x56, | 848 0xA0, 0x9A, 0x78, 0x56, |
| 874 0x34, 0x12, | 849 0x34, 0x12, |
| 875 // num non retransmitting packets | |
| 876 0x03, | |
| 877 // non retransmitting packet sequence number | |
| 878 0xAE, 0x9A, 0x78, 0x56, | |
| 879 0x34, 0x12, | |
| 880 // non retransmitting packet sequence number | |
| 881 0xAF, 0x9A, 0x78, 0x56, | |
| 882 0x34, 0x12, | |
| 883 // non retransmitting packet sequence number | |
| 884 0xB0, 0x9A, 0x78, 0x56, | |
| 885 0x34, 0x12, | |
| 886 // congestion feedback type (fix rate) | 850 // congestion feedback type (fix rate) |
| 887 0x03, | 851 0x03, |
| 888 // bitrate_in_bytes_per_second; | 852 // bitrate_in_bytes_per_second; |
| 889 0x01, 0x02, 0x03, 0x04, | 853 0x01, 0x02, 0x03, 0x04, |
| 890 }; | 854 }; |
| 891 | 855 |
| 892 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); | 856 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); |
| 893 EXPECT_TRUE(framer_.ProcessPacket(self_address_, peer_address_, encrypted)); | 857 EXPECT_TRUE(framer_.ProcessPacket(self_address_, peer_address_, encrypted)); |
| 894 | 858 |
| 895 EXPECT_TRUE(CheckDecryption(StringPiece(AsChars(packet), arraysize(packet)))); | 859 EXPECT_TRUE(CheckDecryption(StringPiece(AsChars(packet), arraysize(packet)))); |
| 896 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 860 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 897 ASSERT_TRUE(visitor_.header_.get()); | 861 ASSERT_TRUE(visitor_.header_.get()); |
| 898 | 862 |
| 899 EXPECT_EQ(0u, visitor_.stream_frames_.size()); | 863 EXPECT_EQ(0u, visitor_.stream_frames_.size()); |
| 900 ASSERT_EQ(1u, visitor_.ack_frames_.size()); | 864 ASSERT_EQ(1u, visitor_.ack_frames_.size()); |
| 901 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; | 865 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; |
| 902 EXPECT_EQ(GG_UINT64_C(0x0123456789ABC), | 866 ASSERT_EQ(3u, frame.received_info.received_packet_times.size()); |
| 903 frame.received_info.largest_received); | 867 map<QuicPacketSequenceNumber, QuicTime>::const_iterator iter = |
| 904 EXPECT_EQ(QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59687)), | 868 frame.received_info.received_packet_times.begin(); |
| 905 frame.received_info.time_received); | 869 EXPECT_EQ(GG_UINT64_C(0x0123456789ABA), iter->first); |
| 906 | 870 EXPECT_EQ(QuicTime::FromMicroseconds(0x07E1D2C3B4A59687), iter->second); |
| 907 const SequenceSet& sequence_nums = frame.received_info.missing_packets; | 871 ++iter; |
| 908 ASSERT_EQ(2u, sequence_nums.size()); | 872 EXPECT_EQ(GG_UINT64_C(0x0123456789ABB), iter->first); |
| 909 EXPECT_EQ(1u, sequence_nums.count(GG_UINT64_C(0x0123456789ABB))); | 873 EXPECT_EQ(QuicTime::FromMicroseconds(0x07E1D2C3B4A59688), iter->second); |
| 910 EXPECT_EQ(1u, sequence_nums.count(GG_UINT64_C(0x0123456789ABA))); | 874 ++iter; |
| 911 EXPECT_EQ(GG_UINT64_C(0x0123456789AA0), frame.sent_info.least_unacked); | 875 EXPECT_EQ(GG_UINT64_C(0x0123456789ABD), iter->first); |
| 912 ASSERT_EQ(3u, frame.sent_info.non_retransmiting.size()); | 876 EXPECT_EQ(QuicTime::FromMicroseconds(0x07E1D2C3B4A59689), iter->second); |
| 913 const SequenceSet& non_retrans = frame.sent_info.non_retransmiting; | 877 EXPECT_EQ(GG_UINT64_C(0x0123456789AA0), |
| 914 EXPECT_EQ(1u, non_retrans.count(GG_UINT64_C(0x0123456789AB0))); | 878 frame.sent_info.least_unacked); |
| 915 EXPECT_EQ(1u, non_retrans.count(GG_UINT64_C(0x0123456789AAF))); | |
| 916 EXPECT_EQ(1u, non_retrans.count(GG_UINT64_C(0x0123456789AAE))); | |
| 917 ASSERT_EQ(kFixRate, frame.congestion_info.type); | 879 ASSERT_EQ(kFixRate, frame.congestion_info.type); |
| 918 EXPECT_EQ(static_cast<uint32>(0x04030201), | 880 EXPECT_EQ(static_cast<uint32>(0x04030201), |
| 919 frame.congestion_info.fix_rate.bitrate_in_bytes_per_second); | 881 frame.congestion_info.fix_rate.bitrate_in_bytes_per_second); |
| 920 | 882 |
| 921 // Now test framing boundaries | 883 // Now test framing boundaries |
| 922 for (size_t i = kCongestionInfoOffset; i < kCongestionInfoOffset + 5; ++i) { | 884 for (size_t i = kCongestionInfoOffset; i < kCongestionInfoOffset + 5; ++i) { |
| 923 string expected_error; | 885 string expected_error; |
| 924 if (i < kCongestionInfoOffset + 1) { | 886 if (i < kCongestionInfoOffset + 1) { |
| 925 expected_error = "Unable to read congestion info type."; | 887 expected_error = "Unable to read congestion info type."; |
| 926 } else if (i < kCongestionInfoOffset + 5) { | 888 } else if (i < kCongestionInfoOffset + 5) { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 945 0x34, 0x12, | 907 0x34, 0x12, |
| 946 // flags | 908 // flags |
| 947 0x00, | 909 0x00, |
| 948 // fec group | 910 // fec group |
| 949 0x00, | 911 0x00, |
| 950 | 912 |
| 951 // frame count | 913 // frame count |
| 952 0x01, | 914 0x01, |
| 953 // frame type (ack frame) | 915 // frame type (ack frame) |
| 954 0x02, | 916 0x02, |
| 955 // largest received packet sequence number | 917 // num_acked_packets |
| 956 0xBC, 0x9A, 0x78, 0x56, | 918 0x03, |
| 919 // smallest received packet sequence number |
| 920 0xBA, 0x9A, 0x78, 0x56, |
| 957 0x34, 0x12, | 921 0x34, 0x12, |
| 958 // time delta | 922 // time |
| 959 0x87, 0x96, 0xA5, 0xB4, | 923 0x87, 0x96, 0xA5, 0xB4, |
| 960 0xC3, 0xD2, 0xE1, 0x07, | 924 0xC3, 0xD2, 0xE1, 0x07, |
| 961 // num_unacked_packets | 925 // sequence delta |
| 962 0x02, | 926 0x01, |
| 963 // unacked packet sequence number | 927 // time delta |
| 964 0xBA, 0x9A, 0x78, 0x56, | 928 0x01, 0x00, 0x00, 0x00, |
| 965 0x34, 0x12, | 929 // sequence delta (skip one packet) |
| 966 // unacked packet sequence number | 930 0x03, |
| 967 0xBB, 0x9A, 0x78, 0x56, | 931 // time delta |
| 968 0x34, 0x12, | 932 0x02, 0x00, 0x00, 0x00, |
| 969 // least packet sequence number awaiting an ack | 933 // least packet sequence number awaiting an ack |
| 970 0xA0, 0x9A, 0x78, 0x56, | 934 0xA0, 0x9A, 0x78, 0x56, |
| 971 0x34, 0x12, | 935 0x34, 0x12, |
| 972 // num non retransmitting packets | |
| 973 0x03, | |
| 974 // non retransmitting packet sequence number | |
| 975 0xAE, 0x9A, 0x78, 0x56, | |
| 976 0x34, 0x12, | |
| 977 // non retransmitting packet sequence number | |
| 978 0xAF, 0x9A, 0x78, 0x56, | |
| 979 0x34, 0x12, | |
| 980 // non retransmitting packet sequence number | |
| 981 0xB0, 0x9A, 0x78, 0x56, | |
| 982 0x34, 0x12, | |
| 983 // congestion feedback type (invalid) | 936 // congestion feedback type (invalid) |
| 984 0x04, | 937 0x04, |
| 985 }; | 938 }; |
| 986 | 939 |
| 987 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); | 940 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); |
| 988 EXPECT_FALSE(framer_.ProcessPacket(self_address_, peer_address_, encrypted)); | 941 EXPECT_FALSE(framer_.ProcessPacket(self_address_, peer_address_, encrypted)); |
| 989 EXPECT_TRUE(CheckDecryption(StringPiece(AsChars(packet), arraysize(packet)))); | 942 EXPECT_TRUE(CheckDecryption(StringPiece(AsChars(packet), arraysize(packet)))); |
| 990 EXPECT_EQ(QUIC_INVALID_FRAME_DATA, framer_.error()); | 943 EXPECT_EQ(QUIC_INVALID_FRAME_DATA, framer_.error()); |
| 991 } | 944 } |
| 992 | 945 |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1081 | 1034 |
| 1082 // error details length | 1035 // error details length |
| 1083 0x0d, 0x00, | 1036 0x0d, 0x00, |
| 1084 // error details | 1037 // error details |
| 1085 'b', 'e', 'c', 'a', | 1038 'b', 'e', 'c', 'a', |
| 1086 'u', 's', 'e', ' ', | 1039 'u', 's', 'e', ' ', |
| 1087 'I', ' ', 'c', 'a', | 1040 'I', ' ', 'c', 'a', |
| 1088 'n', | 1041 'n', |
| 1089 | 1042 |
| 1090 // Ack frame. | 1043 // Ack frame. |
| 1091 | 1044 // num_acked_packets |
| 1092 // largest received packet sequence number | 1045 0x03, |
| 1093 0xBC, 0x9A, 0x78, 0x56, | 1046 // smallest received packet sequence number |
| 1047 0xBA, 0x9A, 0x78, 0x56, |
| 1094 0x34, 0x12, | 1048 0x34, 0x12, |
| 1095 // time delta | 1049 // time |
| 1096 0x87, 0x96, 0xA5, 0xB4, | 1050 0x87, 0x96, 0xA5, 0xB4, |
| 1097 0xC3, 0xD2, 0xE1, 0x07, | 1051 0xC3, 0xD2, 0xE1, 0x07, |
| 1098 // num_unacked_packets | 1052 // sequence delta |
| 1099 0x02, | 1053 0x01, |
| 1100 // unacked packet sequence number | 1054 // time delta |
| 1101 0xBA, 0x9A, 0x78, 0x56, | 1055 0x01, 0x00, 0x00, 0x00, |
| 1102 0x34, 0x12, | 1056 // sequence delta (skip one packet) |
| 1103 // unacked packet sequence number | 1057 0x03, |
| 1104 0xBB, 0x9A, 0x78, 0x56, | 1058 // time delta |
| 1105 0x34, 0x12, | 1059 0x02, 0x00, 0x00, 0x00, |
| 1106 // least packet sequence number awaiting an ack | 1060 // least packet sequence number awaiting an ack |
| 1107 0xA0, 0x9A, 0x78, 0x56, | 1061 0xA0, 0x9A, 0x78, 0x56, |
| 1108 0x34, 0x12, | 1062 0x34, 0x12, |
| 1109 // num non retransmitting packets | |
| 1110 0x03, | |
| 1111 // non retransmitting packet sequence number | |
| 1112 0xAE, 0x9A, 0x78, 0x56, | |
| 1113 0x34, 0x12, | |
| 1114 // non retransmitting packet sequence number | |
| 1115 0xAF, 0x9A, 0x78, 0x56, | |
| 1116 0x34, 0x12, | |
| 1117 // non retransmitting packet sequence number | |
| 1118 0xB0, 0x9A, 0x78, 0x56, | |
| 1119 0x34, 0x12, | |
| 1120 // congestion feedback type (inter arrival) | 1063 // congestion feedback type (inter arrival) |
| 1121 0x02, | 1064 0x02, |
| 1122 // accumulated_number_of_lost_packets | 1065 // accumulated_number_of_lost_packets |
| 1123 0x02, 0x03, | 1066 0x02, 0x03, |
| 1124 // offset_time | 1067 // offset_time |
| 1125 0x04, 0x05, | 1068 0x04, 0x05, |
| 1126 // delta_time | 1069 // delta_time |
| 1127 0x06, 0x07, | 1070 0x06, 0x07, |
| 1128 }; | 1071 }; |
| 1129 | 1072 |
| 1130 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); | 1073 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); |
| 1131 EXPECT_TRUE(framer_.ProcessPacket(self_address_, peer_address_, encrypted)); | 1074 EXPECT_TRUE(framer_.ProcessPacket(self_address_, peer_address_, encrypted)); |
| 1132 | 1075 |
| 1133 EXPECT_TRUE(CheckDecryption(StringPiece(AsChars(packet), arraysize(packet)))); | 1076 EXPECT_TRUE(CheckDecryption(StringPiece(AsChars(packet), arraysize(packet)))); |
| 1134 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); | 1077 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); |
| 1135 ASSERT_TRUE(visitor_.header_.get()); | 1078 ASSERT_TRUE(visitor_.header_.get()); |
| 1136 | 1079 |
| 1137 EXPECT_EQ(0u, visitor_.stream_frames_.size()); | 1080 EXPECT_EQ(0u, visitor_.stream_frames_.size()); |
| 1138 | 1081 |
| 1139 EXPECT_EQ(0x05060708, visitor_.connection_close_frame_.error_code); | 1082 EXPECT_EQ(0x05060708, visitor_.connection_close_frame_.error_code); |
| 1140 EXPECT_EQ("because I can", visitor_.connection_close_frame_.error_details); | 1083 EXPECT_EQ("because I can", visitor_.connection_close_frame_.error_details); |
| 1141 | 1084 |
| 1142 ASSERT_EQ(1u, visitor_.ack_frames_.size()); | 1085 ASSERT_EQ(1u, visitor_.ack_frames_.size()); |
| 1143 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; | 1086 const QuicAckFrame& frame = *visitor_.ack_frames_[0]; |
| 1144 EXPECT_EQ(GG_UINT64_C(0x0123456789ABC), | 1087 ASSERT_EQ(3u, frame.received_info.received_packet_times.size()); |
| 1145 frame.received_info.largest_received); | 1088 map<QuicPacketSequenceNumber, QuicTime>::const_iterator iter = |
| 1146 EXPECT_EQ(QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59687)), | 1089 frame.received_info.received_packet_times.begin(); |
| 1147 frame.received_info.time_received); | 1090 EXPECT_EQ(GG_UINT64_C(0x0123456789ABA), iter->first); |
| 1148 | 1091 EXPECT_EQ(QuicTime::FromMicroseconds(0x07E1D2C3B4A59687), iter->second); |
| 1149 const SequenceSet& sequence_nums = frame.received_info.missing_packets; | 1092 ++iter; |
| 1150 ASSERT_EQ(2u, sequence_nums.size()); | 1093 EXPECT_EQ(GG_UINT64_C(0x0123456789ABB), iter->first); |
| 1151 EXPECT_EQ(1u, sequence_nums.count(GG_UINT64_C(0x0123456789ABB))); | 1094 EXPECT_EQ(QuicTime::FromMicroseconds(0x07E1D2C3B4A59688), iter->second); |
| 1152 EXPECT_EQ(1u, sequence_nums.count(GG_UINT64_C(0x0123456789ABA))); | 1095 ++iter; |
| 1153 EXPECT_EQ(GG_UINT64_C(0x0123456789AA0), frame.sent_info.least_unacked); | 1096 EXPECT_EQ(GG_UINT64_C(0x0123456789ABD), iter->first); |
| 1154 ASSERT_EQ(3u, frame.sent_info.non_retransmiting.size()); | 1097 EXPECT_EQ(QuicTime::FromMicroseconds(0x07E1D2C3B4A59689), iter->second); |
| 1155 const SequenceSet& non_retrans = frame.sent_info.non_retransmiting; | 1098 EXPECT_EQ(GG_UINT64_C(0x0123456789AA0), |
| 1156 EXPECT_EQ(1u, non_retrans.count(GG_UINT64_C(0x0123456789AB0))); | 1099 frame.sent_info.least_unacked); |
| 1157 EXPECT_EQ(1u, non_retrans.count(GG_UINT64_C(0x0123456789AAF))); | |
| 1158 EXPECT_EQ(1u, non_retrans.count(GG_UINT64_C(0x0123456789AAE))); | |
| 1159 ASSERT_EQ(kInterArrival, frame.congestion_info.type); | 1100 ASSERT_EQ(kInterArrival, frame.congestion_info.type); |
| 1160 EXPECT_EQ(0x0302, frame.congestion_info.inter_arrival. | 1101 EXPECT_EQ(0x0302, frame.congestion_info.inter_arrival. |
| 1161 accumulated_number_of_lost_packets); | 1102 accumulated_number_of_lost_packets); |
| 1162 EXPECT_EQ(0x0504, | 1103 EXPECT_EQ(0x0504, |
| 1163 frame.congestion_info.inter_arrival.offset_time); | 1104 frame.congestion_info.inter_arrival.offset_time); |
| 1164 EXPECT_EQ(0x0706, | 1105 EXPECT_EQ(0x0706, |
| 1165 frame.congestion_info.inter_arrival.delta_time); | 1106 frame.congestion_info.inter_arrival.delta_time); |
| 1166 | 1107 |
| 1167 // Now test framing boundaries | 1108 // Now test framing boundaries |
| 1168 for (size_t i = kPacketHeaderSize + 3; i < kPacketHeaderSize + 21; ++i) { | 1109 for (size_t i = kPacketHeaderSize + 3; i < kPacketHeaderSize + 21; ++i) { |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1282 } | 1223 } |
| 1283 | 1224 |
| 1284 TEST_F(QuicFramerTest, ConstructAckFramePacket) { | 1225 TEST_F(QuicFramerTest, ConstructAckFramePacket) { |
| 1285 QuicPacketHeader header; | 1226 QuicPacketHeader header; |
| 1286 header.guid = GG_UINT64_C(0xFEDCBA9876543210); | 1227 header.guid = GG_UINT64_C(0xFEDCBA9876543210); |
| 1287 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); | 1228 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); |
| 1288 header.flags = PACKET_FLAGS_NONE; | 1229 header.flags = PACKET_FLAGS_NONE; |
| 1289 header.fec_group = 0; | 1230 header.fec_group = 0; |
| 1290 | 1231 |
| 1291 QuicAckFrame ack_frame; | 1232 QuicAckFrame ack_frame; |
| 1292 ack_frame.received_info.largest_received = GG_UINT64_C(0x0123456789ABC); | 1233 ack_frame.received_info.RecordAck( |
| 1293 ack_frame.received_info.time_received = | 1234 GG_UINT64_C(0x0123456789ABA), |
| 1294 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59687)); | 1235 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59687))); |
| 1295 ack_frame.received_info.missing_packets.insert( | 1236 ack_frame.received_info.RecordAck( |
| 1296 GG_UINT64_C(0x0123456789ABB)); | 1237 GG_UINT64_C(0x0123456789ABB), |
| 1297 ack_frame.received_info.missing_packets.insert( | 1238 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59688))); |
| 1298 GG_UINT64_C(0x0123456789ABA)); | 1239 ack_frame.received_info.RecordAck( |
| 1240 GG_UINT64_C(0x0123456789ABD), |
| 1241 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59689))); |
| 1299 ack_frame.sent_info.least_unacked = GG_UINT64_C(0x0123456789AA0); | 1242 ack_frame.sent_info.least_unacked = GG_UINT64_C(0x0123456789AA0); |
| 1300 ack_frame.sent_info.non_retransmiting.insert( | |
| 1301 GG_UINT64_C(0x0123456789AB0)); | |
| 1302 ack_frame.sent_info.non_retransmiting.insert( | |
| 1303 GG_UINT64_C(0x0123456789AAF)); | |
| 1304 ack_frame.sent_info.non_retransmiting.insert( | |
| 1305 GG_UINT64_C(0x0123456789AAE)); | |
| 1306 ack_frame.congestion_info.type = kNone; | 1243 ack_frame.congestion_info.type = kNone; |
| 1307 | 1244 |
| 1308 QuicFrame frame; | 1245 QuicFrame frame; |
| 1309 frame.type = ACK_FRAME; | 1246 frame.type = ACK_FRAME; |
| 1310 frame.ack_frame = &ack_frame; | 1247 frame.ack_frame = &ack_frame; |
| 1311 | 1248 |
| 1312 QuicFrames frames; | 1249 QuicFrames frames; |
| 1313 frames.push_back(frame); | 1250 frames.push_back(frame); |
| 1314 | 1251 |
| 1315 unsigned char packet[] = { | 1252 unsigned char packet[] = { |
| 1316 // guid | 1253 // guid |
| 1317 0x10, 0x32, 0x54, 0x76, | 1254 0x10, 0x32, 0x54, 0x76, |
| 1318 0x98, 0xBA, 0xDC, 0xFE, | 1255 0x98, 0xBA, 0xDC, 0xFE, |
| 1319 // packet id | 1256 // packet id |
| 1320 0xBC, 0x9A, 0x78, 0x56, | 1257 0xBC, 0x9A, 0x78, 0x56, |
| 1321 0x34, 0x12, | 1258 0x34, 0x12, |
| 1322 // flags | 1259 // flags |
| 1323 0x00, | 1260 0x00, |
| 1324 // fec group | 1261 // fec group |
| 1325 0x00, | 1262 0x00, |
| 1326 | 1263 |
| 1327 // frame count | 1264 // frame count |
| 1328 0x01, | 1265 0x01, |
| 1329 // frame type (ack frame) | 1266 // frame type (ack frame) |
| 1330 0x02, | 1267 0x02, |
| 1331 // largest received packet sequence number | 1268 // num_acked_packets |
| 1332 0xBC, 0x9A, 0x78, 0x56, | 1269 0x03, |
| 1270 // smallest received packet sequence number |
| 1271 0xBA, 0x9A, 0x78, 0x56, |
| 1333 0x34, 0x12, | 1272 0x34, 0x12, |
| 1334 // time delta | 1273 // time |
| 1335 0x87, 0x96, 0xA5, 0xB4, | 1274 0x87, 0x96, 0xA5, 0xB4, |
| 1336 0xC3, 0xD2, 0xE1, 0x07, | 1275 0xC3, 0xD2, 0xE1, 0x07, |
| 1337 // num_unacked_packets | 1276 // sequence delta |
| 1338 0x02, | 1277 0x01, |
| 1339 #if defined(OS_WIN) | 1278 // time delta |
| 1340 // Windows hash_set order is different. | 1279 0x01, 0x00, 0x00, 0x00, |
| 1341 // unacked packet sequence number | 1280 // sequence delta (skip one packet) |
| 1342 0xBB, 0x9A, 0x78, 0x56, | 1281 0x03, |
| 1343 0x34, 0x12, | 1282 // time delta |
| 1344 // unacked packet sequence number | 1283 0x02, 0x00, 0x00, 0x00, |
| 1345 0xBA, 0x9A, 0x78, 0x56, | |
| 1346 0x34, 0x12, | |
| 1347 #else | |
| 1348 // unacked packet sequence number | |
| 1349 0xBA, 0x9A, 0x78, 0x56, | |
| 1350 0x34, 0x12, | |
| 1351 // unacked packet sequence number | |
| 1352 0xBB, 0x9A, 0x78, 0x56, | |
| 1353 0x34, 0x12, | |
| 1354 #endif | |
| 1355 // least packet sequence number awaiting an ack | 1284 // least packet sequence number awaiting an ack |
| 1356 0xA0, 0x9A, 0x78, 0x56, | 1285 0xA0, 0x9A, 0x78, 0x56, |
| 1357 0x34, 0x12, | 1286 0x34, 0x12, |
| 1358 // num non retransmitting packets | |
| 1359 0x03, | |
| 1360 #if defined(OS_WIN) | |
| 1361 // Windows hash_set order is different. | |
| 1362 // non retransmitting packet sequence number | |
| 1363 0xB0, 0x9A, 0x78, 0x56, | |
| 1364 0x34, 0x12, | |
| 1365 // non retransmitting packet sequence number | |
| 1366 0xAF, 0x9A, 0x78, 0x56, | |
| 1367 0x34, 0x12, | |
| 1368 // non retransmitting packet sequence number | |
| 1369 0xAE, 0x9A, 0x78, 0x56, | |
| 1370 0x34, 0x12, | |
| 1371 #else | |
| 1372 // non retransmitting packet sequence number | |
| 1373 0xAE, 0x9A, 0x78, 0x56, | |
| 1374 0x34, 0x12, | |
| 1375 // non retransmitting packet sequence number | |
| 1376 0xAF, 0x9A, 0x78, 0x56, | |
| 1377 0x34, 0x12, | |
| 1378 // non retransmitting packet sequence number | |
| 1379 0xB0, 0x9A, 0x78, 0x56, | |
| 1380 0x34, 0x12, | |
| 1381 #endif | |
| 1382 // congestion feedback type (none) | 1287 // congestion feedback type (none) |
| 1383 0x00, | 1288 0x00, |
| 1384 }; | 1289 }; |
| 1385 | 1290 |
| 1386 QuicPacket* data; | 1291 QuicPacket* data; |
| 1387 EXPECT_TRUE(framer_.ConstructFrameDataPacket(header, frames, &data)); | 1292 EXPECT_TRUE(framer_.ConstructFrameDataPacket(header, frames, &data)); |
| 1388 | 1293 |
| 1389 test::CompareCharArraysWithHexError("constructed packet", | 1294 test::CompareCharArraysWithHexError("constructed packet", |
| 1390 data->data(), data->length(), | 1295 data->data(), data->length(), |
| 1391 AsChars(packet), arraysize(packet)); | 1296 AsChars(packet), arraysize(packet)); |
| 1392 | 1297 |
| 1393 delete data; | 1298 delete data; |
| 1394 } | 1299 } |
| 1395 | 1300 |
| 1396 TEST_F(QuicFramerTest, ConstructAckFramePacketTCP) { | 1301 TEST_F(QuicFramerTest, ConstructAckFramePacketTCP) { |
| 1397 QuicPacketHeader header; | 1302 QuicPacketHeader header; |
| 1398 header.guid = GG_UINT64_C(0xFEDCBA9876543210); | 1303 header.guid = GG_UINT64_C(0xFEDCBA9876543210); |
| 1399 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); | 1304 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); |
| 1400 header.flags = PACKET_FLAGS_NONE; | 1305 header.flags = PACKET_FLAGS_NONE; |
| 1401 header.fec_group = 0; | 1306 header.fec_group = 0; |
| 1402 | 1307 |
| 1403 QuicAckFrame ack_frame; | 1308 QuicAckFrame ack_frame; |
| 1404 ack_frame.received_info.largest_received = GG_UINT64_C(0x0123456789ABC); | 1309 ack_frame.received_info.RecordAck( |
| 1405 ack_frame.received_info.time_received = | 1310 GG_UINT64_C(0x0123456789ABA), |
| 1406 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59687)); | 1311 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59687))); |
| 1407 ack_frame.received_info.missing_packets.insert( | 1312 ack_frame.received_info.RecordAck( |
| 1408 GG_UINT64_C(0x0123456789ABB)); | 1313 GG_UINT64_C(0x0123456789ABB), |
| 1409 ack_frame.received_info.missing_packets.insert( | 1314 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59688))); |
| 1410 GG_UINT64_C(0x0123456789ABA)); | 1315 ack_frame.received_info.RecordAck( |
| 1316 GG_UINT64_C(0x0123456789ABD), |
| 1317 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59689))); |
| 1411 ack_frame.sent_info.least_unacked = GG_UINT64_C(0x0123456789AA0); | 1318 ack_frame.sent_info.least_unacked = GG_UINT64_C(0x0123456789AA0); |
| 1412 ack_frame.sent_info.non_retransmiting.insert( | |
| 1413 GG_UINT64_C(0x0123456789AB0)); | |
| 1414 ack_frame.sent_info.non_retransmiting.insert( | |
| 1415 GG_UINT64_C(0x0123456789AAF)); | |
| 1416 ack_frame.sent_info.non_retransmiting.insert( | |
| 1417 GG_UINT64_C(0x0123456789AAE)); | |
| 1418 ack_frame.congestion_info.type = kTCP; | 1319 ack_frame.congestion_info.type = kTCP; |
| 1419 ack_frame.congestion_info.tcp.accumulated_number_of_lost_packets = 0x0201; | 1320 ack_frame.congestion_info.tcp.accumulated_number_of_lost_packets = 0x0201; |
| 1420 ack_frame.congestion_info.tcp.receive_window = 0x0403; | 1321 ack_frame.congestion_info.tcp.receive_window = 0x0403; |
| 1421 | 1322 |
| 1422 QuicFrame frame; | 1323 QuicFrame frame; |
| 1423 frame.type = ACK_FRAME; | 1324 frame.type = ACK_FRAME; |
| 1424 frame.ack_frame = &ack_frame; | 1325 frame.ack_frame = &ack_frame; |
| 1425 | 1326 |
| 1426 QuicFrames frames; | 1327 QuicFrames frames; |
| 1427 frames.push_back(frame); | 1328 frames.push_back(frame); |
| 1428 | 1329 |
| 1429 unsigned char packet[] = { | 1330 unsigned char packet[] = { |
| 1430 // guid | 1331 // guid |
| 1431 0x10, 0x32, 0x54, 0x76, | 1332 0x10, 0x32, 0x54, 0x76, |
| 1432 0x98, 0xBA, 0xDC, 0xFE, | 1333 0x98, 0xBA, 0xDC, 0xFE, |
| 1433 // packet id | 1334 // packet id |
| 1434 0xBC, 0x9A, 0x78, 0x56, | 1335 0xBC, 0x9A, 0x78, 0x56, |
| 1435 0x34, 0x12, | 1336 0x34, 0x12, |
| 1436 // flags | 1337 // flags |
| 1437 0x00, | 1338 0x00, |
| 1438 // fec group | 1339 // fec group |
| 1439 0x00, | 1340 0x00, |
| 1440 | 1341 |
| 1441 // frame count | 1342 // frame count |
| 1442 0x01, | 1343 0x01, |
| 1443 // frame type (ack frame) | 1344 // frame type (ack frame) |
| 1444 0x02, | 1345 0x02, |
| 1445 // largest received packet sequence number | 1346 // num_acked_packets |
| 1446 0xBC, 0x9A, 0x78, 0x56, | 1347 0x03, |
| 1348 // smallest received packet sequence number |
| 1349 0xBA, 0x9A, 0x78, 0x56, |
| 1447 0x34, 0x12, | 1350 0x34, 0x12, |
| 1448 // time delta | 1351 // time |
| 1449 0x87, 0x96, 0xA5, 0xB4, | 1352 0x87, 0x96, 0xA5, 0xB4, |
| 1450 0xC3, 0xD2, 0xE1, 0x07, | 1353 0xC3, 0xD2, 0xE1, 0x07, |
| 1451 // num_unacked_packets | 1354 // sequence delta |
| 1452 0x02, | 1355 0x01, |
| 1453 #if defined(OS_WIN) | 1356 // time delta |
| 1454 // Windows hash_set order is different. | 1357 0x01, 0x00, 0x00, 0x00, |
| 1455 // unacked packet sequence number | 1358 // sequence delta (skip one packet) |
| 1456 0xBB, 0x9A, 0x78, 0x56, | 1359 0x03, |
| 1457 0x34, 0x12, | 1360 // time delta |
| 1458 // unacked packet sequence number | 1361 0x02, 0x00, 0x00, 0x00, |
| 1459 0xBA, 0x9A, 0x78, 0x56, | |
| 1460 0x34, 0x12, | |
| 1461 #else | |
| 1462 // unacked packet sequence number | |
| 1463 0xBA, 0x9A, 0x78, 0x56, | |
| 1464 0x34, 0x12, | |
| 1465 // unacked packet sequence number | |
| 1466 0xBB, 0x9A, 0x78, 0x56, | |
| 1467 0x34, 0x12, | |
| 1468 #endif | |
| 1469 // least packet sequence number awaiting an ack | 1362 // least packet sequence number awaiting an ack |
| 1470 0xA0, 0x9A, 0x78, 0x56, | 1363 0xA0, 0x9A, 0x78, 0x56, |
| 1471 0x34, 0x12, | 1364 0x34, 0x12, |
| 1472 // num non retransmitting packets | |
| 1473 0x03, | |
| 1474 #if defined(OS_WIN) | |
| 1475 // Windows hash_set order is different. | |
| 1476 // non retransmitting packet sequence number | |
| 1477 0xB0, 0x9A, 0x78, 0x56, | |
| 1478 0x34, 0x12, | |
| 1479 // non retransmitting packet sequence number | |
| 1480 0xAF, 0x9A, 0x78, 0x56, | |
| 1481 0x34, 0x12, | |
| 1482 // non retransmitting packet sequence number | |
| 1483 0xAE, 0x9A, 0x78, 0x56, | |
| 1484 0x34, 0x12, | |
| 1485 #else | |
| 1486 // non retransmitting packet sequence number | |
| 1487 0xAE, 0x9A, 0x78, 0x56, | |
| 1488 0x34, 0x12, | |
| 1489 // non retransmitting packet sequence number | |
| 1490 0xAF, 0x9A, 0x78, 0x56, | |
| 1491 0x34, 0x12, | |
| 1492 // non retransmitting packet sequence number | |
| 1493 0xB0, 0x9A, 0x78, 0x56, | |
| 1494 0x34, 0x12, | |
| 1495 #endif | |
| 1496 // congestion feedback type (tcp) | 1365 // congestion feedback type (tcp) |
| 1497 0x01, | 1366 0x01, |
| 1498 // ack_frame.congestion_info.tcp.accumulated_number_of_lost_packets | 1367 // ack_frame.congestion_info.tcp.accumulated_number_of_lost_packets |
| 1499 0x01, 0x02, | 1368 0x01, 0x02, |
| 1500 // ack_frame.congestion_info.tcp.receive_window | 1369 // ack_frame.congestion_info.tcp.receive_window |
| 1501 0x03, 0x04, | 1370 0x03, 0x04, |
| 1502 }; | 1371 }; |
| 1503 | 1372 |
| 1504 QuicPacket* data; | 1373 QuicPacket* data; |
| 1505 EXPECT_TRUE(framer_.ConstructFrameDataPacket(header, frames, &data)); | 1374 EXPECT_TRUE(framer_.ConstructFrameDataPacket(header, frames, &data)); |
| 1506 | 1375 |
| 1507 test::CompareCharArraysWithHexError("constructed packet", | 1376 test::CompareCharArraysWithHexError("constructed packet", |
| 1508 data->data(), data->length(), | 1377 data->data(), data->length(), |
| 1509 AsChars(packet), arraysize(packet)); | 1378 AsChars(packet), arraysize(packet)); |
| 1510 | 1379 |
| 1511 delete data; | 1380 delete data; |
| 1512 } | 1381 } |
| 1513 | 1382 |
| 1514 TEST_F(QuicFramerTest, ConstructAckFramePacketInterArrival) { | 1383 TEST_F(QuicFramerTest, ConstructAckFramePacketInterArrival) { |
| 1515 QuicPacketHeader header; | 1384 QuicPacketHeader header; |
| 1516 header.guid = GG_UINT64_C(0xFEDCBA9876543210); | 1385 header.guid = GG_UINT64_C(0xFEDCBA9876543210); |
| 1517 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); | 1386 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); |
| 1518 header.flags = PACKET_FLAGS_NONE; | 1387 header.flags = PACKET_FLAGS_NONE; |
| 1519 header.fec_group = 0; | 1388 header.fec_group = 0; |
| 1520 | 1389 |
| 1521 QuicAckFrame ack_frame; | 1390 QuicAckFrame ack_frame; |
| 1522 ack_frame.received_info.largest_received = GG_UINT64_C(0x0123456789ABC); | 1391 ack_frame.received_info.RecordAck( |
| 1523 ack_frame.received_info.time_received = | 1392 GG_UINT64_C(0x0123456789ABA), |
| 1524 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59687)); | 1393 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59687))); |
| 1525 ack_frame.received_info.missing_packets.insert( | 1394 ack_frame.received_info.RecordAck( |
| 1526 GG_UINT64_C(0x0123456789ABB)); | 1395 GG_UINT64_C(0x0123456789ABB), |
| 1527 ack_frame.received_info.missing_packets.insert( | 1396 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59688))); |
| 1528 GG_UINT64_C(0x0123456789ABA)); | 1397 ack_frame.received_info.RecordAck( |
| 1398 GG_UINT64_C(0x0123456789ABD), |
| 1399 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59689))); |
| 1529 ack_frame.sent_info.least_unacked = GG_UINT64_C(0x0123456789AA0); | 1400 ack_frame.sent_info.least_unacked = GG_UINT64_C(0x0123456789AA0); |
| 1530 ack_frame.sent_info.non_retransmiting.insert( | |
| 1531 GG_UINT64_C(0x0123456789AB0)); | |
| 1532 ack_frame.sent_info.non_retransmiting.insert( | |
| 1533 GG_UINT64_C(0x0123456789AAF)); | |
| 1534 ack_frame.sent_info.non_retransmiting.insert( | |
| 1535 GG_UINT64_C(0x0123456789AAE)); | |
| 1536 ack_frame.congestion_info.type = kInterArrival; | 1401 ack_frame.congestion_info.type = kInterArrival; |
| 1537 ack_frame.congestion_info.inter_arrival.accumulated_number_of_lost_packets | 1402 ack_frame.congestion_info.inter_arrival.accumulated_number_of_lost_packets |
| 1538 = 0x0302; | 1403 = 0x0302; |
| 1539 ack_frame.congestion_info.inter_arrival.offset_time = 0x0504; | 1404 ack_frame.congestion_info.inter_arrival.offset_time = 0x0504; |
| 1540 ack_frame.congestion_info.inter_arrival.delta_time = 0x0706; | 1405 ack_frame.congestion_info.inter_arrival.delta_time = 0x0706; |
| 1541 | 1406 |
| 1542 QuicFrame frame; | 1407 QuicFrame frame; |
| 1543 frame.type = ACK_FRAME; | 1408 frame.type = ACK_FRAME; |
| 1544 frame.ack_frame = &ack_frame; | 1409 frame.ack_frame = &ack_frame; |
| 1545 | 1410 |
| 1546 QuicFrames frames; | 1411 QuicFrames frames; |
| 1547 frames.push_back(frame); | 1412 frames.push_back(frame); |
| 1548 | 1413 |
| 1549 unsigned char packet[] = { | 1414 unsigned char packet[] = { |
| 1550 // guid | 1415 // guid |
| 1551 0x10, 0x32, 0x54, 0x76, | 1416 0x10, 0x32, 0x54, 0x76, |
| 1552 0x98, 0xBA, 0xDC, 0xFE, | 1417 0x98, 0xBA, 0xDC, 0xFE, |
| 1553 // packet id | 1418 // packet id |
| 1554 0xBC, 0x9A, 0x78, 0x56, | 1419 0xBC, 0x9A, 0x78, 0x56, |
| 1555 0x34, 0x12, | 1420 0x34, 0x12, |
| 1556 // flags | 1421 // flags |
| 1557 0x00, | 1422 0x00, |
| 1558 // fec group | 1423 // fec group |
| 1559 0x00, | 1424 0x00, |
| 1560 | 1425 |
| 1561 // frame count | 1426 // frame count |
| 1562 0x01, | 1427 0x01, |
| 1563 // frame type (ack frame) | 1428 // frame type (ack frame) |
| 1564 0x02, | 1429 0x02, |
| 1565 // largest received packet sequence number | 1430 // num_acked_packets |
| 1566 0xBC, 0x9A, 0x78, 0x56, | 1431 0x03, |
| 1432 // smallest received packet sequence number |
| 1433 0xBA, 0x9A, 0x78, 0x56, |
| 1567 0x34, 0x12, | 1434 0x34, 0x12, |
| 1568 // time delta | 1435 // time |
| 1569 0x87, 0x96, 0xA5, 0xB4, | 1436 0x87, 0x96, 0xA5, 0xB4, |
| 1570 0xC3, 0xD2, 0xE1, 0x07, | 1437 0xC3, 0xD2, 0xE1, 0x07, |
| 1571 // num_unacked_packets | 1438 // sequence delta |
| 1572 0x02, | 1439 0x01, |
| 1573 #if defined(OS_WIN) | 1440 // time delta |
| 1574 // Windows hash_set order is different. | 1441 0x01, 0x00, 0x00, 0x00, |
| 1575 // unacked packet sequence number | 1442 // sequence delta (skip one packet) |
| 1576 0xBB, 0x9A, 0x78, 0x56, | 1443 0x03, |
| 1577 0x34, 0x12, | 1444 // time delta |
| 1578 // unacked packet sequence number | 1445 0x02, 0x00, 0x00, 0x00, |
| 1579 0xBA, 0x9A, 0x78, 0x56, | |
| 1580 0x34, 0x12, | |
| 1581 #else | |
| 1582 // unacked packet sequence number | |
| 1583 0xBA, 0x9A, 0x78, 0x56, | |
| 1584 0x34, 0x12, | |
| 1585 // unacked packet sequence number | |
| 1586 0xBB, 0x9A, 0x78, 0x56, | |
| 1587 0x34, 0x12, | |
| 1588 #endif | |
| 1589 // least packet sequence number awaiting an ack | 1446 // least packet sequence number awaiting an ack |
| 1590 0xA0, 0x9A, 0x78, 0x56, | 1447 0xA0, 0x9A, 0x78, 0x56, |
| 1591 0x34, 0x12, | 1448 0x34, 0x12, |
| 1592 // num non retransmitting packets | |
| 1593 0x03, | |
| 1594 #if defined(OS_WIN) | |
| 1595 // Windows hash_set order is different. | |
| 1596 // non retransmitting packet sequence number | |
| 1597 0xB0, 0x9A, 0x78, 0x56, | |
| 1598 0x34, 0x12, | |
| 1599 // non retransmitting packet sequence number | |
| 1600 0xAF, 0x9A, 0x78, 0x56, | |
| 1601 0x34, 0x12, | |
| 1602 // non retransmitting packet sequence number | |
| 1603 0xAE, 0x9A, 0x78, 0x56, | |
| 1604 0x34, 0x12, | |
| 1605 #else | |
| 1606 // non retransmitting packet sequence number | |
| 1607 0xAE, 0x9A, 0x78, 0x56, | |
| 1608 0x34, 0x12, | |
| 1609 // non retransmitting packet sequence number | |
| 1610 0xAF, 0x9A, 0x78, 0x56, | |
| 1611 0x34, 0x12, | |
| 1612 // non retransmitting packet sequence number | |
| 1613 0xB0, 0x9A, 0x78, 0x56, | |
| 1614 0x34, 0x12, | |
| 1615 #endif | |
| 1616 // congestion feedback type (inter arrival) | 1449 // congestion feedback type (inter arrival) |
| 1617 0x02, | 1450 0x02, |
| 1618 // accumulated_number_of_lost_packets | 1451 // accumulated_number_of_lost_packets |
| 1619 0x02, 0x03, | 1452 0x02, 0x03, |
| 1620 // offset_time | 1453 // offset_time |
| 1621 0x04, 0x05, | 1454 0x04, 0x05, |
| 1622 // delta_time | 1455 // delta_time |
| 1623 0x06, 0x07, | 1456 0x06, 0x07, |
| 1624 }; | 1457 }; |
| 1625 | 1458 |
| 1626 QuicPacket* data; | 1459 QuicPacket* data; |
| 1627 EXPECT_TRUE(framer_.ConstructFrameDataPacket(header, frames, &data)); | 1460 EXPECT_TRUE(framer_.ConstructFrameDataPacket(header, frames, &data)); |
| 1628 | 1461 |
| 1629 test::CompareCharArraysWithHexError("constructed packet", | 1462 test::CompareCharArraysWithHexError("constructed packet", |
| 1630 data->data(), data->length(), | 1463 data->data(), data->length(), |
| 1631 AsChars(packet), arraysize(packet)); | 1464 AsChars(packet), arraysize(packet)); |
| 1632 | 1465 |
| 1633 delete data; | 1466 delete data; |
| 1634 } | 1467 } |
| 1635 | 1468 |
| 1636 TEST_F(QuicFramerTest, ConstructAckFramePacketFixRate) { | 1469 TEST_F(QuicFramerTest, ConstructAckFramePacketFixRate) { |
| 1637 QuicPacketHeader header; | 1470 QuicPacketHeader header; |
| 1638 header.guid = GG_UINT64_C(0xFEDCBA9876543210); | 1471 header.guid = GG_UINT64_C(0xFEDCBA9876543210); |
| 1639 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); | 1472 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); |
| 1640 header.flags = PACKET_FLAGS_NONE; | 1473 header.flags = PACKET_FLAGS_NONE; |
| 1641 header.fec_group = 0; | 1474 header.fec_group = 0; |
| 1642 | 1475 |
| 1643 QuicAckFrame ack_frame; | 1476 QuicAckFrame ack_frame; |
| 1644 ack_frame.received_info.largest_received = GG_UINT64_C(0x0123456789ABC); | 1477 ack_frame.received_info.RecordAck( |
| 1645 ack_frame.received_info.time_received = | 1478 GG_UINT64_C(0x0123456789ABA), |
| 1646 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59687)); | 1479 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59687))); |
| 1647 ack_frame.received_info.missing_packets.insert( | 1480 ack_frame.received_info.RecordAck( |
| 1648 GG_UINT64_C(0x0123456789ABB)); | 1481 GG_UINT64_C(0x0123456789ABB), |
| 1649 ack_frame.received_info.missing_packets.insert( | 1482 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59688))); |
| 1650 GG_UINT64_C(0x0123456789ABA)); | 1483 ack_frame.received_info.RecordAck( |
| 1484 GG_UINT64_C(0x0123456789ABD), |
| 1485 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59689))); |
| 1651 ack_frame.sent_info.least_unacked = GG_UINT64_C(0x0123456789AA0); | 1486 ack_frame.sent_info.least_unacked = GG_UINT64_C(0x0123456789AA0); |
| 1652 ack_frame.sent_info.non_retransmiting.insert( | |
| 1653 GG_UINT64_C(0x0123456789AB0)); | |
| 1654 ack_frame.sent_info.non_retransmiting.insert( | |
| 1655 GG_UINT64_C(0x0123456789AAF)); | |
| 1656 ack_frame.sent_info.non_retransmiting.insert( | |
| 1657 GG_UINT64_C(0x0123456789AAE)); | |
| 1658 ack_frame.congestion_info.type = kFixRate; | 1487 ack_frame.congestion_info.type = kFixRate; |
| 1659 ack_frame.congestion_info.fix_rate.bitrate_in_bytes_per_second | 1488 ack_frame.congestion_info.fix_rate.bitrate_in_bytes_per_second |
| 1660 = 0x04030201; | 1489 = 0x04030201; |
| 1661 | 1490 |
| 1662 QuicFrame frame; | 1491 QuicFrame frame; |
| 1663 frame.type = ACK_FRAME; | 1492 frame.type = ACK_FRAME; |
| 1664 frame.ack_frame = &ack_frame; | 1493 frame.ack_frame = &ack_frame; |
| 1665 | 1494 |
| 1666 QuicFrames frames; | 1495 QuicFrames frames; |
| 1667 frames.push_back(frame); | 1496 frames.push_back(frame); |
| 1668 | 1497 |
| 1669 unsigned char packet[] = { | 1498 unsigned char packet[] = { |
| 1670 // guid | 1499 // guid |
| 1671 0x10, 0x32, 0x54, 0x76, | 1500 0x10, 0x32, 0x54, 0x76, |
| 1672 0x98, 0xBA, 0xDC, 0xFE, | 1501 0x98, 0xBA, 0xDC, 0xFE, |
| 1673 // packet id | 1502 // packet id |
| 1674 0xBC, 0x9A, 0x78, 0x56, | 1503 0xBC, 0x9A, 0x78, 0x56, |
| 1675 0x34, 0x12, | 1504 0x34, 0x12, |
| 1676 // flags | 1505 // flags |
| 1677 0x00, | 1506 0x00, |
| 1678 // fec group | 1507 // fec group |
| 1679 0x00, | 1508 0x00, |
| 1680 | 1509 |
| 1681 // frame count | 1510 // frame count |
| 1682 0x01, | 1511 0x01, |
| 1683 // frame type (ack frame) | 1512 // frame type (ack frame) |
| 1684 0x02, | 1513 0x02, |
| 1685 // largest received packet sequence number | 1514 // num_acked_packets |
| 1686 0xBC, 0x9A, 0x78, 0x56, | 1515 0x03, |
| 1516 // smallest received packet sequence number |
| 1517 0xBA, 0x9A, 0x78, 0x56, |
| 1687 0x34, 0x12, | 1518 0x34, 0x12, |
| 1688 // time delta | 1519 // time |
| 1689 0x87, 0x96, 0xA5, 0xB4, | 1520 0x87, 0x96, 0xA5, 0xB4, |
| 1690 0xC3, 0xD2, 0xE1, 0x07, | 1521 0xC3, 0xD2, 0xE1, 0x07, |
| 1691 // num_unacked_packets | 1522 // sequence delta |
| 1692 0x02, | 1523 0x01, |
| 1693 #if defined(OS_WIN) | 1524 // time delta |
| 1694 // Windows hash_set order is different. | 1525 0x01, 0x00, 0x00, 0x00, |
| 1695 // unacked packet sequence number | 1526 // sequence delta (skip one packet) |
| 1696 0xBB, 0x9A, 0x78, 0x56, | 1527 0x03, |
| 1697 0x34, 0x12, | 1528 // time delta |
| 1698 // unacked packet sequence number | 1529 0x02, 0x00, 0x00, 0x00, |
| 1699 0xBA, 0x9A, 0x78, 0x56, | |
| 1700 0x34, 0x12, | |
| 1701 #else | |
| 1702 // unacked packet sequence number | |
| 1703 0xBA, 0x9A, 0x78, 0x56, | |
| 1704 0x34, 0x12, | |
| 1705 // unacked packet sequence number | |
| 1706 0xBB, 0x9A, 0x78, 0x56, | |
| 1707 0x34, 0x12, | |
| 1708 #endif | |
| 1709 // least packet sequence number awaiting an ack | 1530 // least packet sequence number awaiting an ack |
| 1710 0xA0, 0x9A, 0x78, 0x56, | 1531 0xA0, 0x9A, 0x78, 0x56, |
| 1711 0x34, 0x12, | 1532 0x34, 0x12, |
| 1712 // num non retransmitting packets | |
| 1713 0x03, | |
| 1714 #if defined(OS_WIN) | |
| 1715 // Windows hash_set order is different. | |
| 1716 // non retransmitting packet sequence number | |
| 1717 0xB0, 0x9A, 0x78, 0x56, | |
| 1718 0x34, 0x12, | |
| 1719 // non retransmitting packet sequence number | |
| 1720 0xAF, 0x9A, 0x78, 0x56, | |
| 1721 0x34, 0x12, | |
| 1722 // non retransmitting packet sequence number | |
| 1723 0xAE, 0x9A, 0x78, 0x56, | |
| 1724 0x34, 0x12, | |
| 1725 #else | |
| 1726 // non retransmitting packet sequence number | |
| 1727 0xAE, 0x9A, 0x78, 0x56, | |
| 1728 0x34, 0x12, | |
| 1729 // non retransmitting packet sequence number | |
| 1730 0xAF, 0x9A, 0x78, 0x56, | |
| 1731 0x34, 0x12, | |
| 1732 // non retransmitting packet sequence number | |
| 1733 0xB0, 0x9A, 0x78, 0x56, | |
| 1734 0x34, 0x12, | |
| 1735 #endif | |
| 1736 // congestion feedback type (fix rate) | 1533 // congestion feedback type (fix rate) |
| 1737 0x03, | 1534 0x03, |
| 1738 // bitrate_in_bytes_per_second; | 1535 // bitrate_in_bytes_per_second; |
| 1739 0x01, 0x02, 0x03, 0x04, | 1536 0x01, 0x02, 0x03, 0x04, |
| 1740 }; | 1537 }; |
| 1741 | 1538 |
| 1742 QuicPacket* data; | 1539 QuicPacket* data; |
| 1743 EXPECT_TRUE(framer_.ConstructFrameDataPacket(header, frames, &data)); | 1540 EXPECT_TRUE(framer_.ConstructFrameDataPacket(header, frames, &data)); |
| 1744 | 1541 |
| 1745 test::CompareCharArraysWithHexError("constructed packet", | 1542 test::CompareCharArraysWithHexError("constructed packet", |
| 1746 data->data(), data->length(), | 1543 data->data(), data->length(), |
| 1747 AsChars(packet), arraysize(packet)); | 1544 AsChars(packet), arraysize(packet)); |
| 1748 | 1545 |
| 1749 delete data; | 1546 delete data; |
| 1750 } | 1547 } |
| 1751 | 1548 |
| 1752 TEST_F(QuicFramerTest, ConstructAckFramePacketInvalidFeedback) { | 1549 TEST_F(QuicFramerTest, ConstructAckFramePacketInvalidFeedback) { |
| 1753 QuicPacketHeader header; | 1550 QuicPacketHeader header; |
| 1754 header.guid = GG_UINT64_C(0xFEDCBA9876543210); | 1551 header.guid = GG_UINT64_C(0xFEDCBA9876543210); |
| 1755 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); | 1552 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); |
| 1756 header.flags = PACKET_FLAGS_NONE; | 1553 header.flags = PACKET_FLAGS_NONE; |
| 1757 header.fec_group = 0; | 1554 header.fec_group = 0; |
| 1758 | 1555 |
| 1759 QuicAckFrame ack_frame; | 1556 QuicAckFrame ack_frame; |
| 1760 ack_frame.received_info.largest_received = GG_UINT64_C(0x0123456789ABC); | 1557 ack_frame.received_info.RecordAck( |
| 1761 ack_frame.received_info.time_received = | 1558 GG_UINT64_C(0x0123456789ABA), |
| 1762 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59687)); | 1559 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59687))); |
| 1763 ack_frame.received_info.missing_packets.insert( | 1560 ack_frame.received_info.RecordAck( |
| 1764 GG_UINT64_C(0x0123456789ABB)); | 1561 GG_UINT64_C(0x0123456789ABB), |
| 1765 ack_frame.received_info.missing_packets.insert( | 1562 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59688))); |
| 1766 GG_UINT64_C(0x0123456789ABA)); | 1563 ack_frame.received_info.RecordAck( |
| 1564 GG_UINT64_C(0x0123456789ABD), |
| 1565 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59689))); |
| 1767 ack_frame.sent_info.least_unacked = GG_UINT64_C(0x0123456789AA0); | 1566 ack_frame.sent_info.least_unacked = GG_UINT64_C(0x0123456789AA0); |
| 1768 ack_frame.sent_info.non_retransmiting.insert( | |
| 1769 GG_UINT64_C(0x0123456789AB0)); | |
| 1770 ack_frame.sent_info.non_retransmiting.insert( | |
| 1771 GG_UINT64_C(0x0123456789AAF)); | |
| 1772 ack_frame.sent_info.non_retransmiting.insert( | |
| 1773 GG_UINT64_C(0x0123456789AAE)); | |
| 1774 ack_frame.congestion_info.type = | 1567 ack_frame.congestion_info.type = |
| 1775 static_cast<CongestionFeedbackType>(kFixRate + 1); | 1568 static_cast<CongestionFeedbackType>(kFixRate + 1); |
| 1776 | 1569 |
| 1777 QuicFrame frame; | 1570 QuicFrame frame; |
| 1778 frame.type = ACK_FRAME; | 1571 frame.type = ACK_FRAME; |
| 1779 frame.ack_frame = &ack_frame; | 1572 frame.ack_frame = &ack_frame; |
| 1780 | 1573 |
| 1781 QuicFrames frames; | 1574 QuicFrames frames; |
| 1782 frames.push_back(frame); | 1575 frames.push_back(frame); |
| 1783 | 1576 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1850 header.guid = GG_UINT64_C(0xFEDCBA9876543210); | 1643 header.guid = GG_UINT64_C(0xFEDCBA9876543210); |
| 1851 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); | 1644 header.packet_sequence_number = GG_UINT64_C(0x123456789ABC); |
| 1852 header.flags = PACKET_FLAGS_NONE; | 1645 header.flags = PACKET_FLAGS_NONE; |
| 1853 header.fec_group = 0; | 1646 header.fec_group = 0; |
| 1854 | 1647 |
| 1855 QuicConnectionCloseFrame close_frame; | 1648 QuicConnectionCloseFrame close_frame; |
| 1856 close_frame.error_code = static_cast<QuicErrorCode>(0x05060708); | 1649 close_frame.error_code = static_cast<QuicErrorCode>(0x05060708); |
| 1857 close_frame.error_details = "because I can"; | 1650 close_frame.error_details = "because I can"; |
| 1858 | 1651 |
| 1859 QuicAckFrame* ack_frame = &close_frame.ack_frame; | 1652 QuicAckFrame* ack_frame = &close_frame.ack_frame; |
| 1860 ack_frame->received_info.largest_received = GG_UINT64_C(0x0123456789ABC); | 1653 ack_frame->received_info.RecordAck( |
| 1861 ack_frame->received_info.time_received = | 1654 GG_UINT64_C(0x0123456789ABA), |
| 1862 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59687)); | 1655 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59687))); |
| 1863 ack_frame->received_info.missing_packets.insert( | 1656 ack_frame->received_info.RecordAck( |
| 1864 GG_UINT64_C(0x0123456789ABB)); | 1657 GG_UINT64_C(0x0123456789ABB), |
| 1865 ack_frame->received_info.missing_packets.insert( | 1658 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59688))); |
| 1866 GG_UINT64_C(0x0123456789ABA)); | 1659 ack_frame->received_info.RecordAck( |
| 1660 GG_UINT64_C(0x0123456789ABD), |
| 1661 QuicTime::FromMicroseconds(GG_UINT64_C(0x07E1D2C3B4A59689))); |
| 1867 ack_frame->sent_info.least_unacked = GG_UINT64_C(0x0123456789AA0); | 1662 ack_frame->sent_info.least_unacked = GG_UINT64_C(0x0123456789AA0); |
| 1868 ack_frame->sent_info.non_retransmiting.insert( | |
| 1869 GG_UINT64_C(0x0123456789AB0)); | |
| 1870 ack_frame->sent_info.non_retransmiting.insert( | |
| 1871 GG_UINT64_C(0x0123456789AAF)); | |
| 1872 ack_frame->sent_info.non_retransmiting.insert( | |
| 1873 GG_UINT64_C(0x0123456789AAE)); | |
| 1874 ack_frame->congestion_info.type = kInterArrival; | 1663 ack_frame->congestion_info.type = kInterArrival; |
| 1875 ack_frame->congestion_info.inter_arrival.accumulated_number_of_lost_packets | 1664 ack_frame->congestion_info.inter_arrival.accumulated_number_of_lost_packets |
| 1876 = 0x0302; | 1665 = 0x0302; |
| 1877 ack_frame->congestion_info.inter_arrival.offset_time = 0x0504; | 1666 ack_frame->congestion_info.inter_arrival.offset_time = 0x0504; |
| 1878 ack_frame->congestion_info.inter_arrival.delta_time = 0x0706; | 1667 ack_frame->congestion_info.inter_arrival.delta_time = 0x0706; |
| 1879 | 1668 |
| 1880 QuicFrame frame(&close_frame); | 1669 QuicFrame frame(&close_frame); |
| 1881 | 1670 |
| 1882 QuicFrames frames; | 1671 QuicFrames frames; |
| 1883 frames.push_back(frame); | 1672 frames.push_back(frame); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1902 0x08, 0x07, 0x06, 0x05, | 1691 0x08, 0x07, 0x06, 0x05, |
| 1903 // error details length | 1692 // error details length |
| 1904 0x0d, 0x00, | 1693 0x0d, 0x00, |
| 1905 // error details | 1694 // error details |
| 1906 'b', 'e', 'c', 'a', | 1695 'b', 'e', 'c', 'a', |
| 1907 'u', 's', 'e', ' ', | 1696 'u', 's', 'e', ' ', |
| 1908 'I', ' ', 'c', 'a', | 1697 'I', ' ', 'c', 'a', |
| 1909 'n', | 1698 'n', |
| 1910 | 1699 |
| 1911 // Ack frame. | 1700 // Ack frame. |
| 1912 | 1701 // num_acked_packets |
| 1913 // largest received packet sequence number | 1702 0x03, |
| 1914 0xBC, 0x9A, 0x78, 0x56, | 1703 // smallest received packet sequence number |
| 1704 0xBA, 0x9A, 0x78, 0x56, |
| 1915 0x34, 0x12, | 1705 0x34, 0x12, |
| 1916 // time delta | 1706 // time |
| 1917 0x87, 0x96, 0xA5, 0xB4, | 1707 0x87, 0x96, 0xA5, 0xB4, |
| 1918 0xC3, 0xD2, 0xE1, 0x07, | 1708 0xC3, 0xD2, 0xE1, 0x07, |
| 1919 // num_unacked_packets | 1709 // sequence delta |
| 1920 0x02, | 1710 0x01, |
| 1921 #if defined(OS_WIN) | 1711 // time delta |
| 1922 // Windows hash_set order is different. | 1712 0x01, 0x00, 0x00, 0x00, |
| 1923 // unacked packet sequence number | 1713 // sequence delta (skip one packet) |
| 1924 0xBB, 0x9A, 0x78, 0x56, | 1714 0x03, |
| 1925 0x34, 0x12, | 1715 // time delta |
| 1926 // unacked packet sequence number | 1716 0x02, 0x00, 0x00, 0x00, |
| 1927 0xBA, 0x9A, 0x78, 0x56, | 1717 |
| 1928 0x34, 0x12, | |
| 1929 #else | |
| 1930 // unacked packet sequence number | |
| 1931 0xBA, 0x9A, 0x78, 0x56, | |
| 1932 0x34, 0x12, | |
| 1933 // unacked packet sequence number | |
| 1934 0xBB, 0x9A, 0x78, 0x56, | |
| 1935 0x34, 0x12, | |
| 1936 #endif | |
| 1937 // least packet sequence number awaiting an ack | 1718 // least packet sequence number awaiting an ack |
| 1938 0xA0, 0x9A, 0x78, 0x56, | 1719 0xA0, 0x9A, 0x78, 0x56, |
| 1939 0x34, 0x12, | 1720 0x34, 0x12, |
| 1940 // num non retransmitting packets | |
| 1941 0x03, | |
| 1942 #if defined(OS_WIN) | |
| 1943 // Windows hash_set order is different. | |
| 1944 // non retransmitting packet sequence number | |
| 1945 0xB0, 0x9A, 0x78, 0x56, | |
| 1946 0x34, 0x12, | |
| 1947 // non retransmitting packet sequence number | |
| 1948 0xAF, 0x9A, 0x78, 0x56, | |
| 1949 0x34, 0x12, | |
| 1950 // non retransmitting packet sequence number | |
| 1951 0xAE, 0x9A, 0x78, 0x56, | |
| 1952 0x34, 0x12, | |
| 1953 #else | |
| 1954 // non retransmitting packet sequence number | |
| 1955 0xAE, 0x9A, 0x78, 0x56, | |
| 1956 0x34, 0x12, | |
| 1957 // non retransmitting packet sequence number | |
| 1958 0xAF, 0x9A, 0x78, 0x56, | |
| 1959 0x34, 0x12, | |
| 1960 // non retransmitting packet sequence number | |
| 1961 0xB0, 0x9A, 0x78, 0x56, | |
| 1962 0x34, 0x12, | |
| 1963 #endif | |
| 1964 // congestion feedback type (inter arrival) | 1721 // congestion feedback type (inter arrival) |
| 1965 0x02, | 1722 0x02, |
| 1966 // accumulated_number_of_lost_packets | 1723 // accumulated_number_of_lost_packets |
| 1967 0x02, 0x03, | 1724 0x02, 0x03, |
| 1968 // offset_time | 1725 // offset_time |
| 1969 0x04, 0x05, | 1726 0x04, 0x05, |
| 1970 // delta_time | 1727 // delta_time |
| 1971 0x06, 0x07, | 1728 0x06, 0x07, |
| 1972 }; | 1729 }; |
| 1973 | 1730 |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2050 QuicPacket raw(AsChars(packet), arraysize(packet), false, PACKET_FLAGS_NONE); | 1807 QuicPacket raw(AsChars(packet), arraysize(packet), false, PACKET_FLAGS_NONE); |
| 2051 scoped_ptr<QuicEncryptedPacket> encrypted(framer_.EncryptPacket(raw)); | 1808 scoped_ptr<QuicEncryptedPacket> encrypted(framer_.EncryptPacket(raw)); |
| 2052 | 1809 |
| 2053 ASSERT_TRUE(encrypted.get() != NULL); | 1810 ASSERT_TRUE(encrypted.get() != NULL); |
| 2054 EXPECT_TRUE(CheckEncryption(StringPiece(AsChars(packet), arraysize(packet)))); | 1811 EXPECT_TRUE(CheckEncryption(StringPiece(AsChars(packet), arraysize(packet)))); |
| 2055 } | 1812 } |
| 2056 | 1813 |
| 2057 } // namespace test | 1814 } // namespace test |
| 2058 | 1815 |
| 2059 } // namespace net | 1816 } // namespace net |
| OLD | NEW |