| Index: webrtc/modules/remote_bitrate_estimator/aimd_rate_control_unittest.cc
|
| diff --git a/webrtc/modules/remote_bitrate_estimator/aimd_rate_control_unittest.cc b/webrtc/modules/remote_bitrate_estimator/aimd_rate_control_unittest.cc
|
| index b36b16ddbf1d137d025e2a8a1886a950399ef753..2bb4bf68c59ad6f4a6fae933c0b49cbc33e7df0b 100644
|
| --- a/webrtc/modules/remote_bitrate_estimator/aimd_rate_control_unittest.cc
|
| +++ b/webrtc/modules/remote_bitrate_estimator/aimd_rate_control_unittest.cc
|
| @@ -89,4 +89,36 @@ TEST(AimdRateControlTest, GetLastBitrateDecrease) {
|
| states.aimd_rate_control->GetLastBitrateDecreaseBps());
|
| }
|
|
|
| +TEST(AimdRateControlTest, OneRTTWithoutBitrateChangeWhenOverUsing) {
|
| + auto states = CreateAimdRateControlStates();
|
| + constexpr int kBitrate = 300000;
|
| + constexpr int64_t kRtt = 150;
|
| + InitBitrate(states, kBitrate, states.simulated_clock->TimeInMilliseconds());
|
| + UpdateRateControl(states, kBwOverusing, kBitrate - 2000,
|
| + states.simulated_clock->TimeInMilliseconds());
|
| + states.aimd_rate_control->SetRtt(kRtt);
|
| + EXPECT_FALSE(states.aimd_rate_control->TimeToReduceFurther(
|
| + states.simulated_clock->TimeInMilliseconds(), kBitrate));
|
| + states.simulated_clock->AdvanceTimeMilliseconds(kRtt);
|
| + EXPECT_TRUE(states.aimd_rate_control->TimeToReduceFurther(
|
| + states.simulated_clock->TimeInMilliseconds(), kBitrate));
|
| +}
|
| +
|
| +TEST(AimdRateControlTest, EstimatedAlreadyAchievedWhenOverUsing) {
|
| + auto states = CreateAimdRateControlStates();
|
| + constexpr int kBitrate = 300000;
|
| + constexpr int64_t kRtt = 150;
|
| + uint32_t bitrate;
|
| + InitBitrate(states, kBitrate, states.simulated_clock->TimeInMilliseconds());
|
| + UpdateRateControl(states, kBwOverusing, kBitrate - 2000,
|
| + states.simulated_clock->TimeInMilliseconds());
|
| + states.aimd_rate_control->SetRtt(kRtt);
|
| + bitrate = states.aimd_rate_control->LatestEstimate();
|
| + EXPECT_FALSE(states.aimd_rate_control->TimeToReduceFurther(
|
| + states.simulated_clock->TimeInMilliseconds(), bitrate));
|
| + bitrate = static_cast<uint32_t>(0.95 * bitrate);
|
| + EXPECT_TRUE(states.aimd_rate_control->TimeToReduceFurther(
|
| + states.simulated_clock->TimeInMilliseconds(), bitrate));
|
| +}
|
| +
|
| } // namespace webrtc
|
|
|