| Index: chrome/test/live_sync/performance_live_bookmarks_sync_test.cc
|
| diff --git a/chrome/test/live_sync/performance_live_bookmarks_sync_test.cc b/chrome/test/live_sync/performance_live_bookmarks_sync_test.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..bc206088d52f1b3bdf98e53529f0ada0b5451e3a
|
| --- /dev/null
|
| +++ b/chrome/test/live_sync/performance_live_bookmarks_sync_test.cc
|
| @@ -0,0 +1,218 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/sync/profile_sync_service_harness.h"
|
| +#include "chrome/test/live_sync/live_bookmarks_sync_test.h"
|
| +#include "chrome/test/live_sync/live_sync_timing_helper.h"
|
| +
|
| +static const int kNumBookmarks = 150;
|
| +
|
| +// TODO(braffert): Consider the range / resolution of these test points.
|
| +static const int kNumBenchmarkPoints = 18;
|
| +static const int kBenchmarkPoints[] = {1, 10, 20, 30, 40, 50, 75, 100, 125,
|
| + 150, 175, 200, 225, 250, 300, 350, 400,
|
| + 500};
|
| +
|
| +// TODO(braffert): Move this class into its own .h/.cc files. What should the
|
| +// class files be named as opposed to the file containing the tests themselves?
|
| +class PerformanceLiveBookmarksSyncTest
|
| + : public TwoClientLiveBookmarksSyncTest {
|
| + public:
|
| + PerformanceLiveBookmarksSyncTest() : url_number(0), url_title_number(0) {}
|
| +
|
| + // Adds |num_urls| new unique bookmarks to the bookmark bar for |profile|.
|
| + void AddURLs(int profile, int num_urls);
|
| +
|
| + // Updates the URL for all bookmarks in the bookmark bar for |profile|.
|
| + void UpdateURLs(int profile);
|
| +
|
| + // Removes all bookmarks in the bookmark bar for |profile|.
|
| + void RemoveURLs(int profile);
|
| +
|
| + // Remvoes all bookmarks in the bookmark bars for all profiles. Called
|
| + // between benchmark iterations.
|
| + void Cleanup();
|
| +
|
| + private:
|
| + // Returns a new unique bookmark URL.
|
| + std::string NextIndexedURL();
|
| +
|
| + // Returns a new unique bookmark title.
|
| + std::wstring NextIndexedURLTitle();
|
| +
|
| + int url_number;
|
| + int url_title_number;
|
| + DISALLOW_COPY_AND_ASSIGN(PerformanceLiveBookmarksSyncTest);
|
| +};
|
| +
|
| +void PerformanceLiveBookmarksSyncTest::AddURLs(int profile, int num_urls) {
|
| + for (int i = 0; i < num_urls; ++i) {
|
| + ASSERT_TRUE(AddURL(
|
| + profile, 0, NextIndexedURLTitle(), GURL(NextIndexedURL())) != NULL);
|
| + }
|
| +}
|
| +
|
| +void PerformanceLiveBookmarksSyncTest::UpdateURLs(int profile) {
|
| + for (int i = 0; i < GetBookmarkBarNode(profile)->child_count(); ++i) {
|
| + ASSERT_TRUE(SetURL(profile, GetBookmarkBarNode(profile)->GetChild(i),
|
| + GURL(NextIndexedURL())));
|
| + }
|
| +}
|
| +
|
| +void PerformanceLiveBookmarksSyncTest::RemoveURLs(int profile) {
|
| + while (GetBookmarkBarNode(profile)->child_count()) {
|
| + Remove(profile, GetBookmarkBarNode(profile), 0);
|
| + }
|
| +}
|
| +
|
| +void PerformanceLiveBookmarksSyncTest::Cleanup() {
|
| + for (int i = 0; i < num_clients(); ++i) {
|
| + RemoveURLs(i);
|
| + }
|
| + ASSERT_TRUE(AwaitQuiescence());
|
| + ASSERT_EQ(0, GetBookmarkBarNode(0)->child_count());
|
| + ASSERT_TRUE(AllModelsMatch());
|
| +}
|
| +
|
| +std::string PerformanceLiveBookmarksSyncTest::NextIndexedURL() {
|
| + return IndexedURL(url_number++);
|
| +}
|
| +
|
| +std::wstring PerformanceLiveBookmarksSyncTest::NextIndexedURLTitle() {
|
| + return IndexedURLTitle(url_title_number++);
|
| +}
|
| +
|
| +// TODO(braffert): Possibly split each of these into separate up / down test
|
| +// cases?
|
| +// TCM ID - 7556828.
|
| +IN_PROC_BROWSER_TEST_F(PerformanceLiveBookmarksSyncTest, Add) {
|
| + ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
|
| + DisableVerifier();
|
| +
|
| + DisableNetwork(GetProfile(1));
|
| + AddURLs(0, kNumBookmarks);
|
| + base::TimeDelta dt_up = LiveSyncTimingHelper::TimeSyncCycle(GetClient(0));
|
| + ASSERT_EQ(kNumBookmarks, GetBookmarkBarNode(0)->child_count());
|
| + ASSERT_EQ(0, GetBookmarkBarNode(1)->child_count());
|
| +
|
| + EnableNetwork(GetProfile(1));
|
| + base::TimeDelta dt_down =
|
| + LiveSyncTimingHelper::TimeMutualSyncCycle(GetClient(0), GetClient(1));
|
| + ASSERT_EQ(kNumBookmarks, GetBookmarkBarNode(0)->child_count());
|
| + ASSERT_TRUE(AllModelsMatch());
|
| +
|
| + // TODO(braffert): Compare timings against some target value.
|
| +}
|
| +
|
| +// TCM ID - 7564762.
|
| +IN_PROC_BROWSER_TEST_F(PerformanceLiveBookmarksSyncTest, Update) {
|
| + ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
|
| + DisableVerifier();
|
| +
|
| + AddURLs(0, kNumBookmarks);
|
| + ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
|
| + ASSERT_TRUE(AllModelsMatch());
|
| +
|
| + DisableNetwork(GetProfile(1));
|
| + UpdateURLs(0);
|
| + base::TimeDelta dt_up = LiveSyncTimingHelper::TimeSyncCycle(GetClient(0));
|
| + ASSERT_EQ(kNumBookmarks, GetBookmarkBarNode(0)->child_count());
|
| + ASSERT_EQ(kNumBookmarks, GetBookmarkBarNode(1)->child_count());
|
| + ASSERT_FALSE(AllModelsMatch());
|
| +
|
| + EnableNetwork(GetProfile(1));
|
| + base::TimeDelta dt_down =
|
| + LiveSyncTimingHelper::TimeMutualSyncCycle(GetClient(0), GetClient(1));
|
| + ASSERT_EQ(kNumBookmarks, GetBookmarkBarNode(0)->child_count());
|
| + ASSERT_EQ(kNumBookmarks, GetBookmarkBarNode(1)->child_count());
|
| +
|
| + // TODO(braffert): Compare timings against some target value.
|
| +}
|
| +
|
| +// TCM ID - 7566626.
|
| +IN_PROC_BROWSER_TEST_F(PerformanceLiveBookmarksSyncTest, Delete) {
|
| + ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
|
| + DisableVerifier();
|
| +
|
| + AddURLs(0, kNumBookmarks);
|
| + ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
|
| + ASSERT_TRUE(AllModelsMatch());
|
| +
|
| + DisableNetwork(GetProfile(1));
|
| + RemoveURLs(0);
|
| + base::TimeDelta dt_up = LiveSyncTimingHelper::TimeSyncCycle(GetClient(0));
|
| + ASSERT_EQ(0, GetBookmarkBarNode(0)->child_count());
|
| + ASSERT_EQ(kNumBookmarks, GetBookmarkBarNode(1)->child_count());
|
| +
|
| + EnableNetwork(GetProfile(1));
|
| + base::TimeDelta dt_down =
|
| + LiveSyncTimingHelper::TimeMutualSyncCycle(GetClient(0), GetClient(1));
|
| + ASSERT_EQ(0, GetBookmarkBarNode(0)->child_count());
|
| + ASSERT_EQ(0, GetBookmarkBarNode(1)->child_count());
|
| +
|
| + // TODO(braffert): Compare timings against some target value.
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(PerformanceLiveBookmarksSyncTest, DISABLED_Benchmark) {
|
| + ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
|
| + DisableVerifier();
|
| +
|
| + for (int i = 0; i < kNumBenchmarkPoints; ++i) {
|
| + int num_bookmarks = kBenchmarkPoints[i];
|
| +
|
| + // Disable client 1. Add bookmarks and time commit by client 0.
|
| + DisableNetwork(GetProfile(1));
|
| + AddURLs(0, num_bookmarks);
|
| + base::TimeDelta dt_up = LiveSyncTimingHelper::TimeSyncCycle(GetClient(0));
|
| + ASSERT_EQ(num_bookmarks, GetBookmarkBarNode(0)->child_count());
|
| + ASSERT_EQ(0, GetBookmarkBarNode(1)->child_count());
|
| +
|
| + // Enable client 1 and time update (new bookmarks).
|
| + EnableNetwork(GetProfile(1));
|
| + base::TimeDelta dt_down =
|
| + LiveSyncTimingHelper::TimeMutualSyncCycle(GetClient(0), GetClient(1));
|
| + ASSERT_EQ(num_bookmarks, GetBookmarkBarNode(0)->child_count());
|
| + ASSERT_TRUE(AllModelsMatch());
|
| +
|
| + VLOG(0) << std::endl << "Add: " << num_bookmarks << " "
|
| + << dt_up.InSecondsF() << " " << dt_down.InSecondsF();
|
| +
|
| + // Disable client 1. Modify bookmarks and time commit by client 0.
|
| + DisableNetwork(GetProfile(1));
|
| + UpdateURLs(0);
|
| + dt_up = LiveSyncTimingHelper::TimeSyncCycle(GetClient(0));
|
| + ASSERT_EQ(num_bookmarks, GetBookmarkBarNode(0)->child_count());
|
| + ASSERT_EQ(num_bookmarks, GetBookmarkBarNode(1)->child_count());
|
| + ASSERT_FALSE(AllModelsMatch());
|
| +
|
| + // Enable client 1 and time update (changed bookmarks).
|
| + EnableNetwork(GetProfile(1));
|
| + dt_down =
|
| + LiveSyncTimingHelper::TimeMutualSyncCycle(GetClient(0), GetClient(1));
|
| + ASSERT_EQ(num_bookmarks, GetBookmarkBarNode(0)->child_count());
|
| + ASSERT_TRUE(AllModelsMatch());
|
| +
|
| + VLOG(0) << std::endl << "Update: " << num_bookmarks << " "
|
| + << dt_up.InSecondsF() << " " << dt_down.InSecondsF();
|
| +
|
| + // Disable client 1. Delete bookmarks and time commit by client 0.
|
| + DisableNetwork(GetProfile(1));
|
| + RemoveURLs(0);
|
| + dt_up = LiveSyncTimingHelper::TimeSyncCycle(GetClient(0));
|
| + ASSERT_EQ(0, GetBookmarkBarNode(0)->child_count());
|
| + ASSERT_EQ(num_bookmarks, GetBookmarkBarNode(1)->child_count());
|
| +
|
| + // Enable client 1 and time update (deleted bookmarks).
|
| + EnableNetwork(GetProfile(1));
|
| + dt_down =
|
| + LiveSyncTimingHelper::TimeMutualSyncCycle(GetClient(0), GetClient(1));
|
| + ASSERT_EQ(0, GetBookmarkBarNode(0)->child_count());
|
| + ASSERT_EQ(0, GetBookmarkBarNode(1)->child_count());
|
| +
|
| + VLOG(0) << std::endl << "Delete: " << num_bookmarks << " "
|
| + << dt_up.InSecondsF() << " " << dt_down.InSecondsF();
|
| +
|
| + Cleanup();
|
| + }
|
| +}
|
|
|