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

Side by Side Diff: webrtc/call/bitrate_allocator_unittest.cc

Issue 1993113003: Refactor how padding is calculated. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Addressed review comments. Created 4 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
« no previous file with comments | « webrtc/call/bitrate_allocator.cc ('k') | webrtc/call/call.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #include <algorithm> 11 #include <algorithm>
12 #include <memory> 12 #include <memory>
13 #include <vector> 13 #include <vector>
14 14
15 #include "testing/gmock/include/gmock/gmock.h"
15 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
16 #include "webrtc/call/bitrate_allocator.h" 17 #include "webrtc/call/bitrate_allocator.h"
17 #include "webrtc/modules/bitrate_controller/include/bitrate_controller.h" 18 #include "webrtc/modules/bitrate_controller/include/bitrate_controller.h"
18 19
20 using testing::NiceMock;
21
19 namespace webrtc { 22 namespace webrtc {
20 23
24 class MockLimitObserver : public BitrateAllocator::LimitObserver {
25 public:
26 MOCK_METHOD2(OnAllocationLimitsChanged,
27 void(uint32_t min_send_bitrate_bps,
28 uint32_t max_padding_bitrate_bps));
29 };
30
21 class TestBitrateObserver : public BitrateAllocatorObserver { 31 class TestBitrateObserver : public BitrateAllocatorObserver {
22 public: 32 public:
23 TestBitrateObserver() 33 TestBitrateObserver()
24 : last_bitrate_bps_(0), last_fraction_loss_(0), last_rtt_ms_(0) {} 34 : last_bitrate_bps_(0), last_fraction_loss_(0), last_rtt_ms_(0) {}
25 35
26 void OnBitrateUpdated(uint32_t bitrate_bps, 36 void OnBitrateUpdated(uint32_t bitrate_bps,
27 uint8_t fraction_loss, 37 uint8_t fraction_loss,
28 int64_t rtt) override { 38 int64_t rtt) override {
29 last_bitrate_bps_ = bitrate_bps; 39 last_bitrate_bps_ = bitrate_bps;
30 last_fraction_loss_ = fraction_loss; 40 last_fraction_loss_ = fraction_loss;
31 last_rtt_ms_ = rtt; 41 last_rtt_ms_ = rtt;
32 } 42 }
33 uint32_t last_bitrate_bps_; 43 uint32_t last_bitrate_bps_;
34 uint8_t last_fraction_loss_; 44 uint8_t last_fraction_loss_;
35 int64_t last_rtt_ms_; 45 int64_t last_rtt_ms_;
36 }; 46 };
37 47
38 class BitrateAllocatorTest : public ::testing::Test { 48 class BitrateAllocatorTest : public ::testing::Test {
39 protected: 49 protected:
40 BitrateAllocatorTest() : allocator_(new BitrateAllocator()) { 50 BitrateAllocatorTest() : allocator_(new BitrateAllocator(&limit_observer_)) {
41 allocator_->OnNetworkChanged(300000u, 0, 0); 51 allocator_->OnNetworkChanged(300000u, 0, 0);
42 } 52 }
43 ~BitrateAllocatorTest() {} 53 ~BitrateAllocatorTest() {}
44 54
55 NiceMock<MockLimitObserver> limit_observer_;
45 std::unique_ptr<BitrateAllocator> allocator_; 56 std::unique_ptr<BitrateAllocator> allocator_;
46 }; 57 };
47 58
48 TEST_F(BitrateAllocatorTest, UpdatingBitrateObserver) { 59 TEST_F(BitrateAllocatorTest, UpdatingBitrateObserver) {
49 TestBitrateObserver bitrate_observer; 60 TestBitrateObserver bitrate_observer;
50 int start_bitrate = 61 const uint32_t kMinSendBitrateBps = 100000;
51 allocator_->AddObserver(&bitrate_observer, 100000, 1500000, true); 62 const uint32_t kPadUpToBitrateBps = 50000;
63
64 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(kMinSendBitrateBps,
65 kPadUpToBitrateBps));
66 int start_bitrate = allocator_->AddObserver(
67 &bitrate_observer, kMinSendBitrateBps, 1500000, kPadUpToBitrateBps, true);
52 EXPECT_EQ(300000, start_bitrate); 68 EXPECT_EQ(300000, start_bitrate);
53 allocator_->OnNetworkChanged(200000, 0, 0); 69 allocator_->OnNetworkChanged(200000, 0, 0);
54 EXPECT_EQ(200000u, bitrate_observer.last_bitrate_bps_); 70 EXPECT_EQ(200000u, bitrate_observer.last_bitrate_bps_);
55 71
56 // TODO(pbos): Expect capping to 1.5M instead of 3M when not boosting the max 72 // TODO(pbos): Expect capping to 1.5M instead of 3M when not boosting the max
57 // bitrate for FEC/retransmissions (see todo in BitrateAllocator). 73 // bitrate for FEC/retransmissions (see todo in BitrateAllocator).
58 allocator_->OnNetworkChanged(4000000, 0, 0); 74 allocator_->OnNetworkChanged(4000000, 0, 0);
59 EXPECT_EQ(3000000u, bitrate_observer.last_bitrate_bps_); 75 EXPECT_EQ(3000000u, bitrate_observer.last_bitrate_bps_);
60 start_bitrate = 76
61 allocator_->AddObserver(&bitrate_observer, 100000, 4000000, true); 77 // Expect |max_padding_bitrate_bps| to change to 0 if the observer is updated.
78 EXPECT_CALL(limit_observer_,
79 OnAllocationLimitsChanged(kMinSendBitrateBps, 0));
80 start_bitrate = allocator_->AddObserver(&bitrate_observer, kMinSendBitrateBps,
81 4000000, 0, true);
62 EXPECT_EQ(4000000, start_bitrate); 82 EXPECT_EQ(4000000, start_bitrate);
63 83
64 start_bitrate = 84 EXPECT_CALL(limit_observer_,
65 allocator_->AddObserver(&bitrate_observer, 100000, 1500000, true); 85 OnAllocationLimitsChanged(kMinSendBitrateBps, 0));
86 start_bitrate = allocator_->AddObserver(&bitrate_observer, kMinSendBitrateBps,
87 1500000, 0, true);
66 EXPECT_EQ(3000000, start_bitrate); 88 EXPECT_EQ(3000000, start_bitrate);
67 EXPECT_EQ(3000000u, bitrate_observer.last_bitrate_bps_); 89 EXPECT_EQ(3000000u, bitrate_observer.last_bitrate_bps_);
68 allocator_->OnNetworkChanged(1500000, 0, 0); 90 allocator_->OnNetworkChanged(1500000, 0, 0);
69 EXPECT_EQ(1500000u, bitrate_observer.last_bitrate_bps_); 91 EXPECT_EQ(1500000u, bitrate_observer.last_bitrate_bps_);
70 } 92 }
71 93
72 TEST_F(BitrateAllocatorTest, TwoBitrateObserversOneRtcpObserver) { 94 TEST_F(BitrateAllocatorTest, TwoBitrateObserversOneRtcpObserver) {
73 TestBitrateObserver bitrate_observer_1; 95 TestBitrateObserver bitrate_observer_1;
74 TestBitrateObserver bitrate_observer_2; 96 TestBitrateObserver bitrate_observer_2;
97 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(100000, 0));
75 int start_bitrate = 98 int start_bitrate =
76 allocator_->AddObserver(&bitrate_observer_1, 100000, 300000, true); 99 allocator_->AddObserver(&bitrate_observer_1, 100000, 300000, 0, true);
77 EXPECT_EQ(300000, start_bitrate); 100 EXPECT_EQ(300000, start_bitrate);
101 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(100000 + 200000, 0));
78 start_bitrate = 102 start_bitrate =
79 allocator_->AddObserver(&bitrate_observer_2, 200000, 300000, true); 103 allocator_->AddObserver(&bitrate_observer_2, 200000, 300000, 0, true);
80 EXPECT_EQ(200000, start_bitrate); 104 EXPECT_EQ(200000, start_bitrate);
81 105
82 // Test too low start bitrate, hence lower than sum of min. Min bitrates will 106 // Test too low start bitrate, hence lower than sum of min. Min bitrates will
83 // be allocated to all observers. 107 // be allocated to all observers.
84 allocator_->OnNetworkChanged(200000, 0, 50); 108 allocator_->OnNetworkChanged(200000, 0, 50);
85 EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_); 109 EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_);
86 EXPECT_EQ(0, bitrate_observer_1.last_fraction_loss_); 110 EXPECT_EQ(0, bitrate_observer_1.last_fraction_loss_);
87 EXPECT_EQ(50, bitrate_observer_1.last_rtt_ms_); 111 EXPECT_EQ(50, bitrate_observer_1.last_rtt_ms_);
88 EXPECT_EQ(200000u, bitrate_observer_2.last_bitrate_bps_); 112 EXPECT_EQ(200000u, bitrate_observer_2.last_bitrate_bps_);
89 EXPECT_EQ(0, bitrate_observer_2.last_fraction_loss_); 113 EXPECT_EQ(0, bitrate_observer_2.last_fraction_loss_);
(...skipping 12 matching lines...) Expand all
102 EXPECT_EQ(600000u, bitrate_observer_1.last_bitrate_bps_); 126 EXPECT_EQ(600000u, bitrate_observer_1.last_bitrate_bps_);
103 EXPECT_EQ(600000u, bitrate_observer_2.last_bitrate_bps_); 127 EXPECT_EQ(600000u, bitrate_observer_2.last_bitrate_bps_);
104 128
105 // Verify that if the bandwidth estimate is set to zero, the allocated rate is 129 // Verify that if the bandwidth estimate is set to zero, the allocated rate is
106 // zero. 130 // zero.
107 allocator_->OnNetworkChanged(0, 0, 50); 131 allocator_->OnNetworkChanged(0, 0, 50);
108 EXPECT_EQ(0u, bitrate_observer_1.last_bitrate_bps_); 132 EXPECT_EQ(0u, bitrate_observer_1.last_bitrate_bps_);
109 EXPECT_EQ(0u, bitrate_observer_2.last_bitrate_bps_); 133 EXPECT_EQ(0u, bitrate_observer_2.last_bitrate_bps_);
110 } 134 }
111 135
136 TEST_F(BitrateAllocatorTest, RemoveObserverTriggersLimitObserver) {
137 TestBitrateObserver bitrate_observer;
138 const uint32_t kMinSendBitrateBps = 100000;
139 const uint32_t kPadUpToBitrateBps = 50000;
140
141 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(kMinSendBitrateBps,
142 kPadUpToBitrateBps));
143 allocator_->AddObserver(&bitrate_observer, kMinSendBitrateBps, 1500000,
144 kPadUpToBitrateBps, true);
145 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(0, 0));
146 allocator_->RemoveObserver(&bitrate_observer);
147 }
148
112 class BitrateAllocatorTestNoEnforceMin : public ::testing::Test { 149 class BitrateAllocatorTestNoEnforceMin : public ::testing::Test {
113 protected: 150 protected:
114 BitrateAllocatorTestNoEnforceMin() : allocator_(new BitrateAllocator()) { 151 BitrateAllocatorTestNoEnforceMin()
152 : allocator_(new BitrateAllocator(&limit_observer_)) {
115 allocator_->OnNetworkChanged(300000u, 0, 0); 153 allocator_->OnNetworkChanged(300000u, 0, 0);
116 } 154 }
117 ~BitrateAllocatorTestNoEnforceMin() {} 155 ~BitrateAllocatorTestNoEnforceMin() {}
118 156
157 NiceMock<MockLimitObserver> limit_observer_;
119 std::unique_ptr<BitrateAllocator> allocator_; 158 std::unique_ptr<BitrateAllocator> allocator_;
120 }; 159 };
121 160
122 // The following three tests verify enforcing a minimum bitrate works as 161 // The following three tests verify enforcing a minimum bitrate works as
123 // intended. 162 // intended.
124 TEST_F(BitrateAllocatorTestNoEnforceMin, OneBitrateObserver) { 163 TEST_F(BitrateAllocatorTestNoEnforceMin, OneBitrateObserver) {
125 TestBitrateObserver bitrate_observer_1; 164 TestBitrateObserver bitrate_observer_1;
165 // Expect OnAllocationLimitsChanged with |min_send_bitrate_bps| = 0 since
166 // AddObserver is called with |enforce_min_bitrate| = false.
167 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(0, 0));
126 int start_bitrate = 168 int start_bitrate =
127 allocator_->AddObserver(&bitrate_observer_1, 100000, 400000, false); 169 allocator_->AddObserver(&bitrate_observer_1, 100000, 400000, 0, false);
128 EXPECT_EQ(300000, start_bitrate); 170 EXPECT_EQ(300000, start_bitrate);
129 171
130 // High BWE. 172 // High BWE.
131 allocator_->OnNetworkChanged(150000, 0, 0); 173 allocator_->OnNetworkChanged(150000, 0, 0);
132 EXPECT_EQ(150000u, bitrate_observer_1.last_bitrate_bps_); 174 EXPECT_EQ(150000u, bitrate_observer_1.last_bitrate_bps_);
133 175
134 // Low BWE. 176 // Low BWE.
135 allocator_->OnNetworkChanged(10000, 0, 0); 177 allocator_->OnNetworkChanged(10000, 0, 0);
136 EXPECT_EQ(0u, bitrate_observer_1.last_bitrate_bps_); 178 EXPECT_EQ(0u, bitrate_observer_1.last_bitrate_bps_);
137 179
180 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(0, 0));
138 allocator_->RemoveObserver(&bitrate_observer_1); 181 allocator_->RemoveObserver(&bitrate_observer_1);
139 } 182 }
140 183
141 TEST_F(BitrateAllocatorTestNoEnforceMin, ThreeBitrateObservers) { 184 TEST_F(BitrateAllocatorTestNoEnforceMin, ThreeBitrateObservers) {
142 TestBitrateObserver bitrate_observer_1; 185 TestBitrateObserver bitrate_observer_1;
143 TestBitrateObserver bitrate_observer_2; 186 TestBitrateObserver bitrate_observer_2;
144 TestBitrateObserver bitrate_observer_3; 187 TestBitrateObserver bitrate_observer_3;
145 // Set up the observers with min bitrates at 100000, 200000, and 300000. 188 // Set up the observers with min bitrates at 100000, 200000, and 300000.
146 int start_bitrate = 189 int start_bitrate =
147 allocator_->AddObserver(&bitrate_observer_1, 100000, 400000, false); 190 allocator_->AddObserver(&bitrate_observer_1, 100000, 400000, 0, false);
148 EXPECT_EQ(300000, start_bitrate); 191 EXPECT_EQ(300000, start_bitrate);
149 192
150 start_bitrate = 193 start_bitrate =
151 allocator_->AddObserver(&bitrate_observer_2, 200000, 400000, false); 194 allocator_->AddObserver(&bitrate_observer_2, 200000, 400000, 0, false);
152 EXPECT_EQ(200000, start_bitrate); 195 EXPECT_EQ(200000, start_bitrate);
153 EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_); 196 EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_);
154 197
155 start_bitrate = 198 start_bitrate =
156 allocator_->AddObserver(&bitrate_observer_3, 300000, 400000, false); 199 allocator_->AddObserver(&bitrate_observer_3, 300000, 400000, 0, false);
157 EXPECT_EQ(0, start_bitrate); 200 EXPECT_EQ(0, start_bitrate);
158 EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_); 201 EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_);
159 EXPECT_EQ(200000u, bitrate_observer_2.last_bitrate_bps_); 202 EXPECT_EQ(200000u, bitrate_observer_2.last_bitrate_bps_);
160 203
161 // High BWE. Make sure the controllers get a fair share of the surplus (i.e., 204 // High BWE. Make sure the controllers get a fair share of the surplus (i.e.,
162 // what is left after each controller gets its min rate). 205 // what is left after each controller gets its min rate).
163 allocator_->OnNetworkChanged(690000, 0, 0); 206 allocator_->OnNetworkChanged(690000, 0, 0);
164 // Verify that each observer gets its min rate (sum of min rates is 600000), 207 // Verify that each observer gets its min rate (sum of min rates is 600000),
165 // and that the remaining 90000 is divided equally among the three. 208 // and that the remaining 90000 is divided equally among the three.
166 uint32_t bitrate_to_share = 690000u - 100000u - 200000u - 300000u; 209 uint32_t bitrate_to_share = 690000u - 100000u - 200000u - 300000u;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 allocator_->RemoveObserver(&bitrate_observer_1); 243 allocator_->RemoveObserver(&bitrate_observer_1);
201 allocator_->RemoveObserver(&bitrate_observer_2); 244 allocator_->RemoveObserver(&bitrate_observer_2);
202 allocator_->RemoveObserver(&bitrate_observer_3); 245 allocator_->RemoveObserver(&bitrate_observer_3);
203 } 246 }
204 247
205 TEST_F(BitrateAllocatorTest, ThreeBitrateObserversLowBweEnforceMin) { 248 TEST_F(BitrateAllocatorTest, ThreeBitrateObserversLowBweEnforceMin) {
206 TestBitrateObserver bitrate_observer_1; 249 TestBitrateObserver bitrate_observer_1;
207 TestBitrateObserver bitrate_observer_2; 250 TestBitrateObserver bitrate_observer_2;
208 TestBitrateObserver bitrate_observer_3; 251 TestBitrateObserver bitrate_observer_3;
209 int start_bitrate = 252 int start_bitrate =
210 allocator_->AddObserver(&bitrate_observer_1, 100000, 400000, true); 253 allocator_->AddObserver(&bitrate_observer_1, 100000, 400000, 0, true);
211 EXPECT_EQ(300000, start_bitrate); 254 EXPECT_EQ(300000, start_bitrate);
212 255
213 start_bitrate = 256 start_bitrate =
214 allocator_->AddObserver(&bitrate_observer_2, 200000, 400000, true); 257 allocator_->AddObserver(&bitrate_observer_2, 200000, 400000, 0, true);
215 EXPECT_EQ(200000, start_bitrate); 258 EXPECT_EQ(200000, start_bitrate);
216 EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_); 259 EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_);
217 260
218 start_bitrate = 261 start_bitrate =
219 allocator_->AddObserver(&bitrate_observer_3, 300000, 400000, true); 262 allocator_->AddObserver(&bitrate_observer_3, 300000, 400000, 0, true);
220 EXPECT_EQ(300000, start_bitrate); 263 EXPECT_EQ(300000, start_bitrate);
221 EXPECT_EQ(100000, static_cast<int>(bitrate_observer_1.last_bitrate_bps_)); 264 EXPECT_EQ(100000, static_cast<int>(bitrate_observer_1.last_bitrate_bps_));
222 EXPECT_EQ(200000, static_cast<int>(bitrate_observer_2.last_bitrate_bps_)); 265 EXPECT_EQ(200000, static_cast<int>(bitrate_observer_2.last_bitrate_bps_));
223 266
224 // Low BWE. Verify that all observers still get their respective min bitrate. 267 // Low BWE. Verify that all observers still get their respective min bitrate.
225 allocator_->OnNetworkChanged(1000, 0, 0); 268 allocator_->OnNetworkChanged(1000, 0, 0);
226 EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_); // Min cap. 269 EXPECT_EQ(100000u, bitrate_observer_1.last_bitrate_bps_); // Min cap.
227 EXPECT_EQ(200000u, bitrate_observer_2.last_bitrate_bps_); // Min cap. 270 EXPECT_EQ(200000u, bitrate_observer_2.last_bitrate_bps_); // Min cap.
228 EXPECT_EQ(300000u, bitrate_observer_3.last_bitrate_bps_); // Min cap. 271 EXPECT_EQ(300000u, bitrate_observer_3.last_bitrate_bps_); // Min cap.
229 272
230 allocator_->RemoveObserver(&bitrate_observer_1); 273 allocator_->RemoveObserver(&bitrate_observer_1);
231 allocator_->RemoveObserver(&bitrate_observer_2); 274 allocator_->RemoveObserver(&bitrate_observer_2);
232 allocator_->RemoveObserver(&bitrate_observer_3); 275 allocator_->RemoveObserver(&bitrate_observer_3);
233 } 276 }
234 277
235 TEST_F(BitrateAllocatorTest, AddObserverWhileNetworkDown) { 278 TEST_F(BitrateAllocatorTest, AddObserverWhileNetworkDown) {
236 TestBitrateObserver bitrate_observer_1; 279 TestBitrateObserver bitrate_observer_1;
280 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(50000, 0));
237 int start_bitrate = 281 int start_bitrate =
238 allocator_->AddObserver(&bitrate_observer_1, 50000, 400000, true); 282 allocator_->AddObserver(&bitrate_observer_1, 50000, 400000, 0, true);
239 EXPECT_EQ(300000, start_bitrate); 283 EXPECT_EQ(300000, start_bitrate);
240 284
241 // Set network down, ie, no available bitrate. 285 // Set network down, ie, no available bitrate.
242 allocator_->OnNetworkChanged(0, 0, 0); 286 allocator_->OnNetworkChanged(0, 0, 0);
243 287
244 EXPECT_EQ(0u, bitrate_observer_1.last_bitrate_bps_); 288 EXPECT_EQ(0u, bitrate_observer_1.last_bitrate_bps_);
245 289
246 TestBitrateObserver bitrate_observer_2; 290 TestBitrateObserver bitrate_observer_2;
291 // Adding an observer while the network is down should not affect the limits.
292 EXPECT_CALL(limit_observer_, OnAllocationLimitsChanged(50000 + 50000, 0));
247 start_bitrate = 293 start_bitrate =
248 allocator_->AddObserver(&bitrate_observer_2, 50000, 400000, true); 294 allocator_->AddObserver(&bitrate_observer_2, 50000, 400000, 0, true);
249 295
250 // Expect the start_bitrate to be set as if the network was still up but that 296 // Expect the start_bitrate to be set as if the network was still up but that
251 // the new observer have been notified that the network is down. 297 // the new observer have been notified that the network is down.
252 EXPECT_EQ(300000 / 2, start_bitrate); 298 EXPECT_EQ(300000 / 2, start_bitrate);
253 EXPECT_EQ(0u, bitrate_observer_1.last_bitrate_bps_); 299 EXPECT_EQ(0u, bitrate_observer_1.last_bitrate_bps_);
254 EXPECT_EQ(0u, bitrate_observer_2.last_bitrate_bps_); 300 EXPECT_EQ(0u, bitrate_observer_2.last_bitrate_bps_);
255 301
256 // Set network back up. 302 // Set network back up.
257 allocator_->OnNetworkChanged(1500000, 0, 50); 303 allocator_->OnNetworkChanged(1500000, 0, 50);
258 EXPECT_EQ(750000u, bitrate_observer_1.last_bitrate_bps_); 304 EXPECT_EQ(750000u, bitrate_observer_1.last_bitrate_bps_);
259 EXPECT_EQ(750000u, bitrate_observer_2.last_bitrate_bps_); 305 EXPECT_EQ(750000u, bitrate_observer_2.last_bitrate_bps_);
260 } 306 }
261 307
262 TEST_F(BitrateAllocatorTest, MixedEnforecedConfigs) { 308 TEST_F(BitrateAllocatorTest, MixedEnforecedConfigs) {
263 TestBitrateObserver enforced_observer; 309 TestBitrateObserver enforced_observer;
264 int start_bitrate = 310 int start_bitrate =
265 allocator_->AddObserver(&enforced_observer, 6000, 30000, true); 311 allocator_->AddObserver(&enforced_observer, 6000, 30000, 0, true);
266 EXPECT_EQ(60000, start_bitrate); 312 EXPECT_EQ(60000, start_bitrate);
267 313
268 TestBitrateObserver not_enforced_observer; 314 TestBitrateObserver not_enforced_observer;
269 start_bitrate = 315 start_bitrate =
270 allocator_->AddObserver(&not_enforced_observer, 30000, 2500000, false); 316 allocator_->AddObserver(&not_enforced_observer, 30000, 2500000, 0, false);
271 EXPECT_EQ(270000, start_bitrate); 317 EXPECT_EQ(270000, start_bitrate);
272 EXPECT_EQ(30000u, enforced_observer.last_bitrate_bps_); 318 EXPECT_EQ(30000u, enforced_observer.last_bitrate_bps_);
273 319
274 allocator_->OnNetworkChanged(36000, 0, 50); 320 allocator_->OnNetworkChanged(36000, 0, 50);
275 EXPECT_EQ(6000u, enforced_observer.last_bitrate_bps_); 321 EXPECT_EQ(6000u, enforced_observer.last_bitrate_bps_);
276 EXPECT_EQ(30000u, not_enforced_observer.last_bitrate_bps_); 322 EXPECT_EQ(30000u, not_enforced_observer.last_bitrate_bps_);
277 323
278 allocator_->OnNetworkChanged(35000, 0, 50); 324 allocator_->OnNetworkChanged(35000, 0, 50);
279 EXPECT_EQ(30000u, enforced_observer.last_bitrate_bps_); 325 EXPECT_EQ(30000u, enforced_observer.last_bitrate_bps_);
280 EXPECT_EQ(0u, not_enforced_observer.last_bitrate_bps_); 326 EXPECT_EQ(0u, not_enforced_observer.last_bitrate_bps_);
(...skipping 18 matching lines...) Expand all
299 EXPECT_EQ(16000u, enforced_observer.last_bitrate_bps_); 345 EXPECT_EQ(16000u, enforced_observer.last_bitrate_bps_);
300 EXPECT_EQ(40000u, not_enforced_observer.last_bitrate_bps_); 346 EXPECT_EQ(40000u, not_enforced_observer.last_bitrate_bps_);
301 347
302 allocator_->RemoveObserver(&enforced_observer); 348 allocator_->RemoveObserver(&enforced_observer);
303 allocator_->RemoveObserver(&not_enforced_observer); 349 allocator_->RemoveObserver(&not_enforced_observer);
304 } 350 }
305 351
306 TEST_F(BitrateAllocatorTest, AvoidToggleAbsolute) { 352 TEST_F(BitrateAllocatorTest, AvoidToggleAbsolute) {
307 TestBitrateObserver observer; 353 TestBitrateObserver observer;
308 int start_bitrate = 354 int start_bitrate =
309 allocator_->AddObserver(&observer, 30000, 300000, false); 355 allocator_->AddObserver(&observer, 30000, 300000, 0, false);
310 EXPECT_EQ(300000, start_bitrate); 356 EXPECT_EQ(300000, start_bitrate);
311 357
312 allocator_->OnNetworkChanged(30000, 0, 50); 358 allocator_->OnNetworkChanged(30000, 0, 50);
313 EXPECT_EQ(30000u, observer.last_bitrate_bps_); 359 EXPECT_EQ(30000u, observer.last_bitrate_bps_);
314 360
315 allocator_->OnNetworkChanged(20000, 0, 50); 361 allocator_->OnNetworkChanged(20000, 0, 50);
316 EXPECT_EQ(0u, observer.last_bitrate_bps_); 362 EXPECT_EQ(0u, observer.last_bitrate_bps_);
317 363
318 allocator_->OnNetworkChanged(30000, 0, 50); 364 allocator_->OnNetworkChanged(30000, 0, 50);
319 EXPECT_EQ(0u, observer.last_bitrate_bps_); 365 EXPECT_EQ(0u, observer.last_bitrate_bps_);
320 366
321 allocator_->OnNetworkChanged(49000, 0, 50); 367 allocator_->OnNetworkChanged(49000, 0, 50);
322 EXPECT_EQ(0u, observer.last_bitrate_bps_); 368 EXPECT_EQ(0u, observer.last_bitrate_bps_);
323 369
324 allocator_->OnNetworkChanged(50000, 0, 50); 370 allocator_->OnNetworkChanged(50000, 0, 50);
325 EXPECT_EQ(50000u, observer.last_bitrate_bps_); 371 EXPECT_EQ(50000u, observer.last_bitrate_bps_);
326 372
327 allocator_->OnNetworkChanged(30000, 0, 50); 373 allocator_->OnNetworkChanged(30000, 0, 50);
328 EXPECT_EQ(30000u, observer.last_bitrate_bps_); 374 EXPECT_EQ(30000u, observer.last_bitrate_bps_);
329 375
330 allocator_->RemoveObserver(&observer); 376 allocator_->RemoveObserver(&observer);
331 } 377 }
332 378
333 TEST_F(BitrateAllocatorTest, AvoidTogglePercent) { 379 TEST_F(BitrateAllocatorTest, AvoidTogglePercent) {
334 TestBitrateObserver observer; 380 TestBitrateObserver observer;
335 int start_bitrate = 381 int start_bitrate =
336 allocator_->AddObserver(&observer, 300000, 600000, false); 382 allocator_->AddObserver(&observer, 300000, 600000, 0, false);
337 EXPECT_EQ(300000, start_bitrate); 383 EXPECT_EQ(300000, start_bitrate);
338 384
339 allocator_->OnNetworkChanged(300000, 0, 50); 385 allocator_->OnNetworkChanged(300000, 0, 50);
340 EXPECT_EQ(300000u, observer.last_bitrate_bps_); 386 EXPECT_EQ(300000u, observer.last_bitrate_bps_);
341 387
342 allocator_->OnNetworkChanged(200000, 0, 50); 388 allocator_->OnNetworkChanged(200000, 0, 50);
343 EXPECT_EQ(0u, observer.last_bitrate_bps_); 389 EXPECT_EQ(0u, observer.last_bitrate_bps_);
344 390
345 allocator_->OnNetworkChanged(300000, 0, 50); 391 allocator_->OnNetworkChanged(300000, 0, 50);
346 EXPECT_EQ(0u, observer.last_bitrate_bps_); 392 EXPECT_EQ(0u, observer.last_bitrate_bps_);
347 393
348 allocator_->OnNetworkChanged(329000, 0, 50); 394 allocator_->OnNetworkChanged(329000, 0, 50);
349 EXPECT_EQ(0u, observer.last_bitrate_bps_); 395 EXPECT_EQ(0u, observer.last_bitrate_bps_);
350 396
351 allocator_->OnNetworkChanged(330000, 0, 50); 397 allocator_->OnNetworkChanged(330000, 0, 50);
352 EXPECT_EQ(330000u, observer.last_bitrate_bps_); 398 EXPECT_EQ(330000u, observer.last_bitrate_bps_);
353 399
354 allocator_->OnNetworkChanged(300000, 0, 50); 400 allocator_->OnNetworkChanged(300000, 0, 50);
355 EXPECT_EQ(300000u, observer.last_bitrate_bps_); 401 EXPECT_EQ(300000u, observer.last_bitrate_bps_);
356 402
357 allocator_->RemoveObserver(&observer); 403 allocator_->RemoveObserver(&observer);
358 } 404 }
359 405
360 } // namespace webrtc 406 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/call/bitrate_allocator.cc ('k') | webrtc/call/call.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698