summaryrefslogtreecommitdiffstats
path: root/tools/perf/page_sets
diff options
context:
space:
mode:
authornednguyen <nednguyen@google.com>2014-11-10 16:37:30 -0800
committerCommit bot <commit-bot@chromium.org>2014-11-11 00:38:01 +0000
commitda1f2c3e702923959727a2ae50f440e228590eb9 (patch)
tree079d6588d6ffe5988995e12f302c5750f8766fb2 /tools/perf/page_sets
parent9b6f010ec3096dc1a082af74d70694d0545808c3 (diff)
downloadchromium_src-da1f2c3e702923959727a2ae50f440e228590eb9.zip
chromium_src-da1f2c3e702923959727a2ae50f440e228590eb9.tar.gz
chromium_src-da1f2c3e702923959727a2ae50f440e228590eb9.tar.bz2
[Telemetry] Split top_25 to top_25_smooth and top_25_repaint
BUG=418375 Review URL: https://codereview.chromium.org/682263005 Cr-Commit-Position: refs/heads/master@{#303550}
Diffstat (limited to 'tools/perf/page_sets')
-rw-r--r--tools/perf/page_sets/data/top_25_repaint.json32
-rw-r--r--tools/perf/page_sets/data/top_25_repaint_000.wpr.sha11
-rw-r--r--tools/perf/page_sets/top_25_repaint.py86
-rw-r--r--tools/perf/page_sets/top_25_smooth.py151
-rw-r--r--tools/perf/page_sets/top_pages.py (renamed from tools/perf/page_sets/top_25.py)208
5 files changed, 324 insertions, 154 deletions
diff --git a/tools/perf/page_sets/data/top_25_repaint.json b/tools/perf/page_sets/data/top_25_repaint.json
new file mode 100644
index 0000000..0c9258b
--- /dev/null
+++ b/tools/perf/page_sets/data/top_25_repaint.json
@@ -0,0 +1,32 @@
+{
+ "description": "Describes the Web Page Replay archives for a page set. Don't edit by hand! Use record_wpr for updating.",
+ "archives": {
+ "top_25_repaint_000.wpr": [
+ "http://techcrunch.com",
+ "https://www.google.com/#hl=en&q=barack+obama",
+ "http://answers.yahoo.com",
+ "https://www.google.com/calendar/",
+ "https://www.google.com/search?q=cats&tbm=isch",
+ "Docs (1 open document tab)",
+ "https://plus.google.com/110031535020051778989/posts",
+ "http://www.youtube.com",
+ "Blogger",
+ "Wordpress",
+ "http://booking.com",
+ "Weather.com",
+ "Facebook",
+ "LinkedIn",
+ "Wikipedia (1 tab)",
+ "Twitter",
+ "Pinterest",
+ "ESPN",
+ "https://mail.google.com/mail/",
+ "http://games.yahoo.com",
+ "http://news.yahoo.com",
+ "http://www.cnn.com",
+ "http://www.amazon.com",
+ "http://www.ebay.com",
+ "http://sports.yahoo.com/"
+ ]
+ }
+} \ No newline at end of file
diff --git a/tools/perf/page_sets/data/top_25_repaint_000.wpr.sha1 b/tools/perf/page_sets/data/top_25_repaint_000.wpr.sha1
new file mode 100644
index 0000000..74bc057
--- /dev/null
+++ b/tools/perf/page_sets/data/top_25_repaint_000.wpr.sha1
@@ -0,0 +1 @@
+63cbf11264f320550a66235fd80172830c039619 \ No newline at end of file
diff --git a/tools/perf/page_sets/top_25_repaint.py b/tools/perf/page_sets/top_25_repaint.py
new file mode 100644
index 0000000..66a08eb
--- /dev/null
+++ b/tools/perf/page_sets/top_25_repaint.py
@@ -0,0 +1,86 @@
+# Copyright 2014 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.
+from telemetry.page import page as page_module
+from telemetry.page import page_set as page_set_module
+
+from page_sets import top_pages
+
+
+class TopRepaintPage(page_module.Page):
+
+ def __init__(self, url, page_set, name='', credentials=None):
+ super(TopRepaintPage, self).__init__(
+ url=url, page_set=page_set, name=name,
+ credentials_path='data/credentials.json')
+ self.user_agent_type = 'desktop'
+ self.archive_data_file = 'data/top_25_repaint.json'
+ self.credentials = credentials
+
+ def RunRepaint(self, action_runner):
+ action_runner.RepaintContinuously(seconds=5)
+
+
+def _CreatePageClassWithRepaintInteractions(page_cls):
+ class DerivedRepaintPage(page_cls): # pylint: disable=W0232
+
+ def RunRepaint(self, action_runner):
+ action_runner.RepaintContinuously(seconds=5)
+ return DerivedRepaintPage
+
+
+class Top25RepaintPageSet(page_set_module.PageSet):
+
+ """ Pages hand-picked for 2012 CrOS scrolling tuning efforts. """
+
+ def __init__(self):
+ super(Top25RepaintPageSet, self).__init__(
+ user_agent_type='desktop',
+ archive_data_file='data/top_25_repaint.json',
+ bucket=page_set_module.PARTNER_BUCKET)
+
+ top_page_classes = [
+ top_pages.GoogleWebSearchPage,
+ top_pages.GoogleImageSearchPage,
+ top_pages.GmailPage,
+ top_pages.GoogleCalendarPage,
+ top_pages.GoogleDocPage,
+ top_pages.GooglePlusPage,
+ top_pages.YoutubePage,
+ top_pages.BlogspotPage,
+ top_pages.WordpressPage,
+ top_pages.FacebookPage,
+ top_pages.LinkedinPage,
+ top_pages.WikipediaPage,
+ top_pages.TwitterPage,
+ top_pages.PinterestPage,
+ top_pages.ESPNPage,
+ top_pages.WeatherPage,
+ top_pages.YahooGamesPage,
+ ]
+
+ for cl in top_page_classes:
+ self.AddPage(_CreatePageClassWithRepaintInteractions(cl)(self))
+
+ other_urls = [
+ # Why: #1 news worldwide (Alexa global)
+ 'http://news.yahoo.com',
+ # Why: #2 news worldwide
+ 'http://www.cnn.com',
+ # Why: #1 world commerce website by visits; #3 commerce in the US by
+ # time spent
+ 'http://www.amazon.com',
+ # Why: #1 commerce website by time spent by users in US
+ 'http://www.ebay.com',
+ # Why: #1 Alexa recreation
+ 'http://booking.com',
+ # Why: #1 Alexa reference
+ 'http://answers.yahoo.com',
+ # Why: #1 Alexa sports
+ 'http://sports.yahoo.com/',
+ # Why: top tech blog
+ 'http://techcrunch.com'
+ ]
+
+ for url in other_urls:
+ self.AddPage(TopRepaintPage(url, self))
diff --git a/tools/perf/page_sets/top_25_smooth.py b/tools/perf/page_sets/top_25_smooth.py
new file mode 100644
index 0000000..7fc5aad
--- /dev/null
+++ b/tools/perf/page_sets/top_25_smooth.py
@@ -0,0 +1,151 @@
+# Copyright 2014 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.
+from telemetry.page import page as page_module
+from telemetry.page import page_set as page_set_module
+
+from page_sets import top_pages
+
+
+def _IssueMarkerAndScroll(action_runner):
+ interaction = action_runner.BeginGestureInteraction(
+ 'ScrollAction', is_smooth=True)
+ action_runner.ScrollPage()
+ interaction.End()
+
+
+def _CreatePageClassWithSmoothInteractions(page_cls):
+ class DerivedSmoothPage(page_cls): # pylint: disable=W0232
+
+ def RunSmoothness(self, action_runner):
+ _IssueMarkerAndScroll(action_runner)
+ return DerivedSmoothPage
+
+
+class TopSmoothPage(page_module.Page):
+
+ def __init__(self, url, page_set, name='', credentials=None):
+ super(TopSmoothPage, self).__init__(
+ url=url, page_set=page_set, name=name,
+ credentials_path='data/credentials.json')
+ self.user_agent_type = 'desktop'
+ self.credentials = credentials
+
+ def RunSmoothness(self, action_runner):
+ _IssueMarkerAndScroll(action_runner)
+
+
+class GmailSmoothPage(top_pages.GmailPage):
+
+ """ Why: productivity, top google properties """
+
+ def RunSmoothness(self, action_runner):
+ action_runner.ExecuteJavaScript('''
+ gmonkey.load('2.0', function(api) {
+ window.__scrollableElementForTelemetry = api.getScrollableElement();
+ });''')
+ action_runner.WaitForJavaScriptCondition(
+ 'window.__scrollableElementForTelemetry != null')
+ interaction = action_runner.BeginGestureInteraction(
+ 'ScrollAction', is_smooth=True)
+ action_runner.ScrollElement(
+ element_function='window.__scrollableElementForTelemetry')
+ interaction.End()
+
+
+class GoogleCalendarSmoothPage(top_pages.GoogleCalendarPage):
+
+ """ Why: productivity, top google properties """
+
+ def RunSmoothness(self, action_runner):
+ interaction = action_runner.BeginGestureInteraction(
+ 'ScrollAction', is_smooth=True)
+ action_runner.ScrollElement(selector='#scrolltimedeventswk')
+ interaction.End()
+
+
+class GoogleDocSmoothPage(top_pages.GoogleDocPage):
+
+ """ Why: productivity, top google properties; Sample doc in the link """
+
+ def RunSmoothness(self, action_runner):
+ interaction = action_runner.BeginGestureInteraction(
+ 'ScrollAction', is_smooth=True)
+ action_runner.ScrollElement(selector='.kix-appview-editor')
+ interaction.End()
+
+
+class ESPNSmoothPage(top_pages.ESPNPage):
+
+ """ Why: #1 sports """
+
+ def RunSmoothness(self, action_runner):
+ interaction = action_runner.BeginGestureInteraction(
+ 'ScrollAction', is_smooth=True)
+ action_runner.ScrollPage(left_start_ratio=0.1)
+ interaction.End()
+
+
+class Top25SmoothPageSet(page_set_module.PageSet):
+
+ """ Pages hand-picked for 2012 CrOS scrolling tuning efforts. """
+
+ def __init__(self):
+ super(Top25SmoothPageSet, self).__init__(
+ user_agent_type='desktop',
+ archive_data_file='data/top_25.json',
+ bucket=page_set_module.PARTNER_BUCKET)
+
+ self.AddPage(_CreatePageClassWithSmoothInteractions(
+ top_pages.GoogleWebSearchPage)(self))
+ self.AddPage(GmailSmoothPage(self))
+ self.AddPage(GoogleCalendarSmoothPage(self))
+ self.AddPage(_CreatePageClassWithSmoothInteractions(
+ top_pages.GoogleImageSearchPage)(self))
+ self.AddPage(GoogleDocSmoothPage(self))
+ self.AddPage(_CreatePageClassWithSmoothInteractions(
+ top_pages.GooglePlusPage)(self))
+ self.AddPage(_CreatePageClassWithSmoothInteractions(
+ top_pages.YoutubePage)(self))
+ self.AddPage(_CreatePageClassWithSmoothInteractions(
+ top_pages.BlogspotPage)(self))
+ self.AddPage(_CreatePageClassWithSmoothInteractions(
+ top_pages.WordpressPage)(self))
+ self.AddPage(_CreatePageClassWithSmoothInteractions(
+ top_pages.FacebookPage)(self))
+ self.AddPage(_CreatePageClassWithSmoothInteractions(
+ top_pages.LinkedinPage)(self))
+ self.AddPage(_CreatePageClassWithSmoothInteractions(
+ top_pages.WikipediaPage)(self))
+ self.AddPage(_CreatePageClassWithSmoothInteractions(
+ top_pages.TwitterPage)(self))
+ self.AddPage(_CreatePageClassWithSmoothInteractions(
+ top_pages.PinterestPage)(self))
+ self.AddPage(ESPNSmoothPage(self))
+ self.AddPage(_CreatePageClassWithSmoothInteractions(
+ top_pages.WeatherPage)(self))
+ self.AddPage(_CreatePageClassWithSmoothInteractions(
+ top_pages.YahooGamesPage)(self))
+
+ other_urls = [
+ # Why: #1 news worldwide (Alexa global)
+ 'http://news.yahoo.com',
+ # Why: #2 news worldwide
+ 'http://www.cnn.com',
+ # Why: #1 world commerce website by visits; #3 commerce in the US by
+ # time spent
+ 'http://www.amazon.com',
+ # Why: #1 commerce website by time spent by users in US
+ 'http://www.ebay.com',
+ # Why: #1 Alexa recreation
+ 'http://booking.com',
+ # Why: #1 Alexa reference
+ 'http://answers.yahoo.com',
+ # Why: #1 Alexa sports
+ 'http://sports.yahoo.com/',
+ # Why: top tech blog
+ 'http://techcrunch.com'
+ ]
+
+ for url in other_urls:
+ self.AddPage(TopSmoothPage(url, self))
diff --git a/tools/perf/page_sets/top_25.py b/tools/perf/page_sets/top_pages.py
index 268ef63..8856e41 100644
--- a/tools/perf/page_sets/top_25.py
+++ b/tools/perf/page_sets/top_pages.py
@@ -2,39 +2,20 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from telemetry.page import page as page_module
-from telemetry.page import page_set as page_set_module
-def _GetCurrentLocation(action_runner):
- return action_runner.EvaluateJavaScript('document.location.href')
-
-
-def _WaitForLocationChange(action_runner, old_href):
- action_runner.WaitForJavaScriptCondition(
- 'document.location.href != "%s"' % old_href)
-
-
-class Top25Page(page_module.Page):
+class TopPages(page_module.Page):
def __init__(self, url, page_set, name='', credentials=None):
- super(Top25Page, self).__init__(
+ super(TopPages, self).__init__(
url=url, page_set=page_set, name=name,
credentials_path='data/credentials.json')
self.user_agent_type = 'desktop'
self.archive_data_file = 'data/top_25.json'
self.credentials = credentials
- def RunSmoothness(self, action_runner):
- interaction = action_runner.BeginGestureInteraction(
- 'ScrollAction', is_smooth=True)
- action_runner.ScrollPage()
- interaction.End()
-
- def RunRepaint(self, action_runner):
- action_runner.RepaintContinuously(seconds=5)
-
-class GoogleWebSearchPage(Top25Page):
+class GoogleWebSearchPage(TopPages):
""" Why: top google property; a google tab is often open """
@@ -48,7 +29,17 @@ class GoogleWebSearchPage(Top25Page):
action_runner.WaitForElement(text='Next')
-class GmailPage(Top25Page):
+class GoogleImageSearchPage(TopPages):
+
+ """ Why: tough image case; top google properties """
+
+ def __init__(self, page_set):
+ super(GoogleImageSearchPage, self).__init__(
+ 'https://www.google.com/search?q=cats&tbm=isch',
+ page_set=page_set, credentials='google')
+
+
+class GmailPage(TopPages):
""" Why: productivity, top google properties """
@@ -64,21 +55,8 @@ class GmailPage(Top25Page):
'window.gmonkey !== undefined &&'
'document.getElementById("gb") !== null')
- def RunSmoothness(self, action_runner):
- action_runner.ExecuteJavaScript('''
- gmonkey.load('2.0', function(api) {
- window.__scrollableElementForTelemetry = api.getScrollableElement();
- });''')
- action_runner.WaitForJavaScriptCondition(
- 'window.__scrollableElementForTelemetry != null')
- interaction = action_runner.BeginGestureInteraction(
- 'ScrollAction', is_smooth=True)
- action_runner.ScrollElement(
- element_function='window.__scrollableElementForTelemetry')
- interaction.End()
-
-class GoogleCalendarPage(Top25Page):
+class GoogleCalendarPage(TopPages):
""" Why: productivity, top google properties """
@@ -101,14 +79,8 @@ class GoogleCalendarPage(Top25Page):
})();''')
action_runner.Wait(1)
- def RunSmoothness(self, action_runner):
- interaction = action_runner.BeginGestureInteraction(
- 'ScrollAction', is_smooth=True)
- action_runner.ScrollElement(selector='#scrolltimedeventswk')
- interaction.End()
-
-class GoogleDocPage(Top25Page):
+class GoogleDocPage(TopPages):
""" Why: productivity, top google properties; Sample doc in the link """
@@ -126,14 +98,8 @@ class GoogleDocPage(Top25Page):
action_runner.WaitForJavaScriptCondition(
'document.getElementsByClassName("kix-appview-editor").length')
- def RunSmoothness(self, action_runner):
- interaction = action_runner.BeginGestureInteraction(
- 'ScrollAction', is_smooth=True)
- action_runner.ScrollElement(selector='.kix-appview-editor')
- interaction.End()
-
-class GooglePlusPage(Top25Page):
+class GooglePlusPage(TopPages):
""" Why: social; top google property; Public profile; infinite scrolls """
@@ -147,14 +113,8 @@ class GooglePlusPage(Top25Page):
action_runner.NavigateToPage(self)
action_runner.WaitForElement(text='Home')
- def RunSmoothness(self, action_runner):
- interaction = action_runner.BeginGestureInteraction(
- 'ScrollAction', is_smooth=True)
- action_runner.ScrollPage()
- interaction.End()
-
-class YoutubePage(Top25Page):
+class YoutubePage(TopPages):
""" Why: #3 (Alexa global) """
@@ -168,7 +128,7 @@ class YoutubePage(Top25Page):
action_runner.Wait(2)
-class BlogspotPage(Top25Page):
+class BlogspotPage(TopPages):
""" Why: #11 (Alexa global), google property; some blogger layouts have
infinite scroll but more interesting """
@@ -184,7 +144,7 @@ class BlogspotPage(Top25Page):
action_runner.WaitForElement(text='accessibility')
-class WordpressPage(Top25Page):
+class WordpressPage(TopPages):
""" Why: #18 (Alexa global), Picked an interesting post """
@@ -202,7 +162,7 @@ class WordpressPage(Top25Page):
'a[href="http://en.blog.wordpress.com/2012/08/30/new-themes-able-and-sight/"]')
-class FacebookPage(Top25Page):
+class FacebookPage(TopPages):
""" Why: top social,Public profile """
@@ -216,14 +176,28 @@ class FacebookPage(Top25Page):
action_runner.NavigateToPage(self)
action_runner.WaitForElement(text='About')
- def RunSmoothness(self, action_runner):
- interaction = action_runner.BeginGestureInteraction(
- 'ScrollAction', is_smooth=True)
- action_runner.ScrollPage()
- interaction.End()
+class LinkedinPage(TopPages):
+
+ """ Why: #12 (Alexa global), Public profile. """
-class TwitterPage(Top25Page):
+ def __init__(self, page_set):
+ super(LinkedinPage, self).__init__(
+ url='http://www.linkedin.com/in/linustorvalds', page_set=page_set,
+ name='LinkedIn')
+
+
+class WikipediaPage(TopPages):
+
+ """ Why: #6 (Alexa) most visited worldwide,Picked an interesting page. """
+
+ def __init__(self, page_set):
+ super(WikipediaPage, self).__init__(
+ url='http://en.wikipedia.org/wiki/Wikipedia', page_set=page_set,
+ name='Wikipedia (1 tab)')
+
+
+class TwitterPage(TopPages):
""" Why: #8 (Alexa global),Picked an interesting page """
@@ -237,14 +211,8 @@ class TwitterPage(Top25Page):
action_runner.NavigateToPage(self)
action_runner.Wait(2)
- def RunSmoothness(self, action_runner):
- interaction = action_runner.BeginGestureInteraction(
- 'ScrollAction', is_smooth=True)
- action_runner.ScrollPage()
- interaction.End()
-
-class PinterestPage(Top25Page):
+class PinterestPage(TopPages):
""" Why: #37 (Alexa global) """
@@ -254,14 +222,8 @@ class PinterestPage(Top25Page):
page_set=page_set,
name='Pinterest')
- def RunSmoothness(self, action_runner):
- interaction = action_runner.BeginGestureInteraction(
- 'ScrollAction', is_smooth=True)
- action_runner.ScrollPage()
- interaction.End()
-
-class ESPNPage(Top25Page):
+class ESPNPage(TopPages):
""" Why: #1 sports """
@@ -271,14 +233,19 @@ class ESPNPage(Top25Page):
page_set=page_set,
name='ESPN')
- def RunSmoothness(self, action_runner):
- interaction = action_runner.BeginGestureInteraction(
- 'ScrollAction', is_smooth=True)
- action_runner.ScrollPage(left_start_ratio=0.1)
- interaction.End()
+class WeatherPage(TopPages):
-class YahooGamesPage(Top25Page):
+ """ Why: #7 (Alexa news); #27 total time spent, picked interesting page. """
+
+ def __init__(self, page_set):
+ super(WeatherPage, self).__init__(
+ url='http://www.weather.com/weather/right-now/Mountain+View+CA+94043',
+ page_set=page_set,
+ name='Weather.com')
+
+
+class YahooGamesPage(TopPages):
""" Why: #1 games according to Alexa (with actual games in it) """
@@ -290,70 +257,3 @@ class YahooGamesPage(Top25Page):
def RunNavigateSteps(self, action_runner):
action_runner.NavigateToPage(self)
action_runner.Wait(2)
-
-
-class Top25PageSet(page_set_module.PageSet):
-
- """ Pages hand-picked for 2012 CrOS scrolling tuning efforts. """
-
- def __init__(self):
- super(Top25PageSet, self).__init__(
- user_agent_type='desktop',
- archive_data_file='data/top_25.json',
- bucket=page_set_module.PARTNER_BUCKET)
-
- self.AddPage(GoogleWebSearchPage(self))
- self.AddPage(GmailPage(self))
- self.AddPage(GoogleCalendarPage(self))
- # Why: tough image case; top google properties
- self.AddPage(
- Top25Page('https://www.google.com/search?q=cats&tbm=isch',
- page_set=self, credentials='google'))
- self.AddPage(GoogleDocPage(self))
- self.AddPage(GooglePlusPage(self))
- self.AddPage(YoutubePage(self))
- self.AddPage(BlogspotPage(self))
- self.AddPage(WordpressPage(self))
- self.AddPage(FacebookPage(self))
- # Why: #12 (Alexa global), Public profile.
- self.AddPage(
- Top25Page(
- 'http://www.linkedin.com/in/linustorvalds', page_set=self,
- name='LinkedIn'))
- # Why: #6 (Alexa) most visited worldwide,Picked an interesting page
- self.AddPage(
- Top25Page(
- 'http://en.wikipedia.org/wiki/Wikipedia', page_set=self,
- name='Wikipedia (1 tab)'))
- self.AddPage(TwitterPage(self))
- self.AddPage(PinterestPage(self))
- self.AddPage(ESPNPage(self))
- # Why: #7 (Alexa news); #27 total time spent, picked interesting page.
- self.AddPage(Top25Page(
- url='http://www.weather.com/weather/right-now/Mountain+View+CA+94043',
- page_set=self,
- name='Weather.com'))
- self.AddPage(YahooGamesPage(self))
-
- other_urls = [
- # Why: #1 news worldwide (Alexa global)
- 'http://news.yahoo.com',
- # Why: #2 news worldwide
- 'http://www.cnn.com',
- # Why: #1 world commerce website by visits; #3 commerce in the US by
- # time spent
- 'http://www.amazon.com',
- # Why: #1 commerce website by time spent by users in US
- 'http://www.ebay.com',
- # Why: #1 Alexa recreation
- 'http://booking.com',
- # Why: #1 Alexa reference
- 'http://answers.yahoo.com',
- # Why: #1 Alexa sports
- 'http://sports.yahoo.com/',
- # Why: top tech blog
- 'http://techcrunch.com'
- ]
-
- for url in other_urls:
- self.AddPage(Top25Page(url, self))