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_associated_data.h" | 5 #include "components/variations/variations_associated_data.h" |
6 | 6 |
7 #include "base/metrics/field_trial.h" | 7 #include "base/metrics/field_trial.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 | 9 |
10 namespace variations { | 10 namespace variations { |
11 | 11 |
12 namespace { | 12 namespace { |
13 | 13 |
14 const VariationID TEST_VALUE_A = 3300200; | 14 const VariationID TEST_VALUE_A = 3300200; |
15 const VariationID TEST_VALUE_B = 3300201; | 15 const VariationID TEST_VALUE_B = 3300201; |
16 | 16 |
17 // Convenience helper to retrieve the variations::VariationID for a FieldTrial. | 17 // Convenience helper to retrieve the variations::VariationID for a FieldTrial. |
18 // Note that this will do the group assignment in |trial| if not already done. | 18 // Note that this will do the group assignment in |trial| if not already done. |
19 VariationID GetIDForTrial(IDCollectionKey key, base::FieldTrial* trial) { | 19 VariationID GetIDForTrial(IDCollectionKey key, base::FieldTrial* trial) { |
20 return GetGoogleVariationID(key, trial->trial_name(), trial->group_name()); | 20 return GetGoogleVariationID(key, trial->trial_name(), trial->group_name()); |
21 } | 21 } |
22 | 22 |
23 // Tests whether a field trial is active (i.e. group() has been called on it). | |
24 bool IsFieldTrialActive(const std::string& trial_name) { | |
25 base::FieldTrial::ActiveGroups active_groups; | |
26 base::FieldTrialList::GetActiveFieldTrialGroups(&active_groups); | |
27 for (size_t i = 0; i < active_groups.size(); ++i) { | |
28 if (active_groups[i].trial_name == trial_name) | |
29 return true; | |
30 } | |
31 return false; | |
32 } | |
33 | |
34 // Call FieldTrialList::FactoryGetFieldTrial() with a future expiry date. | 23 // Call FieldTrialList::FactoryGetFieldTrial() with a future expiry date. |
35 scoped_refptr<base::FieldTrial> CreateFieldTrial( | 24 scoped_refptr<base::FieldTrial> CreateFieldTrial( |
36 const std::string& trial_name, | 25 const std::string& trial_name, |
37 int total_probability, | 26 int total_probability, |
38 const std::string& default_group_name, | 27 const std::string& default_group_name, |
39 int* default_group_number) { | 28 int* default_group_number) { |
40 return base::FieldTrialList::FactoryGetFieldTrial( | 29 return base::FieldTrialList::FactoryGetFieldTrial( |
41 trial_name, total_probability, default_group_name, | 30 trial_name, total_probability, default_group_name, |
42 base::FieldTrialList::kNoExpirationYear, 1, 1, | 31 base::FieldTrialList::kNoExpirationYear, 1, 1, |
43 base::FieldTrial::SESSION_RANDOMIZED, default_group_number); | 32 base::FieldTrial::SESSION_RANDOMIZED, default_group_number); |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
292 std::map<std::string, std::string> params; | 281 std::map<std::string, std::string> params; |
293 params["a"] = "10"; | 282 params["a"] = "10"; |
294 EXPECT_FALSE(AssociateVariationParams(kTrialName, "B", params)); | 283 EXPECT_FALSE(AssociateVariationParams(kTrialName, "B", params)); |
295 EXPECT_FALSE(AssociateVariationParams(kTrialName, "A", params)); | 284 EXPECT_FALSE(AssociateVariationParams(kTrialName, "A", params)); |
296 } | 285 } |
297 | 286 |
298 TEST_F(VariationsAssociatedDataTest, | 287 TEST_F(VariationsAssociatedDataTest, |
299 AssociateVariationParams_DoesntActivateTrial) { | 288 AssociateVariationParams_DoesntActivateTrial) { |
300 const std::string kTrialName = "AssociateVariationParams_DoesntActivateTrial"; | 289 const std::string kTrialName = "AssociateVariationParams_DoesntActivateTrial"; |
301 | 290 |
302 ASSERT_FALSE(IsFieldTrialActive(kTrialName)); | 291 ASSERT_FALSE(base::FieldTrialList::IsTrialActive(kTrialName)); |
303 scoped_refptr<base::FieldTrial> trial( | 292 scoped_refptr<base::FieldTrial> trial( |
304 CreateFieldTrial(kTrialName, 100, "A", NULL)); | 293 CreateFieldTrial(kTrialName, 100, "A", NULL)); |
305 ASSERT_FALSE(IsFieldTrialActive(kTrialName)); | 294 ASSERT_FALSE(base::FieldTrialList::IsTrialActive(kTrialName)); |
306 | 295 |
307 std::map<std::string, std::string> params; | 296 std::map<std::string, std::string> params; |
308 params["a"] = "10"; | 297 params["a"] = "10"; |
309 EXPECT_TRUE(AssociateVariationParams(kTrialName, "A", params)); | 298 EXPECT_TRUE(AssociateVariationParams(kTrialName, "A", params)); |
310 ASSERT_FALSE(IsFieldTrialActive(kTrialName)); | 299 ASSERT_FALSE(base::FieldTrialList::IsTrialActive(kTrialName)); |
311 } | 300 } |
312 | 301 |
313 TEST_F(VariationsAssociatedDataTest, GetVariationParams_NoTrial) { | 302 TEST_F(VariationsAssociatedDataTest, GetVariationParams_NoTrial) { |
314 const std::string kTrialName = "GetVariationParams_NoParams"; | 303 const std::string kTrialName = "GetVariationParams_NoParams"; |
315 | 304 |
316 std::map<std::string, std::string> params; | 305 std::map<std::string, std::string> params; |
317 EXPECT_FALSE(GetVariationParams(kTrialName, ¶ms)); | 306 EXPECT_FALSE(GetVariationParams(kTrialName, ¶ms)); |
318 EXPECT_EQ(std::string(), GetVariationParamValue(kTrialName, "x")); | 307 EXPECT_EQ(std::string(), GetVariationParamValue(kTrialName, "x")); |
319 EXPECT_EQ(std::string(), GetVariationParamValue(kTrialName, "y")); | 308 EXPECT_EQ(std::string(), GetVariationParamValue(kTrialName, "y")); |
320 } | 309 } |
321 | 310 |
322 TEST_F(VariationsAssociatedDataTest, GetVariationParams_NoParams) { | 311 TEST_F(VariationsAssociatedDataTest, GetVariationParams_NoParams) { |
323 const std::string kTrialName = "GetVariationParams_NoParams"; | 312 const std::string kTrialName = "GetVariationParams_NoParams"; |
324 | 313 |
325 base::FieldTrialList::CreateFieldTrial(kTrialName, "A"); | 314 base::FieldTrialList::CreateFieldTrial(kTrialName, "A"); |
326 | 315 |
327 std::map<std::string, std::string> params; | 316 std::map<std::string, std::string> params; |
328 EXPECT_FALSE(GetVariationParams(kTrialName, ¶ms)); | 317 EXPECT_FALSE(GetVariationParams(kTrialName, ¶ms)); |
329 EXPECT_EQ(std::string(), GetVariationParamValue(kTrialName, "x")); | 318 EXPECT_EQ(std::string(), GetVariationParamValue(kTrialName, "x")); |
330 EXPECT_EQ(std::string(), GetVariationParamValue(kTrialName, "y")); | 319 EXPECT_EQ(std::string(), GetVariationParamValue(kTrialName, "y")); |
331 } | 320 } |
332 | 321 |
333 TEST_F(VariationsAssociatedDataTest, GetVariationParams_ActivatesTrial) { | 322 TEST_F(VariationsAssociatedDataTest, GetVariationParams_ActivatesTrial) { |
334 const std::string kTrialName = "GetVariationParams_ActivatesTrial"; | 323 const std::string kTrialName = "GetVariationParams_ActivatesTrial"; |
335 | 324 |
336 ASSERT_FALSE(IsFieldTrialActive(kTrialName)); | 325 ASSERT_FALSE(base::FieldTrialList::IsTrialActive(kTrialName)); |
337 scoped_refptr<base::FieldTrial> trial( | 326 scoped_refptr<base::FieldTrial> trial( |
338 CreateFieldTrial(kTrialName, 100, "A", NULL)); | 327 CreateFieldTrial(kTrialName, 100, "A", NULL)); |
339 ASSERT_FALSE(IsFieldTrialActive(kTrialName)); | 328 ASSERT_FALSE(base::FieldTrialList::IsTrialActive(kTrialName)); |
340 | 329 |
341 std::map<std::string, std::string> params; | 330 std::map<std::string, std::string> params; |
342 EXPECT_FALSE(GetVariationParams(kTrialName, ¶ms)); | 331 EXPECT_FALSE(GetVariationParams(kTrialName, ¶ms)); |
343 ASSERT_TRUE(IsFieldTrialActive(kTrialName)); | 332 ASSERT_TRUE(base::FieldTrialList::IsTrialActive(kTrialName)); |
344 } | 333 } |
345 | 334 |
346 TEST_F(VariationsAssociatedDataTest, GetVariationParamValue_ActivatesTrial) { | 335 TEST_F(VariationsAssociatedDataTest, GetVariationParamValue_ActivatesTrial) { |
347 const std::string kTrialName = "GetVariationParamValue_ActivatesTrial"; | 336 const std::string kTrialName = "GetVariationParamValue_ActivatesTrial"; |
348 | 337 |
349 ASSERT_FALSE(IsFieldTrialActive(kTrialName)); | 338 ASSERT_FALSE(base::FieldTrialList::IsTrialActive(kTrialName)); |
350 scoped_refptr<base::FieldTrial> trial( | 339 scoped_refptr<base::FieldTrial> trial( |
351 CreateFieldTrial(kTrialName, 100, "A", NULL)); | 340 CreateFieldTrial(kTrialName, 100, "A", NULL)); |
352 ASSERT_FALSE(IsFieldTrialActive(kTrialName)); | 341 ASSERT_FALSE(base::FieldTrialList::IsTrialActive(kTrialName)); |
353 | 342 |
354 std::map<std::string, std::string> params; | 343 std::map<std::string, std::string> params; |
355 EXPECT_EQ(std::string(), GetVariationParamValue(kTrialName, "x")); | 344 EXPECT_EQ(std::string(), GetVariationParamValue(kTrialName, "x")); |
356 ASSERT_TRUE(IsFieldTrialActive(kTrialName)); | 345 ASSERT_TRUE(base::FieldTrialList::IsTrialActive(kTrialName)); |
357 } | 346 } |
358 | 347 |
359 } // namespace variations | 348 } // namespace variations |
OLD | NEW |