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

Side by Side Diff: net/quic/core/congestion_control/bandwidth_sampler_test.cc

Issue 2901773004: Landing Recent QUIC changes until May 20, 2017. (Closed)
Patch Set: Disable quic_restart_flag_quic_big_endian_connection_id_server until tests can be fixed. Created 3 years, 6 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/core/congestion_control/bandwidth_sampler.h" 5 #include "net/quic/core/congestion_control/bandwidth_sampler.h"
6 6
7 #include "net/quic/platform/api/quic_flags.h"
7 #include "net/quic/platform/api/quic_test.h" 8 #include "net/quic/platform/api/quic_test.h"
8 #include "net/quic/test_tools/mock_clock.h" 9 #include "net/quic/test_tools/mock_clock.h"
9 10
10 namespace net { 11 namespace net {
11 namespace test { 12 namespace test {
12 13
13 class BandwidthSamplerPeer { 14 class BandwidthSamplerPeer {
14 public: 15 public:
15 static size_t GetNumberOfTrackedPackets(const BandwidthSampler& sampler) { 16 static size_t GetNumberOfTrackedPackets(const BandwidthSampler& sampler) {
17 if (FLAGS_quic_reloadable_flag_quic_faster_bandwidth_sampler) {
18 return sampler.connection_state_map_new_.number_of_present_entries();
19 }
16 return sampler.connection_state_map_.size(); 20 return sampler.connection_state_map_.size();
17 } 21 }
18 22
19 static QuicByteCount GetPacketSize(const BandwidthSampler& sampler, 23 static QuicByteCount GetPacketSize(const BandwidthSampler& sampler,
20 QuicPacketNumber packet_number) { 24 QuicPacketNumber packet_number) {
25 if (FLAGS_quic_reloadable_flag_quic_faster_bandwidth_sampler) {
26 return sampler.connection_state_map_new_.GetEntry(packet_number)->size;
27 }
21 auto iterator = sampler.connection_state_map_.find(packet_number); 28 auto iterator = sampler.connection_state_map_.find(packet_number);
22 return iterator->second.size; 29 return iterator->second.size;
23 } 30 }
24 }; 31 };
25 32
26 const QuicByteCount kRegularPacketSize = 1280; 33 const QuicByteCount kRegularPacketSize = 1280;
27 // Enforce divisibility for some of the tests. 34 // Enforce divisibility for some of the tests.
28 static_assert((kRegularPacketSize & 31) == 0, 35 static_assert((kRegularPacketSize & 31) == 0,
29 "kRegularPacketSize has to be five times divisible by 2"); 36 "kRegularPacketSize has to be five times divisible by 2");
30 37
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 // the SendWithLosses test. 197 // the SendWithLosses test.
191 TEST_F(BandwidthSamplerTest, NotCongestionControlled) { 198 TEST_F(BandwidthSamplerTest, NotCongestionControlled) {
192 const QuicTime::Delta time_between_packets = 199 const QuicTime::Delta time_between_packets =
193 QuicTime::Delta::FromMilliseconds(1); 200 QuicTime::Delta::FromMilliseconds(1);
194 QuicBandwidth expected_bandwidth = 201 QuicBandwidth expected_bandwidth =
195 QuicBandwidth::FromKBytesPerSecond(kRegularPacketSize) * 0.5; 202 QuicBandwidth::FromKBytesPerSecond(kRegularPacketSize) * 0.5;
196 203
197 // Send 20 packets, each 1 ms apart. Every even packet is not congestion 204 // Send 20 packets, each 1 ms apart. Every even packet is not congestion
198 // controlled. 205 // controlled.
199 for (QuicPacketNumber i = 1; i <= 20; i++) { 206 for (QuicPacketNumber i = 1; i <= 20; i++) {
200 SendPacketInner(i, kRegularPacketSize, i % 2 == 0 207 SendPacketInner(
201 ? HAS_RETRANSMITTABLE_DATA 208 i, kRegularPacketSize,
202 : NO_RETRANSMITTABLE_DATA); 209 i % 2 == 0 ? HAS_RETRANSMITTABLE_DATA : NO_RETRANSMITTABLE_DATA);
203 clock_.AdvanceTime(time_between_packets); 210 clock_.AdvanceTime(time_between_packets);
204 } 211 }
205 212
206 // Ensure only congestion controlled packets are tracked. 213 // Ensure only congestion controlled packets are tracked.
207 EXPECT_EQ(10u, BandwidthSamplerPeer::GetNumberOfTrackedPackets(sampler_)); 214 EXPECT_EQ(10u, BandwidthSamplerPeer::GetNumberOfTrackedPackets(sampler_));
208 215
209 // Ack packets 2 to 21, ignoring every even-numbered packet, while sending new 216 // Ack packets 2 to 21, ignoring every even-numbered packet, while sending new
210 // packets at the same rate as before. 217 // packets at the same rate as before.
211 for (QuicPacketNumber i = 1; i <= 20; i++) { 218 for (QuicPacketNumber i = 1; i <= 20; i++) {
212 if (i % 2 == 0) { 219 if (i % 2 == 0) {
213 AckPacket(i); 220 AckPacket(i);
214 } 221 }
215 SendPacketInner(i + 20, kRegularPacketSize, i % 2 == 0 222 SendPacketInner(
216 ? HAS_RETRANSMITTABLE_DATA 223 i + 20, kRegularPacketSize,
217 : NO_RETRANSMITTABLE_DATA); 224 i % 2 == 0 ? HAS_RETRANSMITTABLE_DATA : NO_RETRANSMITTABLE_DATA);
218 clock_.AdvanceTime(time_between_packets); 225 clock_.AdvanceTime(time_between_packets);
219 } 226 }
220 227
221 // Ack the packets 22 to 41 with the same congestion controlled pattern. 228 // Ack the packets 22 to 41 with the same congestion controlled pattern.
222 QuicBandwidth last_bandwidth = QuicBandwidth::Zero(); 229 QuicBandwidth last_bandwidth = QuicBandwidth::Zero();
223 for (QuicPacketNumber i = 21; i <= 40; i++) { 230 for (QuicPacketNumber i = 21; i <= 40; i++) {
224 if (i % 2 == 0) { 231 if (i % 2 == 0) {
225 last_bandwidth = AckPacket(i); 232 last_bandwidth = AckPacket(i);
226 EXPECT_EQ(expected_bandwidth, last_bandwidth); 233 EXPECT_EQ(expected_bandwidth, last_bandwidth);
227 } 234 }
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 sampler_.RemoveObsoletePackets(4); 395 sampler_.RemoveObsoletePackets(4);
389 EXPECT_EQ(2u, BandwidthSamplerPeer::GetNumberOfTrackedPackets(sampler_)); 396 EXPECT_EQ(2u, BandwidthSamplerPeer::GetNumberOfTrackedPackets(sampler_));
390 sampler_.OnPacketLost(4); 397 sampler_.OnPacketLost(4);
391 EXPECT_EQ(1u, BandwidthSamplerPeer::GetNumberOfTrackedPackets(sampler_)); 398 EXPECT_EQ(1u, BandwidthSamplerPeer::GetNumberOfTrackedPackets(sampler_));
392 AckPacket(5); 399 AckPacket(5);
393 EXPECT_EQ(0u, BandwidthSamplerPeer::GetNumberOfTrackedPackets(sampler_)); 400 EXPECT_EQ(0u, BandwidthSamplerPeer::GetNumberOfTrackedPackets(sampler_));
394 } 401 }
395 402
396 } // namespace test 403 } // namespace test
397 } // namespace net 404 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/congestion_control/bandwidth_sampler.cc ('k') | net/quic/core/congestion_control/bbr_sender.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698