summaryrefslogtreecommitdiffstats
path: root/base/metrics
diff options
context:
space:
mode:
authorasvitkine <asvitkine@chromium.org>2014-10-23 16:34:44 -0700
committerCommit bot <commit-bot@chromium.org>2014-10-23 23:35:06 +0000
commit27b35fc08622adba5ad7949d7a345ca61b271b89 (patch)
tree8f091122196347b314e51bb0350077936874a886 /base/metrics
parentc04d30224253780f35d5721c238b24549ddebede (diff)
downloadchromium_src-27b35fc08622adba5ad7949d7a345ca61b271b89.zip
chromium_src-27b35fc08622adba5ad7949d7a345ca61b271b89.tar.gz
chromium_src-27b35fc08622adba5ad7949d7a345ca61b271b89.tar.bz2
Add a death test to check field trial creation before FieldTrialList.
Adds a CHECK to the production code since our memory bots don't like a crash on a null deref, even in a death test. BUG=123063 Review URL: https://codereview.chromium.org/678493002 Cr-Commit-Position: refs/heads/master@{#300979}
Diffstat (limited to 'base/metrics')
-rw-r--r--base/metrics/field_trial.cc7
-rw-r--r--base/metrics/field_trial_unittest.cc11
2 files changed, 16 insertions, 2 deletions
diff --git a/base/metrics/field_trial.cc b/base/metrics/field_trial.cc
index 05afb9b..c82f33d 100644
--- a/base/metrics/field_trial.cc
+++ b/base/metrics/field_trial.cc
@@ -320,8 +320,11 @@ FieldTrial* FieldTrialList::FactoryGetFieldTrialWithRandomizationSeed(
double entropy_value;
if (randomization_type == FieldTrial::ONE_TIME_RANDOMIZED) {
- entropy_value = GetEntropyProviderForOneTimeRandomization()->
- GetEntropyForTrial(trial_name, randomization_seed);
+ const FieldTrial::EntropyProvider* entropy_provider =
+ GetEntropyProviderForOneTimeRandomization();
+ CHECK(entropy_provider);
+ entropy_value = entropy_provider->GetEntropyForTrial(trial_name,
+ randomization_seed);
} else {
DCHECK_EQ(FieldTrial::SESSION_RANDOMIZED, randomization_type);
DCHECK_EQ(0U, randomization_seed);
diff --git a/base/metrics/field_trial_unittest.cc b/base/metrics/field_trial_unittest.cc
index 905cc22..80c729d 100644
--- a/base/metrics/field_trial_unittest.cc
+++ b/base/metrics/field_trial_unittest.cc
@@ -990,4 +990,15 @@ TEST_F(FieldTrialTest, CreateSimulatedFieldTrial) {
}
}
+#if GTEST_HAS_DEATH_TEST
+TEST(FieldTrialDeathTest, OneTimeRandomizedTrialWithoutFieldTrialList) {
+ // Trying to instantiate a one-time randomized field trial before the
+ // FieldTrialList is created should crash.
+ EXPECT_DEATH(FieldTrialList::FactoryGetFieldTrial(
+ "OneTimeRandomizedTrialWithoutFieldTrialList", 100, kDefaultGroupName,
+ base::FieldTrialList::kNoExpirationYear, 1, 1,
+ base::FieldTrial::ONE_TIME_RANDOMIZED, NULL), "");
+}
+#endif
+
} // namespace base