mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-12 21:30:45 +01:00
Clean up FieldTrials unit tests
This renames the tests to also capture the expected outcome of the test along with some minor code cleanups. Some tests have also been added or extended to tests more invariants. Bug: None Change-Id: I0bc733026118eb90646929b164bfc148665556a8 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/267169 Reviewed-by: Jonas Oreland <jonaso@webrtc.org> Commit-Queue: Per Kjellander <perkj@webrtc.org> Reviewed-by: Per Kjellander <perkj@webrtc.org> Auto-Submit: Emil Lundmark <lndmrk@webrtc.org> Cr-Commit-Position: refs/heads/main@{#37673}
This commit is contained in:
parent
96191f8e68
commit
5fbe42a0b3
1 changed files with 57 additions and 32 deletions
|
@ -10,8 +10,11 @@
|
|||
|
||||
#include "api/field_trials.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "api/transport/field_trial_based_config.h"
|
||||
#include "system_wrappers/include/field_trial.h"
|
||||
#include "test/gmock.h"
|
||||
#include "test/gtest.h"
|
||||
|
||||
#if GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
|
||||
|
@ -19,67 +22,79 @@
|
|||
#endif // GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
|
||||
|
||||
namespace webrtc {
|
||||
namespace {
|
||||
|
||||
TEST(FieldTrials, EmptyString) {
|
||||
using ::testing::NotNull;
|
||||
|
||||
TEST(FieldTrialsTest, EmptyStringHasNoEffect) {
|
||||
FieldTrials f("");
|
||||
EXPECT_FALSE(f.IsEnabled("MyCoolTrial"));
|
||||
EXPECT_FALSE(f.IsDisabled("MyCoolTrial"));
|
||||
}
|
||||
|
||||
TEST(FieldTrials, EnableDisable) {
|
||||
FieldTrials f("MyCoolTrial/Enabled/MyUncoolTrial/Disabled/");
|
||||
TEST(FieldTrialsTest, EnabledDisabledMustBeFirstInValue) {
|
||||
FieldTrials f(
|
||||
"MyCoolTrial/EnabledFoo/"
|
||||
"MyUncoolTrial/DisabledBar/"
|
||||
"AnotherTrial/BazEnabled/");
|
||||
EXPECT_TRUE(f.IsEnabled("MyCoolTrial"));
|
||||
EXPECT_TRUE(f.IsDisabled("MyUncoolTrial"));
|
||||
EXPECT_FALSE(f.IsEnabled("AnotherTrial"));
|
||||
}
|
||||
|
||||
TEST(FieldTrials, SetGlobalStringAndReadFromFieldTrial) {
|
||||
const char* s = "MyCoolTrial/Enabled/MyUncoolTrial/Disabled/";
|
||||
TEST(FieldTrialsTest, FieldTrialsDoesNotReadGlobalString) {
|
||||
static constexpr char s[] = "MyCoolTrial/Enabled/MyUncoolTrial/Disabled/";
|
||||
webrtc::field_trial::InitFieldTrialsFromString(s);
|
||||
FieldTrialBasedConfig f;
|
||||
EXPECT_TRUE(f.IsEnabled("MyCoolTrial"));
|
||||
EXPECT_TRUE(f.IsDisabled("MyUncoolTrial"));
|
||||
FieldTrials f("");
|
||||
EXPECT_FALSE(f.IsEnabled("MyCoolTrial"));
|
||||
EXPECT_FALSE(f.IsDisabled("MyUncoolTrial"));
|
||||
}
|
||||
|
||||
TEST(FieldTrials, SetFieldTrialAndReadFromGlobalString) {
|
||||
TEST(FieldTrialsTest, FieldTrialsWritesGlobalString) {
|
||||
FieldTrials f("MyCoolTrial/Enabled/MyUncoolTrial/Disabled/");
|
||||
EXPECT_TRUE(webrtc::field_trial::IsEnabled("MyCoolTrial"));
|
||||
EXPECT_TRUE(webrtc::field_trial::IsDisabled("MyUncoolTrial"));
|
||||
}
|
||||
|
||||
TEST(FieldTrials, RestoresGlobalString) {
|
||||
const char* s = "SomeString/Enabled/";
|
||||
TEST(FieldTrialsTest, FieldTrialsRestoresGlobalStringAfterDestruction) {
|
||||
static constexpr char s[] = "SomeString/Enabled/";
|
||||
webrtc::field_trial::InitFieldTrialsFromString(s);
|
||||
{
|
||||
FieldTrials f("SomeOtherString/Enabled/");
|
||||
EXPECT_EQ(std::string("SomeOtherString/Enabled/"),
|
||||
webrtc::field_trial::GetFieldTrialString());
|
||||
EXPECT_STREQ(webrtc::field_trial::GetFieldTrialString(),
|
||||
"SomeOtherString/Enabled/");
|
||||
}
|
||||
EXPECT_EQ(s, webrtc::field_trial::GetFieldTrialString());
|
||||
EXPECT_STREQ(webrtc::field_trial::GetFieldTrialString(), s);
|
||||
}
|
||||
|
||||
#if GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
|
||||
TEST(FieldTrials, OnlyOneInstance) {
|
||||
TEST(FieldTrialsTest, FieldTrialsDoesNotSupportSimultaneousInstances) {
|
||||
FieldTrials f("SomeString/Enabled/");
|
||||
RTC_EXPECT_DEATH(FieldTrials("SomeOtherString/Enabled/").Lookup("Whatever"),
|
||||
"Only one instance");
|
||||
}
|
||||
#endif // GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
|
||||
|
||||
TEST(FieldTrials, SequentialInstances) {
|
||||
TEST(FieldTrialsTest, FieldTrialsSupportsSeparateInstances) {
|
||||
{ FieldTrials f("SomeString/Enabled/"); }
|
||||
{ FieldTrials f("SomeOtherString/Enabled/"); }
|
||||
}
|
||||
|
||||
TEST(FieldTrials, NoGlobals) {
|
||||
auto f1 = FieldTrials::CreateNoGlobal("SomeString/Enabled/");
|
||||
EXPECT_TRUE(f1);
|
||||
TEST(FieldTrialsTest, NonGlobalFieldTrialsInstanceDoesNotModifyGlobalString) {
|
||||
std::unique_ptr<FieldTrials> f =
|
||||
FieldTrials::CreateNoGlobal("SomeString/Enabled/");
|
||||
ASSERT_THAT(f, NotNull());
|
||||
EXPECT_TRUE(f->IsEnabled("SomeString"));
|
||||
EXPECT_FALSE(webrtc::field_trial::IsEnabled("SomeString"));
|
||||
}
|
||||
|
||||
TEST(FieldTrials, SeveralNoGlobals) {
|
||||
auto f1 = FieldTrials::CreateNoGlobal("SomeString/Enabled/");
|
||||
auto f2 = FieldTrials::CreateNoGlobal("SomeOtherString/Enabled/");
|
||||
ASSERT_TRUE(f1);
|
||||
ASSERT_TRUE(f2);
|
||||
TEST(FieldTrialsTest, NonGlobalFieldTrialsSupportSimultaneousInstances) {
|
||||
std::unique_ptr<FieldTrials> f1 =
|
||||
FieldTrials::CreateNoGlobal("SomeString/Enabled/");
|
||||
std::unique_ptr<FieldTrials> f2 =
|
||||
FieldTrials::CreateNoGlobal("SomeOtherString/Enabled/");
|
||||
ASSERT_THAT(f1, NotNull());
|
||||
ASSERT_THAT(f2, NotNull());
|
||||
|
||||
EXPECT_TRUE(f1->IsEnabled("SomeString"));
|
||||
EXPECT_FALSE(f1->IsEnabled("SomeOtherString"));
|
||||
|
@ -88,16 +103,26 @@ TEST(FieldTrials, SeveralNoGlobals) {
|
|||
EXPECT_TRUE(f2->IsEnabled("SomeOtherString"));
|
||||
}
|
||||
|
||||
TEST(FieldTrials, GlobalAndNoGlobals) {
|
||||
FieldTrials f0("SomeString/Enabled/");
|
||||
auto f1 = FieldTrials::CreateNoGlobal("SomeOtherString/Enabled/");
|
||||
ASSERT_TRUE(f1);
|
||||
TEST(FieldTrialsTest, GlobalAndNonGlobalFieldTrialsAreDisjoint) {
|
||||
FieldTrials f1("SomeString/Enabled/");
|
||||
std::unique_ptr<FieldTrials> f2 =
|
||||
FieldTrials::CreateNoGlobal("SomeOtherString/Enabled/");
|
||||
ASSERT_THAT(f2, NotNull());
|
||||
|
||||
EXPECT_TRUE(f0.IsEnabled("SomeString"));
|
||||
EXPECT_FALSE(f0.IsEnabled("SomeOtherString"));
|
||||
EXPECT_TRUE(f1.IsEnabled("SomeString"));
|
||||
EXPECT_FALSE(f1.IsEnabled("SomeOtherString"));
|
||||
|
||||
EXPECT_FALSE(f1->IsEnabled("SomeString"));
|
||||
EXPECT_TRUE(f1->IsEnabled("SomeOtherString"));
|
||||
EXPECT_FALSE(f2->IsEnabled("SomeString"));
|
||||
EXPECT_TRUE(f2->IsEnabled("SomeOtherString"));
|
||||
}
|
||||
|
||||
TEST(FieldTrialsTest, FieldTrialBasedConfigReadsGlobalString) {
|
||||
static constexpr char s[] = "MyCoolTrial/Enabled/MyUncoolTrial/Disabled/";
|
||||
webrtc::field_trial::InitFieldTrialsFromString(s);
|
||||
FieldTrialBasedConfig f;
|
||||
EXPECT_TRUE(f.IsEnabled("MyCoolTrial"));
|
||||
EXPECT_TRUE(f.IsDisabled("MyUncoolTrial"));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace webrtc
|
||||
|
|
Loading…
Reference in a new issue