summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--base/metrics/field_trial.cc4
-rw-r--r--base/metrics/field_trial_unittest.cc36
2 files changed, 36 insertions, 4 deletions
diff --git a/base/metrics/field_trial.cc b/base/metrics/field_trial.cc
index 3a563aa..458ff4d 100644
--- a/base/metrics/field_trial.cc
+++ b/base/metrics/field_trial.cc
@@ -178,10 +178,6 @@ void FieldTrial::SetForced() {
// first come first served, e.g., command line switch has precedence.
if (forced_)
return;
- // Explicit forcing should only be for cases where we want to set the group
- // probabilities before the hard coded field trial setup is executed. So
- // there must have been at least one non-default group appended at that point.
- DCHECK_GT(next_group_number_, kDefaultGroupNumber + 1);
// And we must finalize the group choice before we mark ourselves as forced.
FinalizeGroupChoice();
diff --git a/base/metrics/field_trial_unittest.cc b/base/metrics/field_trial_unittest.cc
index 1ab8467..a77b5ef 100644
--- a/base/metrics/field_trial_unittest.cc
+++ b/base/metrics/field_trial_unittest.cc
@@ -588,6 +588,42 @@ TEST_F(FieldTrialTest, SetForced) {
EXPECT_EQ(forced_group, would_win_group);
}
+TEST_F(FieldTrialTest, SetForcedDefaultOnly) {
+ const char kTrialName[] = "SetForcedDefaultOnly";
+ ASSERT_FALSE(FieldTrialList::TrialExists(kTrialName));
+
+ int default_group = -1;
+ FieldTrial* trial =
+ FieldTrialList::FactoryGetFieldTrial(kTrialName, 100, kDefaultGroupName,
+ next_year_, 12, 31, &default_group);
+ trial->SetForced();
+
+ trial = FieldTrialList::FactoryGetFieldTrial(kTrialName, 100,
+ kDefaultGroupName, next_year_,
+ 12, 31, NULL);
+ EXPECT_EQ(default_group, trial->group());
+ EXPECT_EQ(kDefaultGroupName, trial->group_name());
+}
+
+TEST_F(FieldTrialTest, SetForcedDefaultWithExtraGroup) {
+ const char kTrialName[] = "SetForcedDefaultWithExtraGroup";
+ ASSERT_FALSE(FieldTrialList::TrialExists(kTrialName));
+
+ int default_group = -1;
+ FieldTrial* trial =
+ FieldTrialList::FactoryGetFieldTrial(kTrialName, 100, kDefaultGroupName,
+ next_year_, 12, 31, &default_group);
+ trial->SetForced();
+
+ trial = FieldTrialList::FactoryGetFieldTrial(kTrialName, 100,
+ kDefaultGroupName, next_year_,
+ 12, 31, NULL);
+ const int extra_group = trial->AppendGroup("Extra", 100);
+ EXPECT_EQ(default_group, trial->group());
+ EXPECT_NE(extra_group, trial->group());
+ EXPECT_EQ(kDefaultGroupName, trial->group_name());
+}
+
TEST_F(FieldTrialTest, Observe) {
const char kTrialName[] = "TrialToObserve1";
const char kSecondaryGroupName[] = "SecondaryGroup";