diff options
Diffstat (limited to 'net/quic/congestion_control')
-rw-r--r-- | net/quic/congestion_control/fix_rate_sender.cc | 2 | ||||
-rw-r--r-- | net/quic/congestion_control/fix_rate_test.cc | 16 | ||||
-rw-r--r-- | net/quic/congestion_control/quic_congestion_manager_test.cc | 11 | ||||
-rw-r--r-- | net/quic/congestion_control/tcp_cubic_sender.cc | 5 | ||||
-rw-r--r-- | net/quic/congestion_control/tcp_cubic_sender_test.cc | 22 |
5 files changed, 30 insertions, 26 deletions
diff --git a/net/quic/congestion_control/fix_rate_sender.cc b/net/quic/congestion_control/fix_rate_sender.cc index 2ccbc8b..4e3f635 100644 --- a/net/quic/congestion_control/fix_rate_sender.cc +++ b/net/quic/congestion_control/fix_rate_sender.cc @@ -61,7 +61,7 @@ void FixRateSender::SentPacket(QuicTime sent_time, Retransmission is_retransmission) { fix_rate_leaky_bucket_.Add(sent_time, bytes); paced_sender_.SentPacket(sent_time, bytes); - if (!is_retransmission) { + if (is_retransmission == NOT_RETRANSMISSION) { data_in_flight_ += bytes; } } diff --git a/net/quic/congestion_control/fix_rate_test.cc b/net/quic/congestion_control/fix_rate_test.cc index 4969966..f48dc45 100644 --- a/net/quic/congestion_control/fix_rate_test.cc +++ b/net/quic/congestion_control/fix_rate_test.cc @@ -64,23 +64,23 @@ TEST_F(FixRateTest, SenderAPI) { unused_bandwidth_, unused_packet_map_); EXPECT_EQ(300000, sender_->BandwidthEstimate().ToBytesPerSecond()); EXPECT_TRUE(sender_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA).IsZero()); + clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsZero()); sender_->SentPacket(clock_.Now(), 1, kMaxPacketSize, NOT_RETRANSMISSION); EXPECT_TRUE(sender_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA).IsZero()); + clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsZero()); sender_->SentPacket(clock_.Now(), 2, kMaxPacketSize, NOT_RETRANSMISSION); sender_->SentPacket(clock_.Now(), 3, 600, NOT_RETRANSMISSION); EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), sender_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA)); + clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA)); clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(2)); EXPECT_EQ(QuicTime::Delta::Infinite(), sender_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA)); + clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA)); clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(8)); sender_->OnIncomingAck(1, kMaxPacketSize, rtt_); sender_->OnIncomingAck(2, kMaxPacketSize, rtt_); sender_->OnIncomingAck(3, 600, rtt_); EXPECT_TRUE(sender_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA).IsZero()); + clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsZero()); } TEST_F(FixRateTest, FixRatePacing) { @@ -96,15 +96,15 @@ TEST_F(FixRateTest, FixRatePacing) { QuicPacketSequenceNumber sequence_number = 0; for (int i = 0; i < num_packets; i += 2) { EXPECT_TRUE(sender_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA).IsZero()); + clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsZero()); sender_->SentPacket(clock_.Now(), sequence_number++, packet_size, NOT_RETRANSMISSION); EXPECT_TRUE(sender_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA).IsZero()); + clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsZero()); sender_->SentPacket(clock_.Now(), sequence_number++, packet_size, NOT_RETRANSMISSION); QuicTime::Delta advance_time = sender_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA); + clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); clock_.AdvanceTime(advance_time); sender_->OnIncomingAck(sequence_number - 1, packet_size, rtt_); sender_->OnIncomingAck(sequence_number - 2, packet_size, rtt_); diff --git a/net/quic/congestion_control/quic_congestion_manager_test.cc b/net/quic/congestion_control/quic_congestion_manager_test.cc index fb6d2e8..8b8f473 100644 --- a/net/quic/congestion_control/quic_congestion_manager_test.cc +++ b/net/quic/congestion_control/quic_congestion_manager_test.cc @@ -39,6 +39,9 @@ class QuicCongestionManagerTest : public ::testing::Test { void SetUpCongestionType(CongestionFeedbackType congestion_type) { manager_.reset(new QuicCongestionManagerPeer(&clock_, congestion_type)); } + + static const HasRetransmittableData kIgnored = HAS_RETRANSMITTABLE_DATA; + MockClock clock_; scoped_ptr<QuicCongestionManagerPeer> manager_; }; @@ -55,10 +58,10 @@ TEST_F(QuicCongestionManagerTest, Bandwidth) { for (int i = 1; i <= 100; ++i) { QuicTime::Delta advance_time = manager_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); + clock_.Now(), NOT_RETRANSMISSION, kIgnored); clock_.AdvanceTime(advance_time); EXPECT_TRUE(manager_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsZero()); + clock_.Now(), NOT_RETRANSMISSION, kIgnored).IsZero()); manager_->SentPacket(i, clock_.Now(), 1000, NOT_RETRANSMISSION); // Ack the packet we sent. ack.received_info.largest_observed = i; @@ -83,7 +86,7 @@ TEST_F(QuicCongestionManagerTest, BandwidthWith1SecondGap) { ++sequence_number) { clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(10)); EXPECT_TRUE(manager_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsZero()); + clock_.Now(), NOT_RETRANSMISSION, kIgnored).IsZero()); manager_->SentPacket( sequence_number, clock_.Now(), 1000, NOT_RETRANSMISSION); // Ack the packet we sent. @@ -101,7 +104,7 @@ TEST_F(QuicCongestionManagerTest, BandwidthWith1SecondGap) { EXPECT_TRUE(manager_->SentBandwidth(clock_.Now()).IsZero()); for (int i = 1; i <= 150; ++i) { EXPECT_TRUE(manager_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsZero()); + clock_.Now(), NOT_RETRANSMISSION, kIgnored).IsZero()); manager_->SentPacket(i + 100, clock_.Now(), 1000, NOT_RETRANSMISSION); clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(10)); // Ack the packet we sent. diff --git a/net/quic/congestion_control/tcp_cubic_sender.cc b/net/quic/congestion_control/tcp_cubic_sender.cc index 4bed7ed..78bd7d9 100644 --- a/net/quic/congestion_control/tcp_cubic_sender.cc +++ b/net/quic/congestion_control/tcp_cubic_sender.cc @@ -87,7 +87,7 @@ void TcpCubicSender::SentPacket(QuicTime /*sent_time*/, QuicByteCount bytes, Retransmission is_retransmission) { bytes_in_flight_ += bytes; - if (!is_retransmission && update_end_sequence_number_) { + if (is_retransmission == NOT_RETRANSMISSION && update_end_sequence_number_) { end_sequence_number_ = sequence_number; if (AvailableCongestionWindow() == 0) { update_end_sequence_number_ = false; @@ -105,7 +105,8 @@ QuicTime::Delta TcpCubicSender::TimeUntilSend( QuicTime now, Retransmission is_retransmission, HasRetransmittableData has_retransmittable_data) { - if (is_retransmission || !has_retransmittable_data) { + if (is_retransmission == IS_RETRANSMISSION || + has_retransmittable_data == NO_RETRANSMITTABLE_DATA) { // For TCP we can always send a retransmission and/or an ACK immediately. return QuicTime::Delta::Zero(); } diff --git a/net/quic/congestion_control/tcp_cubic_sender_test.cc b/net/quic/congestion_control/tcp_cubic_sender_test.cc index 0cd51fd..71d53c6 100644 --- a/net/quic/congestion_control/tcp_cubic_sender_test.cc +++ b/net/quic/congestion_control/tcp_cubic_sender_test.cc @@ -44,7 +44,7 @@ class TcpCubicSenderTest : public ::testing::Test { bytes_to_send -= bytes_in_packet; if (bytes_to_send > 0) { EXPECT_TRUE(sender_->TimeUntilSend(clock_.Now(), NOT_RETRANSMISSION, - NO_RETRANSMITTABLE_DATA).IsZero()); + HAS_RETRANSMITTABLE_DATA).IsZero()); } } } @@ -75,20 +75,20 @@ TEST_F(TcpCubicSenderTest, SimpleSender) { sender_->AvailableCongestionWindow()); // At startup make sure we can send. EXPECT_TRUE(sender_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA).IsZero()); + clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsZero()); // Get default QuicCongestionFeedbackFrame from receiver. ASSERT_TRUE(receiver_->GenerateCongestionFeedback(&feedback)); sender_->OnIncomingQuicCongestionFeedbackFrame(feedback, clock_.Now(), fake_bandwidth_, not_used_); // Make sure we can send. EXPECT_TRUE(sender_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA).IsZero()); + clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsZero()); // And that window is un-affected. EXPECT_EQ(kDefaultWindowTCP, sender_->AvailableCongestionWindow()); // A retransmitt should always retun 0. EXPECT_TRUE(sender_->TimeUntilSend( - clock_.Now(), IS_RETRANSMISSION, NO_RETRANSMITTABLE_DATA).IsZero()); + clock_.Now(), IS_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsZero()); } TEST_F(TcpCubicSenderTest, ExponentialSlowStart) { @@ -96,14 +96,14 @@ TEST_F(TcpCubicSenderTest, ExponentialSlowStart) { QuicCongestionFeedbackFrame feedback; // At startup make sure we can send. EXPECT_TRUE(sender_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA).IsZero()); + clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsZero()); // Get default QuicCongestionFeedbackFrame from receiver. ASSERT_TRUE(receiver_->GenerateCongestionFeedback(&feedback)); sender_->OnIncomingQuicCongestionFeedbackFrame(feedback, clock_.Now(), fake_bandwidth_, not_used_); // Make sure we can send. EXPECT_TRUE(sender_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA).IsZero()); + clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsZero()); for (int n = 0; n < kNumberOfAck; ++n) { // Send our full congestion window. @@ -125,14 +125,14 @@ TEST_F(TcpCubicSenderTest, SlowStartAckTrain) { QuicCongestionFeedbackFrame feedback; // At startup make sure we can send. EXPECT_TRUE(sender_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA).IsZero()); + clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsZero()); // Get default QuicCongestionFeedbackFrame from receiver. ASSERT_TRUE(receiver_->GenerateCongestionFeedback(&feedback)); sender_->OnIncomingQuicCongestionFeedbackFrame(feedback, clock_.Now(), fake_bandwidth_, not_used_); // Make sure we can send. EXPECT_TRUE(sender_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA).IsZero()); + clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsZero()); for (int n = 0; n < kNumberOfAck; ++n) { // Send our full congestion window. @@ -168,14 +168,14 @@ TEST_F(TcpCubicSenderTest, SlowStartPacketLoss) { QuicCongestionFeedbackFrame feedback; // At startup make sure we can send. EXPECT_TRUE(sender_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA).IsZero()); + clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsZero()); // Get default QuicCongestionFeedbackFrame from receiver. ASSERT_TRUE(receiver_->GenerateCongestionFeedback(&feedback)); sender_->OnIncomingQuicCongestionFeedbackFrame(feedback, clock_.Now(), fake_bandwidth_, not_used_); // Make sure we can send. EXPECT_TRUE(sender_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA).IsZero()); + clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsZero()); for (int i = 0; i < kNumberOfAck; ++i) { // Send our full congestion window. @@ -191,7 +191,7 @@ TEST_F(TcpCubicSenderTest, SlowStartPacketLoss) { // Make sure that we should not send right now. EXPECT_TRUE(sender_->TimeUntilSend( - clock_.Now(), NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA).IsInfinite()); + clock_.Now(), NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA).IsInfinite()); // We should now have fallen out of slow start. // We expect window to be cut in half. |