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

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

Issue 17945002: Make --force-fieldtrials not activate them in the browser process. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « base/metrics/field_trial.cc ('k') | chrome/browser/chrome_browser_main.cc » ('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 #include "base/metrics/field_trial.h" 5 #include "base/metrics/field_trial.h"
6 6
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "base/rand_util.h" 8 #include "base/rand_util.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 trial3->group(); 386 trial3->group();
387 387
388 FieldTrialList::StatesToString(&save_string); 388 FieldTrialList::StatesToString(&save_string);
389 EXPECT_EQ("Some name/Winner/xxx/yyyy/zzz/default/", save_string); 389 EXPECT_EQ("Some name/Winner/xxx/yyyy/zzz/default/", save_string);
390 } 390 }
391 391
392 TEST_F(FieldTrialTest, Restore) { 392 TEST_F(FieldTrialTest, Restore) {
393 ASSERT_FALSE(FieldTrialList::TrialExists("Some_name")); 393 ASSERT_FALSE(FieldTrialList::TrialExists("Some_name"));
394 ASSERT_FALSE(FieldTrialList::TrialExists("xxx")); 394 ASSERT_FALSE(FieldTrialList::TrialExists("xxx"));
395 395
396 FieldTrialList::CreateTrialsFromString("Some_name/Winner/xxx/yyyy/"); 396 FieldTrialList::CreateTrialsFromString("Some_name/Winner/xxx/yyyy/",
397 FieldTrialList::DONT_ACTIVATE_TRIALS);
397 398
398 FieldTrial* trial = FieldTrialList::Find("Some_name"); 399 FieldTrial* trial = FieldTrialList::Find("Some_name");
399 ASSERT_NE(static_cast<FieldTrial*>(NULL), trial); 400 ASSERT_NE(static_cast<FieldTrial*>(NULL), trial);
400 EXPECT_EQ("Winner", trial->group_name()); 401 EXPECT_EQ("Winner", trial->group_name());
401 EXPECT_EQ("Some_name", trial->trial_name()); 402 EXPECT_EQ("Some_name", trial->trial_name());
402 403
403 trial = FieldTrialList::Find("xxx"); 404 trial = FieldTrialList::Find("xxx");
404 ASSERT_NE(static_cast<FieldTrial*>(NULL), trial); 405 ASSERT_NE(static_cast<FieldTrial*>(NULL), trial);
405 EXPECT_EQ("yyyy", trial->group_name()); 406 EXPECT_EQ("yyyy", trial->group_name());
406 EXPECT_EQ("xxx", trial->trial_name()); 407 EXPECT_EQ("xxx", trial->trial_name());
407 } 408 }
408 409
409 TEST_F(FieldTrialTest, BogusRestore) { 410 TEST_F(FieldTrialTest, BogusRestore) {
410 EXPECT_FALSE(FieldTrialList::CreateTrialsFromString("MissingSlash"));
411 EXPECT_FALSE(FieldTrialList::CreateTrialsFromString("MissingGroupName/"));
412 EXPECT_FALSE(FieldTrialList::CreateTrialsFromString( 411 EXPECT_FALSE(FieldTrialList::CreateTrialsFromString(
413 "MissingFinalSlash/gname")); 412 "MissingSlash", FieldTrialList::DONT_ACTIVATE_TRIALS));
414 EXPECT_FALSE(FieldTrialList::CreateTrialsFromString( 413 EXPECT_FALSE(FieldTrialList::CreateTrialsFromString(
415 "noname, only group/")); 414 "MissingGroupName/", FieldTrialList::DONT_ACTIVATE_TRIALS));
415 EXPECT_FALSE(FieldTrialList::CreateTrialsFromString(
416 "MissingFinalSlash/gname", FieldTrialList::DONT_ACTIVATE_TRIALS));
417 EXPECT_FALSE(FieldTrialList::CreateTrialsFromString(
418 "noname, only group/", FieldTrialList::DONT_ACTIVATE_TRIALS));
416 } 419 }
417 420
418 TEST_F(FieldTrialTest, DuplicateRestore) { 421 TEST_F(FieldTrialTest, DuplicateRestore) {
419 FieldTrial* trial = FieldTrialList::FactoryGetFieldTrial( 422 FieldTrial* trial = FieldTrialList::FactoryGetFieldTrial(
420 "Some name", 10, "Default some name", next_year_, 12, 31, NULL); 423 "Some name", 10, "Default some name", next_year_, 12, 31, NULL);
421 trial->AppendGroup("Winner", 10); 424 trial->AppendGroup("Winner", 10);
422 // Finalize the group selection by accessing the selected group. 425 // Finalize the group selection by accessing the selected group.
423 trial->group(); 426 trial->group();
424 std::string save_string; 427 std::string save_string;
425 FieldTrialList::StatesToString(&save_string); 428 FieldTrialList::StatesToString(&save_string);
426 EXPECT_EQ("Some name/Winner/", save_string); 429 EXPECT_EQ("Some name/Winner/", save_string);
427 430
428 // It is OK if we redundantly specify a winner. 431 // It is OK if we redundantly specify a winner.
429 EXPECT_TRUE(FieldTrialList::CreateTrialsFromString(save_string)); 432 EXPECT_TRUE(FieldTrialList::CreateTrialsFromString(
433 save_string, FieldTrialList::DONT_ACTIVATE_TRIALS));
430 434
431 // But it is an error to try to change to a different winner. 435 // But it is an error to try to change to a different winner.
432 EXPECT_FALSE(FieldTrialList::CreateTrialsFromString("Some name/Loser/")); 436 EXPECT_FALSE(FieldTrialList::CreateTrialsFromString(
437 "Some name/Loser/", FieldTrialList::DONT_ACTIVATE_TRIALS));
433 } 438 }
434 439
435 TEST_F(FieldTrialTest, CreateTrialsFromStringAreActive) { 440 TEST_F(FieldTrialTest, CreateTrialsFromStringActive) {
436 ASSERT_FALSE(FieldTrialList::TrialExists("Abc")); 441 ASSERT_FALSE(FieldTrialList::TrialExists("Abc"));
437 ASSERT_FALSE(FieldTrialList::TrialExists("Xyz")); 442 ASSERT_FALSE(FieldTrialList::TrialExists("Xyz"));
438 ASSERT_TRUE(FieldTrialList::CreateTrialsFromString("Abc/def/Xyz/zyx/")); 443 ASSERT_TRUE(FieldTrialList::CreateTrialsFromString(
444 "Abc/def/Xyz/zyx/", FieldTrialList::ACTIVATE_TRIALS));
439 445
440 FieldTrial::ActiveGroups active_groups; 446 FieldTrial::ActiveGroups active_groups;
441 FieldTrialList::GetActiveFieldTrialGroups(&active_groups); 447 FieldTrialList::GetActiveFieldTrialGroups(&active_groups);
442 ASSERT_EQ(2U, active_groups.size()); 448 ASSERT_EQ(2U, active_groups.size());
443 EXPECT_EQ("Abc", active_groups[0].trial_name); 449 EXPECT_EQ("Abc", active_groups[0].trial_name);
444 EXPECT_EQ("def", active_groups[0].group_name); 450 EXPECT_EQ("def", active_groups[0].group_name);
445 EXPECT_EQ("Xyz", active_groups[1].trial_name); 451 EXPECT_EQ("Xyz", active_groups[1].trial_name);
446 EXPECT_EQ("zyx", active_groups[1].group_name); 452 EXPECT_EQ("zyx", active_groups[1].group_name);
447 } 453 }
448 454
449 TEST_F(FieldTrialTest, CreateTrialsFromStringObserver) { 455 TEST_F(FieldTrialTest, CreateTrialsFromStringNotActive) {
456 ASSERT_FALSE(FieldTrialList::TrialExists("Abc"));
457 ASSERT_FALSE(FieldTrialList::TrialExists("Xyz"));
458 ASSERT_TRUE(FieldTrialList::CreateTrialsFromString(
459 "Abc/def/Xyz/zyx/", FieldTrialList::DONT_ACTIVATE_TRIALS));
460
461 FieldTrial::ActiveGroups active_groups;
462 FieldTrialList::GetActiveFieldTrialGroups(&active_groups);
463 ASSERT_TRUE(active_groups.empty());
464
465 // Check that the values still get returned and querying them activates them.
466 EXPECT_EQ("def", FieldTrialList::FindFullName("Abc"));
467 EXPECT_EQ("zyx", FieldTrialList::FindFullName("Xyz"));
468
469 FieldTrialList::GetActiveFieldTrialGroups(&active_groups);
470 ASSERT_EQ(2U, active_groups.size());
471 EXPECT_EQ("Abc", active_groups[0].trial_name);
472 EXPECT_EQ("def", active_groups[0].group_name);
473 EXPECT_EQ("Xyz", active_groups[1].trial_name);
474 EXPECT_EQ("zyx", active_groups[1].group_name);
475 }
476
477 TEST_F(FieldTrialTest, CreateTrialsFromStringActiveObserver) {
450 ASSERT_FALSE(FieldTrialList::TrialExists("Abc")); 478 ASSERT_FALSE(FieldTrialList::TrialExists("Abc"));
451 479
452 TestFieldTrialObserver observer; 480 TestFieldTrialObserver observer;
453 ASSERT_TRUE(FieldTrialList::CreateTrialsFromString("Abc/def/")); 481 ASSERT_TRUE(FieldTrialList::CreateTrialsFromString(
482 "Abc/def/", FieldTrialList::ACTIVATE_TRIALS));
483
484 RunLoop().RunUntilIdle();
485 EXPECT_EQ("Abc", observer.trial_name());
486 EXPECT_EQ("def", observer.group_name());
487 }
488
489 TEST_F(FieldTrialTest, CreateTrialsFromStringNotActiveObserver) {
490 ASSERT_FALSE(FieldTrialList::TrialExists("Abc"));
491
492 TestFieldTrialObserver observer;
493 ASSERT_TRUE(FieldTrialList::CreateTrialsFromString(
494 "Abc/def/", FieldTrialList::DONT_ACTIVATE_TRIALS));
495 RunLoop().RunUntilIdle();
496 // Observer shouldn't be notified.
497 EXPECT_TRUE(observer.trial_name().empty());
498
499 // Check that the values still get returned and querying them activates them.
500 EXPECT_EQ("def", FieldTrialList::FindFullName("Abc"));
454 501
455 RunLoop().RunUntilIdle(); 502 RunLoop().RunUntilIdle();
456 EXPECT_EQ("Abc", observer.trial_name()); 503 EXPECT_EQ("Abc", observer.trial_name());
457 EXPECT_EQ("def", observer.group_name()); 504 EXPECT_EQ("def", observer.group_name());
458 } 505 }
459 506
460 TEST_F(FieldTrialTest, CreateFieldTrial) { 507 TEST_F(FieldTrialTest, CreateFieldTrial) {
461 ASSERT_FALSE(FieldTrialList::TrialExists("Some_name")); 508 ASSERT_FALSE(FieldTrialList::TrialExists("Some_name"));
462 509
463 FieldTrialList::CreateFieldTrial("Some_name", "Winner"); 510 FieldTrialList::CreateFieldTrial("Some_name", "Winner");
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
837 884
838 FieldTrial* trial = 885 FieldTrial* trial =
839 FieldTrialList::FactoryGetFieldTrial( 886 FieldTrialList::FactoryGetFieldTrial(
840 kTrialName, kProbability, kDefaultGroupName, 887 kTrialName, kProbability, kDefaultGroupName,
841 FieldTrialList::kNoExpirationYear, 1, 1, NULL); 888 FieldTrialList::kNoExpirationYear, 1, 1, NULL);
842 trial->AppendGroup(kGroupName, kProbability); 889 trial->AppendGroup(kGroupName, kProbability);
843 EXPECT_EQ(kGroupName, trial->group_name()); 890 EXPECT_EQ(kGroupName, trial->group_name());
844 } 891 }
845 892
846 } // namespace base 893 } // namespace base
OLDNEW
« no previous file with comments | « base/metrics/field_trial.cc ('k') | chrome/browser/chrome_browser_main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698