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

Unified Diff: chrome/test/live_sync/performance/sessions_sync_perf_test.cc

Issue 7575026: Session/tab sync performance tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove unneeded variables used by disabled test Created 9 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/test/live_sync/performance/sessions_sync_perf_test.cc
diff --git a/chrome/test/live_sync/performance/sessions_sync_perf_test.cc b/chrome/test/live_sync/performance/sessions_sync_perf_test.cc
new file mode 100644
index 0000000000000000000000000000000000000000..93406c83b1d9c1c7134f76c9758b26baaa118376
--- /dev/null
+++ b/chrome/test/live_sync/performance/sessions_sync_perf_test.cc
@@ -0,0 +1,124 @@
+// 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 "base/stringprintf.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/sync/profile_sync_service_harness.h"
+#include "chrome/test/live_sync/performance/sync_timing_helper.h"
+#include "chrome/test/live_sync/live_sessions_sync_test.h"
+
+static const int kNumTabs = 150;
+
+class SessionsSyncPerfTest: public TwoClientLiveSessionsSyncTest {
+ public:
+ SessionsSyncPerfTest() : url_number(0) {}
+
+ // Opens |num_tabs| new tabs on |profile|.
+ void AddTabs(int profile, int num_tabs);
+
+ // Update all tabs in |profile| by visiting a new URL.
+ void UpdateTabs(int profile);
+
+ // Close all tabs in |profile|.
+ void RemoveTabs(int profile);
+
+ // Returns the number of open tabs in all sessions (local + foreign) for
+ // |profile|. Returns -1 on failure.
+ int GetTabCount(int profile);
+
+ private:
+ // Returns a new unique URL.
+ GURL NextURL();
+
+ // Returns a unique URL according to the integer |n|.
+ GURL IntToURL(int n);
+
+ int url_number;
Raghu Simha 2011/08/05 21:26:07 s/url_number/url_number_/
braffert 2011/08/05 21:37:21 Done.
+ DISALLOW_COPY_AND_ASSIGN(SessionsSyncPerfTest);
+};
+
+void SessionsSyncPerfTest::AddTabs(int profile, int num_tabs) {
+ std::vector<GURL> urls;
+ for (int i = 0; i < num_tabs; ++i) {
+ urls.push_back(NextURL());
+ }
+ OpenMultipleTabs(profile, urls);
+}
+
+void SessionsSyncPerfTest::UpdateTabs(int profile) {
+ Browser* browser = GetBrowser(profile);
+ GURL url;
+ std::vector<GURL> urls;
+ for (int i = 0; i < browser->tab_count(); ++i) {
+ browser->SelectNumberedTab(i);
+ url = NextURL();
+ browser->OpenURL(
+ OpenURLParams(url, GURL("www.google.com"), CURRENT_TAB, 0));
+ urls.push_back(url);
+ }
+ WaitForTabsToLoad(profile, urls);
+}
+
+void SessionsSyncPerfTest::RemoveTabs(int profile) {
+ GetBrowser(profile)->CloseAllTabs();
+}
+
+int SessionsSyncPerfTest::GetTabCount(int profile) {
+ int tab_count = 0;
+ const SyncedSession* local_session;
+ std::vector<const SyncedSession*> sessions;
+
+ if (!GetLocalSession(profile, &local_session)) {
+ VLOG(1) << "GetLocalSession returned false";
+ return -1;
+ }
+
+ if (!GetSessionData(profile, &sessions)) {
+ // Foreign session data may be empty. In this case we only count tabs in
+ // the local session.
+ VLOG(1) << "GetSessionData returned false";
+ }
+
+ sessions.push_back(local_session);
+ for (std::vector<const SyncedSession*>::const_iterator it = sessions.begin();
+ it != sessions.end(); ++it) {
+ for (std::vector<SessionWindow*>::const_iterator win_it =
+ (*it)->windows.begin(); win_it != (*it)->windows.end(); ++win_it) {
+ tab_count += (*win_it)->tabs.size();
+ }
+ }
+ return tab_count;
+}
+
+GURL SessionsSyncPerfTest::NextURL() {
+ return IntToURL(url_number++);
+}
+
+GURL SessionsSyncPerfTest::IntToURL(int n) {
+ return GURL(StringPrintf("http://history%d.google.com/", n));
+}
+
+IN_PROC_BROWSER_TEST_F(SessionsSyncPerfTest, P0) {
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
+
+ AddTabs(0, kNumTabs);
+ base::TimeDelta dt =
+ SyncTimingHelper::TimeMutualSyncCycle(GetClient(0), GetClient(1));
+ ASSERT_EQ(kNumTabs, GetTabCount(0));
+ ASSERT_EQ(kNumTabs, GetTabCount(1));
+ SyncTimingHelper::PrintResult("tabs", "add", dt);
+
+ UpdateTabs(0);
+ dt = SyncTimingHelper::TimeMutualSyncCycle(GetClient(0), GetClient(1));
+ ASSERT_EQ(kNumTabs, GetTabCount(0));
+ ASSERT_EQ(kNumTabs, GetTabCount(1));
+ SyncTimingHelper::PrintResult("tabs", "update", dt);
+
+ RemoveTabs(0);
+ dt = SyncTimingHelper::TimeMutualSyncCycle(GetClient(0), GetClient(1));
+ // New tab page remains open on profile 0 after closing all tabs.
+ ASSERT_EQ(1, GetTabCount(0));
+ ASSERT_EQ(0, GetTabCount(1));
+ SyncTimingHelper::PrintResult("tabs", "delete", dt);
+}

Powered by Google App Engine
This is Rietveld 408576698