Simple tests for Call::SetBitrateConfig.
This will enable safer refactoring of SetBitrateConfig when we add methods to control BWE from PeerConnection (https://codereview.chromium.org/2838233002/). BUG=webrtc:7395 Review-Url: https://codereview.webrtc.org/2870383003 Cr-Commit-Position: refs/heads/master@{#18187}
This commit is contained in:
parent
12fa8f444c
commit
8c96a148a8
@ -134,7 +134,7 @@ struct ConfigHelper {
|
||||
nullptr /* observer */,
|
||||
&event_log_,
|
||||
&packet_router_)),
|
||||
fake_transport_(send_side_cc_.get()),
|
||||
fake_transport_(&packet_router_, send_side_cc_.get()),
|
||||
bitrate_allocator_(&limit_observer_),
|
||||
worker_queue_("ConfigHelper_worker_queue") {
|
||||
using testing::Invoke;
|
||||
|
||||
@ -309,27 +309,110 @@ 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);
|
||||
namespace {
|
||||
struct CallBitrateHelper {
|
||||
CallBitrateHelper() : CallBitrateHelper(Call::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)));
|
||||
explicit CallBitrateHelper(const Call::Config& config)
|
||||
: mock_cc_(Clock::GetRealTimeClock(), &event_log_, &packet_router_),
|
||||
call_(Call::Create(
|
||||
config,
|
||||
rtc::MakeUnique<FakeRtpTransportControllerSend>(&packet_router_,
|
||||
&mock_cc_))) {}
|
||||
|
||||
webrtc::Call* operator->() { return call_.get(); }
|
||||
testing::NiceMock<test::MockSendSideCongestionController>& mock_cc() {
|
||||
return mock_cc_;
|
||||
}
|
||||
|
||||
private:
|
||||
webrtc::RtcEventLogNullImpl event_log_;
|
||||
PacketRouter packet_router_;
|
||||
testing::NiceMock<test::MockSendSideCongestionController> mock_cc_;
|
||||
std::unique_ptr<Call> call_;
|
||||
};
|
||||
} // namespace
|
||||
|
||||
TEST(CallBitrateTest, SetBitrateConfigWithValidConfigCallsSetBweBitrates) {
|
||||
CallBitrateHelper call;
|
||||
|
||||
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));
|
||||
EXPECT_CALL(call.mock_cc(), SetBweBitrates(1, 2, 3));
|
||||
call->SetBitrateConfig(bitrate_config);
|
||||
}
|
||||
|
||||
TEST(CallBitrateTest, SetBitrateConfigWithDifferentMinCallsSetBweBitrates) {
|
||||
CallBitrateHelper call;
|
||||
|
||||
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(call.mock_cc(), SetBweBitrates(11, 20, 30));
|
||||
call->SetBitrateConfig(bitrate_config);
|
||||
}
|
||||
|
||||
TEST(CallBitrateTest, SetBitrateConfigWithDifferentStartCallsSetBweBitrates) {
|
||||
CallBitrateHelper call;
|
||||
|
||||
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(call.mock_cc(), SetBweBitrates(10, 21, 30));
|
||||
call->SetBitrateConfig(bitrate_config);
|
||||
}
|
||||
|
||||
TEST(CallBitrateTest, SetBitrateConfigWithDifferentMaxCallsSetBweBitrates) {
|
||||
CallBitrateHelper call;
|
||||
|
||||
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(call.mock_cc(), SetBweBitrates(10, 20, 31));
|
||||
call->SetBitrateConfig(bitrate_config);
|
||||
}
|
||||
|
||||
TEST(CallBitrateTest, SetBitrateConfigWithSameConfigElidesSecondCall) {
|
||||
CallBitrateHelper call;
|
||||
|
||||
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(call.mock_cc(), SetBweBitrates(1, 2, 3)).Times(1);
|
||||
call->SetBitrateConfig(bitrate_config);
|
||||
call->SetBitrateConfig(bitrate_config);
|
||||
}
|
||||
|
||||
TEST(CallBitrateTest,
|
||||
SetBitrateConfigWithSameMinMaxAndNegativeStartElidesSecondCall) {
|
||||
CallBitrateHelper call;
|
||||
|
||||
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(call.mock_cc(), SetBweBitrates(1, 2, 3)).Times(1);
|
||||
call->SetBitrateConfig(bitrate_config);
|
||||
|
||||
bitrate_config.start_bitrate_bps = -1;
|
||||
call->SetBitrateConfig(bitrate_config);
|
||||
}
|
||||
|
||||
|
||||
@ -21,12 +21,13 @@ class FakeRtpTransportControllerSend
|
||||
: public RtpTransportControllerSendInterface {
|
||||
public:
|
||||
explicit FakeRtpTransportControllerSend(
|
||||
PacketRouter* packet_router,
|
||||
SendSideCongestionController* send_side_cc)
|
||||
: send_side_cc_(send_side_cc) {
|
||||
: packet_router_(packet_router), send_side_cc_(send_side_cc) {
|
||||
RTC_DCHECK(send_side_cc);
|
||||
}
|
||||
|
||||
PacketRouter* packet_router() override { return &packet_router_; }
|
||||
PacketRouter* packet_router() override { return packet_router_; }
|
||||
|
||||
SendSideCongestionController* send_side_cc() override {
|
||||
return send_side_cc_;
|
||||
@ -39,7 +40,7 @@ class FakeRtpTransportControllerSend
|
||||
RtpPacketSender* packet_sender() override { return send_side_cc_->pacer(); }
|
||||
|
||||
private:
|
||||
PacketRouter packet_router_;
|
||||
PacketRouter* packet_router_;
|
||||
SendSideCongestionController* send_side_cc_;
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user