| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/quic/quic_unacked_packet_map.h" | 5 #include "net/quic/quic_unacked_packet_map.h" |
| 6 | 6 |
| 7 #include "net/quic/test_tools/quic_test_utils.h" | 7 #include "net/quic/test_tools/quic_test_utils.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
| 9 | 9 |
| 10 using std::min; | 10 using std::min; |
| 11 using std::vector; |
| 11 | 12 |
| 12 namespace net { | 13 namespace net { |
| 13 namespace test { | 14 namespace test { |
| 14 namespace { | 15 namespace { |
| 15 | 16 |
| 16 // Default packet length. | 17 // Default packet length. |
| 17 const uint32 kDefaultAckLength = 50; | 18 const uint32 kDefaultAckLength = 50; |
| 18 const uint32 kDefaultLength = 1000; | 19 const uint32 kDefaultLength = 1000; |
| 19 | 20 |
| 20 class QuicUnackedPacketMapTest : public ::testing::Test { | 21 class QuicUnackedPacketMapTest : public ::testing::Test { |
| 21 protected: | 22 protected: |
| 22 QuicUnackedPacketMapTest() | 23 QuicUnackedPacketMapTest() |
| 23 : now_(QuicTime::Zero().Add(QuicTime::Delta::FromMilliseconds(1000))) { | 24 : now_(QuicTime::Zero().Add(QuicTime::Delta::FromMilliseconds(1000))) { |
| 24 } | 25 } |
| 25 | 26 |
| 27 ~QuicUnackedPacketMapTest() override { |
| 28 STLDeleteElements(&packets_); |
| 29 } |
| 30 |
| 26 SerializedPacket CreateRetransmittablePacket( | 31 SerializedPacket CreateRetransmittablePacket( |
| 27 QuicPacketSequenceNumber sequence_number) { | 32 QuicPacketSequenceNumber sequence_number) { |
| 33 packets_.push_back(QuicPacket::NewDataPacket( |
| 34 nullptr, kDefaultLength, false, PACKET_8BYTE_CONNECTION_ID, false, |
| 35 PACKET_1BYTE_SEQUENCE_NUMBER)); |
| 28 return SerializedPacket(sequence_number, PACKET_1BYTE_SEQUENCE_NUMBER, | 36 return SerializedPacket(sequence_number, PACKET_1BYTE_SEQUENCE_NUMBER, |
| 29 nullptr, 0, new RetransmittableFrames()); | 37 packets_.back(), 0, new RetransmittableFrames()); |
| 30 } | 38 } |
| 31 | 39 |
| 32 SerializedPacket CreateNonRetransmittablePacket( | 40 SerializedPacket CreateNonRetransmittablePacket( |
| 33 QuicPacketSequenceNumber sequence_number) { | 41 QuicPacketSequenceNumber sequence_number) { |
| 42 packets_.push_back(QuicPacket::NewDataPacket( |
| 43 nullptr, kDefaultLength, false, PACKET_8BYTE_CONNECTION_ID, false, |
| 44 PACKET_1BYTE_SEQUENCE_NUMBER)); |
| 34 return SerializedPacket(sequence_number, PACKET_1BYTE_SEQUENCE_NUMBER, | 45 return SerializedPacket(sequence_number, PACKET_1BYTE_SEQUENCE_NUMBER, |
| 35 nullptr, 0, nullptr); | 46 packets_.back(), 0, nullptr); |
| 36 } | 47 } |
| 37 | 48 |
| 38 void VerifyInFlightPackets(QuicPacketSequenceNumber* packets, | 49 void VerifyInFlightPackets(QuicPacketSequenceNumber* packets, |
| 39 size_t num_packets) { | 50 size_t num_packets) { |
| 40 unacked_packets_.RemoveObsoletePackets(); | 51 unacked_packets_.RemoveObsoletePackets(); |
| 41 if (num_packets == 0) { | 52 if (num_packets == 0) { |
| 42 EXPECT_FALSE(unacked_packets_.HasInFlightPackets()); | 53 EXPECT_FALSE(unacked_packets_.HasInFlightPackets()); |
| 43 EXPECT_FALSE(unacked_packets_.HasMultipleInFlightPackets()); | 54 EXPECT_FALSE(unacked_packets_.HasMultipleInFlightPackets()); |
| 44 return; | 55 return; |
| 45 } | 56 } |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 if (it->retransmittable_frames != nullptr) { | 98 if (it->retransmittable_frames != nullptr) { |
| 88 ++num_retransmittable_packets; | 99 ++num_retransmittable_packets; |
| 89 } | 100 } |
| 90 } | 101 } |
| 91 EXPECT_EQ(num_packets, num_retransmittable_packets); | 102 EXPECT_EQ(num_packets, num_retransmittable_packets); |
| 92 for (size_t i = 0; i < num_packets; ++i) { | 103 for (size_t i = 0; i < num_packets; ++i) { |
| 93 EXPECT_TRUE(unacked_packets_.HasRetransmittableFrames(packets[i])) | 104 EXPECT_TRUE(unacked_packets_.HasRetransmittableFrames(packets[i])) |
| 94 << " packets[" << i << "]:" << packets[i]; | 105 << " packets[" << i << "]:" << packets[i]; |
| 95 } | 106 } |
| 96 } | 107 } |
| 97 | 108 vector<QuicPacket*> packets_; |
| 98 QuicUnackedPacketMap unacked_packets_; | 109 QuicUnackedPacketMap unacked_packets_; |
| 99 QuicTime now_; | 110 QuicTime now_; |
| 100 }; | 111 }; |
| 101 | 112 |
| 102 TEST_F(QuicUnackedPacketMapTest, RttOnly) { | 113 TEST_F(QuicUnackedPacketMapTest, RttOnly) { |
| 103 // Acks are only tracked for RTT measurement purposes. | 114 // Acks are only tracked for RTT measurement purposes. |
| 104 unacked_packets_.AddSentPacket(CreateNonRetransmittablePacket(1), 0, | 115 unacked_packets_.AddSentPacket(CreateNonRetransmittablePacket(1), 0, |
| 105 NOT_RETRANSMISSION, now_, kDefaultAckLength, | 116 NOT_RETRANSMISSION, now_, kDefaultAckLength, |
| 106 false); | 117 false); |
| 107 | 118 |
| (...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 385 EXPECT_TRUE(unacked_packets_.IsUnacked(3)); | 396 EXPECT_TRUE(unacked_packets_.IsUnacked(3)); |
| 386 EXPECT_FALSE(unacked_packets_.IsUnacked(4)); | 397 EXPECT_FALSE(unacked_packets_.IsUnacked(4)); |
| 387 EXPECT_TRUE(unacked_packets_.IsUnacked(5)); | 398 EXPECT_TRUE(unacked_packets_.IsUnacked(5)); |
| 388 EXPECT_EQ(5u, unacked_packets_.largest_sent_packet()); | 399 EXPECT_EQ(5u, unacked_packets_.largest_sent_packet()); |
| 389 } | 400 } |
| 390 | 401 |
| 391 | 402 |
| 392 } // namespace | 403 } // namespace |
| 393 } // namespace test | 404 } // namespace test |
| 394 } // namespace net | 405 } // namespace net |
| OLD | NEW |