Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(170)

Side by Side Diff: components/variations/entropy_provider_unittest.cc

Issue 666133002: Standardize usage of virtual/override/final in components/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/variations/entropy_provider.h" 5 #include "components/variations/entropy_provider.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 #include <limits> 8 #include <limits>
9 #include <numeric> 9 #include <numeric>
10 10
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 73
74 // An TrialEntropyGenerator that uses the SHA1EntropyProvider with the high 74 // An TrialEntropyGenerator that uses the SHA1EntropyProvider with the high
75 // entropy source (random GUID with 128 bits of entropy + 13 additional bits of 75 // entropy source (random GUID with 128 bits of entropy + 13 additional bits of
76 // entropy corresponding to a low entropy source). 76 // entropy corresponding to a low entropy source).
77 class SHA1EntropyGenerator : public TrialEntropyGenerator { 77 class SHA1EntropyGenerator : public TrialEntropyGenerator {
78 public: 78 public:
79 explicit SHA1EntropyGenerator(const std::string& trial_name) 79 explicit SHA1EntropyGenerator(const std::string& trial_name)
80 : trial_name_(trial_name) { 80 : trial_name_(trial_name) {
81 } 81 }
82 82
83 virtual ~SHA1EntropyGenerator() { 83 ~SHA1EntropyGenerator() override {}
84 }
85 84
86 virtual double GenerateEntropyValue() const override { 85 double GenerateEntropyValue() const override {
87 // Use a random GUID + 13 additional bits of entropy to match how the 86 // Use a random GUID + 13 additional bits of entropy to match how the
88 // SHA1EntropyProvider is used in metrics_service.cc. 87 // SHA1EntropyProvider is used in metrics_service.cc.
89 const int low_entropy_source = 88 const int low_entropy_source =
90 static_cast<uint16>(base::RandInt(0, kMaxLowEntropySize - 1)); 89 static_cast<uint16>(base::RandInt(0, kMaxLowEntropySize - 1));
91 const std::string high_entropy_source = 90 const std::string high_entropy_source =
92 base::GenerateGUID() + base::IntToString(low_entropy_source); 91 base::GenerateGUID() + base::IntToString(low_entropy_source);
93 return GenerateSHA1Entropy(high_entropy_source, trial_name_); 92 return GenerateSHA1Entropy(high_entropy_source, trial_name_);
94 } 93 }
95 94
96 private: 95 private:
97 std::string trial_name_; 96 std::string trial_name_;
98 97
99 DISALLOW_COPY_AND_ASSIGN(SHA1EntropyGenerator); 98 DISALLOW_COPY_AND_ASSIGN(SHA1EntropyGenerator);
100 }; 99 };
101 100
102 // An TrialEntropyGenerator that uses the permuted entropy provider algorithm, 101 // An TrialEntropyGenerator that uses the permuted entropy provider algorithm,
103 // using 13-bit low entropy source values. 102 // using 13-bit low entropy source values.
104 class PermutedEntropyGenerator : public TrialEntropyGenerator { 103 class PermutedEntropyGenerator : public TrialEntropyGenerator {
105 public: 104 public:
106 explicit PermutedEntropyGenerator(const std::string& trial_name) 105 explicit PermutedEntropyGenerator(const std::string& trial_name)
107 : mapping_(kMaxLowEntropySize) { 106 : mapping_(kMaxLowEntropySize) {
108 // Note: Given a trial name, the computed mapping will be the same. 107 // Note: Given a trial name, the computed mapping will be the same.
109 // As a performance optimization, pre-compute the mapping once per trial 108 // As a performance optimization, pre-compute the mapping once per trial
110 // name and index into it for each entropy value. 109 // name and index into it for each entropy value.
111 const uint32 randomization_seed = HashName(trial_name); 110 const uint32 randomization_seed = HashName(trial_name);
112 internal::PermuteMappingUsingRandomizationSeed(randomization_seed, 111 internal::PermuteMappingUsingRandomizationSeed(randomization_seed,
113 &mapping_); 112 &mapping_);
114 } 113 }
115 114
116 virtual ~PermutedEntropyGenerator() { 115 ~PermutedEntropyGenerator() override {}
117 }
118 116
119 virtual double GenerateEntropyValue() const override { 117 double GenerateEntropyValue() const override {
120 const int low_entropy_source = 118 const int low_entropy_source =
121 static_cast<uint16>(base::RandInt(0, kMaxLowEntropySize - 1)); 119 static_cast<uint16>(base::RandInt(0, kMaxLowEntropySize - 1));
122 return mapping_[low_entropy_source] / 120 return mapping_[low_entropy_source] /
123 static_cast<double>(kMaxLowEntropySize); 121 static_cast<double>(kMaxLowEntropySize);
124 } 122 }
125 123
126 private: 124 private:
127 std::vector<uint16> mapping_; 125 std::vector<uint16> mapping_;
128 126
129 DISALLOW_COPY_AND_ASSIGN(PermutedEntropyGenerator); 127 DISALLOW_COPY_AND_ASSIGN(PermutedEntropyGenerator);
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 ++count; 358 ++count;
361 } 359 }
362 360
363 ASSERT_LT(count, kMaxAttempts) << "Expected average was " << 361 ASSERT_LT(count, kMaxAttempts) << "Expected average was " <<
364 kExpectedAverage << ", average ended at " << cumulative_average << 362 kExpectedAverage << ", average ended at " << cumulative_average <<
365 ", for trial " << kTestTrialNames[i]; 363 ", for trial " << kTestTrialNames[i];
366 } 364 }
367 } 365 }
368 366
369 } // namespace metrics 367 } // namespace metrics
OLDNEW
« no previous file with comments | « components/variations/entropy_provider.h ('k') | components/variations/variations_http_header_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698