| Index: base/metrics/field_trial_unittest.cc
|
| diff --git a/base/metrics/field_trial_unittest.cc b/base/metrics/field_trial_unittest.cc
|
| index ce95c2ae15b12e510a0abc47b0a6157dc94f1c60..f1a104258525426e2c7e8d1c3412021b1b3398cd 100644
|
| --- a/base/metrics/field_trial_unittest.cc
|
| +++ b/base/metrics/field_trial_unittest.cc
|
| @@ -311,6 +311,36 @@ TEST_F(FieldTrialTest, ActiveGroups) {
|
| }
|
| }
|
|
|
| +TEST_F(FieldTrialTest, AllGroups) {
|
| + FieldTrial::FieldTrialState field_trial_state;
|
| + std::string one_winner("One Winner");
|
| + scoped_refptr<FieldTrial> trial =
|
| + CreateFieldTrial(one_winner, 10, "Default", NULL);
|
| + std::string winner("Winner");
|
| + trial->AppendGroup(winner, 10);
|
| + EXPECT_TRUE(trial->GetState(&field_trial_state));
|
| + EXPECT_EQ(one_winner, field_trial_state.trial_name);
|
| + EXPECT_EQ(winner, field_trial_state.group_name);
|
| + trial->group();
|
| + EXPECT_TRUE(trial->GetState(&field_trial_state));
|
| + EXPECT_EQ(one_winner, field_trial_state.trial_name);
|
| + EXPECT_EQ(winner, field_trial_state.group_name);
|
| +
|
| + std::string multi_group("MultiGroup");
|
| + scoped_refptr<FieldTrial> multi_group_trial =
|
| + CreateFieldTrial(multi_group, 9, "Default", NULL);
|
| +
|
| + multi_group_trial->AppendGroup("Me", 3);
|
| + multi_group_trial->AppendGroup("You", 3);
|
| + multi_group_trial->AppendGroup("Them", 3);
|
| + EXPECT_TRUE(multi_group_trial->GetState(&field_trial_state));
|
| + // Finalize the group selection by accessing the selected group.
|
| + multi_group_trial->group();
|
| + EXPECT_TRUE(multi_group_trial->GetState(&field_trial_state));
|
| + EXPECT_EQ(multi_group, field_trial_state.trial_name);
|
| + EXPECT_EQ(multi_group_trial->group_name(), field_trial_state.group_name);
|
| +}
|
| +
|
| TEST_F(FieldTrialTest, ActiveGroupsNotFinalized) {
|
| const char kTrialName[] = "TestTrial";
|
| const char kSecondaryGroupName[] = "SecondaryGroup";
|
| @@ -388,6 +418,44 @@ TEST_F(FieldTrialTest, Save) {
|
| EXPECT_EQ("Some name/Winner/xxx/yyyy/zzz/default/", save_string);
|
| }
|
|
|
| +TEST_F(FieldTrialTest, SaveAll) {
|
| + std::string save_string;
|
| +
|
| + scoped_refptr<FieldTrial> trial =
|
| + CreateFieldTrial("Some name", 10, "Default some name", NULL);
|
| + EXPECT_EQ("", trial->group_name_internal());
|
| + FieldTrialList::AllStatesToString(&save_string);
|
| + EXPECT_EQ("Some name/Default some name/", save_string);
|
| + save_string.clear();
|
| +
|
| + // Create a winning group.
|
| + trial->AppendGroup("Winner", 10);
|
| + // Finalize the group selection by accessing the selected group.
|
| + trial->group();
|
| + FieldTrialList::AllStatesToString(&save_string);
|
| + EXPECT_EQ("*Some name/Winner/", save_string);
|
| + save_string.clear();
|
| +
|
| + // Create a second trial and winning group.
|
| + scoped_refptr<FieldTrial> trial2 =
|
| + CreateFieldTrial("xxx", 10, "Default xxx", NULL);
|
| + trial2->AppendGroup("yyyy", 10);
|
| + // Finalize the group selection by accessing the selected group.
|
| + trial2->group();
|
| +
|
| + FieldTrialList::AllStatesToString(&save_string);
|
| + // We assume names are alphabetized... though this is not critical.
|
| + EXPECT_EQ("*Some name/Winner/*xxx/yyyy/", save_string);
|
| + save_string.clear();
|
| +
|
| + // Create a third trial with only the default group.
|
| + scoped_refptr<FieldTrial> trial3 =
|
| + CreateFieldTrial("zzz", 10, "default", NULL);
|
| +
|
| + FieldTrialList::AllStatesToString(&save_string);
|
| + EXPECT_EQ("*Some name/Winner/*xxx/yyyy/zzz/default/", save_string);
|
| +}
|
| +
|
| TEST_F(FieldTrialTest, Restore) {
|
| ASSERT_FALSE(FieldTrialList::TrialExists("Some_name"));
|
| ASSERT_FALSE(FieldTrialList::TrialExists("xxx"));
|
| @@ -1014,6 +1082,43 @@ TEST_F(FieldTrialTest, CreateSimulatedFieldTrial) {
|
| }
|
| }
|
|
|
| +TEST(FieldTrialTestWithoutList, StatesStringFormat) {
|
| + std::string save_string;
|
| +
|
| + // Scoping the first FieldTrialList, as we need another one to test the
|
| + // importing function.
|
| + {
|
| + FieldTrialList field_trial_list(NULL);
|
| + scoped_refptr<FieldTrial> trial =
|
| + CreateFieldTrial("Abc", 10, "Default some name", NULL);
|
| + trial->AppendGroup("cba", 10);
|
| + trial->group();
|
| + scoped_refptr<FieldTrial> trial2 =
|
| + CreateFieldTrial("Xyz", 10, "Default xxx", NULL);
|
| + trial2->AppendGroup("zyx", 10);
|
| + trial2->group();
|
| + scoped_refptr<FieldTrial> trial3 =
|
| + CreateFieldTrial("zzz", 10, "default", NULL);
|
| +
|
| + FieldTrialList::AllStatesToString(&save_string);
|
| + }
|
| +
|
| + // Starting with a new blank FieldTrialList.
|
| + FieldTrialList field_trial_list(NULL);
|
| + ASSERT_TRUE(field_trial_list.CreateTrialsFromString(
|
| + save_string, FieldTrialList::DONT_ACTIVATE_TRIALS,
|
| + std::set<std::string>()));
|
| +
|
| + FieldTrial::ActiveGroups active_groups;
|
| + field_trial_list.GetActiveFieldTrialGroups(&active_groups);
|
| + ASSERT_EQ(2U, active_groups.size());
|
| + EXPECT_EQ("Abc", active_groups[0].trial_name);
|
| + EXPECT_EQ("cba", active_groups[0].group_name);
|
| + EXPECT_EQ("Xyz", active_groups[1].trial_name);
|
| + EXPECT_EQ("zyx", active_groups[1].group_name);
|
| + EXPECT_TRUE(field_trial_list.TrialExists("zzz"));
|
| +}
|
| +
|
| #if GTEST_HAS_DEATH_TEST
|
| TEST(FieldTrialDeathTest, OneTimeRandomizedTrialWithoutFieldTrialList) {
|
| // Trying to instantiate a one-time randomized field trial before the
|
|
|