OLD | NEW |
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 <algorithm> | 5 #include <algorithm> |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "net/quic/congestion_control/inter_arrival_bitrate_ramp_up.h" | 9 #include "net/quic/congestion_control/inter_arrival_bitrate_ramp_up.h" |
10 #include "net/quic/test_tools/mock_clock.h" | 10 #include "net/quic/test_tools/mock_clock.h" |
11 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
12 | 12 |
| 13 using std::min; |
| 14 |
13 namespace net { | 15 namespace net { |
14 namespace test { | 16 namespace test { |
15 | 17 |
16 class InterArrivalBitrateRampUpTest : public ::testing::Test { | 18 class InterArrivalBitrateRampUpTest : public ::testing::Test { |
17 protected: | 19 protected: |
18 InterArrivalBitrateRampUpTest() | 20 InterArrivalBitrateRampUpTest() |
19 : one_ms_(QuicTime::Delta::FromMilliseconds(1)), | 21 : one_ms_(QuicTime::Delta::FromMilliseconds(1)), |
20 hundred_ms_(QuicTime::Delta::FromMilliseconds(100)), | 22 hundred_ms_(QuicTime::Delta::FromMilliseconds(100)), |
21 bitrate_ramp_up_(&clock_) { | 23 bitrate_ramp_up_(&clock_) { |
22 } | 24 } |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 QuicBandwidth sent_bitrate = QuicBandwidth::Zero(); | 111 QuicBandwidth sent_bitrate = QuicBandwidth::Zero(); |
110 bitrate_ramp_up_.Reset(start_rate, | 112 bitrate_ramp_up_.Reset(start_rate, |
111 available_channel_estimate, | 113 available_channel_estimate, |
112 channel_estimate); | 114 channel_estimate); |
113 | 115 |
114 // First concave growth, towards available_channel_estimate. | 116 // First concave growth, towards available_channel_estimate. |
115 // Should pass without being affected by the max_sent_rate. | 117 // Should pass without being affected by the max_sent_rate. |
116 for (int i = 0; i < 25; ++i) { | 118 for (int i = 0; i < 25; ++i) { |
117 clock_.AdvanceTime(hundred_ms_); | 119 clock_.AdvanceTime(hundred_ms_); |
118 // Cap our previus sent rate. | 120 // Cap our previus sent rate. |
119 sent_bitrate = std::min(sent_bitrate, max_sent_rate); | 121 sent_bitrate = min(sent_bitrate, max_sent_rate); |
120 sent_bitrate = bitrate_ramp_up_.GetNewBitrate(sent_bitrate); | 122 sent_bitrate = bitrate_ramp_up_.GetNewBitrate(sent_bitrate); |
121 EXPECT_GE(available_channel_estimate, sent_bitrate); | 123 EXPECT_GE(available_channel_estimate, sent_bitrate); |
122 EXPECT_LE(start_rate, sent_bitrate); | 124 EXPECT_LE(start_rate, sent_bitrate); |
123 } | 125 } |
124 clock_.AdvanceTime(hundred_ms_); | 126 clock_.AdvanceTime(hundred_ms_); |
125 // Cap our previus sent rate. | 127 // Cap our previus sent rate. |
126 sent_bitrate = std::min(sent_bitrate, max_sent_rate); | 128 sent_bitrate = min(sent_bitrate, max_sent_rate); |
127 sent_bitrate = bitrate_ramp_up_.GetNewBitrate(sent_bitrate); | 129 sent_bitrate = bitrate_ramp_up_.GetNewBitrate(sent_bitrate); |
128 EXPECT_LE(available_channel_estimate, sent_bitrate); | 130 EXPECT_LE(available_channel_estimate, sent_bitrate); |
129 | 131 |
130 // First convex growth, from available_channel_estimate. | 132 // First convex growth, from available_channel_estimate. |
131 for (int j = 0; j < 25; ++j) { | 133 for (int j = 0; j < 25; ++j) { |
132 clock_.AdvanceTime(hundred_ms_); | 134 clock_.AdvanceTime(hundred_ms_); |
133 // Cap our previus sent rate. | 135 // Cap our previus sent rate. |
134 sent_bitrate = std::min(sent_bitrate, max_sent_rate); | 136 sent_bitrate = min(sent_bitrate, max_sent_rate); |
135 sent_bitrate = bitrate_ramp_up_.GetNewBitrate(sent_bitrate); | 137 sent_bitrate = bitrate_ramp_up_.GetNewBitrate(sent_bitrate); |
136 EXPECT_LE(available_channel_estimate, sent_bitrate); | 138 EXPECT_LE(available_channel_estimate, sent_bitrate); |
137 EXPECT_GE(halfway_point, sent_bitrate); | 139 EXPECT_GE(halfway_point, sent_bitrate); |
138 } | 140 } |
139 clock_.AdvanceTime(hundred_ms_); | 141 clock_.AdvanceTime(hundred_ms_); |
140 sent_bitrate = std::min(sent_bitrate, max_sent_rate); | 142 sent_bitrate = min(sent_bitrate, max_sent_rate); |
141 sent_bitrate = bitrate_ramp_up_.GetNewBitrate(sent_bitrate); | 143 sent_bitrate = bitrate_ramp_up_.GetNewBitrate(sent_bitrate); |
142 // We expect 2 * sent_bitrate to cap the rate. | 144 // We expect 2 * sent_bitrate to cap the rate. |
143 EXPECT_LE(max_sent_rate.Add(max_sent_rate), sent_bitrate); | 145 EXPECT_LE(max_sent_rate.Add(max_sent_rate), sent_bitrate); |
144 // Remove our sent cap. | 146 // Remove our sent cap. |
145 // Expect bitrate to continue to ramp from its previous rate. | 147 // Expect bitrate to continue to ramp from its previous rate. |
146 for (int j = 0; j < 5; ++j) { | 148 for (int j = 0; j < 5; ++j) { |
147 clock_.AdvanceTime(hundred_ms_); | 149 clock_.AdvanceTime(hundred_ms_); |
148 sent_bitrate = bitrate_ramp_up_.GetNewBitrate(sent_bitrate); | 150 sent_bitrate = bitrate_ramp_up_.GetNewBitrate(sent_bitrate); |
149 EXPECT_LE(available_channel_estimate, sent_bitrate); | 151 EXPECT_LE(available_channel_estimate, sent_bitrate); |
150 EXPECT_LE(max_sent_rate.Add(max_sent_rate), sent_bitrate); | 152 EXPECT_LE(max_sent_rate.Add(max_sent_rate), sent_bitrate); |
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
397 EXPECT_GE(channel_estimate, sent_bitrate); | 399 EXPECT_GE(channel_estimate, sent_bitrate); |
398 EXPECT_LE(halfway_point, sent_bitrate); | 400 EXPECT_LE(halfway_point, sent_bitrate); |
399 } | 401 } |
400 clock_.AdvanceTime(hundred_ms_); | 402 clock_.AdvanceTime(hundred_ms_); |
401 sent_bitrate = bitrate_ramp_up_.GetNewBitrate(sent_bitrate); | 403 sent_bitrate = bitrate_ramp_up_.GetNewBitrate(sent_bitrate); |
402 EXPECT_LE(channel_estimate, sent_bitrate); | 404 EXPECT_LE(channel_estimate, sent_bitrate); |
403 } | 405 } |
404 | 406 |
405 } // namespace test | 407 } // namespace test |
406 } // namespace net | 408 } // namespace net |
OLD | NEW |