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

Side by Side Diff: base/metrics/field_trial_unittest.cc

Issue 10151017: Remove the hash fields from FieldTrials. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: header order Created 8 years, 8 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
« no previous file with comments | « base/metrics/field_trial.cc ('k') | chrome/browser/metrics/metrics_log.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // Test of FieldTrial class 5 // Test of FieldTrial class
6 6
7 #include "base/metrics/field_trial.h" 7 #include "base/metrics/field_trial.h"
8 8
9 #include "base/rand_util.h" 9 #include "base/rand_util.h"
10 #include "base/stringprintf.h" 10 #include "base/stringprintf.h"
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 &default_group_number); 220 &default_group_number);
221 trial->AppendGroup(loser, 999999999); // 99.9999999% chance of being chosen. 221 trial->AppendGroup(loser, 999999999); // 99.9999999% chance of being chosen.
222 222
223 // Because trial has expired, we should always be in the default group. 223 // Because trial has expired, we should always be in the default group.
224 EXPECT_EQ(default_group_number, trial->group()); 224 EXPECT_EQ(default_group_number, trial->group());
225 225
226 // And that default_group_name should ALWAYS win. 226 // And that default_group_name should ALWAYS win.
227 EXPECT_EQ(default_group_name, trial->group_name()); 227 EXPECT_EQ(default_group_name, trial->group_name());
228 } 228 }
229 229
230 TEST_F(FieldTrialTest, HashName) { 230 TEST_F(FieldTrialTest, SelectedGroups) {
231 // Make sure hashing is stable on all platforms.
232 struct {
233 const char* name;
234 uint32 hash_value;
235 } known_hashes[] = {
236 {"a", 937752454u},
237 {"1", 723085877u},
238 {"Trial Name", 2713117220u},
239 {"Group Name", 3201815843u},
240 {"My Favorite Experiment", 3722155194u},
241 {"My Awesome Group Name", 4109503236u},
242 {"abcdefghijklmonpqrstuvwxyz", 787728696u},
243 {"0123456789ABCDEF", 348858318U}
244 };
245 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(known_hashes); ++i) {
246 EXPECT_EQ(known_hashes[i].hash_value,
247 FieldTrial::HashName(known_hashes[i].name));
248 }
249 }
250
251 TEST_F(FieldTrialTest, NameGroupIds) {
252 std::string no_group("No Group"); 231 std::string no_group("No Group");
253 uint32 no_group_id = FieldTrial::HashName(no_group);
254 scoped_refptr<FieldTrial> trial(FieldTrialList::FactoryGetFieldTrial( 232 scoped_refptr<FieldTrial> trial(FieldTrialList::FactoryGetFieldTrial(
255 no_group, 10, "Default", next_year_, 12, 31, NULL)); 233 no_group, 10, "Default", next_year_, 12, 31, NULL));
256 234
257 // There is no winner yet, so no NameGroupId should be returned. 235 // There is no winner yet, so no NameGroupId should be returned.
258 FieldTrial::NameGroupId name_group_id; 236 FieldTrial::SelectedGroup selected_group;
259 EXPECT_FALSE(trial->GetNameGroupId(&name_group_id)); 237 EXPECT_FALSE(trial->GetSelectedGroup(&selected_group));
260 238
261 // Create a single winning group. 239 // Create a single winning group.
262 std::string one_winner("One Winner"); 240 std::string one_winner("One Winner");
263 uint32 one_winner_id = FieldTrial::HashName(one_winner);
264 trial = FieldTrialList::FactoryGetFieldTrial( 241 trial = FieldTrialList::FactoryGetFieldTrial(
265 one_winner, 10, "Default", next_year_, 12, 31, NULL); 242 one_winner, 10, "Default", next_year_, 12, 31, NULL);
266 std::string winner("Winner"); 243 std::string winner("Winner");
267 uint32 winner_group_id = FieldTrial::HashName(winner);
268 trial->AppendGroup(winner, 10); 244 trial->AppendGroup(winner, 10);
269 EXPECT_TRUE(trial->GetNameGroupId(&name_group_id)); 245 EXPECT_TRUE(trial->GetSelectedGroup(&selected_group));
270 EXPECT_EQ(one_winner_id, name_group_id.name); 246 EXPECT_EQ(one_winner, selected_group.trial);
271 EXPECT_EQ(winner_group_id, name_group_id.group); 247 EXPECT_EQ(winner, selected_group.group);
272 248
273 std::string multi_group("MultiGroup"); 249 std::string multi_group("MultiGroup");
274 uint32 multi_group_id = FieldTrial::HashName(multi_group);
275 scoped_refptr<FieldTrial> multi_group_trial = 250 scoped_refptr<FieldTrial> multi_group_trial =
276 FieldTrialList::FactoryGetFieldTrial(multi_group, 9, "Default", 251 FieldTrialList::FactoryGetFieldTrial(multi_group, 9, "Default",
277 next_year_, 12, 31, NULL); 252 next_year_, 12, 31, NULL);
278 253
279 multi_group_trial->AppendGroup("Me", 3); 254 multi_group_trial->AppendGroup("Me", 3);
280 multi_group_trial->AppendGroup("You", 3); 255 multi_group_trial->AppendGroup("You", 3);
281 multi_group_trial->AppendGroup("Them", 3); 256 multi_group_trial->AppendGroup("Them", 3);
282 EXPECT_TRUE(multi_group_trial->GetNameGroupId(&name_group_id)); 257 EXPECT_TRUE(multi_group_trial->GetSelectedGroup(&selected_group));
283 EXPECT_EQ(multi_group_id, name_group_id.name); 258 EXPECT_EQ(multi_group, selected_group.trial);
284 uint32 multi_group_winner_id = 259 EXPECT_EQ(multi_group_trial->group_name(), selected_group.group);
285 FieldTrial::HashName(multi_group_trial->group_name());
286 EXPECT_EQ(multi_group_winner_id, name_group_id.group);
287 260
288 // Now check if the list is built properly... 261 // Now check if the list is built properly...
289 std::vector<FieldTrial::NameGroupId> name_group_ids; 262 std::vector<FieldTrial::SelectedGroup> selected_groups;
290 FieldTrialList::GetFieldTrialNameGroupIds(&name_group_ids); 263 FieldTrialList::GetFieldTrialSelectedGroups(&selected_groups);
291 EXPECT_EQ(2U, name_group_ids.size()); 264 EXPECT_EQ(2U, selected_groups.size());
292 for (size_t i = 0; i < name_group_ids.size(); ++i) { 265 for (size_t i = 0; i < selected_groups.size(); ++i) {
293 // Order is not guaranteed, so check all values. 266 // Order is not guaranteed, so check all values.
294 EXPECT_NE(no_group_id, name_group_ids[i].name); 267 EXPECT_NE(no_group, selected_groups[i].trial);
295 EXPECT_TRUE(one_winner_id != name_group_ids[i].name || 268 EXPECT_TRUE(one_winner != selected_groups[i].trial ||
296 winner_group_id == name_group_ids[i].group); 269 winner == selected_groups[i].group);
297 EXPECT_TRUE(multi_group_id != name_group_ids[i].name || 270 EXPECT_TRUE(multi_group != selected_groups[i].trial ||
298 multi_group_winner_id == name_group_ids[i].group); 271 multi_group_trial->group_name() == selected_groups[i].group);
299 } 272 }
300 } 273 }
301 274
302 TEST_F(FieldTrialTest, Save) { 275 TEST_F(FieldTrialTest, Save) {
303 std::string save_string; 276 std::string save_string;
304 277
305 FieldTrial* trial = FieldTrialList::FactoryGetFieldTrial( 278 FieldTrial* trial = FieldTrialList::FactoryGetFieldTrial(
306 "Some name", 10, "Default some name", next_year_, 12, 31, NULL); 279 "Some name", 10, "Default some name", next_year_, 12, 31, NULL);
307 // There is no winner yet, so no textual group name is associated with trial. 280 // There is no winner yet, so no textual group name is associated with trial.
308 // In this case, the trial should not be included. 281 // In this case, the trial should not be included.
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 int other_group = factory_trial->AppendGroup("Not Default", 100); 516 int other_group = factory_trial->AppendGroup("Not Default", 100);
544 EXPECT_STREQ("Default", factory_trial->group_name().c_str()); 517 EXPECT_STREQ("Default", factory_trial->group_name().c_str());
545 EXPECT_EQ(default_group_number, factory_trial->group()); 518 EXPECT_EQ(default_group_number, factory_trial->group());
546 EXPECT_NE(other_group, factory_trial->group()); 519 EXPECT_NE(other_group, factory_trial->group());
547 520
548 int new_other_group = factory_trial->AppendGroup("Not Default Either", 800); 521 int new_other_group = factory_trial->AppendGroup("Not Default Either", 800);
549 EXPECT_NE(new_other_group, factory_trial->group()); 522 EXPECT_NE(new_other_group, factory_trial->group());
550 } 523 }
551 524
552 } // namespace base 525 } // namespace base
OLDNEW
« no previous file with comments | « base/metrics/field_trial.cc ('k') | chrome/browser/metrics/metrics_log.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698