From b378a22544b91c0a3c586156db90d76063cf9717 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Spr=C3=A5ng?= Date: Mon, 2 Oct 2017 13:25:38 +0200 Subject: [PATCH] Fix ALR field trial parsing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: chromium:770429 Change-Id: Ic869e74ec7086f5a2cb3968c0d2335fd7df7f618 Reviewed-on: https://webrtc-review.googlesource.com/5483 Reviewed-by: Philip Eliasson Commit-Queue: Erik Språng Cr-Commit-Position: refs/heads/master@{#20076} --- modules/pacing/BUILD.gn | 1 + modules/pacing/alr_detector.cc | 5 +++-- modules/pacing/alr_detector_unittest.cc | 25 +++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/modules/pacing/BUILD.gn b/modules/pacing/BUILD.gn index f72d3f990f..fd350a4026 100644 --- a/modules/pacing/BUILD.gn +++ b/modules/pacing/BUILD.gn @@ -65,6 +65,7 @@ if (rtc_include_tests) { "../../rtc_base:rtc_base_approved", "../../rtc_base:rtc_base_tests_utils", "../../system_wrappers:system_wrappers", + "../../test:field_trial", "../../test:test_support", "../rtp_rtcp", "../rtp_rtcp:mock_rtp_rtcp", diff --git a/modules/pacing/alr_detector.cc b/modules/pacing/alr_detector.cc index 3b60a3793a..1c29e0a012 100644 --- a/modules/pacing/alr_detector.cc +++ b/modules/pacing/alr_detector.cc @@ -83,8 +83,9 @@ AlrDetector::ParseAlrSettingsFromFieldTrial(const char* experiment_name) { std::string group_name = field_trial::FindFullName(experiment_name); const std::string kIgnoredSuffix = "_Dogfood"; - if (group_name.rfind(kIgnoredSuffix) == - group_name.length() - kIgnoredSuffix.length()) { + std::string::size_type suffix_pos = group_name.rfind(kIgnoredSuffix); + if (suffix_pos != std::string::npos && + suffix_pos == group_name.length() - kIgnoredSuffix.length()) { group_name.resize(group_name.length() - kIgnoredSuffix.length()); } diff --git a/modules/pacing/alr_detector_unittest.cc b/modules/pacing/alr_detector_unittest.cc index 891b4ef0c1..927015615c 100644 --- a/modules/pacing/alr_detector_unittest.cc +++ b/modules/pacing/alr_detector_unittest.cc @@ -10,6 +10,7 @@ #include "modules/pacing/alr_detector.h" +#include "test/field_trial.h" #include "test/gtest.h" namespace { @@ -142,4 +143,28 @@ TEST_F(AlrDetectorTest, BandwidthEstimateChanges) { EXPECT_FALSE(alr_detector_.GetApplicationLimitedRegionStartTime()); } +TEST_F(AlrDetectorTest, ParseControlFieldTrial) { + webrtc::test::ScopedFieldTrials field_trial( + "WebRTC-ProbingScreenshareBwe/Control/"); + rtc::Optional parsed_params = + AlrDetector::ParseAlrSettingsFromFieldTrial( + "WebRTC-ProbingScreenshareBwe"); + EXPECT_FALSE(static_cast(parsed_params)); +} + +TEST_F(AlrDetectorTest, ParseActiveFieldTrial) { + webrtc::test::ScopedFieldTrials field_trial( + "WebRTC-ProbingScreenshareBwe/1.1,2875,85,20,-20,1/"); + rtc::Optional parsed_params = + AlrDetector::ParseAlrSettingsFromFieldTrial( + "WebRTC-ProbingScreenshareBwe"); + ASSERT_TRUE(static_cast(parsed_params)); + EXPECT_EQ(1.1f, parsed_params->pacing_factor); + EXPECT_EQ(2875, parsed_params->max_paced_queue_time); + EXPECT_EQ(85, parsed_params->alr_bandwidth_usage_percent); + EXPECT_EQ(20, parsed_params->alr_start_budget_level_percent); + EXPECT_EQ(-20, parsed_params->alr_stop_budget_level_percent); + EXPECT_EQ(1, parsed_params->group_id); +} + } // namespace webrtc