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 |