Chromium Code Reviews| Index: webrtc/call/call_unittest.cc |
| diff --git a/webrtc/call/call_unittest.cc b/webrtc/call/call_unittest.cc |
| index 564f6bd0323e014771266f9ec432b099758ef18b..00bf409ceccc11b550ce51dc61a85aef33928124 100644 |
| --- a/webrtc/call/call_unittest.cc |
| +++ b/webrtc/call/call_unittest.cc |
| @@ -309,28 +309,117 @@ TEST(CallTest, MultipleFlexfecReceiveStreamsProtectingSingleVideoStream) { |
| } |
| } |
| -// TODO(zstein): This is just a motivating example for |
| -// MockSendSideCongestionController. It should be deleted once we have more |
| -// meaningful tests. |
| -TEST(CallTest, MockSendSideCongestionControllerExample) { |
| - RtcEventLogNullImpl event_log; |
| - Call::Config config(&event_log); |
| - |
| - SimulatedClock clock(123456); |
| - PacketRouter packet_router; |
| - testing::NiceMock<test::MockSendSideCongestionController> mock_cc( |
| - &clock, &event_log, &packet_router); |
| - auto transport_send = |
| - rtc::MakeUnique<FakeRtpTransportControllerSend>(&mock_cc); |
| - std::unique_ptr<Call> call(Call::Create(config, std::move(transport_send))); |
| +class CallBitrateTest : public testing::Test { |
|
the sun
2017/05/16 21:30:11
I don't really see the point of using a fixture he
Zach Stein
2017/05/17 18:00:12
The utility struct looks cleaner to me too - thank
|
| + public: |
| + void SetUp() { |
| + Clock* clock = Clock::GetRealTimeClock(); |
| + mock_cc_ = rtc::MakeUnique< |
| + testing::NiceMock<test::MockSendSideCongestionController>>( |
| + clock, &event_log_, &packet_router_); |
| + } |
| + |
| + void CreateCall() { |
| + Call::Config config(&event_log_); |
| + CreateCall(config); |
| + } |
| + |
| + void CreateCall(const Call::Config& config) { |
| + std::unique_ptr<RtpTransportControllerSendInterface> fake_controller = |
| + rtc::MakeUnique<FakeRtpTransportControllerSend>(&packet_router_, |
| + mock_cc_.get()); |
| + call_.reset(Call::Create(config, std::move(fake_controller))); |
| + } |
| + |
| + std::unique_ptr<testing::NiceMock<test::MockSendSideCongestionController>> |
| + mock_cc_; |
| + std::unique_ptr<Call> call_; |
| + webrtc::RtcEventLogNullImpl event_log_; |
| + |
| + private: |
| + PacketRouter packet_router_; |
| +}; |
| + |
| +TEST_F(CallBitrateTest, SetBitrateConfigWithValidConfigCallsSetBweBitrates) { |
| + CreateCall(); |
| + |
| + Call::Config::BitrateConfig bitrate_config; |
| + bitrate_config.min_bitrate_bps = 1; |
| + bitrate_config.start_bitrate_bps = 2; |
| + bitrate_config.max_bitrate_bps = 3; |
| + |
| + EXPECT_CALL(*mock_cc_, SetBweBitrates(1, 2, 3)); |
| + call_->SetBitrateConfig(bitrate_config); |
| +} |
| + |
| +TEST_F(CallBitrateTest, SetBitrateConfigWithDifferentMinCallsSetBweBitrates) { |
| + CreateCall(); |
| + |
| + Call::Config::BitrateConfig bitrate_config; |
| + bitrate_config.min_bitrate_bps = 10; |
| + bitrate_config.start_bitrate_bps = 20; |
| + bitrate_config.max_bitrate_bps = 30; |
| + call_->SetBitrateConfig(bitrate_config); |
| + |
| + bitrate_config.min_bitrate_bps = 11; |
| + EXPECT_CALL(*mock_cc_, SetBweBitrates(11, 20, 30)); |
| + call_->SetBitrateConfig(bitrate_config); |
| +} |
| + |
| +TEST_F(CallBitrateTest, SetBitrateConfigWithDifferentStartCallsSetBweBitrates) { |
| + CreateCall(); |
| + |
| + Call::Config::BitrateConfig bitrate_config; |
| + bitrate_config.min_bitrate_bps = 10; |
| + bitrate_config.start_bitrate_bps = 20; |
| + bitrate_config.max_bitrate_bps = 30; |
| + call_->SetBitrateConfig(bitrate_config); |
| + |
| + bitrate_config.start_bitrate_bps = 21; |
| + EXPECT_CALL(*mock_cc_, SetBweBitrates(10, 21, 30)); |
| + call_->SetBitrateConfig(bitrate_config); |
| +} |
| + |
| +TEST_F(CallBitrateTest, SetBitrateConfigWithDifferentMaxCallsSetBweBitrates) { |
| + CreateCall(); |
| + |
| + Call::Config::BitrateConfig bitrate_config; |
| + bitrate_config.min_bitrate_bps = 10; |
| + bitrate_config.start_bitrate_bps = 20; |
| + bitrate_config.max_bitrate_bps = 30; |
| + call_->SetBitrateConfig(bitrate_config); |
| + |
| + bitrate_config.max_bitrate_bps = 31; |
| + EXPECT_CALL(*mock_cc_, SetBweBitrates(10, 20, 31)); |
| + call_->SetBitrateConfig(bitrate_config); |
| +} |
| + |
| +TEST_F(CallBitrateTest, SetBitrateConfigWithSameConfigElidesSecondCall) { |
| + CreateCall(); |
| + |
| + Call::Config::BitrateConfig bitrate_config; |
| + bitrate_config.min_bitrate_bps = 1; |
| + bitrate_config.start_bitrate_bps = 2; |
| + bitrate_config.max_bitrate_bps = 3; |
| + |
| + EXPECT_CALL(*mock_cc_, SetBweBitrates(1, 2, 3)).Times(1); |
| + call_->SetBitrateConfig(bitrate_config); |
| + call_->SetBitrateConfig(bitrate_config); |
| +} |
| + |
| +TEST_F(CallBitrateTest, |
| + SetBitrateConfigWithSameMinMaxAndNegativeStartElidesSecondCall) { |
| + CreateCall(); |
| Call::Config::BitrateConfig bitrate_config; |
| bitrate_config.min_bitrate_bps = 1; |
| bitrate_config.start_bitrate_bps = 2; |
| bitrate_config.max_bitrate_bps = 3; |
| - EXPECT_CALL(mock_cc, SetBweBitrates(1, 2, 3)); |
| - call->SetBitrateConfig(bitrate_config); |
| + EXPECT_CALL(*mock_cc_, SetBweBitrates(1, 2, 3)).Times(1); |
| + call_->SetBitrateConfig(bitrate_config); |
| + |
| + bitrate_config.start_bitrate_bps = -1; |
| + call_->SetBitrateConfig(bitrate_config); |
| } |
| } // namespace webrtc |