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

Unified Diff: chrome/browser/metrics/variations/variations_seed_store_unittest.cc

Issue 1200233005: Support delta-compressed variations server responses. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing missing return in !is_compressed case. Created 5 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/metrics/variations/variations_seed_store_unittest.cc
diff --git a/chrome/browser/metrics/variations/variations_seed_store_unittest.cc b/chrome/browser/metrics/variations/variations_seed_store_unittest.cc
index 48af242a732a008a291bb046d4de36d967a940c7..fabb56a0e07783da8978b3f09adb2eec7a12392e 100644
--- a/chrome/browser/metrics/variations/variations_seed_store_unittest.cc
+++ b/chrome/browser/metrics/variations/variations_seed_store_unittest.cc
@@ -23,7 +23,8 @@ class TestVariationsSeedStore : public VariationsSeedStore {
~TestVariationsSeedStore() override {}
bool StoreSeedForTesting(const std::string& seed_data) {
- return StoreSeedData(seed_data, std::string(), base::Time::Now(), NULL);
+ return StoreSeedData(seed_data, std::string(), std::string(),
+ base::Time::Now(), false, nullptr);
}
VariationsSeedStore::VerifySignatureResult VerifySeedSignature(
@@ -209,7 +210,8 @@ TEST(VariationsSeedStoreTest, StoreSeedData_ParsedSeed) {
variations::VariationsSeed parsed_seed;
EXPECT_TRUE(seed_store.StoreSeedData(serialized_seed, std::string(),
- base::Time::Now(), &parsed_seed));
+ std::string(), base::Time::Now(), false,
+ &parsed_seed));
EXPECT_EQ(serialized_seed, SerializeSeed(parsed_seed));
}
@@ -218,11 +220,36 @@ TEST(VariationsSeedStoreTest, StoreSeedData_CountryCode) {
VariationsSeedStore::RegisterPrefs(prefs.registry());
TestVariationsSeedStore seed_store(&prefs);
+ // Test with a seed country code and no header value.
variations::VariationsSeed seed = CreateTestSeed();
seed.set_country_code("test_country");
EXPECT_TRUE(seed_store.StoreSeedData(SerializeSeed(seed), std::string(),
- base::Time::Now(), nullptr));
+ std::string(), base::Time::Now(), false,
+ nullptr));
EXPECT_EQ("test_country", prefs.GetString(prefs::kVariationsCountry));
+
+ // Test with a header value and no seed country.
+ prefs.ClearPref(prefs::kVariationsCountry);
+ seed.clear_country_code();
+ EXPECT_TRUE(seed_store.StoreSeedData(SerializeSeed(seed), std::string(),
+ "test_country2", base::Time::Now(),
+ false, nullptr));
+ EXPECT_EQ("test_country2", prefs.GetString(prefs::kVariationsCountry));
+
+ // Test with a seed country code and header value.
+ prefs.ClearPref(prefs::kVariationsCountry);
+ seed.set_country_code("test_country3");
+ EXPECT_TRUE(seed_store.StoreSeedData(SerializeSeed(seed), std::string(),
+ "test_country4", base::Time::Now(),
+ false, nullptr));
+ EXPECT_EQ("test_country4", prefs.GetString(prefs::kVariationsCountry));
+
+ // Test with no country code specified - which should preserve the old value.
+ seed.clear_country_code();
+ EXPECT_TRUE(seed_store.StoreSeedData(SerializeSeed(seed), std::string(),
+ std::string(), base::Time::Now(), false,
+ nullptr));
+ EXPECT_EQ("test_country4", prefs.GetString(prefs::kVariationsCountry));
}
TEST(VariationsSeedStoreTest, VerifySeedSignature) {
@@ -280,4 +307,43 @@ TEST(VariationsSeedStoreTest, VerifySeedSignature) {
seed_store.VerifySeedSignature(seed_data, base64_seed_signature));
}
+TEST(VariationsSeedStoreTest, ApplyDeltaPatch) {
+ // Sample seeds and the server produced delta between them to verify that the
+ // client code is able to decode the deltas produced by the server.
+ const std::string base64_before_seed_data =
+ "CigxN2E4ZGJiOTI4ODI0ZGU3ZDU2MGUyODRlODY1ZDllYzg2NzU1MTE0ElgKDFVNQVN0YWJp"
+ "bGl0eRjEyomgBTgBQgtTZXBhcmF0ZUxvZ0oLCgdEZWZhdWx0EABKDwoLU2VwYXJhdGVMb2cQ"
+ "ZFIVEgszNC4wLjE4MDEuMCAAIAEgAiADEkQKIFVNQS1Vbmlmb3JtaXR5LVRyaWFsLTEwMC1Q"
+ "ZXJjZW50GIDjhcAFOAFCCGdyb3VwXzAxSgwKCGdyb3VwXzAxEAFgARJPCh9VTUEtVW5pZm9y"
+ "bWl0eS1UcmlhbC01MC1QZXJjZW50GIDjhcAFOAFCB2RlZmF1bHRKDAoIZ3JvdXBfMDEQAUoL"
+ "CgdkZWZhdWx0EAFgAQ==";
+ const std::string base64_after_seed_data =
+ "CigyNGQzYTM3ZTAxYmViOWYwNWYzMjM4YjUzNWY3MDg1ZmZlZWI4NzQwElgKDFVNQVN0YWJp"
+ "bGl0eRjEyomgBTgBQgtTZXBhcmF0ZUxvZ0oLCgdEZWZhdWx0EABKDwoLU2VwYXJhdGVMb2cQ"
+ "ZFIVEgszNC4wLjE4MDEuMCAAIAEgAiADEpIBCh9VTUEtVW5pZm9ybWl0eS1UcmlhbC0yMC1Q"
+ "ZXJjZW50GIDjhcAFOAFCB2RlZmF1bHRKEQoIZ3JvdXBfMDEQARijtskBShEKCGdyb3VwXzAy"
+ "EAEYpLbJAUoRCghncm91cF8wMxABGKW2yQFKEQoIZ3JvdXBfMDQQARimtskBShAKB2RlZmF1"
+ "bHQQARiitskBYAESWAofVU1BLVVuaWZvcm1pdHktVHJpYWwtNTAtUGVyY2VudBiA44XABTgB"
+ "QgdkZWZhdWx0Sg8KC25vbl9kZWZhdWx0EAFKCwoHZGVmYXVsdBABUgQoACgBYAE=";
+ const std::string base64_delta_data =
+ "KgooMjRkM2EzN2UwMWJlYjlmMDVmMzIzOGI1MzVmNzA4NWZmZWViODc0MAAqW+4BkgEKH1VN"
+ "QS1Vbmlmb3JtaXR5LVRyaWFsLTIwLVBlcmNlbnQYgOOFwAU4AUIHZGVmYXVsdEoRCghncm91"
+ "cF8wMRABGKO2yQFKEQoIZ3JvdXBfMDIQARiktskBShEKCGdyb3VwXzAzEAEYpbbJAUoRCghn"
+ "cm91cF8wNBABGKa2yQFKEAoHZGVmYXVsdBABGKK2yQFgARJYCh9VTUEtVW5pZm9ybWl0eS1U"
+ "cmlhbC01MC1QZXJjZW50GIDjhcAFOAFCB2RlZmF1bHRKDwoLbm9uX2RlZmF1bHQQAUoLCgdk"
+ "ZWZhdWx0EAFSBCgAKAFgAQ==";
+
+ std::string before_seed_data;
+ std::string after_seed_data;
+ std::string delta_data;
+ EXPECT_TRUE(base::Base64Decode(base64_before_seed_data, &before_seed_data));
+ EXPECT_TRUE(base::Base64Decode(base64_after_seed_data, &after_seed_data));
+ EXPECT_TRUE(base::Base64Decode(base64_delta_data, &delta_data));
+
+ std::string output;
+ EXPECT_TRUE(VariationsSeedStore::ApplyDeltaPatch(before_seed_data, delta_data,
+ &output));
+ EXPECT_EQ(after_seed_data, output);
+}
+
} // namespace chrome_variations
« no previous file with comments | « chrome/browser/metrics/variations/variations_seed_store.cc ('k') | chrome/browser/metrics/variations/variations_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698