| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/variations_seed_processor.h" | 5 #include "components/variations/variations_seed_processor.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 59 | 59 |
| 60 AddExperiment(kNonFlagGroupName, default_group_probability, &study); | 60 AddExperiment(kNonFlagGroupName, default_group_probability, &study); |
| 61 AddExperiment(kFlagGroup1Name, flag_group1_probability, &study) | 61 AddExperiment(kFlagGroup1Name, flag_group1_probability, &study) |
| 62 ->set_forcing_flag(kForcingFlag1); | 62 ->set_forcing_flag(kForcingFlag1); |
| 63 AddExperiment(kFlagGroup2Name, flag_group2_probability, &study) | 63 AddExperiment(kFlagGroup2Name, flag_group2_probability, &study) |
| 64 ->set_forcing_flag(kForcingFlag2); | 64 ->set_forcing_flag(kForcingFlag2); |
| 65 | 65 |
| 66 return study; | 66 return study; |
| 67 } | 67 } |
| 68 | 68 |
| 69 // Tests whether a field trial is active (i.e. group() has been called on it). | |
| 70 bool IsFieldTrialActive(const std::string& trial_name) { | |
| 71 base::FieldTrial::ActiveGroups active_groups; | |
| 72 base::FieldTrialList::GetActiveFieldTrialGroups(&active_groups); | |
| 73 for (size_t i = 0; i < active_groups.size(); ++i) { | |
| 74 if (active_groups[i].trial_name == trial_name) | |
| 75 return true; | |
| 76 } | |
| 77 return false; | |
| 78 } | |
| 79 | |
| 80 class TestOverrideStringCallback { | 69 class TestOverrideStringCallback { |
| 81 public: | 70 public: |
| 82 typedef std::map<uint32_t, base::string16> OverrideMap; | 71 typedef std::map<uint32_t, base::string16> OverrideMap; |
| 83 | 72 |
| 84 TestOverrideStringCallback() | 73 TestOverrideStringCallback() |
| 85 : callback_(base::Bind(&TestOverrideStringCallback::Override, | 74 : callback_(base::Bind(&TestOverrideStringCallback::Override, |
| 86 base::Unretained(this))) {} | 75 base::Unretained(this))) {} |
| 87 | 76 |
| 88 virtual ~TestOverrideStringCallback() {} | 77 virtual ~TestOverrideStringCallback() {} |
| 89 | 78 |
| (...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 444 study3->set_activation_type(Study_ActivationType_ACTIVATION_EXPLICIT); | 433 study3->set_activation_type(Study_ActivationType_ACTIVATION_EXPLICIT); |
| 445 | 434 |
| 446 VariationsSeedProcessor seed_processor; | 435 VariationsSeedProcessor seed_processor; |
| 447 seed_processor.CreateTrialsFromSeed( | 436 seed_processor.CreateTrialsFromSeed( |
| 448 seed, "en-CA", base::Time::Now(), base::Version("20.0.0.0"), | 437 seed, "en-CA", base::Time::Now(), base::Version("20.0.0.0"), |
| 449 Study_Channel_STABLE, Study_FormFactor_DESKTOP, "", "", "", | 438 Study_Channel_STABLE, Study_FormFactor_DESKTOP, "", "", "", |
| 450 override_callback_.callback()); | 439 override_callback_.callback()); |
| 451 | 440 |
| 452 // Non-specified and ACTIVATION_EXPLICIT should not start active, but | 441 // Non-specified and ACTIVATION_EXPLICIT should not start active, but |
| 453 // ACTIVATION_AUTO should. | 442 // ACTIVATION_AUTO should. |
| 454 EXPECT_FALSE(IsFieldTrialActive("A")); | 443 EXPECT_FALSE(base::FieldTrialList::IsTrialActive("A")); |
| 455 EXPECT_TRUE(IsFieldTrialActive("B")); | 444 EXPECT_TRUE(base::FieldTrialList::IsTrialActive("B")); |
| 456 EXPECT_FALSE(IsFieldTrialActive("C")); | 445 EXPECT_FALSE(base::FieldTrialList::IsTrialActive("C")); |
| 457 | 446 |
| 458 EXPECT_EQ("AA", base::FieldTrialList::FindFullName("A")); | 447 EXPECT_EQ("AA", base::FieldTrialList::FindFullName("A")); |
| 459 EXPECT_EQ("BB", base::FieldTrialList::FindFullName("B")); | 448 EXPECT_EQ("BB", base::FieldTrialList::FindFullName("B")); |
| 460 EXPECT_EQ("CC", base::FieldTrialList::FindFullName("C")); | 449 EXPECT_EQ("CC", base::FieldTrialList::FindFullName("C")); |
| 461 | 450 |
| 462 // Now, all studies should be active. | 451 // Now, all studies should be active. |
| 463 EXPECT_TRUE(IsFieldTrialActive("A")); | 452 EXPECT_TRUE(base::FieldTrialList::IsTrialActive("A")); |
| 464 EXPECT_TRUE(IsFieldTrialActive("B")); | 453 EXPECT_TRUE(base::FieldTrialList::IsTrialActive("B")); |
| 465 EXPECT_TRUE(IsFieldTrialActive("C")); | 454 EXPECT_TRUE(base::FieldTrialList::IsTrialActive("C")); |
| 466 } | 455 } |
| 467 | 456 |
| 468 TEST_F(VariationsSeedProcessorTest, StartsActiveWithFlag) { | 457 TEST_F(VariationsSeedProcessorTest, StartsActiveWithFlag) { |
| 469 base::CommandLine::ForCurrentProcess()->AppendSwitch(kForcingFlag1); | 458 base::CommandLine::ForCurrentProcess()->AppendSwitch(kForcingFlag1); |
| 470 | 459 |
| 471 base::FieldTrialList field_trial_list(NULL); | 460 base::FieldTrialList field_trial_list(NULL); |
| 472 | 461 |
| 473 Study study = CreateStudyWithFlagGroups(100, 0, 0); | 462 Study study = CreateStudyWithFlagGroups(100, 0, 0); |
| 474 study.set_activation_type(Study_ActivationType_ACTIVATION_AUTO); | 463 study.set_activation_type(Study_ActivationType_ACTIVATION_AUTO); |
| 475 | 464 |
| 476 EXPECT_TRUE(CreateTrialFromStudy(&study)); | 465 EXPECT_TRUE(CreateTrialFromStudy(&study)); |
| 477 EXPECT_TRUE(IsFieldTrialActive(kFlagStudyName)); | 466 EXPECT_TRUE(base::FieldTrialList::IsTrialActive(kFlagStudyName)); |
| 478 | 467 |
| 479 EXPECT_EQ(kFlagGroup1Name, | 468 EXPECT_EQ(kFlagGroup1Name, |
| 480 base::FieldTrialList::FindFullName(kFlagStudyName)); | 469 base::FieldTrialList::FindFullName(kFlagStudyName)); |
| 481 } | 470 } |
| 482 | 471 |
| 483 TEST_F(VariationsSeedProcessorTest, ForcingFlagAlreadyForced) { | 472 TEST_F(VariationsSeedProcessorTest, ForcingFlagAlreadyForced) { |
| 484 Study study = CreateStudyWithFlagGroups(100, 0, 0); | 473 Study study = CreateStudyWithFlagGroups(100, 0, 0); |
| 485 ASSERT_EQ(kNonFlagGroupName, study.experiment(0).name()); | 474 ASSERT_EQ(kNonFlagGroupName, study.experiment(0).name()); |
| 486 Study_Experiment_Param* param = study.mutable_experiment(0)->add_param(); | 475 Study_Experiment_Param* param = study.mutable_experiment(0)->add_param(); |
| 487 param->set_name("x"); | 476 param->set_name("x"); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 498 base::FieldTrialList::FindFullName(study.name())); | 487 base::FieldTrialList::FindFullName(study.name())); |
| 499 | 488 |
| 500 // Check that params and experiment ids correspond. | 489 // Check that params and experiment ids correspond. |
| 501 EXPECT_EQ("y", GetVariationParamValue(study.name(), "x")); | 490 EXPECT_EQ("y", GetVariationParamValue(study.name(), "x")); |
| 502 VariationID id = GetGoogleVariationID(GOOGLE_WEB_PROPERTIES, kFlagStudyName, | 491 VariationID id = GetGoogleVariationID(GOOGLE_WEB_PROPERTIES, kFlagStudyName, |
| 503 kNonFlagGroupName); | 492 kNonFlagGroupName); |
| 504 EXPECT_EQ(kExperimentId, id); | 493 EXPECT_EQ(kExperimentId, id); |
| 505 } | 494 } |
| 506 | 495 |
| 507 } // namespace variations | 496 } // namespace variations |
| OLD | NEW |