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

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

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 #include "net/quic/congestion_control/pacing_sender.h" 5 #include "net/quic/congestion_control/pacing_sender.h"
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/quic_protocol.h" 9 #include "net/quic/quic_protocol.h"
10 #include "net/quic/test_tools/mock_clock.h" 10 #include "net/quic/test_tools/mock_clock.h"
(...skipping 17 matching lines...) Expand all
28 QuicTime::Delta::FromMilliseconds(1))) { 28 QuicTime::Delta::FromMilliseconds(1))) {
29 // Pick arbitrary time. 29 // Pick arbitrary time.
30 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(9)); 30 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(9));
31 } 31 }
32 32
33 virtual ~PacingSenderTest() {} 33 virtual ~PacingSenderTest() {}
34 34
35 void CheckPacketIsSentImmediately() { 35 void CheckPacketIsSentImmediately() {
36 // In order for the packet to be sendable, the underlying sender must 36 // In order for the packet to be sendable, the underlying sender must
37 // permit it to be sent immediately. 37 // permit it to be sent immediately.
38 EXPECT_CALL(*mock_sender_, TimeUntilSend(clock_.Now(), 38 EXPECT_CALL(*mock_sender_,
39 HAS_RETRANSMITTABLE_DATA)) 39 TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA))
40 .WillOnce(Return(zero_time_)); 40 .WillOnce(Return(zero_time_));
41 // Verify that the packet can be sent immediately. 41 // Verify that the packet can be sent immediately.
42 EXPECT_EQ(zero_time_, 42 EXPECT_EQ(
43 pacing_sender_->TimeUntilSend(clock_.Now(), 43 zero_time_,
44 HAS_RETRANSMITTABLE_DATA)); 44 pacing_sender_->TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA));
45 45
46 // Actually send the packet. 46 // Actually send the packet.
47 EXPECT_CALL(*mock_sender_, 47 EXPECT_CALL(*mock_sender_,
48 OnPacketSent(clock_.Now(), sequence_number_, kMaxPacketSize, 48 OnPacketSent(clock_.Now(),
49 sequence_number_,
50 kMaxPacketSize,
49 HAS_RETRANSMITTABLE_DATA)); 51 HAS_RETRANSMITTABLE_DATA));
50 pacing_sender_->OnPacketSent(clock_.Now(), sequence_number_++, 52 pacing_sender_->OnPacketSent(clock_.Now(),
53 sequence_number_++,
51 kMaxPacketSize, 54 kMaxPacketSize,
52 HAS_RETRANSMITTABLE_DATA); 55 HAS_RETRANSMITTABLE_DATA);
53 } 56 }
54 57
55 void CheckAckIsSentImmediately() { 58 void CheckAckIsSentImmediately() {
56 // In order for the ack to be sendable, the underlying sender must 59 // In order for the ack to be sendable, the underlying sender must
57 // permit it to be sent immediately. 60 // permit it to be sent immediately.
58 EXPECT_CALL(*mock_sender_, TimeUntilSend(clock_.Now(), 61 EXPECT_CALL(*mock_sender_,
59 NO_RETRANSMITTABLE_DATA)) 62 TimeUntilSend(clock_.Now(), NO_RETRANSMITTABLE_DATA))
60 .WillOnce(Return(zero_time_)); 63 .WillOnce(Return(zero_time_));
61 // Verify that the ACK can be sent immediately. 64 // Verify that the ACK can be sent immediately.
62 EXPECT_EQ(zero_time_, 65 EXPECT_EQ(
63 pacing_sender_->TimeUntilSend(clock_.Now(), 66 zero_time_,
64 NO_RETRANSMITTABLE_DATA)); 67 pacing_sender_->TimeUntilSend(clock_.Now(), NO_RETRANSMITTABLE_DATA));
65 68
66 // Actually send the packet. 69 // Actually send the packet.
67 EXPECT_CALL(*mock_sender_, 70 EXPECT_CALL(*mock_sender_,
68 OnPacketSent(clock_.Now(), sequence_number_, kMaxPacketSize, 71 OnPacketSent(clock_.Now(),
72 sequence_number_,
73 kMaxPacketSize,
69 NO_RETRANSMITTABLE_DATA)); 74 NO_RETRANSMITTABLE_DATA));
70 pacing_sender_->OnPacketSent(clock_.Now(), sequence_number_++, 75 pacing_sender_->OnPacketSent(clock_.Now(),
76 sequence_number_++,
71 kMaxPacketSize, 77 kMaxPacketSize,
72 NO_RETRANSMITTABLE_DATA); 78 NO_RETRANSMITTABLE_DATA);
73 } 79 }
74 80
75 void CheckPacketIsDelayed(QuicTime::Delta delay) { 81 void CheckPacketIsDelayed(QuicTime::Delta delay) {
76 // In order for the packet to be sendable, the underlying sender must 82 // In order for the packet to be sendable, the underlying sender must
77 // permit it to be sent immediately. 83 // permit it to be sent immediately.
78 EXPECT_CALL(*mock_sender_, TimeUntilSend(clock_.Now(), 84 EXPECT_CALL(*mock_sender_,
79 HAS_RETRANSMITTABLE_DATA)) 85 TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA))
80 .WillOnce(Return(zero_time_)); 86 .WillOnce(Return(zero_time_));
81 // Verify that the packet is delayed. 87 // Verify that the packet is delayed.
82 EXPECT_EQ(delay.ToMicroseconds(), 88 EXPECT_EQ(
83 pacing_sender_->TimeUntilSend( 89 delay.ToMicroseconds(),
84 clock_.Now(), HAS_RETRANSMITTABLE_DATA).ToMicroseconds()); 90 pacing_sender_->TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)
91 .ToMicroseconds());
85 } 92 }
86 93
87 const QuicTime::Delta zero_time_; 94 const QuicTime::Delta zero_time_;
88 const QuicTime::Delta infinite_time_; 95 const QuicTime::Delta infinite_time_;
89 MockClock clock_; 96 MockClock clock_;
90 QuicPacketSequenceNumber sequence_number_; 97 QuicPacketSequenceNumber sequence_number_;
91 StrictMock<MockSendAlgorithm>* mock_sender_; 98 StrictMock<MockSendAlgorithm>* mock_sender_;
92 scoped_ptr<PacingSender> pacing_sender_; 99 scoped_ptr<PacingSender> pacing_sender_;
93 }; 100 };
94 101
95 TEST_F(PacingSenderTest, NoSend) { 102 TEST_F(PacingSenderTest, NoSend) {
96 EXPECT_CALL(*mock_sender_, TimeUntilSend(clock_.Now(), 103 EXPECT_CALL(*mock_sender_,
97 HAS_RETRANSMITTABLE_DATA)) 104 TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA))
98 .WillOnce(Return(infinite_time_)); 105 .WillOnce(Return(infinite_time_));
99 EXPECT_EQ(infinite_time_, 106 EXPECT_EQ(
100 pacing_sender_->TimeUntilSend(clock_.Now(), 107 infinite_time_,
101 HAS_RETRANSMITTABLE_DATA)); 108 pacing_sender_->TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA));
102 } 109 }
103 110
104 TEST_F(PacingSenderTest, SendNow) { 111 TEST_F(PacingSenderTest, SendNow) {
105 EXPECT_CALL(*mock_sender_, TimeUntilSend(clock_.Now(), 112 EXPECT_CALL(*mock_sender_,
106 HAS_RETRANSMITTABLE_DATA)) 113 TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA))
107 .WillOnce(Return(zero_time_)); 114 .WillOnce(Return(zero_time_));
108 EXPECT_EQ(zero_time_, 115 EXPECT_EQ(
109 pacing_sender_->TimeUntilSend(clock_.Now(), 116 zero_time_,
110 HAS_RETRANSMITTABLE_DATA)); 117 pacing_sender_->TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA));
111 } 118 }
112 119
113 TEST_F(PacingSenderTest, VariousSending) { 120 TEST_F(PacingSenderTest, VariousSending) {
114 // Configure bandwith of 1 packet per 2 ms, for which the pacing rate 121 // Configure bandwith of 1 packet per 2 ms, for which the pacing rate
115 // will be 1 packet per 1 ms. 122 // will be 1 packet per 1 ms.
116 EXPECT_CALL(*mock_sender_, BandwidthEstimate()) 123 EXPECT_CALL(*mock_sender_, BandwidthEstimate())
117 .WillRepeatedly(Return(QuicBandwidth::FromBytesAndTimeDelta( 124 .WillRepeatedly(Return(QuicBandwidth::FromBytesAndTimeDelta(
118 kMaxPacketSize, QuicTime::Delta::FromMilliseconds(2)))); 125 kMaxPacketSize, QuicTime::Delta::FromMilliseconds(2))));
119 126
120 // Send a whole pile of packets, and verify that they are not paced. 127 // Send a whole pile of packets, and verify that they are not paced.
121 for (int i = 0 ; i < 1000; ++i) { 128 for (int i = 0; i < 1000; ++i) {
122 CheckPacketIsSentImmediately(); 129 CheckPacketIsSentImmediately();
123 } 130 }
124 131
125 // Now update the RTT and verify that packets are actually paced. 132 // Now update the RTT and verify that packets are actually paced.
126 EXPECT_CALL(*mock_sender_, OnRttUpdated(1)); 133 EXPECT_CALL(*mock_sender_, OnRttUpdated(1));
127 pacing_sender_->OnRttUpdated(1); 134 pacing_sender_->OnRttUpdated(1);
128 135
129 CheckPacketIsSentImmediately(); 136 CheckPacketIsSentImmediately();
130 CheckPacketIsSentImmediately(); 137 CheckPacketIsSentImmediately();
131 CheckPacketIsSentImmediately(); 138 CheckPacketIsSentImmediately();
(...skipping 21 matching lines...) Expand all
153 CheckPacketIsDelayed(QuicTime::Delta::FromMilliseconds(2)); 160 CheckPacketIsDelayed(QuicTime::Delta::FromMilliseconds(2));
154 161
155 // Wake up early, but after enough time has passed to permit a send. 162 // Wake up early, but after enough time has passed to permit a send.
156 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(1)); 163 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(1));
157 CheckPacketIsSentImmediately(); 164 CheckPacketIsSentImmediately();
158 CheckPacketIsDelayed(QuicTime::Delta::FromMilliseconds(2)); 165 CheckPacketIsDelayed(QuicTime::Delta::FromMilliseconds(2));
159 } 166 }
160 167
161 } // namespace test 168 } // namespace test
162 } // namespace net 169 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698