OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2015 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 |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
302 config.remote_ssrc = 5548; | 302 config.remote_ssrc = 5548; |
303 stream = call->CreateFlexfecReceiveStream(config); | 303 stream = call->CreateFlexfecReceiveStream(config); |
304 EXPECT_NE(stream, nullptr); | 304 EXPECT_NE(stream, nullptr); |
305 streams.push_back(stream); | 305 streams.push_back(stream); |
306 | 306 |
307 for (auto s : streams) { | 307 for (auto s : streams) { |
308 call->DestroyFlexfecReceiveStream(s); | 308 call->DestroyFlexfecReceiveStream(s); |
309 } | 309 } |
310 } | 310 } |
311 | 311 |
312 // TODO(zstein): This is just a motivating example for | 312 namespace { |
313 // MockSendSideCongestionController. It should be deleted once we have more | 313 struct CallBitrateHelper { |
314 // meaningful tests. | 314 CallBitrateHelper() : CallBitrateHelper(Call::Config(&event_log_)) {} |
315 TEST(CallTest, MockSendSideCongestionControllerExample) { | |
316 RtcEventLogNullImpl event_log; | |
317 Call::Config config(&event_log); | |
318 | 315 |
319 SimulatedClock clock(123456); | 316 explicit CallBitrateHelper(const Call::Config& config) |
320 PacketRouter packet_router; | 317 : mock_cc_(Clock::GetRealTimeClock(), &event_log_, &packet_router_), |
321 testing::NiceMock<test::MockSendSideCongestionController> mock_cc( | 318 call_(Call::Create( |
322 &clock, &event_log, &packet_router); | 319 config, |
323 auto transport_send = | 320 rtc::MakeUnique<FakeRtpTransportControllerSend>(&packet_router_, |
324 rtc::MakeUnique<FakeRtpTransportControllerSend>(&mock_cc); | 321 &mock_cc_))) {} |
325 std::unique_ptr<Call> call(Call::Create(config, std::move(transport_send))); | 322 |
| 323 webrtc::Call* operator->() { return call_.get(); } |
| 324 testing::NiceMock<test::MockSendSideCongestionController>& mock_cc() { |
| 325 return mock_cc_; |
| 326 } |
| 327 |
| 328 private: |
| 329 webrtc::RtcEventLogNullImpl event_log_; |
| 330 PacketRouter packet_router_; |
| 331 testing::NiceMock<test::MockSendSideCongestionController> mock_cc_; |
| 332 std::unique_ptr<Call> call_; |
| 333 }; |
| 334 } // namespace |
| 335 |
| 336 TEST(CallBitrateTest, SetBitrateConfigWithValidConfigCallsSetBweBitrates) { |
| 337 CallBitrateHelper call; |
326 | 338 |
327 Call::Config::BitrateConfig bitrate_config; | 339 Call::Config::BitrateConfig bitrate_config; |
328 bitrate_config.min_bitrate_bps = 1; | 340 bitrate_config.min_bitrate_bps = 1; |
329 bitrate_config.start_bitrate_bps = 2; | 341 bitrate_config.start_bitrate_bps = 2; |
330 bitrate_config.max_bitrate_bps = 3; | 342 bitrate_config.max_bitrate_bps = 3; |
331 | 343 |
332 EXPECT_CALL(mock_cc, SetBweBitrates(1, 2, 3)); | 344 EXPECT_CALL(call.mock_cc(), SetBweBitrates(1, 2, 3)); |
333 call->SetBitrateConfig(bitrate_config); | 345 call->SetBitrateConfig(bitrate_config); |
334 } | 346 } |
335 | 347 |
| 348 TEST(CallBitrateTest, SetBitrateConfigWithDifferentMinCallsSetBweBitrates) { |
| 349 CallBitrateHelper call; |
| 350 |
| 351 Call::Config::BitrateConfig bitrate_config; |
| 352 bitrate_config.min_bitrate_bps = 10; |
| 353 bitrate_config.start_bitrate_bps = 20; |
| 354 bitrate_config.max_bitrate_bps = 30; |
| 355 call->SetBitrateConfig(bitrate_config); |
| 356 |
| 357 bitrate_config.min_bitrate_bps = 11; |
| 358 EXPECT_CALL(call.mock_cc(), SetBweBitrates(11, 20, 30)); |
| 359 call->SetBitrateConfig(bitrate_config); |
| 360 } |
| 361 |
| 362 TEST(CallBitrateTest, SetBitrateConfigWithDifferentStartCallsSetBweBitrates) { |
| 363 CallBitrateHelper call; |
| 364 |
| 365 Call::Config::BitrateConfig bitrate_config; |
| 366 bitrate_config.min_bitrate_bps = 10; |
| 367 bitrate_config.start_bitrate_bps = 20; |
| 368 bitrate_config.max_bitrate_bps = 30; |
| 369 call->SetBitrateConfig(bitrate_config); |
| 370 |
| 371 bitrate_config.start_bitrate_bps = 21; |
| 372 EXPECT_CALL(call.mock_cc(), SetBweBitrates(10, 21, 30)); |
| 373 call->SetBitrateConfig(bitrate_config); |
| 374 } |
| 375 |
| 376 TEST(CallBitrateTest, SetBitrateConfigWithDifferentMaxCallsSetBweBitrates) { |
| 377 CallBitrateHelper call; |
| 378 |
| 379 Call::Config::BitrateConfig bitrate_config; |
| 380 bitrate_config.min_bitrate_bps = 10; |
| 381 bitrate_config.start_bitrate_bps = 20; |
| 382 bitrate_config.max_bitrate_bps = 30; |
| 383 call->SetBitrateConfig(bitrate_config); |
| 384 |
| 385 bitrate_config.max_bitrate_bps = 31; |
| 386 EXPECT_CALL(call.mock_cc(), SetBweBitrates(10, 20, 31)); |
| 387 call->SetBitrateConfig(bitrate_config); |
| 388 } |
| 389 |
| 390 TEST(CallBitrateTest, SetBitrateConfigWithSameConfigElidesSecondCall) { |
| 391 CallBitrateHelper call; |
| 392 |
| 393 Call::Config::BitrateConfig bitrate_config; |
| 394 bitrate_config.min_bitrate_bps = 1; |
| 395 bitrate_config.start_bitrate_bps = 2; |
| 396 bitrate_config.max_bitrate_bps = 3; |
| 397 |
| 398 EXPECT_CALL(call.mock_cc(), SetBweBitrates(1, 2, 3)).Times(1); |
| 399 call->SetBitrateConfig(bitrate_config); |
| 400 call->SetBitrateConfig(bitrate_config); |
| 401 } |
| 402 |
| 403 TEST(CallBitrateTest, |
| 404 SetBitrateConfigWithSameMinMaxAndNegativeStartElidesSecondCall) { |
| 405 CallBitrateHelper call; |
| 406 |
| 407 Call::Config::BitrateConfig bitrate_config; |
| 408 bitrate_config.min_bitrate_bps = 1; |
| 409 bitrate_config.start_bitrate_bps = 2; |
| 410 bitrate_config.max_bitrate_bps = 3; |
| 411 |
| 412 EXPECT_CALL(call.mock_cc(), SetBweBitrates(1, 2, 3)).Times(1); |
| 413 call->SetBitrateConfig(bitrate_config); |
| 414 |
| 415 bitrate_config.start_bitrate_bps = -1; |
| 416 call->SetBitrateConfig(bitrate_config); |
| 417 } |
| 418 |
336 } // namespace webrtc | 419 } // namespace webrtc |
OLD | NEW |