Using full scenario test client for loss based control test.

Bug: webrtc:9883
Change-Id: I7c3b2561ddba846e4cdde05e1067679ada14ad80
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/141405
Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28267}
This commit is contained in:
Sebastian Jansson 2019-06-11 11:05:40 +02:00 committed by Commit Bot
parent 4284828887
commit f3f57700a8

View File

@ -484,29 +484,35 @@ TEST_F(GoogCcNetworkControllerTest,
}
TEST_F(GoogCcNetworkControllerTest, LossBasedEstimatorCapsRateAtModerateLoss) {
auto factory = CreateFeedbackOnlyFactory();
ScopedFieldTrials trial("WebRTC-Bwe-LossBasedControl/Enabled/");
Scenario s("googcc_unit/moderate_loss_channel", false);
SimulatedTimeClientConfig config;
config.transport.cc_factory = &factory;
CallClientConfig config;
config.transport.rates.min_rate = DataRate::kbps(10);
config.transport.rates.max_rate = DataRate::kbps(5000);
config.transport.rates.start_rate = DataRate::kbps(300);
auto send_net = s.CreateSimulationNode([](NetworkSimulationConfig* c) {
c->bandwidth = DataRate::kbps(5000);
c->delay = TimeDelta::ms(100);
c->loss_rate = 0.03;
});
auto ret_net = s.CreateSimulationNode(
[](NetworkSimulationConfig* c) { c->delay = TimeDelta::ms(100); });
SimulatedTimeClient* client = s.CreateSimulatedTimeClient(
"send", config, {PacketStreamConfig()}, {send_net}, {ret_net});
config.transport.rates.start_rate = DataRate::kbps(1000);
s.RunFor(TimeDelta::seconds(60));
// Without LossBasedControl trial, bitrate reaches above 4 mbps.
// Using LossBasedControl the bitrate should not go above 3 mbps for a 2% loss
// rate.
EXPECT_LT(client->target_rate_kbps(), 3000);
NetworkSimulationConfig network;
network.bandwidth = DataRate::kbps(2000);
network.delay = TimeDelta::ms(100);
// 3% loss rate is in the moderate loss rate region at 2000 kbps, limiting the
// bitrate increase.
network.loss_rate = 0.03;
auto send_net = s.CreateMutableSimulationNode(network);
auto* client = s.CreateClient("send", std::move(config));
auto* route = s.CreateRoutes(client, {send_net->node()},
s.CreateClient("return", CallClientConfig()),
{s.CreateSimulationNode(network)});
s.CreateVideoStream(route->forward(), VideoStreamConfig());
// Allow the controller to stabilize at the lower bitrate.
s.RunFor(TimeDelta::seconds(1));
// This increase in capacity would cause the target bitrate to increase to
// over 4000 kbps without LossBasedControl.
send_net->UpdateConfig(
[](NetworkSimulationConfig* c) { c->bandwidth = DataRate::kbps(5000); });
s.RunFor(TimeDelta::seconds(20));
// Using LossBasedControl, the bitrate will not increase over 2500 kbps since
// we have detected moderate loss.
EXPECT_LT(client->target_rate().kbps(), 2500);
}
TEST_F(GoogCcNetworkControllerTest, MaintainsLowRateInSafeResetTrial) {