| 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 16 matching lines...) Expand all Loading... |
| 27 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(2)); | 27 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(2)); |
| 28 } | 28 } |
| 29 const QuicTime::Delta rtt_; | 29 const QuicTime::Delta rtt_; |
| 30 MockClock clock_; | 30 MockClock clock_; |
| 31 scoped_ptr<FixRateSender> sender_; | 31 scoped_ptr<FixRateSender> sender_; |
| 32 scoped_ptr<FixRateReceiver> receiver_; | 32 scoped_ptr<FixRateReceiver> receiver_; |
| 33 }; | 33 }; |
| 34 | 34 |
| 35 TEST_F(FixRateTest, ReceiverAPI) { | 35 TEST_F(FixRateTest, ReceiverAPI) { |
| 36 QuicCongestionFeedbackFrame feedback; | 36 QuicCongestionFeedbackFrame feedback; |
| 37 QuicTime timestamp; | 37 QuicTime timestamp(QuicTime::Zero()); |
| 38 receiver_->SetBitrate(300000); // Bytes per second. | 38 receiver_->SetBitrate(300000); // Bytes per second. |
| 39 receiver_->RecordIncomingPacket(1, 1, timestamp, false); | 39 receiver_->RecordIncomingPacket(1, 1, timestamp, false); |
| 40 ASSERT_TRUE(receiver_->GenerateCongestionFeedback(&feedback)); | 40 ASSERT_TRUE(receiver_->GenerateCongestionFeedback(&feedback)); |
| 41 EXPECT_EQ(kFixRate, feedback.type); | 41 EXPECT_EQ(kFixRate, feedback.type); |
| 42 EXPECT_EQ(300000u, feedback.fix_rate.bitrate_in_bytes_per_second); | 42 EXPECT_EQ(300000u, feedback.fix_rate.bitrate_in_bytes_per_second); |
| 43 } | 43 } |
| 44 | 44 |
| 45 TEST_F(FixRateTest, SenderAPI) { | 45 TEST_F(FixRateTest, SenderAPI) { |
| 46 QuicCongestionFeedbackFrame feedback; | 46 QuicCongestionFeedbackFrame feedback; |
| 47 feedback.type = kFixRate; | 47 feedback.type = kFixRate; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 68 } | 68 } |
| 69 | 69 |
| 70 TEST_F(FixRateTest, FixRatePacing) { | 70 TEST_F(FixRateTest, FixRatePacing) { |
| 71 const int64 packet_size = 1200; | 71 const int64 packet_size = 1200; |
| 72 const int64 bit_rate = 240000; | 72 const int64 bit_rate = 240000; |
| 73 const int64 num_packets = 200; | 73 const int64 num_packets = 200; |
| 74 QuicCongestionFeedbackFrame feedback; | 74 QuicCongestionFeedbackFrame feedback; |
| 75 receiver_->SetBitrate(240000); // Bytes per second. | 75 receiver_->SetBitrate(240000); // Bytes per second. |
| 76 ASSERT_TRUE(receiver_->GenerateCongestionFeedback(&feedback)); | 76 ASSERT_TRUE(receiver_->GenerateCongestionFeedback(&feedback)); |
| 77 sender_->OnIncomingQuicCongestionFeedbackFrame(feedback); | 77 sender_->OnIncomingQuicCongestionFeedbackFrame(feedback); |
| 78 QuicTime acc_advance_time; | 78 QuicTime acc_advance_time(QuicTime::Zero()); |
| 79 QuicPacketSequenceNumber sequence_number = 0; | 79 QuicPacketSequenceNumber sequence_number = 0; |
| 80 for (int i = 0; i < num_packets; i += 2) { | 80 for (int i = 0; i < num_packets; i += 2) { |
| 81 EXPECT_TRUE(sender_->TimeUntilSend(false).IsZero()); | 81 EXPECT_TRUE(sender_->TimeUntilSend(false).IsZero()); |
| 82 EXPECT_EQ(kMaxPacketSize * 2, sender_->AvailableCongestionWindow()); | 82 EXPECT_EQ(kMaxPacketSize * 2, sender_->AvailableCongestionWindow()); |
| 83 sender_->SentPacket(sequence_number++, packet_size, false); | 83 sender_->SentPacket(sequence_number++, packet_size, false); |
| 84 EXPECT_TRUE(sender_->TimeUntilSend(false).IsZero()); | 84 EXPECT_TRUE(sender_->TimeUntilSend(false).IsZero()); |
| 85 sender_->SentPacket(sequence_number++, packet_size, false); | 85 sender_->SentPacket(sequence_number++, packet_size, false); |
| 86 QuicTime::Delta advance_time = sender_->TimeUntilSend(false); | 86 QuicTime::Delta advance_time = sender_->TimeUntilSend(false); |
| 87 clock_.AdvanceTime(advance_time); | 87 clock_.AdvanceTime(advance_time); |
| 88 sender_->OnIncomingAck(sequence_number - 1, packet_size, rtt_); | 88 sender_->OnIncomingAck(sequence_number - 1, packet_size, rtt_); |
| 89 sender_->OnIncomingAck(sequence_number - 2, packet_size, rtt_); | 89 sender_->OnIncomingAck(sequence_number - 2, packet_size, rtt_); |
| 90 acc_advance_time = acc_advance_time.Add(advance_time); | 90 acc_advance_time = acc_advance_time.Add(advance_time); |
| 91 } | 91 } |
| 92 EXPECT_EQ(num_packets * packet_size * 1000000 / bit_rate, | 92 EXPECT_EQ(num_packets * packet_size * 1000000 / bit_rate, |
| 93 acc_advance_time.ToMicroseconds()); | 93 acc_advance_time.ToMicroseconds()); |
| 94 } | 94 } |
| 95 | 95 |
| 96 } // namespace test | 96 } // namespace test |
| 97 } // namespace net | 97 } // namespace net |
| OLD | NEW |