diff options
author | asvitkine <asvitkine@chromium.org> | 2014-10-23 16:34:44 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-10-23 23:35:06 +0000 |
commit | 27b35fc08622adba5ad7949d7a345ca61b271b89 (patch) | |
tree | 8f091122196347b314e51bb0350077936874a886 /base/metrics | |
parent | c04d30224253780f35d5721c238b24549ddebede (diff) | |
download | chromium_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.cc | 7 | ||||
-rw-r--r-- | base/metrics/field_trial_unittest.cc | 11 |
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 |