| 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 // Test for FixRate sender and receiver. | 5 // Test for FixRate sender and receiver. |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "net/quic/congestion_control/fix_rate_receiver.h" | 9 #include "net/quic/congestion_control/fix_rate_receiver.h" |
| 10 #include "net/quic/congestion_control/fix_rate_sender.h" | 10 #include "net/quic/congestion_control/fix_rate_sender.h" |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 | 56 |
| 57 TEST_F(FixRateTest, SenderAPI) { | 57 TEST_F(FixRateTest, SenderAPI) { |
| 58 QuicCongestionFeedbackFrame feedback; | 58 QuicCongestionFeedbackFrame feedback; |
| 59 feedback.type = kFixRate; | 59 feedback.type = kFixRate; |
| 60 feedback.fix_rate.bitrate = QuicBandwidth::FromKBytesPerSecond(300); | 60 feedback.fix_rate.bitrate = QuicBandwidth::FromKBytesPerSecond(300); |
| 61 sender_->OnIncomingQuicCongestionFeedbackFrame(feedback, clock_.Now(), | 61 sender_->OnIncomingQuicCongestionFeedbackFrame(feedback, clock_.Now(), |
| 62 unused_packet_map_); | 62 unused_packet_map_); |
| 63 EXPECT_EQ(300000, sender_->BandwidthEstimate().ToBytesPerSecond()); | 63 EXPECT_EQ(300000, sender_->BandwidthEstimate().ToBytesPerSecond()); |
| 64 EXPECT_TRUE(sender_->TimeUntilSend(clock_.Now(), | 64 EXPECT_TRUE(sender_->TimeUntilSend(clock_.Now(), |
| 65 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, NOT_HANDSHAKE).IsZero()); | 65 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, NOT_HANDSHAKE).IsZero()); |
| 66 sender_->SentPacket(clock_.Now(), 1, kMaxPacketSize, NOT_RETRANSMISSION); | 66 sender_->SentPacket(clock_.Now(), 1, kMaxPacketSize, NOT_RETRANSMISSION, |
| 67 HAS_RETRANSMITTABLE_DATA); |
| 67 EXPECT_TRUE(sender_->TimeUntilSend(clock_.Now(), | 68 EXPECT_TRUE(sender_->TimeUntilSend(clock_.Now(), |
| 68 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, NOT_HANDSHAKE).IsZero()); | 69 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, NOT_HANDSHAKE).IsZero()); |
| 69 sender_->SentPacket(clock_.Now(), 2, kMaxPacketSize, NOT_RETRANSMISSION); | 70 sender_->SentPacket(clock_.Now(), 2, kMaxPacketSize, NOT_RETRANSMISSION, |
| 70 sender_->SentPacket(clock_.Now(), 3, 600, NOT_RETRANSMISSION); | 71 HAS_RETRANSMITTABLE_DATA); |
| 72 sender_->SentPacket(clock_.Now(), 3, 600, NOT_RETRANSMISSION, |
| 73 HAS_RETRANSMITTABLE_DATA); |
| 71 EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), | 74 EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), |
| 72 sender_->TimeUntilSend(clock_.Now(), | 75 sender_->TimeUntilSend(clock_.Now(), |
| 73 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, NOT_HANDSHAKE)); | 76 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, NOT_HANDSHAKE)); |
| 74 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(2)); | 77 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(2)); |
| 75 EXPECT_EQ(QuicTime::Delta::Infinite(), sender_->TimeUntilSend(clock_.Now(), | 78 EXPECT_EQ(QuicTime::Delta::Infinite(), sender_->TimeUntilSend(clock_.Now(), |
| 76 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, NOT_HANDSHAKE)); | 79 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, NOT_HANDSHAKE)); |
| 77 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(8)); | 80 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(8)); |
| 78 sender_->OnIncomingAck(1, kMaxPacketSize, rtt_); | 81 sender_->OnIncomingAck(1, kMaxPacketSize, rtt_); |
| 79 sender_->OnIncomingAck(2, kMaxPacketSize, rtt_); | 82 sender_->OnIncomingAck(2, kMaxPacketSize, rtt_); |
| 80 sender_->OnIncomingAck(3, 600, rtt_); | 83 sender_->OnIncomingAck(3, 600, rtt_); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 91 ASSERT_TRUE(receiver_->GenerateCongestionFeedback(&feedback)); | 94 ASSERT_TRUE(receiver_->GenerateCongestionFeedback(&feedback)); |
| 92 sender_->OnIncomingQuicCongestionFeedbackFrame(feedback, clock_.Now(), | 95 sender_->OnIncomingQuicCongestionFeedbackFrame(feedback, clock_.Now(), |
| 93 unused_packet_map_); | 96 unused_packet_map_); |
| 94 QuicTime acc_advance_time(QuicTime::Zero()); | 97 QuicTime acc_advance_time(QuicTime::Zero()); |
| 95 QuicPacketSequenceNumber sequence_number = 0; | 98 QuicPacketSequenceNumber sequence_number = 0; |
| 96 for (int i = 0; i < num_packets; i += 2) { | 99 for (int i = 0; i < num_packets; i += 2) { |
| 97 EXPECT_TRUE(sender_->TimeUntilSend(clock_.Now(), | 100 EXPECT_TRUE(sender_->TimeUntilSend(clock_.Now(), |
| 98 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, | 101 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, |
| 99 NOT_HANDSHAKE).IsZero()); | 102 NOT_HANDSHAKE).IsZero()); |
| 100 sender_->SentPacket(clock_.Now(), sequence_number++, packet_size, | 103 sender_->SentPacket(clock_.Now(), sequence_number++, packet_size, |
| 101 NOT_RETRANSMISSION); | 104 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); |
| 102 EXPECT_TRUE(sender_->TimeUntilSend(clock_.Now(), | 105 EXPECT_TRUE(sender_->TimeUntilSend(clock_.Now(), |
| 103 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, | 106 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, |
| 104 NOT_HANDSHAKE).IsZero()); | 107 NOT_HANDSHAKE).IsZero()); |
| 105 sender_->SentPacket(clock_.Now(), sequence_number++, packet_size, | 108 sender_->SentPacket(clock_.Now(), sequence_number++, packet_size, |
| 106 NOT_RETRANSMISSION); | 109 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); |
| 107 QuicTime::Delta advance_time = sender_->TimeUntilSend(clock_.Now(), | 110 QuicTime::Delta advance_time = sender_->TimeUntilSend(clock_.Now(), |
| 108 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, NOT_HANDSHAKE); | 111 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, NOT_HANDSHAKE); |
| 109 clock_.AdvanceTime(advance_time); | 112 clock_.AdvanceTime(advance_time); |
| 110 sender_->OnIncomingAck(sequence_number - 1, packet_size, rtt_); | 113 sender_->OnIncomingAck(sequence_number - 1, packet_size, rtt_); |
| 111 sender_->OnIncomingAck(sequence_number - 2, packet_size, rtt_); | 114 sender_->OnIncomingAck(sequence_number - 2, packet_size, rtt_); |
| 112 acc_advance_time = acc_advance_time.Add(advance_time); | 115 acc_advance_time = acc_advance_time.Add(advance_time); |
| 113 } | 116 } |
| 114 EXPECT_EQ(num_packets * packet_size * 1000000 / bitrate.ToBytesPerSecond(), | 117 EXPECT_EQ(num_packets * packet_size * 1000000 / bitrate.ToBytesPerSecond(), |
| 115 static_cast<uint64>(acc_advance_time.Subtract(start_) | 118 static_cast<uint64>(acc_advance_time.Subtract(start_) |
| 116 .ToMicroseconds())); | 119 .ToMicroseconds())); |
| 117 } | 120 } |
| 118 | 121 |
| 119 } // namespace test | 122 } // namespace test |
| 120 } // namespace net | 123 } // namespace net |
| OLD | NEW |