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

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

Issue 153913009: Make some field trials unforceable via command-line in the official build. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 1 param per line Created 6 years, 10 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/message_loop.h" 7 #include "base/message_loop/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 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 378
379 FieldTrialList::StatesToString(&save_string); 379 FieldTrialList::StatesToString(&save_string);
380 EXPECT_EQ("Some name/Winner/xxx/yyyy/zzz/default/", save_string); 380 EXPECT_EQ("Some name/Winner/xxx/yyyy/zzz/default/", save_string);
381 } 381 }
382 382
383 TEST_F(FieldTrialTest, Restore) { 383 TEST_F(FieldTrialTest, Restore) {
384 ASSERT_FALSE(FieldTrialList::TrialExists("Some_name")); 384 ASSERT_FALSE(FieldTrialList::TrialExists("Some_name"));
385 ASSERT_FALSE(FieldTrialList::TrialExists("xxx")); 385 ASSERT_FALSE(FieldTrialList::TrialExists("xxx"));
386 386
387 FieldTrialList::CreateTrialsFromString("Some_name/Winner/xxx/yyyy/", 387 FieldTrialList::CreateTrialsFromString("Some_name/Winner/xxx/yyyy/",
388 FieldTrialList::DONT_ACTIVATE_TRIALS); 388 FieldTrialList::DONT_ACTIVATE_TRIALS,
389 std::set<std::string>());
389 390
390 FieldTrial* trial = FieldTrialList::Find("Some_name"); 391 FieldTrial* trial = FieldTrialList::Find("Some_name");
391 ASSERT_NE(static_cast<FieldTrial*>(NULL), trial); 392 ASSERT_NE(static_cast<FieldTrial*>(NULL), trial);
392 EXPECT_EQ("Winner", trial->group_name()); 393 EXPECT_EQ("Winner", trial->group_name());
393 EXPECT_EQ("Some_name", trial->trial_name()); 394 EXPECT_EQ("Some_name", trial->trial_name());
394 395
395 trial = FieldTrialList::Find("xxx"); 396 trial = FieldTrialList::Find("xxx");
396 ASSERT_NE(static_cast<FieldTrial*>(NULL), trial); 397 ASSERT_NE(static_cast<FieldTrial*>(NULL), trial);
397 EXPECT_EQ("yyyy", trial->group_name()); 398 EXPECT_EQ("yyyy", trial->group_name());
398 EXPECT_EQ("xxx", trial->trial_name()); 399 EXPECT_EQ("xxx", trial->trial_name());
399 } 400 }
400 401
401 TEST_F(FieldTrialTest, BogusRestore) { 402 TEST_F(FieldTrialTest, BogusRestore) {
402 EXPECT_FALSE(FieldTrialList::CreateTrialsFromString( 403 EXPECT_FALSE(FieldTrialList::CreateTrialsFromString(
403 "MissingSlash", FieldTrialList::DONT_ACTIVATE_TRIALS)); 404 "MissingSlash", FieldTrialList::DONT_ACTIVATE_TRIALS,
405 std::set<std::string>()));
404 EXPECT_FALSE(FieldTrialList::CreateTrialsFromString( 406 EXPECT_FALSE(FieldTrialList::CreateTrialsFromString(
405 "MissingGroupName/", FieldTrialList::DONT_ACTIVATE_TRIALS)); 407 "MissingGroupName/", FieldTrialList::DONT_ACTIVATE_TRIALS,
408 std::set<std::string>()));
406 EXPECT_FALSE(FieldTrialList::CreateTrialsFromString( 409 EXPECT_FALSE(FieldTrialList::CreateTrialsFromString(
407 "MissingFinalSlash/gname", FieldTrialList::DONT_ACTIVATE_TRIALS)); 410 "MissingFinalSlash/gname", FieldTrialList::DONT_ACTIVATE_TRIALS,
411 std::set<std::string>()));
408 EXPECT_FALSE(FieldTrialList::CreateTrialsFromString( 412 EXPECT_FALSE(FieldTrialList::CreateTrialsFromString(
409 "noname, only group/", FieldTrialList::DONT_ACTIVATE_TRIALS)); 413 "noname, only group/", FieldTrialList::DONT_ACTIVATE_TRIALS,
414 std::set<std::string>()));
410 } 415 }
411 416
412 TEST_F(FieldTrialTest, DuplicateRestore) { 417 TEST_F(FieldTrialTest, DuplicateRestore) {
413 FieldTrial* trial = CreateFieldTrial("Some name", 10, "Default", NULL); 418 FieldTrial* trial = CreateFieldTrial("Some name", 10, "Default", NULL);
414 trial->AppendGroup("Winner", 10); 419 trial->AppendGroup("Winner", 10);
415 // Finalize the group selection by accessing the selected group. 420 // Finalize the group selection by accessing the selected group.
416 trial->group(); 421 trial->group();
417 std::string save_string; 422 std::string save_string;
418 FieldTrialList::StatesToString(&save_string); 423 FieldTrialList::StatesToString(&save_string);
419 EXPECT_EQ("Some name/Winner/", save_string); 424 EXPECT_EQ("Some name/Winner/", save_string);
420 425
421 // It is OK if we redundantly specify a winner. 426 // It is OK if we redundantly specify a winner.
422 EXPECT_TRUE(FieldTrialList::CreateTrialsFromString( 427 EXPECT_TRUE(FieldTrialList::CreateTrialsFromString(
423 save_string, FieldTrialList::DONT_ACTIVATE_TRIALS)); 428 save_string, FieldTrialList::DONT_ACTIVATE_TRIALS,
429 std::set<std::string>()));
424 430
425 // But it is an error to try to change to a different winner. 431 // But it is an error to try to change to a different winner.
426 EXPECT_FALSE(FieldTrialList::CreateTrialsFromString( 432 EXPECT_FALSE(FieldTrialList::CreateTrialsFromString(
427 "Some name/Loser/", FieldTrialList::DONT_ACTIVATE_TRIALS)); 433 "Some name/Loser/", FieldTrialList::DONT_ACTIVATE_TRIALS,
434 std::set<std::string>()));
428 } 435 }
429 436
430 TEST_F(FieldTrialTest, CreateTrialsFromStringActive) { 437 TEST_F(FieldTrialTest, CreateTrialsFromStringActive) {
431 ASSERT_FALSE(FieldTrialList::TrialExists("Abc")); 438 ASSERT_FALSE(FieldTrialList::TrialExists("Abc"));
432 ASSERT_FALSE(FieldTrialList::TrialExists("Xyz")); 439 ASSERT_FALSE(FieldTrialList::TrialExists("Xyz"));
433 ASSERT_TRUE(FieldTrialList::CreateTrialsFromString( 440 ASSERT_TRUE(FieldTrialList::CreateTrialsFromString(
434 "Abc/def/Xyz/zyx/", FieldTrialList::ACTIVATE_TRIALS)); 441 "Abc/def/Xyz/zyx/", FieldTrialList::ACTIVATE_TRIALS,
442 std::set<std::string>()));
435 443
436 FieldTrial::ActiveGroups active_groups; 444 FieldTrial::ActiveGroups active_groups;
437 FieldTrialList::GetActiveFieldTrialGroups(&active_groups); 445 FieldTrialList::GetActiveFieldTrialGroups(&active_groups);
438 ASSERT_EQ(2U, active_groups.size()); 446 ASSERT_EQ(2U, active_groups.size());
439 EXPECT_EQ("Abc", active_groups[0].trial_name); 447 EXPECT_EQ("Abc", active_groups[0].trial_name);
440 EXPECT_EQ("def", active_groups[0].group_name); 448 EXPECT_EQ("def", active_groups[0].group_name);
441 EXPECT_EQ("Xyz", active_groups[1].trial_name); 449 EXPECT_EQ("Xyz", active_groups[1].trial_name);
442 EXPECT_EQ("zyx", active_groups[1].group_name); 450 EXPECT_EQ("zyx", active_groups[1].group_name);
443 } 451 }
444 452
445 TEST_F(FieldTrialTest, CreateTrialsFromStringNotActive) { 453 TEST_F(FieldTrialTest, CreateTrialsFromStringNotActive) {
446 ASSERT_FALSE(FieldTrialList::TrialExists("Abc")); 454 ASSERT_FALSE(FieldTrialList::TrialExists("Abc"));
447 ASSERT_FALSE(FieldTrialList::TrialExists("Xyz")); 455 ASSERT_FALSE(FieldTrialList::TrialExists("Xyz"));
448 ASSERT_TRUE(FieldTrialList::CreateTrialsFromString( 456 ASSERT_TRUE(FieldTrialList::CreateTrialsFromString(
449 "Abc/def/Xyz/zyx/", FieldTrialList::DONT_ACTIVATE_TRIALS)); 457 "Abc/def/Xyz/zyx/", FieldTrialList::DONT_ACTIVATE_TRIALS,
458 std::set<std::string>()));
450 459
451 FieldTrial::ActiveGroups active_groups; 460 FieldTrial::ActiveGroups active_groups;
452 FieldTrialList::GetActiveFieldTrialGroups(&active_groups); 461 FieldTrialList::GetActiveFieldTrialGroups(&active_groups);
453 ASSERT_TRUE(active_groups.empty()); 462 ASSERT_TRUE(active_groups.empty());
454 463
455 // Check that the values still get returned and querying them activates them. 464 // Check that the values still get returned and querying them activates them.
456 EXPECT_EQ("def", FieldTrialList::FindFullName("Abc")); 465 EXPECT_EQ("def", FieldTrialList::FindFullName("Abc"));
457 EXPECT_EQ("zyx", FieldTrialList::FindFullName("Xyz")); 466 EXPECT_EQ("zyx", FieldTrialList::FindFullName("Xyz"));
458 467
459 FieldTrialList::GetActiveFieldTrialGroups(&active_groups); 468 FieldTrialList::GetActiveFieldTrialGroups(&active_groups);
460 ASSERT_EQ(2U, active_groups.size()); 469 ASSERT_EQ(2U, active_groups.size());
461 EXPECT_EQ("Abc", active_groups[0].trial_name); 470 EXPECT_EQ("Abc", active_groups[0].trial_name);
462 EXPECT_EQ("def", active_groups[0].group_name); 471 EXPECT_EQ("def", active_groups[0].group_name);
463 EXPECT_EQ("Xyz", active_groups[1].trial_name); 472 EXPECT_EQ("Xyz", active_groups[1].trial_name);
464 EXPECT_EQ("zyx", active_groups[1].group_name); 473 EXPECT_EQ("zyx", active_groups[1].group_name);
465 } 474 }
466 475
467 TEST_F(FieldTrialTest, CreateTrialsFromStringActiveObserver) { 476 TEST_F(FieldTrialTest, CreateTrialsFromStringActiveObserver) {
468 ASSERT_FALSE(FieldTrialList::TrialExists("Abc")); 477 ASSERT_FALSE(FieldTrialList::TrialExists("Abc"));
469 478
470 TestFieldTrialObserver observer; 479 TestFieldTrialObserver observer;
471 ASSERT_TRUE(FieldTrialList::CreateTrialsFromString( 480 ASSERT_TRUE(FieldTrialList::CreateTrialsFromString(
472 "Abc/def/", FieldTrialList::ACTIVATE_TRIALS)); 481 "Abc/def/", FieldTrialList::ACTIVATE_TRIALS, std::set<std::string>()));
473 482
474 RunLoop().RunUntilIdle(); 483 RunLoop().RunUntilIdle();
475 EXPECT_EQ("Abc", observer.trial_name()); 484 EXPECT_EQ("Abc", observer.trial_name());
476 EXPECT_EQ("def", observer.group_name()); 485 EXPECT_EQ("def", observer.group_name());
477 } 486 }
478 487
479 TEST_F(FieldTrialTest, CreateTrialsFromStringNotActiveObserver) { 488 TEST_F(FieldTrialTest, CreateTrialsFromStringNotActiveObserver) {
480 ASSERT_FALSE(FieldTrialList::TrialExists("Abc")); 489 ASSERT_FALSE(FieldTrialList::TrialExists("Abc"));
481 490
482 TestFieldTrialObserver observer; 491 TestFieldTrialObserver observer;
483 ASSERT_TRUE(FieldTrialList::CreateTrialsFromString( 492 ASSERT_TRUE(FieldTrialList::CreateTrialsFromString(
484 "Abc/def/", FieldTrialList::DONT_ACTIVATE_TRIALS)); 493 "Abc/def/", FieldTrialList::DONT_ACTIVATE_TRIALS,
494 std::set<std::string>()));
485 RunLoop().RunUntilIdle(); 495 RunLoop().RunUntilIdle();
486 // Observer shouldn't be notified. 496 // Observer shouldn't be notified.
487 EXPECT_TRUE(observer.trial_name().empty()); 497 EXPECT_TRUE(observer.trial_name().empty());
488 498
489 // Check that the values still get returned and querying them activates them. 499 // Check that the values still get returned and querying them activates them.
490 EXPECT_EQ("def", FieldTrialList::FindFullName("Abc")); 500 EXPECT_EQ("def", FieldTrialList::FindFullName("Abc"));
491 501
492 RunLoop().RunUntilIdle(); 502 RunLoop().RunUntilIdle();
493 EXPECT_EQ("Abc", observer.trial_name()); 503 EXPECT_EQ("Abc", observer.trial_name());
494 EXPECT_EQ("def", observer.group_name()); 504 EXPECT_EQ("def", observer.group_name());
495 } 505 }
496 506
507 TEST_F(FieldTrialTest, CreateTrialsFromStringWithIgnoredFieldTrials) {
508 ASSERT_FALSE(FieldTrialList::TrialExists("Unaccepted1"));
509 ASSERT_FALSE(FieldTrialList::TrialExists("Foo"));
510 ASSERT_FALSE(FieldTrialList::TrialExists("Unaccepted2"));
511 ASSERT_FALSE(FieldTrialList::TrialExists("Bar"));
512 ASSERT_FALSE(FieldTrialList::TrialExists("Unaccepted3"));
513
514 std::set<std::string> ignored_trial_names;
515 ignored_trial_names.insert("Unaccepted1");
516 ignored_trial_names.insert("Unaccepted2");
517 ignored_trial_names.insert("Unaccepted3");
518
519 FieldTrialList::CreateTrialsFromString(
520 "Unaccepted1/Unaccepted1_name/"
521 "Foo/Foo_name/"
522 "Unaccepted2/Unaccepted2_name/"
523 "Bar/Bar_name/"
524 "Unaccepted3/Unaccepted3_name/",
525 FieldTrialList::DONT_ACTIVATE_TRIALS,
526 ignored_trial_names);
527
528 EXPECT_FALSE(FieldTrialList::TrialExists("Unaccepted1"));
529 EXPECT_TRUE(FieldTrialList::TrialExists("Foo"));
530 EXPECT_FALSE(FieldTrialList::TrialExists("Unaccepted2"));
531 EXPECT_TRUE(FieldTrialList::TrialExists("Bar"));
532 EXPECT_FALSE(FieldTrialList::TrialExists("Unaccepted3"));
533
534 FieldTrial::ActiveGroups active_groups;
535 FieldTrialList::GetActiveFieldTrialGroups(&active_groups);
536 EXPECT_TRUE(active_groups.empty());
537
538 FieldTrial* trial = FieldTrialList::Find("Foo");
539 ASSERT_NE(static_cast<FieldTrial*>(NULL), trial);
540 EXPECT_EQ("Foo", trial->trial_name());
541 EXPECT_EQ("Foo_name", trial->group_name());
542
543 trial = FieldTrialList::Find("Bar");
544 ASSERT_NE(static_cast<FieldTrial*>(NULL), trial);
545 EXPECT_EQ("Bar", trial->trial_name());
546 EXPECT_EQ("Bar_name", trial->group_name());
547 }
548
497 TEST_F(FieldTrialTest, CreateFieldTrial) { 549 TEST_F(FieldTrialTest, CreateFieldTrial) {
498 ASSERT_FALSE(FieldTrialList::TrialExists("Some_name")); 550 ASSERT_FALSE(FieldTrialList::TrialExists("Some_name"));
499 551
500 FieldTrialList::CreateFieldTrial("Some_name", "Winner"); 552 FieldTrialList::CreateFieldTrial("Some_name", "Winner");
501 553
502 FieldTrial* trial = FieldTrialList::Find("Some_name"); 554 FieldTrial* trial = FieldTrialList::Find("Some_name");
503 ASSERT_NE(static_cast<FieldTrial*>(NULL), trial); 555 ASSERT_NE(static_cast<FieldTrial*>(NULL), trial);
504 EXPECT_EQ("Winner", trial->group_name()); 556 EXPECT_EQ("Winner", trial->group_name());
505 EXPECT_EQ("Some_name", trial->trial_name()); 557 EXPECT_EQ("Some_name", trial->trial_name());
506 } 558 }
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after
914 EXPECT_TRUE(active_groups.empty()); 966 EXPECT_TRUE(active_groups.empty());
915 967
916 // The trial shouldn't be listed in the |StatesToString()| result. 968 // The trial shouldn't be listed in the |StatesToString()| result.
917 std::string states; 969 std::string states;
918 FieldTrialList::StatesToString(&states); 970 FieldTrialList::StatesToString(&states);
919 EXPECT_TRUE(states.empty()); 971 EXPECT_TRUE(states.empty());
920 } 972 }
921 } 973 }
922 974
923 } // namespace base 975 } // 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