diff options
author | jar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-30 16:31:54 +0000 |
---|---|---|
committer | jar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-30 16:31:54 +0000 |
commit | e695fbd6d62e9967d6256cd0667eca2fb2bb918d (patch) | |
tree | 58e196031e02447b31bd9a4182b8fb3f4d7ea81b /base/field_trial_unittest.cc | |
parent | 5c7c19d83d201fa23d5097cce108c033ece5c63b (diff) | |
download | chromium_src-e695fbd6d62e9967d6256cd0667eca2fb2bb918d.zip chromium_src-e695fbd6d62e9967d6256cd0667eca2fb2bb918d.tar.gz chromium_src-e695fbd6d62e9967d6256cd0667eca2fb2bb918d.tar.bz2 |
Create A/B test of SDCH
To do this, I needed to add the feature that ALL FieldTrials that are
established in the browser process are forwarded and established in
the corresponding renderer processes. This then allows both DNS impact,
as well as SDCH inmpact (and any other field tests) to be studied
at the same time in a single binary.
This checkin also establishes a pattern that when we're doing A/B tests
via a histogram such as RequestToFinish, that we produce names for
all groups, rather than leaving one group as the "default" or "empty postfix"
group. This is critical for naming various sub-groups when a multitude
of tests are taking place at the same time.
BUG=15479
r=mbelshe
Review URL: http://codereview.chromium.org/150087
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19595 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/field_trial_unittest.cc')
-rw-r--r-- | base/field_trial_unittest.cc | 56 |
1 files changed, 39 insertions, 17 deletions
diff --git a/base/field_trial_unittest.cc b/base/field_trial_unittest.cc index f678b0b..59d8e15 100644 --- a/base/field_trial_unittest.cc +++ b/base/field_trial_unittest.cc @@ -116,42 +116,64 @@ TEST_F(FieldTrialTest, OneWinner) { } TEST_F(FieldTrialTest, Save) { + std::string save_string; + FieldTrial* trial = new FieldTrial("Some name", 10); // There is no winner yet, so no textual group name is associated with trial. EXPECT_EQ(trial->group_name(), ""); - EXPECT_EQ(trial->MakePersistentString(), "Some name/"); + FieldTrialList::StatesToString(&save_string); + EXPECT_EQ(save_string, ""); + save_string.clear(); // Create a winning group. trial->AppendGroup("Winner", 10); - EXPECT_EQ(trial->MakePersistentString(), "Some name/Winner"); + FieldTrialList::StatesToString(&save_string); + EXPECT_EQ(save_string, "Some name/Winner/"); + save_string.clear(); + + // Create a second trial and winning group. + FieldTrial* trial2 = new FieldTrial("xxx", 10); + trial2->AppendGroup("yyyy", 10); + + FieldTrialList::StatesToString(&save_string); + // We assume names are alphabetized... though this is not critical. + EXPECT_EQ(save_string, "Some name/Winner/xxx/yyyy/"); } TEST_F(FieldTrialTest, Restore) { - FieldTrial* trial = FieldTrial::RestorePersistentString("Some name/winner"); - EXPECT_EQ(trial->group_name(), "winner"); - EXPECT_EQ(trial->name(), "Some name"); -} + EXPECT_EQ(NULL, FieldTrialList::Find("Some_name")); + EXPECT_EQ(NULL, FieldTrialList::Find("xxx")); -TEST_F(FieldTrialTest, BogusRestore) { - const FieldTrial *trial = FieldTrial::RestorePersistentString("MissingSlash"); - EXPECT_EQ(trial, static_cast<FieldTrial *>(NULL)); + FieldTrialList::StringAugmentsState("Some_name/Winner/xxx/yyyy/"); + + FieldTrial* trial = FieldTrialList::Find("Some_name"); + ASSERT_NE(static_cast<FieldTrial*>(NULL), trial); + EXPECT_EQ(trial->group_name(), "Winner"); + EXPECT_EQ(trial->name(), "Some_name"); - trial = FieldTrial::RestorePersistentString("MissingGroupName/"); - EXPECT_EQ(trial, static_cast<FieldTrial *>(NULL)); + trial = FieldTrialList::Find("xxx"); + ASSERT_NE(static_cast<FieldTrial*>(NULL), trial); + EXPECT_EQ(trial->group_name(), "yyyy"); + EXPECT_EQ(trial->name(), "xxx"); +} - trial = FieldTrial::RestorePersistentString("/MissingName"); - EXPECT_EQ(trial, static_cast<FieldTrial *>(NULL)); +TEST_F(FieldTrialTest, BogusRestore) { + EXPECT_FALSE(FieldTrialList::StringAugmentsState("MissingSlash")); + EXPECT_FALSE(FieldTrialList::StringAugmentsState("MissingGroupName/")); + EXPECT_FALSE(FieldTrialList::StringAugmentsState("MissingFinalSlash/gname")); + EXPECT_FALSE(FieldTrialList::StringAugmentsState("/noname, only group/")); } TEST_F(FieldTrialTest, DuplicateRestore) { FieldTrial* trial = new FieldTrial("Some name", 10); trial->AppendGroup("Winner", 10); - EXPECT_EQ(trial->MakePersistentString(), "Some name/Winner"); + std::string save_string; + FieldTrialList::StatesToString(&save_string); + EXPECT_EQ("Some name/Winner/", save_string); // It is OK if we redundantly specify a winner. - EXPECT_EQ(trial, FieldTrial::RestorePersistentString("Some name/Winner")); + EXPECT_TRUE(FieldTrialList::StringAugmentsState(save_string)); // But it is an error to try to change to a different winner. - EXPECT_EQ(FieldTrial::RestorePersistentString("Some name/Loser"), - static_cast<FieldTrial *>(NULL)); + EXPECT_FALSE(FieldTrialList::StringAugmentsState("Some name/Loser/")); } |