Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(388)

Side by Side Diff: net/quic/congestion_control/fix_rate_test.cc

Issue 131743009: Land Recent QUIC Changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: use size_t instead of int to fix win_x64 compile error Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 11 matching lines...) Expand all
22 : FixRateReceiver() { 22 : FixRateReceiver() {
23 } 23 }
24 void SetBitrate(QuicBandwidth fix_rate) { 24 void SetBitrate(QuicBandwidth fix_rate) {
25 FixRateReceiver::configured_rate_ = fix_rate; 25 FixRateReceiver::configured_rate_ = fix_rate;
26 } 26 }
27 }; 27 };
28 28
29 class FixRateTest : public ::testing::Test { 29 class FixRateTest : public ::testing::Test {
30 protected: 30 protected:
31 FixRateTest() 31 FixRateTest()
32 : rtt_(QuicTime::Delta::FromMilliseconds(30)), 32 : sender_(new FixRateSender(&clock_)),
33 sender_(new FixRateSender(&clock_)),
34 receiver_(new FixRateReceiverPeer()), 33 receiver_(new FixRateReceiverPeer()),
35 start_(clock_.Now()) { 34 start_(clock_.Now()) {
36 // Make sure clock does not start at 0. 35 // Make sure clock does not start at 0.
37 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(2)); 36 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(2));
38 } 37 }
39 const QuicTime::Delta rtt_;
40 MockClock clock_; 38 MockClock clock_;
41 SendAlgorithmInterface::SentPacketsMap unused_packet_map_; 39 SendAlgorithmInterface::SentPacketsMap unused_packet_map_;
42 scoped_ptr<FixRateSender> sender_; 40 scoped_ptr<FixRateSender> sender_;
43 scoped_ptr<FixRateReceiverPeer> receiver_; 41 scoped_ptr<FixRateReceiverPeer> receiver_;
44 const QuicTime start_; 42 const QuicTime start_;
45 }; 43 };
46 44
47 TEST_F(FixRateTest, ReceiverAPI) { 45 TEST_F(FixRateTest, ReceiverAPI) {
48 QuicCongestionFeedbackFrame feedback; 46 QuicCongestionFeedbackFrame feedback;
49 QuicTime timestamp(QuicTime::Zero()); 47 QuicTime timestamp(QuicTime::Zero());
(...skipping 21 matching lines...) Expand all
71 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); 69 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA);
72 sender_->OnPacketSent(clock_.Now(), 3, 600, NOT_RETRANSMISSION, 70 sender_->OnPacketSent(clock_.Now(), 3, 600, NOT_RETRANSMISSION,
73 HAS_RETRANSMITTABLE_DATA); 71 HAS_RETRANSMITTABLE_DATA);
74 EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10), 72 EXPECT_EQ(QuicTime::Delta::FromMilliseconds(10),
75 sender_->TimeUntilSend(clock_.Now(), 73 sender_->TimeUntilSend(clock_.Now(),
76 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, NOT_HANDSHAKE)); 74 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, NOT_HANDSHAKE));
77 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(2)); 75 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(2));
78 EXPECT_EQ(QuicTime::Delta::Infinite(), sender_->TimeUntilSend(clock_.Now(), 76 EXPECT_EQ(QuicTime::Delta::Infinite(), sender_->TimeUntilSend(clock_.Now(),
79 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, NOT_HANDSHAKE)); 77 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, NOT_HANDSHAKE));
80 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(8)); 78 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(8));
81 sender_->OnPacketAcked(1, kDefaultMaxPacketSize, rtt_); 79 sender_->OnPacketAcked(1, kDefaultMaxPacketSize);
82 sender_->OnPacketAcked(2, kDefaultMaxPacketSize, rtt_); 80 sender_->OnPacketAcked(2, kDefaultMaxPacketSize);
83 sender_->OnPacketAcked(3, 600, rtt_); 81 sender_->OnPacketAcked(3, 600);
84 EXPECT_TRUE(sender_->TimeUntilSend(clock_.Now(), 82 EXPECT_TRUE(sender_->TimeUntilSend(clock_.Now(),
85 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, NOT_HANDSHAKE).IsZero()); 83 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, NOT_HANDSHAKE).IsZero());
86 } 84 }
87 85
88 TEST_F(FixRateTest, FixRatePacing) { 86 TEST_F(FixRateTest, FixRatePacing) {
89 const QuicByteCount packet_size = 1200; 87 const QuicByteCount packet_size = 1200;
90 const QuicBandwidth bitrate = QuicBandwidth::FromKBytesPerSecond(240); 88 const QuicBandwidth bitrate = QuicBandwidth::FromKBytesPerSecond(240);
91 const int64 num_packets = 200; 89 const int64 num_packets = 200;
92 QuicCongestionFeedbackFrame feedback; 90 QuicCongestionFeedbackFrame feedback;
93 receiver_->SetBitrate(QuicBandwidth::FromKBytesPerSecond(240)); 91 receiver_->SetBitrate(QuicBandwidth::FromKBytesPerSecond(240));
94 ASSERT_TRUE(receiver_->GenerateCongestionFeedback(&feedback)); 92 ASSERT_TRUE(receiver_->GenerateCongestionFeedback(&feedback));
95 sender_->OnIncomingQuicCongestionFeedbackFrame(feedback, clock_.Now(), 93 sender_->OnIncomingQuicCongestionFeedbackFrame(feedback, clock_.Now(),
96 unused_packet_map_); 94 unused_packet_map_);
97 QuicTime acc_advance_time(QuicTime::Zero()); 95 QuicTime acc_advance_time(QuicTime::Zero());
98 QuicPacketSequenceNumber sequence_number = 0; 96 QuicPacketSequenceNumber sequence_number = 0;
99 for (int i = 0; i < num_packets; i += 2) { 97 for (int i = 0; i < num_packets; i += 2) {
100 EXPECT_TRUE(sender_->TimeUntilSend(clock_.Now(), 98 EXPECT_TRUE(sender_->TimeUntilSend(clock_.Now(),
101 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, 99 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA,
102 NOT_HANDSHAKE).IsZero()); 100 NOT_HANDSHAKE).IsZero());
103 sender_->OnPacketSent(clock_.Now(), sequence_number++, packet_size, 101 sender_->OnPacketSent(clock_.Now(), sequence_number++, packet_size,
104 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); 102 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA);
105 EXPECT_TRUE(sender_->TimeUntilSend(clock_.Now(), 103 EXPECT_TRUE(sender_->TimeUntilSend(clock_.Now(),
106 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, 104 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA,
107 NOT_HANDSHAKE).IsZero()); 105 NOT_HANDSHAKE).IsZero());
108 sender_->OnPacketSent(clock_.Now(), sequence_number++, packet_size, 106 sender_->OnPacketSent(clock_.Now(), sequence_number++, packet_size,
109 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); 107 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA);
110 QuicTime::Delta advance_time = sender_->TimeUntilSend(clock_.Now(), 108 QuicTime::Delta advance_time = sender_->TimeUntilSend(clock_.Now(),
111 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, NOT_HANDSHAKE); 109 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA, NOT_HANDSHAKE);
112 clock_.AdvanceTime(advance_time); 110 clock_.AdvanceTime(advance_time);
113 sender_->OnPacketAcked(sequence_number - 1, packet_size, rtt_); 111 sender_->OnPacketAcked(sequence_number - 1, packet_size);
114 sender_->OnPacketAcked(sequence_number - 2, packet_size, rtt_); 112 sender_->OnPacketAcked(sequence_number - 2, packet_size);
115 acc_advance_time = acc_advance_time.Add(advance_time); 113 acc_advance_time = acc_advance_time.Add(advance_time);
116 } 114 }
117 EXPECT_EQ(num_packets * packet_size * 1000000 / bitrate.ToBytesPerSecond(), 115 EXPECT_EQ(num_packets * packet_size * 1000000 / bitrate.ToBytesPerSecond(),
118 static_cast<uint64>(acc_advance_time.Subtract(start_) 116 static_cast<uint64>(acc_advance_time.Subtract(start_)
119 .ToMicroseconds())); 117 .ToMicroseconds()));
120 } 118 }
121 119
122 } // namespace test 120 } // namespace test
123 } // namespace net 121 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/congestion_control/fix_rate_sender.cc ('k') | net/quic/congestion_control/inter_arrival_sender.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698