Fix default link capacity in standalone loopback tests
A recent change in the link capacity parameter from int to DataRate
broke the implicit mapping of 0 kbps to infinite capacity, causing
tests to fail unless an explicit capacity was specified. This
change updates the following tests to use infinite capacity by default:
screenshare_loopback
sv_loopback
video_loopback
This fix restores the expected behavior and maintains backward
compatibility.
Bug: webrtc:42224804
Change-Id: I244ea3a0f8f83a81f2dbcf40e5ff921e326f24e7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/354540
Reviewed-by: Erik Språng <sprang@google.com>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42475}
diff --git a/video/screenshare_loopback.cc b/video/screenshare_loopback.cc
index 9cbe501..882e58f 100644
--- a/video/screenshare_loopback.cc
+++ b/video/screenshare_loopback.cc
@@ -141,8 +141,11 @@
link_capacity,
0,
"Capacity (kbps) of the fake link. 0 means infinite.");
-int LinkCapacityKbps() {
- return absl::GetFlag(FLAGS_link_capacity);
+webrtc::DataRate LinkCapacity() {
+ int link_capacity_kbps = absl::GetFlag(FLAGS_link_capacity);
+ return link_capacity_kbps == 0
+ ? webrtc::DataRate::Infinity()
+ : webrtc::DataRate::KilobitsPerSec(link_capacity_kbps);
}
ABSL_FLAG(int, queue_size, 0, "Size of the bottleneck link queue in packets.");
@@ -314,8 +317,7 @@
void Loopback() {
BuiltInNetworkBehaviorConfig pipe_config;
pipe_config.loss_percent = LossPercent();
- pipe_config.link_capacity =
- webrtc::DataRate::KilobitsPerSec(LinkCapacityKbps());
+ pipe_config.link_capacity = LinkCapacity();
pipe_config.queue_length_packets = QueueSize();
pipe_config.queue_delay_ms = AvgPropagationDelayMs();
pipe_config.delay_standard_deviation_ms = StdPropagationDelayMs();
diff --git a/video/sv_loopback.cc b/video/sv_loopback.cc
index 67b27e8..86bdaf5 100644
--- a/video/sv_loopback.cc
+++ b/video/sv_loopback.cc
@@ -533,8 +533,10 @@
return absl::GetFlag(FLAGS_avg_burst_loss_length);
}
-int LinkCapacityKbps() {
- return absl::GetFlag(FLAGS_link_capacity);
+DataRate LinkCapacity() {
+ int link_capacity_kbps = absl::GetFlag(FLAGS_link_capacity);
+ return link_capacity_kbps == 0 ? DataRate::Infinity()
+ : DataRate::KilobitsPerSec(link_capacity_kbps);
}
int QueueSize() {
@@ -585,7 +587,7 @@
BuiltInNetworkBehaviorConfig pipe_config;
pipe_config.loss_percent = LossPercent();
pipe_config.avg_burst_loss_length = AvgBurstLossLength();
- pipe_config.link_capacity = DataRate::KilobitsPerSec(LinkCapacityKbps());
+ pipe_config.link_capacity = LinkCapacity();
pipe_config.queue_length_packets = QueueSize();
pipe_config.queue_delay_ms = AvgPropagationDelayMs();
pipe_config.delay_standard_deviation_ms = StdPropagationDelayMs();
diff --git a/video/video_loopback.cc b/video/video_loopback.cc
index 973ffe6..6358105 100644
--- a/video/video_loopback.cc
+++ b/video/video_loopback.cc
@@ -284,8 +284,10 @@
return static_cast<int>(absl::GetFlag(FLAGS_avg_burst_loss_length));
}
-int LinkCapacityKbps() {
- return static_cast<int>(absl::GetFlag(FLAGS_link_capacity));
+DataRate LinkCapacity() {
+ int link_capacity_kbps = absl::GetFlag(FLAGS_link_capacity);
+ return link_capacity_kbps == 0 ? DataRate::Infinity()
+ : DataRate::KilobitsPerSec(link_capacity_kbps);
}
int QueueSize() {
@@ -358,7 +360,7 @@
BuiltInNetworkBehaviorConfig pipe_config;
pipe_config.loss_percent = LossPercent();
pipe_config.avg_burst_loss_length = AvgBurstLossLength();
- pipe_config.link_capacity = DataRate::KilobitsPerSec(LinkCapacityKbps());
+ pipe_config.link_capacity = LinkCapacity();
pipe_config.queue_length_packets = QueueSize();
pipe_config.queue_delay_ms = AvgPropagationDelayMs();
pipe_config.delay_standard_deviation_ms = StdPropagationDelayMs();