From f3db00f8320fc71366e81c6cedc2636287c3e3d6 Mon Sep 17 00:00:00 2001 From: Mirko Bonadei Date: Mon, 23 Aug 2021 17:39:58 +0200 Subject: [PATCH] Check field trials are valid in ScopedFieldTrials. This CL adds an RTC_CHECK in both ctor and dtor to ensure field trials are valid. Even if the check in the ctor is done already in debug mode, having it done always is fine because ScopedFieldTrials are testonly. The check in the dtor should catch issues like reverting to another ScopedFieldTrial which has already been destroyed. Bug: None Change-Id: I53a8680c3ff4fd0e2cbb3055af726a9023b45ac7 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/229861 Reviewed-by: Danil Chapovalov Reviewed-by: Artem Titov Commit-Queue: Mirko Bonadei Cr-Commit-Position: refs/heads/main@{#34828} --- test/BUILD.gn | 5 ++++- test/field_trial.cc | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/test/BUILD.gn b/test/BUILD.gn index c89085d542..18f680402d 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn @@ -220,7 +220,10 @@ rtc_library("field_trial") { "field_trial.h", ] - deps = [ "../system_wrappers:field_trial" ] + deps = [ + "../rtc_base:checks", + "../system_wrappers:field_trial", + ] } rtc_library("explicit_key_value_config") { diff --git a/test/field_trial.cc b/test/field_trial.cc index c40fcc36c1..96842012c6 100644 --- a/test/field_trial.cc +++ b/test/field_trial.cc @@ -16,6 +16,7 @@ #include #include +#include "rtc_base/checks.h" #include "system_wrappers/include/field_trial.h" namespace webrtc { @@ -24,11 +25,16 @@ void ValidateFieldTrialsStringOrDie(const std::string&) {} ScopedFieldTrials::ScopedFieldTrials(const std::string& config) : previous_field_trials_(webrtc::field_trial::GetFieldTrialString()) { + RTC_CHECK(webrtc::field_trial::FieldTrialsStringIsValid(config.c_str())) + << "Invalid field trials string: " << config; current_field_trials_ = config; webrtc::field_trial::InitFieldTrialsFromString(current_field_trials_.c_str()); } ScopedFieldTrials::~ScopedFieldTrials() { + RTC_CHECK( + webrtc::field_trial::FieldTrialsStringIsValid(previous_field_trials_)) + << "Invalid field trials string: " << previous_field_trials_; webrtc::field_trial::InitFieldTrialsFromString(previous_field_trials_); }