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