Update tests in congestion_controller/ not to use global field trials
Bug: webrtc:419453427
Change-Id: I7fba1c142f70f527ab5d00911a2fc8f4643d9352
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/393980
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Fanny Linderborg <linderborg@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#44794}
diff --git a/modules/congestion_controller/BUILD.gn b/modules/congestion_controller/BUILD.gn
index 64dbdcd..b82bbf7 100644
--- a/modules/congestion_controller/BUILD.gn
+++ b/modules/congestion_controller/BUILD.gn
@@ -52,6 +52,7 @@
]
deps = [
":congestion_controller",
+ "../../api:field_trials",
"../../api:rtp_parameters",
"../../api/environment:environment_factory",
"../../api/test/network_emulation",
@@ -62,7 +63,7 @@
"../../api/units:timestamp",
"../../rtc_base:buffer",
"../../system_wrappers",
- "../../test:explicit_key_value_config",
+ "../../test:create_test_field_trials",
"../../test:test_support",
"../../test/scenario",
"../pacing",
diff --git a/modules/congestion_controller/goog_cc/BUILD.gn b/modules/congestion_controller/goog_cc/BUILD.gn
index f970a33..5e0931a 100644
--- a/modules/congestion_controller/goog_cc/BUILD.gn
+++ b/modules/congestion_controller/goog_cc/BUILD.gn
@@ -118,13 +118,8 @@
"../../../logging:rtc_event_bwe",
"../../../rtc_base:checks",
"../../../rtc_base:logging",
- "../../../rtc_base:macromagic",
- "../../../rtc_base:rtc_numerics",
- "../../../rtc_base:safe_conversions",
"../../../rtc_base:safe_minmax",
"../../../rtc_base/experiments:field_trial_parser",
- "../../remote_bitrate_estimator",
- "//third_party/abseil-cpp/absl/strings",
]
}
@@ -303,6 +298,7 @@
":probe_controller",
":pushback_controller",
":send_side_bwe",
+ "../../../api:field_trials",
"../../../api:field_trials_view",
"../../../api:network_state_predictor_api",
"../../../api/environment",
@@ -328,7 +324,7 @@
"../../../rtc_base:stringutils",
"../../../rtc_base/experiments:alr_experiment",
"../../../system_wrappers",
- "../../../test:explicit_key_value_config",
+ "../../../test:create_test_field_trials",
"../../../test:field_trial",
"../../../test:test_support",
"../../../test/network:emulated_network",
diff --git a/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_unittest.cc b/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_unittest.cc
index cc6e4a0..7d5a736 100644
--- a/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_unittest.cc
+++ b/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_unittest.cc
@@ -17,12 +17,13 @@
#include <utility>
#include <vector>
-#include "api/transport/field_trial_based_config.h"
+#include "api/field_trials.h"
#include "api/transport/network_types.h"
#include "api/units/data_rate.h"
#include "api/units/data_size.h"
#include "api/units/timestamp.h"
#include "modules/congestion_controller/goog_cc/bitrate_estimator.h"
+#include "test/create_test_field_trials.h"
#include "test/gmock.h"
#include "test/gtest.h"
@@ -50,7 +51,7 @@
};
struct AcknowledgedBitrateEstimatorTestStates {
- FieldTrialBasedConfig field_trial_config;
+ FieldTrials field_trial_config = CreateTestFieldTrials();
std::unique_ptr<AcknowledgedBitrateEstimator> acknowledged_bitrate_estimator;
MockBitrateEstimator* mock_bitrate_estimator;
};
diff --git a/modules/congestion_controller/goog_cc/alr_detector_unittest.cc b/modules/congestion_controller/goog_cc/alr_detector_unittest.cc
index 725bd34..2fdba71 100644
--- a/modules/congestion_controller/goog_cc/alr_detector_unittest.cc
+++ b/modules/congestion_controller/goog_cc/alr_detector_unittest.cc
@@ -13,10 +13,10 @@
#include <cstdint>
#include <optional>
-#include "api/transport/field_trial_based_config.h"
+#include "api/field_trials.h"
#include "rtc_base/checks.h"
#include "rtc_base/experiments/alr_experiment.h"
-#include "test/field_trial.h"
+#include "test/create_test_field_trials.h"
#include "test/gtest.h"
namespace {
@@ -74,7 +74,7 @@
} // namespace
TEST(AlrDetectorTest, AlrDetection) {
- FieldTrialBasedConfig field_trials;
+ FieldTrials field_trials = CreateTestFieldTrials();
int64_t timestamp_ms = 1000;
AlrDetector alr_detector(&field_trials);
alr_detector.SetEstimatedBitrate(kEstimatedBitrateBps);
@@ -102,7 +102,7 @@
}
TEST(AlrDetectorTest, ShortSpike) {
- FieldTrialBasedConfig field_trials;
+ FieldTrials field_trials = CreateTestFieldTrials();
int64_t timestamp_ms = 1000;
AlrDetector alr_detector(&field_trials);
alr_detector.SetEstimatedBitrate(kEstimatedBitrateBps);
@@ -129,7 +129,7 @@
}
TEST(AlrDetectorTest, BandwidthEstimateChanges) {
- FieldTrialBasedConfig field_trials;
+ FieldTrials field_trials = CreateTestFieldTrials();
int64_t timestamp_ms = 1000;
AlrDetector alr_detector(&field_trials);
alr_detector.SetEstimatedBitrate(kEstimatedBitrateBps);
@@ -156,20 +156,20 @@
}
TEST(AlrDetectorTest, ParseControlFieldTrial) {
- test::ScopedFieldTrials scoped_field_trial(
- "WebRTC-ProbingScreenshareBwe/Control/");
+ FieldTrials field_trials =
+ CreateTestFieldTrials("WebRTC-ProbingScreenshareBwe/Control/");
std::optional<AlrExperimentSettings> parsed_params =
AlrExperimentSettings::CreateFromFieldTrial(
- FieldTrialBasedConfig(), "WebRTC-ProbingScreenshareBwe");
+ field_trials, "WebRTC-ProbingScreenshareBwe");
EXPECT_FALSE(static_cast<bool>(parsed_params));
}
TEST(AlrDetectorTest, ParseActiveFieldTrial) {
- test::ScopedFieldTrials scoped_field_trial(
+ FieldTrials field_trials = CreateTestFieldTrials(
"WebRTC-ProbingScreenshareBwe/1.1,2875,85,20,-20,1/");
std::optional<AlrExperimentSettings> parsed_params =
AlrExperimentSettings::CreateFromFieldTrial(
- FieldTrialBasedConfig(), "WebRTC-ProbingScreenshareBwe");
+ field_trials, "WebRTC-ProbingScreenshareBwe");
ASSERT_TRUE(static_cast<bool>(parsed_params));
EXPECT_EQ(1.1f, parsed_params->pacing_factor);
EXPECT_EQ(2875, parsed_params->max_paced_queue_time);
@@ -180,10 +180,9 @@
}
TEST(AlrDetectorTest, ParseAlrSpecificFieldTrial) {
- test::ScopedFieldTrials scoped_field_trial(
+ FieldTrials field_trials = CreateTestFieldTrials(
"WebRTC-AlrDetectorParameters/"
"bw_usage:90%,start:0%,stop:-10%/");
- FieldTrialBasedConfig field_trials;
AlrDetector alr_detector(&field_trials);
int64_t timestamp_ms = 1000;
alr_detector.SetEstimatedBitrate(kEstimatedBitrateBps);
diff --git a/modules/congestion_controller/goog_cc/congestion_window_pushback_controller_unittest.cc b/modules/congestion_controller/goog_cc/congestion_window_pushback_controller_unittest.cc
index 6f85c4c..76db80e 100644
--- a/modules/congestion_controller/goog_cc/congestion_window_pushback_controller_unittest.cc
+++ b/modules/congestion_controller/goog_cc/congestion_window_pushback_controller_unittest.cc
@@ -13,15 +13,14 @@
#include <cstdint>
#include "api/units/data_size.h"
-#include "test/explicit_key_value_config.h"
+#include "test/create_test_field_trials.h"
#include "test/gtest.h"
namespace webrtc {
namespace test {
TEST(CongestionWindowPushbackControllerTest, FullCongestionWindow) {
- CongestionWindowPushbackController cwnd_controller(
- ExplicitKeyValueConfig(""));
+ CongestionWindowPushbackController cwnd_controller(CreateTestFieldTrials());
cwnd_controller.UpdateOutstandingData(100000);
cwnd_controller.SetDataWindow(DataSize::Bytes(50000));
@@ -36,8 +35,7 @@
}
TEST(CongestionWindowPushbackControllerTest, NormalCongestionWindow) {
- CongestionWindowPushbackController cwnd_controller(
- ExplicitKeyValueConfig(""));
+ CongestionWindowPushbackController cwnd_controller(CreateTestFieldTrials());
cwnd_controller.UpdateOutstandingData(199999);
cwnd_controller.SetDataWindow(DataSize::Bytes(200000));
@@ -48,8 +46,7 @@
}
TEST(CongestionWindowPushbackControllerTest, LowBitrate) {
- CongestionWindowPushbackController cwnd_controller(
- ExplicitKeyValueConfig(""));
+ CongestionWindowPushbackController cwnd_controller(CreateTestFieldTrials());
cwnd_controller.UpdateOutstandingData(100000);
cwnd_controller.SetDataWindow(DataSize::Bytes(50000));
@@ -64,8 +61,7 @@
}
TEST(CongestionWindowPushbackControllerTest, NoPushbackOnDataWindowUnset) {
- CongestionWindowPushbackController cwnd_controller(
- ExplicitKeyValueConfig(""));
+ CongestionWindowPushbackController cwnd_controller(CreateTestFieldTrials());
cwnd_controller.UpdateOutstandingData(1e8); // Large number
@@ -76,7 +72,7 @@
TEST(CongestionWindowPushbackControllerTest, PushbackOnInititialDataWindow) {
CongestionWindowPushbackController cwnd_controller(
- ExplicitKeyValueConfig("WebRTC-CongestionWindow/InitWin:100000/"));
+ CreateTestFieldTrials("WebRTC-CongestionWindow/InitWin:100000/"));
cwnd_controller.UpdateOutstandingData(1e8); // Large number
@@ -87,7 +83,7 @@
TEST(CongestionWindowPushbackControllerTest, PushbackDropFrame) {
CongestionWindowPushbackController cwnd_controller(
- ExplicitKeyValueConfig("WebRTC-CongestionWindow/DropFrame:true/"));
+ CreateTestFieldTrials("WebRTC-CongestionWindow/DropFrame:true/"));
cwnd_controller.UpdateOutstandingData(1e8); // Large number
cwnd_controller.SetDataWindow(DataSize::Bytes(50000));
diff --git a/modules/congestion_controller/goog_cc/delay_based_bwe.cc b/modules/congestion_controller/goog_cc/delay_based_bwe.cc
index 9769792..079ce22 100644
--- a/modules/congestion_controller/goog_cc/delay_based_bwe.cc
+++ b/modules/congestion_controller/goog_cc/delay_based_bwe.cc
@@ -80,9 +80,9 @@
last_video_packet_recv_time_(Timestamp::MinusInfinity()),
network_state_predictor_(network_state_predictor),
video_delay_detector_(
- new TrendlineEstimator(key_value_config_, network_state_predictor_)),
+ new TrendlineEstimator(*key_value_config_, network_state_predictor_)),
audio_delay_detector_(
- new TrendlineEstimator(key_value_config_, network_state_predictor_)),
+ new TrendlineEstimator(*key_value_config_, network_state_predictor_)),
active_delay_detector_(video_delay_detector_.get()),
last_seen_packet_(Timestamp::MinusInfinity()),
uma_recorded_(false),
@@ -155,9 +155,9 @@
std::make_unique<InterArrivalDelta>(kSendTimeGroupLength);
video_delay_detector_.reset(
- new TrendlineEstimator(key_value_config_, network_state_predictor_));
+ new TrendlineEstimator(*key_value_config_, network_state_predictor_));
audio_delay_detector_.reset(
- new TrendlineEstimator(key_value_config_, network_state_predictor_));
+ new TrendlineEstimator(*key_value_config_, network_state_predictor_));
active_delay_detector_ = video_delay_detector_.get();
}
last_seen_packet_ = at_time;
diff --git a/modules/congestion_controller/goog_cc/delay_based_bwe_unittest_helper.cc b/modules/congestion_controller/goog_cc/delay_based_bwe_unittest_helper.cc
index 9e22ae8..c6e44a0 100644
--- a/modules/congestion_controller/goog_cc/delay_based_bwe_unittest_helper.cc
+++ b/modules/congestion_controller/goog_cc/delay_based_bwe_unittest_helper.cc
@@ -25,7 +25,7 @@
#include "modules/congestion_controller/goog_cc/delay_based_bwe.h"
#include "modules/congestion_controller/goog_cc/probe_bitrate_estimator.h"
#include "rtc_base/checks.h"
-#include "test/field_trial.h"
+#include "test/create_test_field_trials.h"
#include "test/gtest.h"
namespace webrtc {
@@ -159,14 +159,13 @@
} // namespace test
DelayBasedBweTest::DelayBasedBweTest()
- : field_trial(std::make_unique<test::ScopedFieldTrials>(
+ : field_trials_(CreateTestFieldTrials(
"WebRTC-Bwe-RobustThroughputEstimatorSettings/enabled:true/")),
clock_(100000000),
acknowledged_bitrate_estimator_(
- AcknowledgedBitrateEstimatorInterface::Create(&field_trial_config_)),
+ AcknowledgedBitrateEstimatorInterface::Create(&field_trials_)),
probe_bitrate_estimator_(new ProbeBitrateEstimator(nullptr)),
- bitrate_estimator_(
- new DelayBasedBwe(&field_trial_config_, nullptr, nullptr)),
+ bitrate_estimator_(new DelayBasedBwe(&field_trials_, nullptr, nullptr)),
stream_generator_(new test::StreamGenerator(1e6, // Capacity.
clock_.TimeInMicroseconds())),
arrival_time_offset_ms_(0),
diff --git a/modules/congestion_controller/goog_cc/delay_based_bwe_unittest_helper.h b/modules/congestion_controller/goog_cc/delay_based_bwe_unittest_helper.h
index b885ef2..78850c3 100644
--- a/modules/congestion_controller/goog_cc/delay_based_bwe_unittest_helper.h
+++ b/modules/congestion_controller/goog_cc/delay_based_bwe_unittest_helper.h
@@ -17,14 +17,13 @@
#include <memory>
#include <vector>
-#include "api/transport/field_trial_based_config.h"
+#include "api/field_trials.h"
#include "api/transport/network_types.h"
#include "api/units/timestamp.h"
#include "modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_interface.h"
#include "modules/congestion_controller/goog_cc/delay_based_bwe.h"
#include "modules/congestion_controller/goog_cc/probe_bitrate_estimator.h"
#include "system_wrappers/include/clock.h"
-#include "test/field_trial.h"
#include "test/gtest.h"
namespace webrtc {
@@ -170,10 +169,7 @@
int64_t receiver_clock_offset_change_ms);
static const uint32_t kDefaultSsrc;
- FieldTrialBasedConfig field_trial_config_;
-
- std::unique_ptr<test::ScopedFieldTrials>
- field_trial; // Must be initialized first.
+ FieldTrials field_trials_;
SimulatedClock clock_; // Time at the receiver.
test::TestBitrateObserver bitrate_observer_;
std::unique_ptr<AcknowledgedBitrateEstimatorInterface>
diff --git a/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc b/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc
index abe9a9b..12c4a98 100644
--- a/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc
+++ b/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc
@@ -21,6 +21,7 @@
#include "absl/strings/string_view.h"
#include "api/environment/environment.h"
#include "api/environment/environment_factory.h"
+#include "api/field_trials.h"
#include "api/test/network_emulation/create_cross_traffic.h"
#include "api/test/network_emulation/cross_traffic.h"
#include "api/transport/goog_cc_factory.h"
@@ -31,7 +32,7 @@
#include "api/units/time_delta.h"
#include "api/units/timestamp.h"
#include "call/video_receive_stream.h"
-#include "logging/rtc_event_log/mock/mock_rtc_event_log.h"
+#include "test/create_test_field_trials.h"
#include "test/field_trial.h"
#include "test/gmock.h"
#include "test/gtest.h"
@@ -262,7 +263,8 @@
class NetworkControllerTestFixture {
public:
- NetworkControllerTestFixture() : factory_() {}
+ explicit NetworkControllerTestFixture(absl::string_view field_trials = "")
+ : field_trials_(CreateTestFieldTrials(field_trials)) {}
explicit NetworkControllerTestFixture(GoogCcFactoryConfig googcc_config)
: factory_(std::move(googcc_config)) {}
@@ -289,8 +291,8 @@
return config;
}
- NiceMock<MockRtcEventLog> event_log_;
- const Environment env_ = CreateEnvironment(&event_log_);
+ FieldTrials field_trials_ = CreateTestFieldTrials();
+ const Environment env_ = CreateEnvironment(&field_trials_);
GoogCcNetworkControllerFactory factory_;
};
@@ -439,9 +441,9 @@
}
TEST(GoogCcNetworkControllerTest, LimitPacingFactorToUpperLinkCapacity) {
- ScopedFieldTrials trial(
+ NetworkControllerTestFixture fixture(
+ /*field_trials=*/
"WebRTC-Bwe-LimitPacingFactorByUpperLinkCapacityEstimate/Enabled/");
- NetworkControllerTestFixture fixture;
std::unique_ptr<NetworkControllerInterface> controller =
fixture.CreateController();
Timestamp current_time = Timestamp::Millis(123);
diff --git a/modules/congestion_controller/goog_cc/loss_based_bwe_v2_test.cc b/modules/congestion_controller/goog_cc/loss_based_bwe_v2_test.cc
index e308ff8..a9c8506 100644
--- a/modules/congestion_controller/goog_cc/loss_based_bwe_v2_test.cc
+++ b/modules/congestion_controller/goog_cc/loss_based_bwe_v2_test.cc
@@ -14,21 +14,20 @@
#include <string>
#include <vector>
+#include "api/field_trials.h"
#include "api/transport/network_types.h"
#include "api/units/data_rate.h"
#include "api/units/data_size.h"
#include "api/units/time_delta.h"
#include "api/units/timestamp.h"
#include "rtc_base/strings/string_builder.h"
-#include "test/explicit_key_value_config.h"
+#include "test/create_test_field_trials.h"
#include "test/gtest.h"
namespace webrtc {
namespace {
-using test::ExplicitKeyValueConfig;
-
constexpr TimeDelta kObservationDurationLowerBound = TimeDelta::Millis(250);
constexpr TimeDelta kDelayedIncreaseWindow = TimeDelta::Millis(300);
constexpr double kMaxIncreaseFactor = 1.5;
@@ -36,7 +35,7 @@
class LossBasedBweV2Test : public ::testing::TestWithParam<bool> {
protected:
- std::string Config(bool enabled, bool valid) {
+ FieldTrials Config(bool enabled, bool valid) {
char buffer[1024];
SimpleStringBuilder config_string(buffer);
@@ -74,10 +73,10 @@
config_string << "/";
- return config_string.str();
+ return CreateTestFieldTrials(config_string.str());
}
- std::string ShortObservationConfig(std::string custom_config) {
+ FieldTrials ShortObservationConfig(std::string custom_config) {
char buffer[1024];
SimpleStringBuilder config_string(buffer);
@@ -86,7 +85,7 @@
config_string << custom_config;
config_string << "/";
- return config_string.str();
+ return CreateTestFieldTrials(config_string.str());
}
std::vector<PacketResult> CreatePacketResultsWithReceivedPackets(
@@ -173,37 +172,35 @@
};
TEST_F(LossBasedBweV2Test, EnabledWhenGivenValidConfigurationValues) {
- ExplicitKeyValueConfig key_value_config(
- Config(/*enabled=*/true, /*valid=*/true));
+ FieldTrials key_value_config = Config(/*enabled=*/true, /*valid=*/true);
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
EXPECT_TRUE(loss_based_bandwidth_estimator.IsEnabled());
}
TEST_F(LossBasedBweV2Test, DisabledWhenGivenDisabledConfiguration) {
- ExplicitKeyValueConfig key_value_config(
- Config(/*enabled=*/false, /*valid=*/true));
+ FieldTrials key_value_config = Config(/*enabled=*/false, /*valid=*/true);
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
EXPECT_FALSE(loss_based_bandwidth_estimator.IsEnabled());
}
TEST_F(LossBasedBweV2Test, DisabledWhenGivenNonValidConfigurationValues) {
- ExplicitKeyValueConfig key_value_config(
- Config(/*enabled=*/true, /*valid=*/false));
+ FieldTrials key_value_config = Config(/*enabled=*/true, /*valid=*/false);
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
EXPECT_FALSE(loss_based_bandwidth_estimator.IsEnabled());
}
TEST_F(LossBasedBweV2Test, DisabledWhenGivenNonPositiveCandidateFactor) {
- ExplicitKeyValueConfig key_value_config_negative_candidate_factor(
- "WebRTC-Bwe-LossBasedBweV2/CandidateFactors:-1.3|1.1/");
+ FieldTrials key_value_config_negative_candidate_factor =
+ CreateTestFieldTrials(
+ "WebRTC-Bwe-LossBasedBweV2/CandidateFactors:-1.3|1.1/");
LossBasedBweV2 loss_based_bandwidth_estimator_1(
&key_value_config_negative_candidate_factor);
EXPECT_FALSE(loss_based_bandwidth_estimator_1.IsEnabled());
- ExplicitKeyValueConfig key_value_config_zero_candidate_factor(
+ FieldTrials key_value_config_zero_candidate_factor = CreateTestFieldTrials(
"WebRTC-Bwe-LossBasedBweV2/CandidateFactors:0.0|1.1/");
LossBasedBweV2 loss_based_bandwidth_estimator_2(
&key_value_config_zero_candidate_factor);
@@ -212,7 +209,7 @@
TEST_F(LossBasedBweV2Test,
DisabledWhenGivenConfigurationThatDoesNotAllowGeneratingCandidates) {
- ExplicitKeyValueConfig key_value_config(
+ FieldTrials key_value_config = CreateTestFieldTrials(
"WebRTC-Bwe-LossBasedBweV2/"
"CandidateFactors:1.0,AckedRateCandidate:false,"
"DelayBasedCandidate:false/");
@@ -221,8 +218,7 @@
}
TEST_F(LossBasedBweV2Test, ReturnsDelayBasedEstimateWhenDisabled) {
- ExplicitKeyValueConfig key_value_config(
- Config(/*enabled=*/false, /*valid=*/true));
+ FieldTrials key_value_config = Config(/*enabled=*/false, /*valid=*/true);
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.UpdateBandwidthEstimate(
/*packet_results=*/{},
@@ -236,13 +232,11 @@
TEST_F(LossBasedBweV2Test,
ReturnsDelayBasedEstimateWhenWhenGivenNonValidConfigurationValues) {
- ExplicitKeyValueConfig key_value_config(
- Config(/*enabled=*/true, /*valid=*/false));
+ FieldTrials key_value_config = Config(/*enabled=*/true, /*valid=*/false);
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.UpdateBandwidthEstimate(
/*packet_results=*/{},
/*delay_based_estimate=*/DataRate::KilobitsPerSec(100),
-
/*in_alr=*/false);
EXPECT_EQ(
loss_based_bandwidth_estimator.GetLossBasedResult().bandwidth_estimate,
@@ -255,15 +249,13 @@
CreatePacketResultsWithReceivedPackets(
/*first_packet_timestamp=*/Timestamp::Zero());
- ExplicitKeyValueConfig key_value_config(
- Config(/*enabled=*/true, /*valid=*/true));
+ FieldTrials key_value_config = Config(/*enabled=*/true, /*valid=*/true);
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
DataRate::KilobitsPerSec(600));
loss_based_bandwidth_estimator.UpdateBandwidthEstimate(
enough_feedback, /*delay_based_estimate=*/DataRate::PlusInfinity(),
-
/*in_alr=*/false);
EXPECT_TRUE(loss_based_bandwidth_estimator.IsReady());
@@ -275,8 +267,7 @@
std::vector<PacketResult> enough_feedback =
CreatePacketResultsWithReceivedPackets(
/*first_packet_timestamp=*/Timestamp::Zero());
- ExplicitKeyValueConfig key_value_config(
- Config(/*enabled=*/true, /*valid=*/true));
+ FieldTrials key_value_config = Config(/*enabled=*/true, /*valid=*/true);
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.UpdateBandwidthEstimate(
@@ -303,8 +294,7 @@
not_enough_feedback[1].receive_time =
Timestamp::Zero() + kObservationDurationLowerBound;
- ExplicitKeyValueConfig key_value_config(
- Config(/*enabled=*/true, /*valid=*/true));
+ FieldTrials key_value_config = Config(/*enabled=*/true, /*valid=*/true);
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
@@ -334,8 +324,7 @@
/*first_packet_timestamp=*/Timestamp::Zero() +
2 * kObservationDurationLowerBound);
- ExplicitKeyValueConfig key_value_config(
- Config(/*enabled=*/true, /*valid=*/true));
+ FieldTrials key_value_config = Config(/*enabled=*/true, /*valid=*/true);
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
@@ -376,8 +365,7 @@
/*first_packet_timestamp=*/Timestamp::Zero() +
2 * kObservationDurationLowerBound);
- ExplicitKeyValueConfig key_value_config(
- Config(/*enabled=*/true, /*valid=*/true));
+ FieldTrials key_value_config = Config(/*enabled=*/true, /*valid=*/true);
LossBasedBweV2 loss_based_bandwidth_estimator_1(&key_value_config);
LossBasedBweV2 loss_based_bandwidth_estimator_2(&key_value_config);
@@ -425,8 +413,7 @@
CreatePacketResultsWith100pLossRate(
/*first_packet_timestamp=*/Timestamp::Zero());
- ExplicitKeyValueConfig key_value_config(
- Config(/*enabled=*/true, /*valid=*/true));
+ FieldTrials key_value_config = Config(/*enabled=*/true, /*valid=*/true);
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
@@ -454,8 +441,7 @@
CreatePacketResultsWithReceivedPackets(
/*first_packet_timestamp=*/Timestamp::Zero() +
2 * kObservationDurationLowerBound);
- ExplicitKeyValueConfig key_value_config(
- Config(/*enabled=*/true, /*valid=*/true));
+ FieldTrials key_value_config = Config(/*enabled=*/true, /*valid=*/true);
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
@@ -493,8 +479,7 @@
/*first_packet_timestamp=*/Timestamp::Zero() +
2 * kObservationDurationLowerBound);
- ExplicitKeyValueConfig key_value_config(
- Config(/*enabled=*/true, /*valid=*/true));
+ FieldTrials key_value_config = Config(/*enabled=*/true, /*valid=*/true);
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
@@ -522,8 +507,7 @@
std::vector<PacketResult> enough_feedback_1 =
CreatePacketResultsWithReceivedPackets(
/*first_packet_timestamp=*/Timestamp::Zero());
- ExplicitKeyValueConfig key_value_config(
- Config(/*enabled=*/true, /*valid=*/true));
+ FieldTrials key_value_config = Config(/*enabled=*/true, /*valid=*/true);
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
DataRate::KilobitsPerSec(600));
@@ -559,8 +543,7 @@
CreatePacketResultsWithReceivedPackets(
/*first_packet_timestamp=*/Timestamp::Zero() +
kObservationDurationLowerBound - TimeDelta::Millis(1));
- ExplicitKeyValueConfig key_value_config(
- Config(/*enabled=*/true, /*valid=*/true));
+ FieldTrials key_value_config = Config(/*enabled=*/true, /*valid=*/true);
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
DataRate::KilobitsPerSec(600));
@@ -592,8 +575,7 @@
CreatePacketResultsWithReceivedPackets(
/*first_packet_timestamp=*/Timestamp::Zero() +
kObservationDurationLowerBound - TimeDelta::Millis(1));
- ExplicitKeyValueConfig key_value_config(
- Config(/*enabled=*/true, /*valid=*/true));
+ FieldTrials key_value_config = Config(/*enabled=*/true, /*valid=*/true);
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
DataRate::KilobitsPerSec(600));
@@ -621,8 +603,7 @@
CreatePacketResultsWithReceivedPackets(
/*first_packet_timestamp=*/Timestamp::Zero() +
2 * kObservationDurationLowerBound);
- ExplicitKeyValueConfig key_value_config(
- Config(/*enabled=*/true, /*valid=*/true));
+ FieldTrials key_value_config = Config(/*enabled=*/true, /*valid=*/true);
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
DataRate delay_based_estimate = DataRate::KilobitsPerSec(5000);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
@@ -643,7 +624,7 @@
}
TEST_F(LossBasedBweV2Test, IncreaseByHoldFactorAfterLossBasedBweBacksOff) {
- ExplicitKeyValueConfig key_value_config(ShortObservationConfig(""));
+ FieldTrials key_value_config = ShortObservationConfig("");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
DataRate delay_based_estimate = DataRate::KilobitsPerSec(5000);
@@ -684,11 +665,11 @@
TEST_F(LossBasedBweV2Test,
LossBasedStateIsDelayBasedEstimateAfterNetworkRecovering) {
- ExplicitKeyValueConfig key_value_config(ShortObservationConfig(
+ FieldTrials key_value_config = ShortObservationConfig(
"CandidateFactors:100|1|0.5,"
"InstantUpperBoundBwBalance:10000kbps,"
"MaxIncreaseFactor:100,"
- "NotIncreaseIfInherentLossLessThanAverageLoss:false"));
+ "NotIncreaseIfInherentLossLessThanAverageLoss:false");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
DataRate delay_based_estimate = DataRate::KilobitsPerSec(600);
DataRate acked_rate = DataRate::KilobitsPerSec(300);
@@ -735,10 +716,10 @@
TEST_F(LossBasedBweV2Test,
LossBasedStateIsNotDelayBasedEstimateIfDelayBasedEstimateInfinite) {
- ExplicitKeyValueConfig key_value_config(
- ShortObservationConfig("CandidateFactors:100|1|0.5,"
- "InstantUpperBoundBwBalance:10000kbps,"
- "MaxIncreaseFactor:100"));
+ FieldTrials key_value_config = ShortObservationConfig(
+ "CandidateFactors:100|1|0.5,"
+ "InstantUpperBoundBwBalance:10000kbps,"
+ "MaxIncreaseFactor:100");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
DataRate::KilobitsPerSec(600));
@@ -773,11 +754,11 @@
// a factor of acked bitrate.
TEST_F(LossBasedBweV2Test,
IncreaseByFactorOfAckedBitrateAfterLossBasedBweBacksOff) {
- ExplicitKeyValueConfig key_value_config(ShortObservationConfig(
+ FieldTrials key_value_config = ShortObservationConfig(
"LossThresholdOfHighBandwidthPreference:0.99,"
"BwRampupUpperBoundFactor:1.2,"
// Set InstantUpperBoundBwBalance high to disable InstantUpperBound cap.
- "InstantUpperBoundBwBalance:10000kbps,"));
+ "InstantUpperBoundBwBalance:10000kbps,");
std::vector<PacketResult> enough_feedback_1 =
CreatePacketResultsWith100pLossRate(
/*first_packet_timestamp=*/Timestamp::Zero());
@@ -832,11 +813,11 @@
// Ensure that the state can switch to kIncrease even when the bandwidth is
// bounded by acked bitrate.
TEST_F(LossBasedBweV2Test, EnsureIncreaseEvenIfAckedBitrateBound) {
- ExplicitKeyValueConfig key_value_config(ShortObservationConfig(
+ FieldTrials key_value_config = ShortObservationConfig(
"LossThresholdOfHighBandwidthPreference:0.99,"
"BwRampupUpperBoundFactor:1.2,"
// Set InstantUpperBoundBwBalance high to disable InstantUpperBound cap.
- "InstantUpperBoundBwBalance:10000kbps,"));
+ "InstantUpperBoundBwBalance:10000kbps,");
std::vector<PacketResult> enough_feedback_1 =
CreatePacketResultsWith100pLossRate(
/*first_packet_timestamp=*/Timestamp::Zero());
@@ -891,8 +872,7 @@
CreatePacketResultsWithReceivedPackets(
/*first_packet_timestamp=*/Timestamp::Zero() +
kDelayedIncreaseWindow - TimeDelta::Millis(1));
- ExplicitKeyValueConfig key_value_config(
- Config(/*enabled=*/true, /*valid=*/true));
+ FieldTrials key_value_config = Config(/*enabled=*/true, /*valid=*/true);
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
DataRate delay_based_estimate = DataRate::KilobitsPerSec(5000);
@@ -939,8 +919,7 @@
CreatePacketResultsWithReceivedPackets(
/*first_packet_timestamp=*/Timestamp::Zero() +
kDelayedIncreaseWindow + TimeDelta::Millis(1));
- ExplicitKeyValueConfig key_value_config(
- Config(/*enabled=*/true, /*valid=*/true));
+ FieldTrials key_value_config = Config(/*enabled=*/true, /*valid=*/true);
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
DataRate delay_based_estimate = DataRate::KilobitsPerSec(5000);
@@ -974,9 +953,9 @@
}
TEST_F(LossBasedBweV2Test, NotIncreaseIfInherentLossLessThanAverageLoss) {
- ExplicitKeyValueConfig key_value_config(ShortObservationConfig(
+ FieldTrials key_value_config = ShortObservationConfig(
"CandidateFactors:1.2,"
- "NotIncreaseIfInherentLossLessThanAverageLoss:true"));
+ "NotIncreaseIfInherentLossLessThanAverageLoss:true");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
@@ -1007,9 +986,9 @@
TEST_F(LossBasedBweV2Test,
SelectHighBandwidthCandidateIfLossRateIsLessThanThreshold) {
- ExplicitKeyValueConfig key_value_config(ShortObservationConfig(
+ FieldTrials key_value_config = ShortObservationConfig(
"LossThresholdOfHighBandwidthPreference:0.20,"
- "NotIncreaseIfInherentLossLessThanAverageLoss:false"));
+ "NotIncreaseIfInherentLossLessThanAverageLoss:false");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
DataRate delay_based_estimate = DataRate::KilobitsPerSec(5000);
@@ -1042,8 +1021,8 @@
TEST_F(LossBasedBweV2Test,
SelectLowBandwidthCandidateIfLossRateIsIsHigherThanThreshold) {
- ExplicitKeyValueConfig key_value_config(
- ShortObservationConfig("LossThresholdOfHighBandwidthPreference:0.05"));
+ FieldTrials key_value_config =
+ ShortObservationConfig("LossThresholdOfHighBandwidthPreference:0.05");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
DataRate delay_based_estimate = DataRate::KilobitsPerSec(5000);
@@ -1075,8 +1054,7 @@
}
TEST_F(LossBasedBweV2Test, EstimateIsNotHigherThanMaxBitrate) {
- ExplicitKeyValueConfig key_value_config(
- Config(/*enabled=*/true, /*valid=*/true));
+ FieldTrials key_value_config = Config(/*enabled=*/true, /*valid=*/true);
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetMinMaxBitrate(
/*min_bitrate=*/DataRate::KilobitsPerSec(10),
@@ -1097,8 +1075,8 @@
}
TEST_F(LossBasedBweV2Test, NotBackOffToAckedRateInAlr) {
- ExplicitKeyValueConfig key_value_config(
- ShortObservationConfig("InstantUpperBoundBwBalance:100kbps"));
+ FieldTrials key_value_config =
+ ShortObservationConfig("InstantUpperBoundBwBalance:100kbps");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetMinMaxBitrate(
/*min_bitrate=*/DataRate::KilobitsPerSec(10),
@@ -1127,8 +1105,8 @@
}
TEST_F(LossBasedBweV2Test, BackOffToAckedRateIfNotInAlr) {
- ExplicitKeyValueConfig key_value_config(
- ShortObservationConfig("InstantUpperBoundBwBalance:100kbps"));
+ FieldTrials key_value_config =
+ ShortObservationConfig("InstantUpperBoundBwBalance:100kbps");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetMinMaxBitrate(
/*min_bitrate=*/DataRate::KilobitsPerSec(10),
@@ -1154,8 +1132,7 @@
}
TEST_F(LossBasedBweV2Test, NotReadyToUseInStartPhase) {
- ExplicitKeyValueConfig key_value_config(
- ShortObservationConfig("UseInStartPhase:true"));
+ FieldTrials key_value_config = ShortObservationConfig("UseInStartPhase:true");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
// Make sure that the estimator is not ready to use in start phase because of
// lacking TWCC feedback.
@@ -1163,8 +1140,7 @@
}
TEST_F(LossBasedBweV2Test, ReadyToUseInStartPhase) {
- ExplicitKeyValueConfig key_value_config(
- ShortObservationConfig("UseInStartPhase:true"));
+ FieldTrials key_value_config = ShortObservationConfig("UseInStartPhase:true");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
std::vector<PacketResult> enough_feedback =
CreatePacketResultsWithReceivedPackets(
@@ -1177,8 +1153,8 @@
}
TEST_F(LossBasedBweV2Test, BoundEstimateByAckedRate) {
- ExplicitKeyValueConfig key_value_config(
- ShortObservationConfig("LowerBoundByAckedRateFactor:1.0"));
+ FieldTrials key_value_config =
+ ShortObservationConfig("LowerBoundByAckedRateFactor:1.0");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetMinMaxBitrate(
/*min_bitrate=*/DataRate::KilobitsPerSec(10),
@@ -1202,8 +1178,8 @@
}
TEST_F(LossBasedBweV2Test, NotBoundEstimateByAckedRate) {
- ExplicitKeyValueConfig key_value_config(
- ShortObservationConfig("LowerBoundByAckedRateFactor:0.0"));
+ FieldTrials key_value_config =
+ ShortObservationConfig("LowerBoundByAckedRateFactor:0.0");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetMinMaxBitrate(
/*min_bitrate=*/DataRate::KilobitsPerSec(10),
@@ -1227,8 +1203,8 @@
}
TEST_F(LossBasedBweV2Test, HasDecreaseStateBecauseOfUpperBound) {
- ExplicitKeyValueConfig key_value_config(ShortObservationConfig(
- "CandidateFactors:1.0,InstantUpperBoundBwBalance:10kbps"));
+ FieldTrials key_value_config = ShortObservationConfig(
+ "CandidateFactors:1.0,InstantUpperBoundBwBalance:10kbps");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetMinMaxBitrate(
/*min_bitrate=*/DataRate::KilobitsPerSec(10),
@@ -1256,8 +1232,8 @@
}
TEST_F(LossBasedBweV2Test, HasIncreaseStateBecauseOfLowerBound) {
- ExplicitKeyValueConfig key_value_config(ShortObservationConfig(
- "CandidateFactors:1.0,LowerBoundByAckedRateFactor:10.0"));
+ FieldTrials key_value_config = ShortObservationConfig(
+ "CandidateFactors:1.0,LowerBoundByAckedRateFactor:10.0");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetMinMaxBitrate(
/*min_bitrate=*/DataRate::KilobitsPerSec(10),
@@ -1302,8 +1278,8 @@
TEST_F(LossBasedBweV2Test,
EstimateIncreaseSlowlyFromInstantUpperBoundInAlrIfFieldTrial) {
- ExplicitKeyValueConfig key_value_config(
- ShortObservationConfig("UpperBoundCandidateInAlr:true"));
+ FieldTrials key_value_config =
+ ShortObservationConfig("UpperBoundCandidateInAlr:true");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
DataRate::KilobitsPerSec(1000));
@@ -1333,7 +1309,7 @@
}
TEST_F(LossBasedBweV2Test, HasDelayBasedStateIfLossBasedBweIsMax) {
- ExplicitKeyValueConfig key_value_config(ShortObservationConfig(""));
+ FieldTrials key_value_config = ShortObservationConfig("");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetMinMaxBitrate(
/*min_bitrate=*/DataRate::KilobitsPerSec(10),
@@ -1379,8 +1355,8 @@
}
TEST_F(LossBasedBweV2Test, IncreaseUsingPaddingStateIfFieldTrial) {
- ExplicitKeyValueConfig key_value_config(
- ShortObservationConfig("PaddingDuration:1000ms"));
+ FieldTrials key_value_config =
+ ShortObservationConfig("PaddingDuration:1000ms");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
DataRate::KilobitsPerSec(2500));
@@ -1407,8 +1383,8 @@
}
TEST_F(LossBasedBweV2Test, BestCandidateResetsToUpperBoundInFieldTrial) {
- ExplicitKeyValueConfig key_value_config(
- ShortObservationConfig("PaddingDuration:1000ms,BoundBestCandidate:true"));
+ FieldTrials key_value_config =
+ ShortObservationConfig("PaddingDuration:1000ms,BoundBestCandidate:true");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
DataRate::KilobitsPerSec(2500));
@@ -1443,10 +1419,10 @@
}
TEST_F(LossBasedBweV2Test, DecreaseToAckedCandidateIfPaddingInAlr) {
- ExplicitKeyValueConfig key_value_config(ShortObservationConfig(
+ FieldTrials key_value_config = ShortObservationConfig(
"PaddingDuration:1000ms,"
// Set InstantUpperBoundBwBalance high to disable InstantUpperBound cap.
- "InstantUpperBoundBwBalance:10000kbps"));
+ "InstantUpperBoundBwBalance:10000kbps");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
DataRate::KilobitsPerSec(1000));
@@ -1493,8 +1469,8 @@
}
TEST_F(LossBasedBweV2Test, DecreaseAfterPadding) {
- ExplicitKeyValueConfig key_value_config(ShortObservationConfig(
- "PaddingDuration:1000ms,BwRampupUpperBoundFactor:2.0"));
+ FieldTrials key_value_config = ShortObservationConfig(
+ "PaddingDuration:1000ms,BwRampupUpperBoundFactor:2.0");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
DataRate::KilobitsPerSec(2500));
@@ -1549,8 +1525,8 @@
TEST_F(LossBasedBweV2Test, HoldRateNotLowerThanAckedRate) {
- ExplicitKeyValueConfig key_value_config(ShortObservationConfig(
- "HoldDurationFactor:10,LowerBoundByAckedRateFactor:1.0"));
+ FieldTrials key_value_config = ShortObservationConfig(
+ "HoldDurationFactor:10,LowerBoundByAckedRateFactor:1.0");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
DataRate::KilobitsPerSec(2500));
@@ -1579,8 +1555,8 @@
}
TEST_F(LossBasedBweV2Test, EstimateNotLowerThanAckedRate) {
- ExplicitKeyValueConfig key_value_config(
- ShortObservationConfig("LowerBoundByAckedRateFactor:1.0"));
+ FieldTrials key_value_config =
+ ShortObservationConfig("LowerBoundByAckedRateFactor:1.0");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
DataRate::KilobitsPerSec(2500));
@@ -1625,7 +1601,7 @@
}
TEST_F(LossBasedBweV2Test, EndHoldDurationIfDelayBasedEstimateWorks) {
- ExplicitKeyValueConfig key_value_config(ShortObservationConfig(""));
+ FieldTrials key_value_config = ShortObservationConfig("");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
DataRate::KilobitsPerSec(2500));
@@ -1659,8 +1635,7 @@
}
TEST_F(LossBasedBweV2Test, UseByteLossRate) {
- ExplicitKeyValueConfig key_value_config(
- ShortObservationConfig("UseByteLossRate:true"));
+ FieldTrials key_value_config = ShortObservationConfig("UseByteLossRate:true");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
loss_based_bandwidth_estimator.SetBandwidthEstimate(
DataRate::KilobitsPerSec(500));
@@ -1680,7 +1655,7 @@
}
TEST_F(LossBasedBweV2Test, UseByteLossRateIgnoreLossSpike) {
- ExplicitKeyValueConfig key_value_config(
+ FieldTrials key_value_config = CreateTestFieldTrials(
"WebRTC-Bwe-LossBasedBweV2/"
"UseByteLossRate:true,ObservationWindowSize:5/");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
@@ -1729,7 +1704,7 @@
}
TEST_F(LossBasedBweV2Test, UseByteLossRateDoesNotIgnoreLossSpikeOnSendBurst) {
- ExplicitKeyValueConfig key_value_config(
+ FieldTrials key_value_config = CreateTestFieldTrials(
"WebRTC-Bwe-LossBasedBweV2/"
"UseByteLossRate:true,ObservationWindowSize:5/");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
@@ -1764,7 +1739,7 @@
TEST_F(LossBasedBweV2Test,
EstimateDoesNotBackOffDueToPacketReorderingBetweenFeedback) {
- ExplicitKeyValueConfig key_value_config(ShortObservationConfig(""));
+ FieldTrials key_value_config = ShortObservationConfig("");
LossBasedBweV2 loss_based_bandwidth_estimator(&key_value_config);
const DataRate kStartBitrate = DataRate::KilobitsPerSec(2500);
loss_based_bandwidth_estimator.SetBandwidthEstimate(kStartBitrate);
diff --git a/modules/congestion_controller/goog_cc/probe_controller_unittest.cc b/modules/congestion_controller/goog_cc/probe_controller_unittest.cc
index 39712ad..7b6267d 100644
--- a/modules/congestion_controller/goog_cc/probe_controller_unittest.cc
+++ b/modules/congestion_controller/goog_cc/probe_controller_unittest.cc
@@ -14,13 +14,14 @@
#include <vector>
#include "absl/strings/string_view.h"
+#include "api/field_trials.h"
#include "api/transport/network_types.h"
#include "api/units/data_rate.h"
#include "api/units/time_delta.h"
#include "api/units/timestamp.h"
#include "logging/rtc_event_log/mock/mock_rtc_event_log.h"
#include "system_wrappers/include/clock.h"
-#include "test/explicit_key_value_config.h"
+#include "test/create_test_field_trials.h"
#include "test/gmock.h"
#include "test/gtest.h"
@@ -49,7 +50,8 @@
class ProbeControllerFixture {
public:
explicit ProbeControllerFixture(absl::string_view field_trials = "")
- : field_trial_config_(field_trials), clock_(100000000L) {}
+ : field_trial_config_(CreateTestFieldTrials(field_trials)),
+ clock_(100000000L) {}
std::unique_ptr<ProbeController> CreateController() {
return std::make_unique<ProbeController>(&field_trial_config_,
@@ -59,7 +61,7 @@
Timestamp CurrentTime() { return clock_.CurrentTime(); }
void AdvanceTime(TimeDelta delta) { clock_.AdvanceTime(delta); }
- ExplicitKeyValueConfig field_trial_config_;
+ FieldTrials field_trial_config_;
SimulatedClock clock_;
NiceMock<MockRtcEventLog> mock_rtc_event_log;
};
diff --git a/modules/congestion_controller/goog_cc/robust_throughput_estimator_unittest.cc b/modules/congestion_controller/goog_cc/robust_throughput_estimator_unittest.cc
index ef58263..6d5a742 100644
--- a/modules/congestion_controller/goog_cc/robust_throughput_estimator_unittest.cc
+++ b/modules/congestion_controller/goog_cc/robust_throughput_estimator_unittest.cc
@@ -17,20 +17,21 @@
#include <vector>
#include "absl/strings/string_view.h"
+#include "api/field_trials.h"
#include "api/transport/network_types.h"
#include "api/units/data_rate.h"
#include "api/units/data_size.h"
#include "api/units/time_delta.h"
#include "api/units/timestamp.h"
#include "modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_interface.h"
-#include "test/explicit_key_value_config.h"
+#include "test/create_test_field_trials.h"
#include "test/gtest.h"
namespace webrtc {
RobustThroughputEstimatorSettings CreateRobustThroughputEstimatorSettings(
absl::string_view field_trial_string) {
- test::ExplicitKeyValueConfig trials(field_trial_string);
+ FieldTrials trials = CreateTestFieldTrials(field_trial_string);
RobustThroughputEstimatorSettings settings(&trials);
return settings;
}
diff --git a/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation.cc b/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation.cc
index c42e015..eccad2b 100644
--- a/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation.cc
+++ b/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation.cc
@@ -152,7 +152,7 @@
return DataRate::BitsPerSec(capacity_estimate_bps_);
}
-RttBasedBackoff::RttBasedBackoff(const FieldTrialsView* key_value_config)
+RttBasedBackoff::RttBasedBackoff(const FieldTrialsView& key_value_config)
: disabled_("Disabled"),
configured_limit_("limit", TimeDelta::Seconds(3)),
drop_fraction_("fraction", 0.8),
@@ -166,7 +166,7 @@
last_packet_sent_(Timestamp::MinusInfinity()) {
ParseFieldTrial({&disabled_, &configured_limit_, &drop_fraction_,
&drop_interval_, &bandwidth_floor_},
- key_value_config->Lookup("WebRTC-Bwe-MaxRttLimit"));
+ key_value_config.Lookup("WebRTC-Bwe-MaxRttLimit"));
if (!disabled_) {
rtt_limit_ = configured_limit_.Get();
}
@@ -195,7 +195,7 @@
const FieldTrialsView* key_value_config,
RtcEventLog* event_log)
: key_value_config_(key_value_config),
- rtt_backoff_(key_value_config),
+ rtt_backoff_(*key_value_config),
lost_packets_since_last_loss_update_(0),
expected_packets_since_last_loss_update_(0),
current_target_(DataRate::Zero()),
diff --git a/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation.h b/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation.h
index 72123a7..5fa8ae9 100644
--- a/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation.h
+++ b/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation.h
@@ -57,7 +57,7 @@
class RttBasedBackoff {
public:
- explicit RttBasedBackoff(const FieldTrialsView* key_value_config);
+ explicit RttBasedBackoff(const FieldTrialsView& key_value_config);
~RttBasedBackoff();
void UpdatePropagationRtt(Timestamp at_time, TimeDelta propagation_rtt);
bool IsRttAboveLimit() const;
diff --git a/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation_unittest.cc b/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation_unittest.cc
index 866700b..5efd337 100644
--- a/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation_unittest.cc
+++ b/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation_unittest.cc
@@ -12,13 +12,14 @@
#include <cstdint>
+#include "api/field_trials.h"
#include "api/rtc_event_log/rtc_event.h"
#include "api/units/data_rate.h"
#include "api/units/time_delta.h"
#include "api/units/timestamp.h"
#include "logging/rtc_event_log/events/rtc_event_bwe_update_loss_based.h"
#include "logging/rtc_event_log/mock/mock_rtc_event_log.h"
-#include "test/explicit_key_value_config.h"
+#include "test/create_test_field_trials.h"
#include "test/gmock.h"
#include "test/gtest.h"
@@ -42,7 +43,7 @@
void TestProbing(bool use_delay_based) {
::testing::NiceMock<MockRtcEventLog> event_log;
- test::ExplicitKeyValueConfig key_value_config("");
+ FieldTrials key_value_config = CreateTestFieldTrials();
SendSideBandwidthEstimation bwe(&key_value_config, &event_log);
int64_t now_ms = 0;
bwe.SetMinMaxBitrate(DataRate::BitsPerSec(100000),
@@ -95,7 +96,7 @@
EXPECT_CALL(event_log,
LogProxy(LossBasedBweUpdateWithBitrateAndLossFraction()))
.Times(1);
- test::ExplicitKeyValueConfig key_value_config("");
+ FieldTrials key_value_config = CreateTestFieldTrials();
SendSideBandwidthEstimation bwe(&key_value_config, &event_log);
static const int kMinBitrateBps = 100000;
static const int kInitialBitrateBps = 1000000;
@@ -146,7 +147,7 @@
TEST(SendSideBweTest, SettingSendBitrateOverridesDelayBasedEstimate) {
::testing::NiceMock<MockRtcEventLog> event_log;
- test::ExplicitKeyValueConfig key_value_config("");
+ FieldTrials key_value_config = CreateTestFieldTrials();
SendSideBandwidthEstimation bwe(&key_value_config, &event_log);
static const int kMinBitrateBps = 10000;
static const int kMaxBitrateBps = 10000000;
@@ -173,21 +174,20 @@
}
TEST(RttBasedBackoff, DefaultEnabled) {
- test::ExplicitKeyValueConfig key_value_config("");
- RttBasedBackoff rtt_backoff(&key_value_config);
+ RttBasedBackoff rtt_backoff(CreateTestFieldTrials());
EXPECT_TRUE(rtt_backoff.rtt_limit_.IsFinite());
}
TEST(RttBasedBackoff, CanBeDisabled) {
- test::ExplicitKeyValueConfig key_value_config(
- "WebRTC-Bwe-MaxRttLimit/Disabled/");
- RttBasedBackoff rtt_backoff(&key_value_config);
+ FieldTrials key_value_config =
+ CreateTestFieldTrials("WebRTC-Bwe-MaxRttLimit/Disabled/");
+ RttBasedBackoff rtt_backoff(key_value_config);
EXPECT_TRUE(rtt_backoff.rtt_limit_.IsPlusInfinity());
}
TEST(SendSideBweTest, FractionLossIsNotOverflowed) {
MockRtcEventLog event_log;
- test::ExplicitKeyValueConfig key_value_config("");
+ FieldTrials key_value_config = CreateTestFieldTrials();
SendSideBandwidthEstimation bwe(&key_value_config, &event_log);
static const int kMinBitrateBps = 100000;
static const int kInitialBitrateBps = 1000000;
@@ -210,7 +210,7 @@
TEST(SendSideBweTest, RttIsAboveLimitIfRttGreaterThanLimit) {
::testing::NiceMock<MockRtcEventLog> event_log;
- test::ExplicitKeyValueConfig key_value_config("");
+ FieldTrials key_value_config = CreateTestFieldTrials();
SendSideBandwidthEstimation bwe(&key_value_config, &event_log);
static const int kMinBitrateBps = 10000;
static const int kMaxBitrateBps = 10000000;
@@ -227,7 +227,7 @@
TEST(SendSideBweTest, RttIsBelowLimitIfRttLessThanLimit) {
::testing::NiceMock<MockRtcEventLog> event_log;
- test::ExplicitKeyValueConfig key_value_config("");
+ FieldTrials key_value_config = CreateTestFieldTrials();
SendSideBandwidthEstimation bwe(&key_value_config, &event_log);
static const int kMinBitrateBps = 10000;
static const int kMaxBitrateBps = 10000000;
diff --git a/modules/congestion_controller/goog_cc/trendline_estimator.cc b/modules/congestion_controller/goog_cc/trendline_estimator.cc
index 2f8835a..35ec139 100644
--- a/modules/congestion_controller/goog_cc/trendline_estimator.cc
+++ b/modules/congestion_controller/goog_cc/trendline_estimator.cc
@@ -22,7 +22,6 @@
#include <string>
#include <utility>
-#include "absl/strings/match.h"
#include "api/field_trials_view.h"
#include "api/network_state_predictor.h"
#include "api/transport/bandwidth_usage.h"
@@ -41,9 +40,9 @@
const char kBweWindowSizeInPacketsExperiment[] =
"WebRTC-BweWindowSizeInPackets";
-size_t ReadTrendlineFilterWindowSize(const FieldTrialsView* key_value_config) {
+size_t ReadTrendlineFilterWindowSize(const FieldTrialsView& key_value_config) {
std::string experiment_string =
- key_value_config->Lookup(kBweWindowSizeInPacketsExperiment);
+ key_value_config.Lookup(kBweWindowSizeInPacketsExperiment);
size_t window_size;
int parsed_values =
sscanf(experiment_string.c_str(), "Enabled-%zu", &window_size);
@@ -121,13 +120,11 @@
constexpr char TrendlineEstimatorSettings::kKey[];
TrendlineEstimatorSettings::TrendlineEstimatorSettings(
- const FieldTrialsView* key_value_config) {
- if (absl::StartsWith(
- key_value_config->Lookup(kBweWindowSizeInPacketsExperiment),
- "Enabled")) {
+ const FieldTrialsView& key_value_config) {
+ if (key_value_config.IsEnabled(kBweWindowSizeInPacketsExperiment)) {
window_size = ReadTrendlineFilterWindowSize(key_value_config);
}
- Parser()->Parse(key_value_config->Lookup(TrendlineEstimatorSettings::kKey));
+ Parser()->Parse(key_value_config.Lookup(TrendlineEstimatorSettings::kKey));
if (window_size < 10 || 200 < window_size) {
RTC_LOG(LS_WARNING) << "Window size must be between 10 and 200 packets";
window_size = kDefaultTrendlineWindowSize;
@@ -166,7 +163,7 @@
}
TrendlineEstimator::TrendlineEstimator(
- const FieldTrialsView* key_value_config,
+ const FieldTrialsView& key_value_config,
NetworkStatePredictor* network_state_predictor)
: settings_(key_value_config),
smoothing_coef_(kDefaultTrendlineSmoothingCoeff),
diff --git a/modules/congestion_controller/goog_cc/trendline_estimator.h b/modules/congestion_controller/goog_cc/trendline_estimator.h
index 70336ea..5fc55ac 100644
--- a/modules/congestion_controller/goog_cc/trendline_estimator.h
+++ b/modules/congestion_controller/goog_cc/trendline_estimator.h
@@ -29,7 +29,7 @@
static constexpr unsigned kDefaultTrendlineWindowSize = 20;
TrendlineEstimatorSettings() = delete;
- explicit TrendlineEstimatorSettings(const FieldTrialsView* key_value_config);
+ explicit TrendlineEstimatorSettings(const FieldTrialsView& key_value_config);
// Sort the packets in the window. Should be redundant,
// but then almost no cost.
@@ -50,7 +50,7 @@
class TrendlineEstimator : public DelayIncreaseDetectorInterface {
public:
- TrendlineEstimator(const FieldTrialsView* key_value_config,
+ TrendlineEstimator(const FieldTrialsView& key_value_config,
NetworkStatePredictor* network_state_predictor);
~TrendlineEstimator() override;
diff --git a/modules/congestion_controller/goog_cc/trendline_estimator_unittest.cc b/modules/congestion_controller/goog_cc/trendline_estimator_unittest.cc
index 2c52d7d..3e4368c 100644
--- a/modules/congestion_controller/goog_cc/trendline_estimator_unittest.cc
+++ b/modules/congestion_controller/goog_cc/trendline_estimator_unittest.cc
@@ -16,8 +16,8 @@
#include <vector>
#include "api/transport/bandwidth_usage.h"
-#include "api/transport/field_trial_based_config.h"
#include "rtc_base/checks.h"
+#include "test/create_test_field_trials.h"
#include "test/gtest.h"
namespace webrtc {
@@ -45,8 +45,7 @@
: send_times(kPacketCount),
recv_times(kPacketCount),
packet_sizes(kPacketCount),
- config(),
- estimator(&config, nullptr),
+ estimator(CreateTestFieldTrials(), nullptr),
count(1) {
std::fill(packet_sizes.begin(), packet_sizes.end(), kPacketSizeBytes);
}
@@ -76,7 +75,6 @@
std::vector<int64_t> send_times;
std::vector<int64_t> recv_times;
std::vector<size_t> packet_sizes;
- const FieldTrialBasedConfig config;
TrendlineEstimator estimator;
size_t count;
};
diff --git a/modules/congestion_controller/receive_side_congestion_controller_unittest.cc b/modules/congestion_controller/receive_side_congestion_controller_unittest.cc
index 0fb5914..405d3b7 100644
--- a/modules/congestion_controller/receive_side_congestion_controller_unittest.cc
+++ b/modules/congestion_controller/receive_side_congestion_controller_unittest.cc
@@ -15,6 +15,7 @@
#include <vector>
#include "api/environment/environment_factory.h"
+#include "api/field_trials.h"
#include "api/media_types.h"
#include "api/test/network_emulation/create_cross_traffic.h"
#include "api/test/network_emulation/cross_traffic.h"
@@ -30,7 +31,7 @@
#include "modules/rtp_rtcp/source/rtp_packet_received.h"
#include "rtc_base/buffer.h"
#include "system_wrappers/include/clock.h"
-#include "test/explicit_key_value_config.h"
+#include "test/create_test_field_trials.h"
#include "test/gmock.h"
#include "test/gtest.h"
#include "test/scenario/scenario.h"
@@ -104,7 +105,7 @@
}
TEST(ReceiveSideCongestionControllerTest, SendsRfc8888FeedbackIfForced) {
- test::ExplicitKeyValueConfig field_trials(
+ FieldTrials field_trials = CreateTestFieldTrials(
"WebRTC-RFC8888CongestionControlFeedback/force_send:true/");
MockFunction<void(std::vector<std::unique_ptr<rtcp::RtcpPacket>>)>
rtcp_sender;
diff --git a/modules/congestion_controller/rtp/BUILD.gn b/modules/congestion_controller/rtp/BUILD.gn
index f9e230e..3f66157 100644
--- a/modules/congestion_controller/rtp/BUILD.gn
+++ b/modules/congestion_controller/rtp/BUILD.gn
@@ -85,7 +85,6 @@
"../../../rtc_base:safe_conversions",
"../../../rtc_base/network:sent_packet",
"../../../system_wrappers",
- "../../../test:field_trial",
"../../../test:test_support",
"../../pacing",
"../../remote_bitrate_estimator",