This source file includes following definitions.
- value_number_
- AddProfiles
- UpdateProfiles
- RemoveProfiles
- AddKeys
- NextAutofillProfile
- NextAutofillKey
- NextGUID
- IntToGUID
- NextName
- IntToName
- NextValue
- IntToValue
- ForceSync
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/sync/test/integration/autofill_helper.h"
#include "chrome/browser/sync/test/integration/bookmarks_helper.h"
#include "chrome/browser/sync/test/integration/performance/sync_timing_helper.h"
#include "chrome/browser/sync/test/integration/profile_sync_service_harness.h"
#include "chrome/browser/sync/test/integration/sync_test.h"
#include "components/autofill/core/browser/autofill_profile.h"
#include "components/autofill/core/browser/autofill_test_utils.h"
#include "components/autofill/core/browser/webdata/autofill_entry.h"
using autofill::ServerFieldType;
using autofill::AutofillKey;
using autofill::AutofillProfile;
using autofill_helper::AllProfilesMatch;
using autofill_helper::GetAllKeys;
using autofill_helper::GetAllProfiles;
using autofill_helper::GetKeyCount;
using autofill_helper::GetProfileCount;
using autofill_helper::RemoveKeys;
using autofill_helper::SetProfiles;
static const int kNumKeys = 163;
static const int kNumProfiles = 163;
class AutofillSyncPerfTest : public SyncTest {
public:
AutofillSyncPerfTest()
: SyncTest(TWO_CLIENT),
guid_number_(0),
name_number_(0),
value_number_(0) {}
void AddProfiles(int profile, int num_profiles);
void UpdateProfiles(int profile);
void RemoveProfiles(int profile);
void AddKeys(int profile, int num_keys);
private:
const AutofillProfile NextAutofillProfile();
const AutofillKey NextAutofillKey();
const std::string NextGUID();
const std::string IntToGUID(int n);
const std::string NextName();
const std::string IntToName(int n);
const std::string NextValue();
const std::string IntToValue(int n);
int guid_number_;
int name_number_;
int value_number_;
DISALLOW_COPY_AND_ASSIGN(AutofillSyncPerfTest);
};
void AutofillSyncPerfTest::AddProfiles(int profile, int num_profiles) {
const std::vector<AutofillProfile*>& all_profiles =
GetAllProfiles(profile);
std::vector<AutofillProfile> autofill_profiles;
for (size_t i = 0; i < all_profiles.size(); ++i) {
autofill_profiles.push_back(*all_profiles[i]);
}
for (int i = 0; i < num_profiles; ++i) {
autofill_profiles.push_back(NextAutofillProfile());
}
SetProfiles(profile, &autofill_profiles);
}
void AutofillSyncPerfTest::UpdateProfiles(int profile) {
const std::vector<AutofillProfile*>& all_profiles =
GetAllProfiles(profile);
std::vector<AutofillProfile> autofill_profiles;
for (size_t i = 0; i < all_profiles.size(); ++i) {
autofill_profiles.push_back(*all_profiles[i]);
autofill_profiles.back().SetRawInfo(autofill::NAME_FIRST,
base::UTF8ToUTF16(NextName()));
}
SetProfiles(profile, &autofill_profiles);
}
void AutofillSyncPerfTest::RemoveProfiles(int profile) {
std::vector<AutofillProfile> empty;
SetProfiles(profile, &empty);
}
void AutofillSyncPerfTest::AddKeys(int profile, int num_keys) {
std::set<AutofillKey> keys;
for (int i = 0; i < num_keys; ++i) {
keys.insert(NextAutofillKey());
}
autofill_helper::AddKeys(profile, keys);
}
const AutofillProfile AutofillSyncPerfTest::NextAutofillProfile() {
AutofillProfile profile;
autofill::test::SetProfileInfoWithGuid(&profile, NextGUID().c_str(),
NextName().c_str(), "", "", "", "", "",
"", "", "", "", "", "");
return profile;
}
const AutofillKey AutofillSyncPerfTest::NextAutofillKey() {
return AutofillKey(NextName().c_str(), NextName().c_str());
}
const std::string AutofillSyncPerfTest::NextGUID() {
return IntToGUID(guid_number_++);
}
const std::string AutofillSyncPerfTest::IntToGUID(int n) {
return base::StringPrintf("00000000-0000-0000-0000-%012X", n);
}
const std::string AutofillSyncPerfTest::NextName() {
return IntToName(name_number_++);
}
const std::string AutofillSyncPerfTest::IntToName(int n) {
return base::StringPrintf("Name%d", n);
}
const std::string AutofillSyncPerfTest::NextValue() {
return IntToValue(value_number_++);
}
const std::string AutofillSyncPerfTest::IntToValue(int n) {
return base::StringPrintf("Value%d", n);
}
void ForceSync(int profile) {
static int id = 0;
++id;
EXPECT_TRUE(
bookmarks_helper::AddURL(profile, 0,
bookmarks_helper::IndexedURLTitle(id),
GURL(bookmarks_helper::IndexedURL(id))) != NULL);
}
IN_PROC_BROWSER_TEST_F(AutofillSyncPerfTest, AutofillProfiles_P0) {
ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
AddProfiles(0, kNumProfiles);
base::TimeDelta dt =
SyncTimingHelper::TimeMutualSyncCycle(GetClient(0), GetClient(1));
ASSERT_EQ(kNumProfiles, GetProfileCount(1));
SyncTimingHelper::PrintResult("autofill", "add_autofill_profiles", dt);
UpdateProfiles(0);
dt = SyncTimingHelper::TimeMutualSyncCycle(GetClient(0), GetClient(1));
ASSERT_EQ(kNumProfiles, GetProfileCount(1));
SyncTimingHelper::PrintResult("autofill", "update_autofill_profiles", dt);
RemoveProfiles(0);
dt = SyncTimingHelper::TimeMutualSyncCycle(GetClient(0), GetClient(1));
ASSERT_EQ(0, GetProfileCount(1));
SyncTimingHelper::PrintResult("autofill", "delete_autofill_profiles", dt);
}
IN_PROC_BROWSER_TEST_F(AutofillSyncPerfTest, Autofill_P0) {
ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
AddKeys(0, kNumKeys);
ForceSync(0);
base::TimeDelta dt =
SyncTimingHelper::TimeMutualSyncCycle(GetClient(0), GetClient(1));
ASSERT_EQ(kNumKeys, GetKeyCount(1));
SyncTimingHelper::PrintResult("autofill", "add_autofill_keys", dt);
RemoveKeys(0);
ForceSync(0);
dt = SyncTimingHelper::TimeMutualSyncCycle(GetClient(0), GetClient(1));
ASSERT_EQ(0, GetKeyCount(1));
SyncTimingHelper::PrintResult("autofill", "delete_autofill_keys", dt);
}