summaryrefslogtreecommitdiffstats
path: root/base/metrics/field_trial_unittest.cc
diff options
context:
space:
mode:
authorasvitkine@chromium.org <asvitkine@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-13 06:31:09 +0000
committerasvitkine@chromium.org <asvitkine@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-13 06:31:09 +0000
commite290b033cdbebdd0aaf0738d0f62a0beb10030fe (patch)
tree6533ed5f30eff0ba29493e7e1864effec29a35df /base/metrics/field_trial_unittest.cc
parent3bcb02d0047b096b838f950d51bca17aa7f90292 (diff)
downloadchromium_src-e290b033cdbebdd0aaf0738d0f62a0beb10030fe.zip
chromium_src-e290b033cdbebdd0aaf0738d0f62a0beb10030fe.tar.gz
chromium_src-e290b033cdbebdd0aaf0738d0f62a0beb10030fe.tar.bz2
Ensure that field trials synced to the renderer process are considered "active".
http://crrev.com/166168 made trials on which group() hasn't been called not get reported. This resulted in renderer crash reports not being tagged with field trials because group() wasn't called on the renderer side after they are synchronized from the browser process. This change makes CreateTrialsFromString() mark trials as used as well as making trials synchronized to the renderer later via OnSetFieldTrialGroup() notification also get marked as used. Also fixes a couple of lint warnings in chrome_render_process_observer.cc and changes field_trial_unittest.cc to not use a deprecated function. BUG=158801 TEST=New FieldTrialTest.CreateFieldTrialIsActive test. Review URL: https://chromiumcodereview.appspot.com/11376002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@167313 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/metrics/field_trial_unittest.cc')
-rw-r--r--base/metrics/field_trial_unittest.cc46
1 files changed, 41 insertions, 5 deletions
diff --git a/base/metrics/field_trial_unittest.cc b/base/metrics/field_trial_unittest.cc
index 673e6b6..1ab8467 100644
--- a/base/metrics/field_trial_unittest.cc
+++ b/base/metrics/field_trial_unittest.cc
@@ -430,6 +430,31 @@ TEST_F(FieldTrialTest, DuplicateRestore) {
EXPECT_FALSE(FieldTrialList::CreateTrialsFromString("Some name/Loser/"));
}
+TEST_F(FieldTrialTest, CreateTrialsFromStringAreActive) {
+ ASSERT_FALSE(FieldTrialList::TrialExists("Abc"));
+ ASSERT_FALSE(FieldTrialList::TrialExists("Xyz"));
+ ASSERT_TRUE(FieldTrialList::CreateTrialsFromString("Abc/def/Xyz/zyx/"));
+
+ FieldTrial::ActiveGroups active_groups;
+ FieldTrialList::GetActiveFieldTrialGroups(&active_groups);
+ ASSERT_EQ(2U, active_groups.size());
+ EXPECT_EQ("Abc", active_groups[0].trial);
+ EXPECT_EQ("def", active_groups[0].group);
+ EXPECT_EQ("Xyz", active_groups[1].trial);
+ EXPECT_EQ("zyx", active_groups[1].group);
+}
+
+TEST_F(FieldTrialTest, CreateTrialsFromStringObserver) {
+ ASSERT_FALSE(FieldTrialList::TrialExists("Abc"));
+
+ TestFieldTrialObserver observer;
+ ASSERT_TRUE(FieldTrialList::CreateTrialsFromString("Abc/def/"));
+
+ message_loop_.RunUntilIdle();
+ EXPECT_EQ("Abc", observer.trial_name());
+ EXPECT_EQ("def", observer.group_name());
+}
+
TEST_F(FieldTrialTest, CreateFieldTrial) {
ASSERT_FALSE(FieldTrialList::TrialExists("Some_name"));
@@ -441,6 +466,17 @@ TEST_F(FieldTrialTest, CreateFieldTrial) {
EXPECT_EQ("Some_name", trial->name());
}
+TEST_F(FieldTrialTest, CreateFieldTrialIsNotActive) {
+ const char kTrialName[] = "CreateFieldTrialIsActiveTrial";
+ const char kWinnerGroup[] = "Winner";
+ ASSERT_FALSE(FieldTrialList::TrialExists(kTrialName));
+ FieldTrialList::CreateFieldTrial(kTrialName, kWinnerGroup);
+
+ FieldTrial::ActiveGroups active_groups;
+ FieldTrialList::GetActiveFieldTrialGroups(&active_groups);
+ EXPECT_TRUE(active_groups.empty());
+}
+
TEST_F(FieldTrialTest, DuplicateFieldTrial) {
FieldTrial* trial = FieldTrialList::FactoryGetFieldTrial(
"Some_name", 10, "Default some name", next_year_, 12, 31, NULL);
@@ -565,7 +601,7 @@ TEST_F(FieldTrialTest, Observe) {
const int chosen_group = trial->group();
EXPECT_TRUE(chosen_group == default_group || chosen_group == secondary_group);
- message_loop_.RunAllPending();
+ message_loop_.RunUntilIdle();
EXPECT_EQ(kTrialName, observer.trial_name());
if (chosen_group == default_group)
EXPECT_EQ(kDefaultGroupName, observer.group_name());
@@ -587,13 +623,13 @@ TEST_F(FieldTrialTest, ObserveDisabled) {
trial->Disable();
// Observer shouldn't be notified of a disabled trial.
- message_loop_.RunAllPending();
+ message_loop_.RunUntilIdle();
EXPECT_TRUE(observer.trial_name().empty());
EXPECT_TRUE(observer.group_name().empty());
// Observer shouldn't be notified even after a |group()| call.
EXPECT_EQ(default_group, trial->group());
- message_loop_.RunAllPending();
+ message_loop_.RunUntilIdle();
EXPECT_TRUE(observer.trial_name().empty());
EXPECT_TRUE(observer.group_name().empty());
}
@@ -613,13 +649,13 @@ TEST_F(FieldTrialTest, ObserveForcedDisabled) {
trial->Disable();
// Observer shouldn't be notified of a disabled trial, even when forced.
- message_loop_.RunAllPending();
+ message_loop_.RunUntilIdle();
EXPECT_TRUE(observer.trial_name().empty());
EXPECT_TRUE(observer.group_name().empty());
// Observer shouldn't be notified even after a |group()| call.
EXPECT_EQ(default_group, trial->group());
- message_loop_.RunAllPending();
+ message_loop_.RunUntilIdle();
EXPECT_TRUE(observer.trial_name().empty());
EXPECT_TRUE(observer.group_name().empty());
}