| Index: chrome/common/metrics/entropy_provider_unittest.cc
|
| ===================================================================
|
| --- chrome/common/metrics/entropy_provider_unittest.cc (revision 170244)
|
| +++ chrome/common/metrics/entropy_provider_unittest.cc (working copy)
|
| @@ -335,4 +335,42 @@
|
| }
|
| }
|
|
|
| +TEST_F(EntropyProviderTest, Overlap) {
|
| + const std::string kTrial1Name = "UMA-Uniformity-Trial-5-Percent";
|
| + const int kTrial1GroupCount = 20;
|
| + std::vector<uint16> trial_1_mapping(kMaxLowEntropySize);
|
| + internal::PermuteMappingUsingTrialName(kTrial1Name, &trial_1_mapping);
|
| +
|
| + const std::string kTrial2Name = "UMA-Uniformity-Trial-10-Percent";
|
| + const int kTrial2GroupCount = 10;
|
| + std::vector<uint16> trial_2_mapping(kMaxLowEntropySize);
|
| + internal::PermuteMappingUsingTrialName(kTrial2Name, &trial_2_mapping);
|
| +
|
| + const double kEntropyDivisor = static_cast<double>(kMaxLowEntropySize);
|
| +
|
| + std::vector<std::vector<int> > counts; // trial1,trial2
|
| + counts.resize(kTrial1GroupCount);
|
| + for (size_t i = 0; i < kTrial1GroupCount; ++i)
|
| + counts[i].resize(kTrial2GroupCount);
|
| +
|
| + for (size_t i = 0; i < kMaxLowEntropySize; ++i) {
|
| + uint16 trial_1_mapped_entropy = trial_1_mapping[i];
|
| + double trial_1_random_value = trial_1_mapped_entropy / kEntropyDivisor;
|
| + int trial_1_group = trial_1_random_value * kTrial1GroupCount;
|
| +
|
| + uint16 trial_2_mapped_entropy = trial_2_mapping[i];
|
| + double trial_2_random_value = trial_2_mapped_entropy / kEntropyDivisor;
|
| + int trial_2_group = trial_2_random_value * kTrial2GroupCount;
|
| +
|
| + counts[trial_1_group][trial_2_group]++;
|
| + }
|
| +
|
| + for (size_t i = 0; i < counts.size(); ++i) {
|
| + for (size_t j = 0; j < counts[i].size(); j++) {
|
| + printf("%d\t", counts[i][j]);
|
| + }
|
| + puts("");
|
| + }
|
| +}
|
| +
|
| } // namespace metrics
|
|
|