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

Side by Side Diff: chrome/browser/metrics/variations/variations_service_unittest.cc

Issue 14268009: Support VariationsRestrictParameter in VariationsService for Chrome OS (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Browsertest + comments Created 7 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 | Annotate | Revision Log
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 <vector> 5 #include <vector>
6 6
7 #include "base/base64.h" 7 #include "base/base64.h"
8 #include "base/prefs/testing_pref_service.h" 8 #include "base/prefs/testing_pref_service.h"
9 #include "base/strings/string_split.h" 9 #include "base/strings/string_split.h"
10 #include "chrome/browser/metrics/proto/study.pb.h" 10 #include "chrome/browser/metrics/proto/study.pb.h"
11 #include "chrome/browser/metrics/variations/resource_request_allowed_notifier_te st_util.h" 11 #include "chrome/browser/metrics/variations/resource_request_allowed_notifier_te st_util.h"
12 #include "chrome/browser/metrics/variations/variations_service.h" 12 #include "chrome/browser/metrics/variations/variations_service.h"
13 #include "chrome/common/chrome_version_info.h" 13 #include "chrome/common/chrome_version_info.h"
14 #include "chrome/common/pref_names.h" 14 #include "chrome/common/pref_names.h"
15 #include "chrome/test/base/testing_browser_process.h" 15 #include "chrome/test/base/testing_browser_process.h"
16 #include "content/public/test/test_browser_thread.h" 16 #include "content/public/test/test_browser_thread.h"
17 #include "net/http/http_response_headers.h" 17 #include "net/http/http_response_headers.h"
18 #include "net/http/http_status_code.h" 18 #include "net/http/http_status_code.h"
19 #include "net/url_request/test_url_fetcher_factory.h" 19 #include "net/url_request/test_url_fetcher_factory.h"
20 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
21 21
22 #if defined(OS_CHROMEOS)
23 #include "chrome/browser/chromeos/settings/cros_settings.h"
24 #include "chrome/browser/chromeos/settings/stub_cros_settings_provider.h"
25 #endif
26
22 namespace chrome_variations { 27 namespace chrome_variations {
23 28
24 namespace { 29 namespace {
25 30
26 // A test class used to validate expected functionality in VariationsService. 31 // A test class used to validate expected functionality in VariationsService.
27 class TestVariationsService : public VariationsService { 32 class TestVariationsService : public VariationsService {
28 public: 33 public:
29 TestVariationsService(TestRequestAllowedNotifier* test_notifier, 34 TestVariationsService(TestRequestAllowedNotifier* test_notifier,
30 PrefService* local_state) 35 PrefService* local_state)
31 : VariationsService(test_notifier, local_state), 36 : VariationsService(test_notifier, local_state),
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 void SimulateServerResponse(int response_code, net::TestURLFetcher* fetcher) { 96 void SimulateServerResponse(int response_code, net::TestURLFetcher* fetcher) {
92 ASSERT_TRUE(fetcher); 97 ASSERT_TRUE(fetcher);
93 scoped_refptr<net::HttpResponseHeaders> headers( 98 scoped_refptr<net::HttpResponseHeaders> headers(
94 new net::HttpResponseHeaders("date:Wed, 13 Feb 2013 00:25:24 GMT\0\0")); 99 new net::HttpResponseHeaders("date:Wed, 13 Feb 2013 00:25:24 GMT\0\0"));
95 fetcher->set_response_headers(headers); 100 fetcher->set_response_headers(headers);
96 fetcher->set_response_code(response_code); 101 fetcher->set_response_code(response_code);
97 } 102 }
98 103
99 } // namespace 104 } // namespace
100 105
101 TEST(VariationsServiceTest, CheckStudyChannel) { 106 class VariationsServiceTest : public testing::Test {
107 protected:
108 VariationsServiceTest() {}
109
110 private:
111 #if defined(OS_CHROMEOS)
112 // Not used. Initializes CrosSettings for testing.
Alexei Svitkine (slow) 2013/04/18 19:27:53 Nit: "Not used" -> "Not used directly"
Mathieu 2013/04/18 19:51:14 Done.
Mathieu 2013/04/18 19:51:14 Done.
113 chromeos::ScopedTestCrosSettings scoped_test_cros_settings;
114 #endif
115
116 DISALLOW_COPY_AND_ASSIGN(VariationsServiceTest);
117 };
118
119 TEST_F(VariationsServiceTest, CheckStudyChannel) {
102 const chrome::VersionInfo::Channel channels[] = { 120 const chrome::VersionInfo::Channel channels[] = {
103 chrome::VersionInfo::CHANNEL_CANARY, 121 chrome::VersionInfo::CHANNEL_CANARY,
104 chrome::VersionInfo::CHANNEL_DEV, 122 chrome::VersionInfo::CHANNEL_DEV,
105 chrome::VersionInfo::CHANNEL_BETA, 123 chrome::VersionInfo::CHANNEL_BETA,
106 chrome::VersionInfo::CHANNEL_STABLE, 124 chrome::VersionInfo::CHANNEL_STABLE,
107 }; 125 };
108 const Study_Channel study_channels[] = { 126 const Study_Channel study_channels[] = {
109 Study_Channel_CANARY, 127 Study_Channel_CANARY,
110 Study_Channel_DEV, 128 Study_Channel_DEV,
111 Study_Channel_BETA, 129 Study_Channel_BETA,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 } 162 }
145 163
146 if (i < arraysize(study_channels)) { 164 if (i < arraysize(study_channels)) {
147 const int index = arraysize(study_channels) - i - 1; 165 const int index = arraysize(study_channels) - i - 1;
148 filter.add_channel(study_channels[index]); 166 filter.add_channel(study_channels[index]);
149 channel_added[index] = true; 167 channel_added[index] = true;
150 } 168 }
151 } 169 }
152 } 170 }
153 171
154 TEST(VariationsServiceTest, CheckStudyLocale) { 172 TEST_F(VariationsServiceTest, CheckStudyLocale) {
155 struct { 173 struct {
156 const char* filter_locales; 174 const char* filter_locales;
157 bool en_us_result; 175 bool en_us_result;
158 bool en_ca_result; 176 bool en_ca_result;
159 bool fr_result; 177 bool fr_result;
160 } test_cases[] = { 178 } test_cases[] = {
161 {"en-US", true, false, false}, 179 {"en-US", true, false, false},
162 {"en-US,en-CA,fr", true, true, true}, 180 {"en-US,en-CA,fr", true, true, true},
163 {"en-US,en-CA,en-GB", true, true, false}, 181 {"en-US,en-CA,en-GB", true, true, false},
164 {"en-GB,en-CA,en-US", true, true, false}, 182 {"en-GB,en-CA,en-US", true, true, false},
(...skipping 10 matching lines...) Expand all
175 filter.add_locale(filter_locales[j]); 193 filter.add_locale(filter_locales[j]);
176 EXPECT_EQ(test_cases[i].en_us_result, 194 EXPECT_EQ(test_cases[i].en_us_result,
177 VariationsService::CheckStudyLocale(filter, "en-US")); 195 VariationsService::CheckStudyLocale(filter, "en-US"));
178 EXPECT_EQ(test_cases[i].en_ca_result, 196 EXPECT_EQ(test_cases[i].en_ca_result,
179 VariationsService::CheckStudyLocale(filter, "en-CA")); 197 VariationsService::CheckStudyLocale(filter, "en-CA"));
180 EXPECT_EQ(test_cases[i].fr_result, 198 EXPECT_EQ(test_cases[i].fr_result,
181 VariationsService::CheckStudyLocale(filter, "fr")); 199 VariationsService::CheckStudyLocale(filter, "fr"));
182 } 200 }
183 } 201 }
184 202
185 TEST(VariationsServiceTest, CheckStudyPlatform) { 203 TEST_F(VariationsServiceTest, CheckStudyPlatform) {
186 const Study_Platform platforms[] = { 204 const Study_Platform platforms[] = {
187 Study_Platform_PLATFORM_WINDOWS, 205 Study_Platform_PLATFORM_WINDOWS,
188 Study_Platform_PLATFORM_MAC, 206 Study_Platform_PLATFORM_MAC,
189 Study_Platform_PLATFORM_LINUX, 207 Study_Platform_PLATFORM_LINUX,
190 Study_Platform_PLATFORM_CHROMEOS, 208 Study_Platform_PLATFORM_CHROMEOS,
191 Study_Platform_PLATFORM_ANDROID, 209 Study_Platform_PLATFORM_ANDROID,
192 Study_Platform_PLATFORM_IOS, 210 Study_Platform_PLATFORM_IOS,
193 }; 211 };
194 ASSERT_EQ(Study_Platform_Platform_ARRAYSIZE, 212 ASSERT_EQ(Study_Platform_Platform_ARRAYSIZE,
195 static_cast<int>(arraysize(platforms))); 213 static_cast<int>(arraysize(platforms)));
(...skipping 29 matching lines...) Expand all
225 } 243 }
226 244
227 if (i < arraysize(platforms)) { 245 if (i < arraysize(platforms)) {
228 const int index = arraysize(platforms) - i - 1; 246 const int index = arraysize(platforms) - i - 1;
229 filter.add_platform(platforms[index]); 247 filter.add_platform(platforms[index]);
230 platform_added[index] = true; 248 platform_added[index] = true;
231 } 249 }
232 } 250 }
233 } 251 }
234 252
235 TEST(VariationsServiceTest, CheckStudyVersion) { 253 TEST_F(VariationsServiceTest, CheckStudyVersion) {
236 const struct { 254 const struct {
237 const char* min_version; 255 const char* min_version;
238 const char* version; 256 const char* version;
239 bool expected_result; 257 bool expected_result;
240 } min_test_cases[] = { 258 } min_test_cases[] = {
241 { "1.2.2", "1.2.3", true }, 259 { "1.2.2", "1.2.3", true },
242 { "1.2.3", "1.2.3", true }, 260 { "1.2.3", "1.2.3", true },
243 { "1.2.4", "1.2.3", false }, 261 { "1.2.4", "1.2.3", false },
244 { "1.3.2", "1.2.3", false }, 262 { "1.3.2", "1.2.3", false },
245 { "2.1.2", "1.2.3", false }, 263 { "2.1.2", "1.2.3", false },
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 if (!max_test_cases[j].expected_result) { 330 if (!max_test_cases[j].expected_result) {
313 const bool result = 331 const bool result =
314 VariationsService::CheckStudyVersion(filter, 332 VariationsService::CheckStudyVersion(filter,
315 max_test_cases[j].version); 333 max_test_cases[j].version);
316 EXPECT_FALSE(result) << "Case " << i << "," << j << " failed!"; 334 EXPECT_FALSE(result) << "Case " << i << "," << j << " failed!";
317 } 335 }
318 } 336 }
319 } 337 }
320 } 338 }
321 339
322 TEST(VariationsServiceTest, CheckStudyStartDate) { 340 TEST_F(VariationsServiceTest, CheckStudyStartDate) {
323 const base::Time now = base::Time::Now(); 341 const base::Time now = base::Time::Now();
324 const base::TimeDelta delta = base::TimeDelta::FromHours(1); 342 const base::TimeDelta delta = base::TimeDelta::FromHours(1);
325 const struct { 343 const struct {
326 const base::Time start_date; 344 const base::Time start_date;
327 bool expected_result; 345 bool expected_result;
328 } start_test_cases[] = { 346 } start_test_cases[] = {
329 { now - delta, true }, 347 { now - delta, true },
330 { now, true }, 348 { now, true },
331 { now + delta, false }, 349 { now + delta, false },
332 }; 350 };
333 351
334 Study_Filter filter; 352 Study_Filter filter;
335 353
336 // Start date not set should result in true. 354 // Start date not set should result in true.
337 EXPECT_TRUE(VariationsService::CheckStudyStartDate(filter, now)); 355 EXPECT_TRUE(VariationsService::CheckStudyStartDate(filter, now));
338 356
339 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(start_test_cases); ++i) { 357 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(start_test_cases); ++i) {
340 filter.set_start_date(TimeToProtoTime(start_test_cases[i].start_date)); 358 filter.set_start_date(TimeToProtoTime(start_test_cases[i].start_date));
341 const bool result = VariationsService::CheckStudyStartDate(filter, now); 359 const bool result = VariationsService::CheckStudyStartDate(filter, now);
342 EXPECT_EQ(start_test_cases[i].expected_result, result) 360 EXPECT_EQ(start_test_cases[i].expected_result, result)
343 << "Case " << i << " failed!"; 361 << "Case " << i << " failed!";
344 } 362 }
345 } 363 }
346 364
347 TEST(VariationsServiceTest, IsStudyExpired) { 365 TEST_F(VariationsServiceTest, IsStudyExpired) {
348 const base::Time now = base::Time::Now(); 366 const base::Time now = base::Time::Now();
349 const base::TimeDelta delta = base::TimeDelta::FromHours(1); 367 const base::TimeDelta delta = base::TimeDelta::FromHours(1);
350 const struct { 368 const struct {
351 const base::Time expiry_date; 369 const base::Time expiry_date;
352 bool expected_result; 370 bool expected_result;
353 } expiry_test_cases[] = { 371 } expiry_test_cases[] = {
354 { now - delta, true }, 372 { now - delta, true },
355 { now, true }, 373 { now, true },
356 { now + delta, false }, 374 { now + delta, false },
357 }; 375 };
358 376
359 Study study; 377 Study study;
360 378
361 // Expiry date not set should result in false. 379 // Expiry date not set should result in false.
362 EXPECT_FALSE(VariationsService::IsStudyExpired(study, now)); 380 EXPECT_FALSE(VariationsService::IsStudyExpired(study, now));
363 381
364 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(expiry_test_cases); ++i) { 382 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(expiry_test_cases); ++i) {
365 study.set_expiry_date(TimeToProtoTime(expiry_test_cases[i].expiry_date)); 383 study.set_expiry_date(TimeToProtoTime(expiry_test_cases[i].expiry_date));
366 const bool result = VariationsService::IsStudyExpired(study, now); 384 const bool result = VariationsService::IsStudyExpired(study, now);
367 EXPECT_EQ(expiry_test_cases[i].expected_result, result) 385 EXPECT_EQ(expiry_test_cases[i].expected_result, result)
368 << "Case " << i << " failed!"; 386 << "Case " << i << " failed!";
369 } 387 }
370 } 388 }
371 389
372 TEST(VariationsServiceTest, VariationsURLIsValid) { 390 #if !defined(OS_CHROMEOS)
391 TEST_F(VariationsServiceTest, VariationsURLIsValid) {
373 TestingPrefServiceSimple prefs; 392 TestingPrefServiceSimple prefs;
374 VariationsService::RegisterPrefs(prefs.registry()); 393 VariationsService::RegisterPrefs(prefs.registry());
375 const std::string default_variations_url = 394 const std::string default_variations_url =
376 VariationsService::GetDefaultVariationsServerURLForTesting(); 395 VariationsService::GetDefaultVariationsServerURLForTesting();
377 396
378 EXPECT_EQ(default_variations_url, 397 EXPECT_EQ(default_variations_url,
379 VariationsService::GetVariationsServerURL(&prefs).spec()); 398 VariationsService::GetVariationsServerURL(&prefs).spec());
380 399
381 prefs.SetString(prefs::kVariationsRestrictParameter, "restricted"); 400 prefs.SetString(prefs::kVariationsRestrictParameter, "restricted");
382 EXPECT_EQ(default_variations_url + "?restrict=restricted", 401 EXPECT_EQ(default_variations_url + "?restrict=restricted",
383 VariationsService::GetVariationsServerURL(&prefs).spec()); 402 VariationsService::GetVariationsServerURL(&prefs).spec());
384 } 403 }
404 #else
405 class VariationsServiceTestChromeOS : public testing::Test {
406 protected:
407 VariationsServiceTestChromeOS() {}
385 408
386 TEST(VariationsServiceTest, LoadSeed) { 409 virtual void SetUp() OVERRIDE {
410 cros_settings_ = chromeos::CrosSettings::Get();
411 DCHECK(cros_settings_ != NULL);
412 // Remove the real DeviceSettingsProvider and replace it with a stub that
413 // allows modifications in a test.
414 device_settings_provider_ = cros_settings_->GetProvider(
415 chromeos::kReportDeviceVersionInfo);
416 EXPECT_TRUE(device_settings_provider_ != NULL);
417 EXPECT_TRUE(cros_settings_->RemoveSettingsProvider(
418 device_settings_provider_));
419 cros_settings_->AddSettingsProvider(&stub_settings_provider_);
420 }
421
422 virtual void TearDown() OVERRIDE {
423 // Restore the real DeviceSettingsProvider.
424 EXPECT_TRUE(
425 cros_settings_->RemoveSettingsProvider(&stub_settings_provider_));
426 cros_settings_->AddSettingsProvider(device_settings_provider_);
427 }
428
429 chromeos::CrosSettings* cros_settings_;
Alexei Svitkine (slow) 2013/04/18 19:27:53 This should be private.
Mathieu 2013/04/18 19:51:14 Compiler complains when it's used in the test if p
Alexei Svitkine (slow) 2013/04/18 20:01:27 Ah, I didn't see that you were using in that test.
430
431 private:
432 // Not used. Initializes CrosSettings for testing.
433 chromeos::ScopedTestCrosSettings scoped_test_cros_settings;
Alexei Svitkine (slow) 2013/04/18 19:27:53 You can remove this if you inherit from Variations
Mathieu 2013/04/18 19:51:14 Done.
434
435 chromeos::StubCrosSettingsProvider stub_settings_provider_;
436 chromeos::CrosSettingsProvider* device_settings_provider_;
437
438 DISALLOW_COPY_AND_ASSIGN(VariationsServiceTestChromeOS);
439 };
440
441 TEST_F(VariationsServiceTestChromeOS, VariationsURLIsValid) {
442 TestingPrefServiceSimple prefs;
443 VariationsService::RegisterPrefs(prefs.registry());
444 const std::string default_variations_url =
445 VariationsService::GetDefaultVariationsServerURLForTesting();
446
447 EXPECT_EQ(default_variations_url,
448 VariationsService::GetVariationsServerURL(&prefs).spec());
449
450 cros_settings_->SetString(chromeos::kVariationsRestrictParameter,
451 "restricted");
452 EXPECT_EQ(default_variations_url + "?restrict=restricted",
453 VariationsService::GetVariationsServerURL(&prefs).spec());
454 }
455 #endif
456
457 TEST_F(VariationsServiceTest, LoadSeed) {
387 // Store good seed data to test if loading from prefs works. 458 // Store good seed data to test if loading from prefs works.
388 const TrialsSeed seed = CreateTestSeed(); 459 const TrialsSeed seed = CreateTestSeed();
389 const std::string base64_seed = SerializeSeedBase64(seed); 460 const std::string base64_seed = SerializeSeedBase64(seed);
390 461
391 TestingPrefServiceSimple prefs; 462 TestingPrefServiceSimple prefs;
392 VariationsService::RegisterPrefs(prefs.registry()); 463 VariationsService::RegisterPrefs(prefs.registry());
393 prefs.SetString(prefs::kVariationsSeed, base64_seed); 464 prefs.SetString(prefs::kVariationsSeed, base64_seed);
394 465
395 TestVariationsService variations_service(new TestRequestAllowedNotifier, 466 TestVariationsService variations_service(new TestRequestAllowedNotifier,
396 &prefs); 467 &prefs);
(...skipping 11 matching lines...) Expand all
408 prefs.SetString(prefs::kVariationsSeed, "this should fail"); 479 prefs.SetString(prefs::kVariationsSeed, "this should fail");
409 EXPECT_FALSE(prefs.FindPreference(prefs::kVariationsSeed)->IsDefaultValue()); 480 EXPECT_FALSE(prefs.FindPreference(prefs::kVariationsSeed)->IsDefaultValue());
410 EXPECT_FALSE(variations_service.LoadTrialsSeedFromPref(&prefs, &loaded_seed)); 481 EXPECT_FALSE(variations_service.LoadTrialsSeedFromPref(&prefs, &loaded_seed));
411 EXPECT_TRUE(prefs.FindPreference(prefs::kVariationsSeed)->IsDefaultValue()); 482 EXPECT_TRUE(prefs.FindPreference(prefs::kVariationsSeed)->IsDefaultValue());
412 483
413 // Check that having no seed in prefs results in a return value of false. 484 // Check that having no seed in prefs results in a return value of false.
414 prefs.ClearPref(prefs::kVariationsSeed); 485 prefs.ClearPref(prefs::kVariationsSeed);
415 EXPECT_FALSE(variations_service.LoadTrialsSeedFromPref(&prefs, &loaded_seed)); 486 EXPECT_FALSE(variations_service.LoadTrialsSeedFromPref(&prefs, &loaded_seed));
416 } 487 }
417 488
418 TEST(VariationsServiceTest, StoreSeed) { 489 TEST_F(VariationsServiceTest, StoreSeed) {
419 const base::Time now = base::Time::Now(); 490 const base::Time now = base::Time::Now();
420 const TrialsSeed seed = CreateTestSeed(); 491 const TrialsSeed seed = CreateTestSeed();
421 const std::string serialized_seed = SerializeSeed(seed); 492 const std::string serialized_seed = SerializeSeed(seed);
422 493
423 TestingPrefServiceSimple prefs; 494 TestingPrefServiceSimple prefs;
424 VariationsService::RegisterPrefs(prefs.registry()); 495 VariationsService::RegisterPrefs(prefs.registry());
425 496
426 TestVariationsService variations_service(new TestRequestAllowedNotifier, 497 TestVariationsService variations_service(new TestRequestAllowedNotifier,
427 &prefs); 498 &prefs);
428 499
429 EXPECT_TRUE(variations_service.StoreSeedData(serialized_seed, now, &prefs)); 500 EXPECT_TRUE(variations_service.StoreSeedData(serialized_seed, now, &prefs));
430 // Make sure the pref was actually set. 501 // Make sure the pref was actually set.
431 EXPECT_FALSE(prefs.FindPreference(prefs::kVariationsSeed)->IsDefaultValue()); 502 EXPECT_FALSE(prefs.FindPreference(prefs::kVariationsSeed)->IsDefaultValue());
432 503
433 std::string loaded_serialized_seed = prefs.GetString(prefs::kVariationsSeed); 504 std::string loaded_serialized_seed = prefs.GetString(prefs::kVariationsSeed);
434 std::string decoded_serialized_seed; 505 std::string decoded_serialized_seed;
435 ASSERT_TRUE(base::Base64Decode(loaded_serialized_seed, 506 ASSERT_TRUE(base::Base64Decode(loaded_serialized_seed,
436 &decoded_serialized_seed)); 507 &decoded_serialized_seed));
437 // Make sure the stored seed from pref is the same as the seed we created. 508 // Make sure the stored seed from pref is the same as the seed we created.
438 EXPECT_EQ(serialized_seed, decoded_serialized_seed); 509 EXPECT_EQ(serialized_seed, decoded_serialized_seed);
439 510
440 // Check if trying to store a bad seed leaves the pref unchanged. 511 // Check if trying to store a bad seed leaves the pref unchanged.
441 prefs.ClearPref(prefs::kVariationsSeed); 512 prefs.ClearPref(prefs::kVariationsSeed);
442 EXPECT_FALSE(variations_service.StoreSeedData("should fail", now, &prefs)); 513 EXPECT_FALSE(variations_service.StoreSeedData("should fail", now, &prefs));
443 EXPECT_TRUE(prefs.FindPreference(prefs::kVariationsSeed)->IsDefaultValue()); 514 EXPECT_TRUE(prefs.FindPreference(prefs::kVariationsSeed)->IsDefaultValue());
444 } 515 }
445 516
446 TEST(VariationsServiceTest, ValidateStudy) { 517 TEST_F(VariationsServiceTest, ValidateStudy) {
447 Study study; 518 Study study;
448 study.set_default_experiment_name("def"); 519 study.set_default_experiment_name("def");
449 520
450 Study_Experiment* experiment = study.add_experiment(); 521 Study_Experiment* experiment = study.add_experiment();
451 experiment->set_name("abc"); 522 experiment->set_name("abc");
452 experiment->set_probability_weight(100); 523 experiment->set_probability_weight(100);
453 524
454 Study_Experiment* default_group = study.add_experiment(); 525 Study_Experiment* default_group = study.add_experiment();
455 default_group->set_name("def"); 526 default_group->set_name("def");
456 default_group->set_probability_weight(200); 527 default_group->set_probability_weight(200);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 &total_probability); 581 &total_probability);
511 ASSERT_TRUE(valid); 582 ASSERT_TRUE(valid);
512 Study_Experiment* repeated_group = study.add_experiment(); 583 Study_Experiment* repeated_group = study.add_experiment();
513 repeated_group->set_name("abc"); 584 repeated_group->set_name("abc");
514 repeated_group->set_probability_weight(1); 585 repeated_group->set_probability_weight(1);
515 valid = VariationsService::ValidateStudyAndComputeTotalProbability(study, 586 valid = VariationsService::ValidateStudyAndComputeTotalProbability(study,
516 &total_probability); 587 &total_probability);
517 EXPECT_FALSE(valid); 588 EXPECT_FALSE(valid);
518 } 589 }
519 590
520 TEST(VariationsServiceTest, RequestsInitiallyNotAllowed) { 591 TEST_F(VariationsServiceTest, RequestsInitiallyNotAllowed) {
521 MessageLoopForUI message_loop; 592 MessageLoopForUI message_loop;
522 content::TestBrowserThread ui_thread(content::BrowserThread::UI, 593 content::TestBrowserThread ui_thread(content::BrowserThread::UI,
523 &message_loop); 594 &message_loop);
524 TestingPrefServiceSimple prefs; 595 TestingPrefServiceSimple prefs;
525 VariationsService::RegisterPrefs(prefs.registry()); 596 VariationsService::RegisterPrefs(prefs.registry());
526 597
527 // Pass ownership to TestVariationsService, but keep a weak pointer to 598 // Pass ownership to TestVariationsService, but keep a weak pointer to
528 // manipulate it for this test. 599 // manipulate it for this test.
529 TestRequestAllowedNotifier* test_notifier = new TestRequestAllowedNotifier; 600 TestRequestAllowedNotifier* test_notifier = new TestRequestAllowedNotifier;
530 TestVariationsService test_service(test_notifier, &prefs); 601 TestVariationsService test_service(test_notifier, &prefs);
531 602
532 // Force the notifier to initially disallow requests. 603 // Force the notifier to initially disallow requests.
533 test_notifier->SetRequestsAllowedOverride(false); 604 test_notifier->SetRequestsAllowedOverride(false);
534 test_service.StartRepeatedVariationsSeedFetch(); 605 test_service.StartRepeatedVariationsSeedFetch();
535 EXPECT_FALSE(test_service.fetch_attempted()); 606 EXPECT_FALSE(test_service.fetch_attempted());
536 607
537 test_notifier->NotifyObserver(); 608 test_notifier->NotifyObserver();
538 EXPECT_TRUE(test_service.fetch_attempted()); 609 EXPECT_TRUE(test_service.fetch_attempted());
539 } 610 }
540 611
541 TEST(VariationsServiceTest, RequestsInitiallyAllowed) { 612 TEST_F(VariationsServiceTest, RequestsInitiallyAllowed) {
542 MessageLoopForUI message_loop; 613 MessageLoopForUI message_loop;
543 content::TestBrowserThread ui_thread(content::BrowserThread::UI, 614 content::TestBrowserThread ui_thread(content::BrowserThread::UI,
544 &message_loop); 615 &message_loop);
545 TestingPrefServiceSimple prefs; 616 TestingPrefServiceSimple prefs;
546 VariationsService::RegisterPrefs(prefs.registry()); 617 VariationsService::RegisterPrefs(prefs.registry());
547 618
548 // Pass ownership to TestVariationsService, but keep a weak pointer to 619 // Pass ownership to TestVariationsService, but keep a weak pointer to
549 // manipulate it for this test. 620 // manipulate it for this test.
550 TestRequestAllowedNotifier* test_notifier = new TestRequestAllowedNotifier; 621 TestRequestAllowedNotifier* test_notifier = new TestRequestAllowedNotifier;
551 TestVariationsService test_service(test_notifier, &prefs); 622 TestVariationsService test_service(test_notifier, &prefs);
552 623
553 test_notifier->SetRequestsAllowedOverride(true); 624 test_notifier->SetRequestsAllowedOverride(true);
554 test_service.StartRepeatedVariationsSeedFetch(); 625 test_service.StartRepeatedVariationsSeedFetch();
555 EXPECT_TRUE(test_service.fetch_attempted()); 626 EXPECT_TRUE(test_service.fetch_attempted());
556 } 627 }
557 628
558 TEST(VariationsServiceTest, SeedStoredWhenOKStatus) { 629 TEST_F(VariationsServiceTest, SeedStoredWhenOKStatus) {
559 MessageLoop message_loop; 630 MessageLoop message_loop;
560 content::TestBrowserThread io_thread(content::BrowserThread::IO, 631 content::TestBrowserThread io_thread(content::BrowserThread::IO,
561 &message_loop); 632 &message_loop);
562 TestingPrefServiceSimple prefs; 633 TestingPrefServiceSimple prefs;
563 VariationsService::RegisterPrefs(prefs.registry()); 634 VariationsService::RegisterPrefs(prefs.registry());
564 635
565 VariationsService variations_service(new TestRequestAllowedNotifier, &prefs); 636 VariationsService variations_service(new TestRequestAllowedNotifier, &prefs);
566 637
567 net::TestURLFetcherFactory factory; 638 net::TestURLFetcherFactory factory;
568 variations_service.DoActualFetch(); 639 variations_service.DoActualFetch();
569 640
570 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); 641 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
571 SimulateServerResponse(net::HTTP_OK, fetcher); 642 SimulateServerResponse(net::HTTP_OK, fetcher);
572 const TrialsSeed seed = CreateTestSeed(); 643 const TrialsSeed seed = CreateTestSeed();
573 fetcher->SetResponseString(SerializeSeed(seed)); 644 fetcher->SetResponseString(SerializeSeed(seed));
574 645
575 EXPECT_TRUE(prefs.FindPreference(prefs::kVariationsSeed)->IsDefaultValue()); 646 EXPECT_TRUE(prefs.FindPreference(prefs::kVariationsSeed)->IsDefaultValue());
576 variations_service.OnURLFetchComplete(fetcher); 647 variations_service.OnURLFetchComplete(fetcher);
577 EXPECT_FALSE(prefs.FindPreference(prefs::kVariationsSeed)->IsDefaultValue()); 648 EXPECT_FALSE(prefs.FindPreference(prefs::kVariationsSeed)->IsDefaultValue());
578 EXPECT_EQ(SerializeSeedBase64(seed), prefs.GetString(prefs::kVariationsSeed)); 649 EXPECT_EQ(SerializeSeedBase64(seed), prefs.GetString(prefs::kVariationsSeed));
579 } 650 }
580 651
581 TEST(VariationsServiceTest, SeedNotStoredWhenNonOKStatus) { 652 TEST_F(VariationsServiceTest, SeedNotStoredWhenNonOKStatus) {
582 const int non_ok_status_codes[] = { 653 const int non_ok_status_codes[] = {
583 net::HTTP_NO_CONTENT, 654 net::HTTP_NO_CONTENT,
584 net::HTTP_NOT_MODIFIED, 655 net::HTTP_NOT_MODIFIED,
585 net::HTTP_NOT_FOUND, 656 net::HTTP_NOT_FOUND,
586 net::HTTP_INTERNAL_SERVER_ERROR, 657 net::HTTP_INTERNAL_SERVER_ERROR,
587 net::HTTP_SERVICE_UNAVAILABLE, 658 net::HTTP_SERVICE_UNAVAILABLE,
588 }; 659 };
589 660
590 MessageLoop message_loop; 661 MessageLoop message_loop;
591 content::TestBrowserThread io_thread(content::BrowserThread::IO, 662 content::TestBrowserThread io_thread(content::BrowserThread::IO,
592 &message_loop); 663 &message_loop);
593 TestingPrefServiceSimple prefs; 664 TestingPrefServiceSimple prefs;
594 VariationsService::RegisterPrefs(prefs.registry()); 665 VariationsService::RegisterPrefs(prefs.registry());
595 666
596 VariationsService variations_service(new TestRequestAllowedNotifier, &prefs); 667 VariationsService variations_service(new TestRequestAllowedNotifier, &prefs);
597 for (size_t i = 0; i < arraysize(non_ok_status_codes); ++i) { 668 for (size_t i = 0; i < arraysize(non_ok_status_codes); ++i) {
598 net::TestURLFetcherFactory factory; 669 net::TestURLFetcherFactory factory;
599 variations_service.DoActualFetch(); 670 variations_service.DoActualFetch();
600 EXPECT_TRUE(prefs.FindPreference(prefs::kVariationsSeed)->IsDefaultValue()); 671 EXPECT_TRUE(prefs.FindPreference(prefs::kVariationsSeed)->IsDefaultValue());
601 672
602 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); 673 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
603 SimulateServerResponse(non_ok_status_codes[i], fetcher); 674 SimulateServerResponse(non_ok_status_codes[i], fetcher);
604 variations_service.OnURLFetchComplete(fetcher); 675 variations_service.OnURLFetchComplete(fetcher);
605 676
606 EXPECT_TRUE(prefs.FindPreference(prefs::kVariationsSeed)->IsDefaultValue()); 677 EXPECT_TRUE(prefs.FindPreference(prefs::kVariationsSeed)->IsDefaultValue());
607 } 678 }
608 } 679 }
609 680
610 } // namespace chrome_variations 681 } // namespace chrome_variations
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698