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

Side by Side Diff: tools/perf/benchmarks/blink_perf.py

Issue 23455049: [telemetry] Make single-benchmark measurements protected and undiscoverable. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update discover unit tests. Created 7 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « tools/perf/benchmarks/blink_perf.js ('k') | tools/perf/benchmarks/canvasmark.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import os 5 import os
6 import sys
6 7
7 from telemetry import test 8 from telemetry import test
8 from telemetry.core import util 9 from telemetry.core import util
10 from telemetry.page import page_measurement
11 from telemetry.page import page_set
9 12
10 from measurements import blink_perf 13
14 def _CreatePageSetFromPath(path):
15 assert os.path.exists(path)
16
17 page_set_dict = {'pages': []}
18
19 def _AddPage(path):
20 if not path.endswith('.html'):
21 return
22 if '../' in open(path, 'r').read():
23 # If the page looks like it references its parent dir, include it.
24 page_set_dict['serving_dirs'] = [os.path.dirname(os.path.dirname(path))]
25 page_set_dict['pages'].append({'url':
26 'file://' + path.replace('\\', '/')})
27
28 def _AddDir(dir_path, skipped):
29 for candidate_path in os.listdir(dir_path):
30 if candidate_path == 'resources':
31 continue
32 candidate_path = os.path.join(dir_path, candidate_path)
33 if candidate_path.startswith(tuple([os.path.join(path, s)
34 for s in skipped])):
35 continue
36 if os.path.isdir(candidate_path):
37 _AddDir(candidate_path, skipped)
38 else:
39 _AddPage(candidate_path)
40
41 if os.path.isdir(path):
42 skipped = []
43 skipped_file = os.path.join(path, 'Skipped')
44 if os.path.exists(skipped_file):
45 for line in open(skipped_file, 'r').readlines():
46 line = line.strip()
47 if line and not line.startswith('#'):
48 skipped.append(line.replace('/', os.sep))
49 _AddDir(path, skipped)
50 else:
51 _AddPage(path)
52 return page_set.PageSet.FromDict(page_set_dict, os.getcwd() + os.sep)
53
54
55 class _BlinkPerfMeasurement(page_measurement.PageMeasurement):
56 """Tuns a blink performance test and reports the results."""
57 def __init__(self):
58 super(_BlinkPerfMeasurement, self).__init__('')
59 with open(os.path.join(os.path.dirname(__file__),
60 'blink_perf.js'), 'r') as f:
61 self._blink_perf_js = f.read()
62
63 def CreatePageSet(self, args, options):
64 if len(args) < 2:
65 print 'Must specify a file or directory to run.'
66 sys.exit(1)
67
68 page_set_arg = args[1]
69
70 if not os.path.exists(page_set_arg):
71 print '%s does not exist.' % page_set_arg
72 sys.exit(1)
73
74 return _CreatePageSetFromPath(page_set_arg)
75
76 @property
77 def results_are_the_same_on_every_page(self):
78 return False
79
80 def WillNavigateToPage(self, page, tab):
81 page.script_to_evaluate_on_commit = self._blink_perf_js
82
83 def CustomizeBrowserOptions(self, options):
84 options.AppendExtraBrowserArgs([
85 '--js-flags=--expose_gc',
86 '--enable-experimental-web-platform-features'
87 ])
88
89 def MeasurePage(self, page, tab, results):
90 tab.WaitForJavaScriptExpression('testRunner.isDone', 600)
91
92 log = tab.EvaluateJavaScript('document.getElementById("log").innerHTML')
93
94 for line in log.splitlines():
95 if not line.startswith('values '):
96 continue
97 parts = line.split()
98 values = [float(v.replace(',', '')) for v in parts[1:-1]]
99 units = parts[-1]
100 metric = page.display_name.split('.')[0].replace('/', '_')
101 results.Add(metric, units, values)
102 break
103
104 print log
11 105
12 106
13 class BlinkPerfAll(test.Test): 107 class BlinkPerfAll(test.Test):
14 tag = 'all' 108 tag = 'all'
15 test = blink_perf.BlinkPerf 109 test = _BlinkPerfMeasurement
16 110
17 def CreatePageSet(self, options): 111 def CreatePageSet(self, options):
18 path = os.path.join( 112 path = os.path.join(
19 util.GetChromiumSrcDir(), 'third_party', 'WebKit', 'PerformanceTests') 113 util.GetChromiumSrcDir(), 'third_party', 'WebKit', 'PerformanceTests')
20 return blink_perf.CreatePageSetFromPath(path) 114 return _CreatePageSetFromPath(path)
21 115
22 class BlinkPerfAnimation(test.Test): 116 class BlinkPerfAnimation(test.Test):
23 tag = 'animation' 117 tag = 'animation'
24 test = blink_perf.BlinkPerf 118 test = _BlinkPerfMeasurement
25 119
26 def CreatePageSet(self, options): 120 def CreatePageSet(self, options):
27 path = os.path.join(util.GetChromiumSrcDir(), 121 path = os.path.join(util.GetChromiumSrcDir(),
28 'third_party', 'WebKit', 'PerformanceTests', 'Animation') 122 'third_party', 'WebKit', 'PerformanceTests', 'Animation')
29 return blink_perf.CreatePageSetFromPath(path) 123 return _CreatePageSetFromPath(path)
30 124
31 class BlinkPerfWebAnimations(test.Test): 125 class BlinkPerfWebAnimations(test.Test):
32 tag = 'web_animations' 126 tag = 'web_animations'
33 test = blink_perf.BlinkPerf 127 test = _BlinkPerfMeasurement
34 enabled = False 128 enabled = False
35 129
36 def CreatePageSet(self, options): 130 def CreatePageSet(self, options):
37 path = os.path.join(util.GetChromiumSrcDir(), 131 path = os.path.join(util.GetChromiumSrcDir(),
38 'third_party', 'WebKit', 'PerformanceTests', 'Animation') 132 'third_party', 'WebKit', 'PerformanceTests', 'Animation')
39 return blink_perf.CreatePageSetFromPath(path) 133 return _CreatePageSetFromPath(path)
40 134
41 def CustomizeBrowserOptions(self, options): 135 def CustomizeBrowserOptions(self, options):
42 options.AppendExtraBrowserArgs('--enable-web-animations-css') 136 options.AppendExtraBrowserArgs('--enable-web-animations-css')
OLDNEW
« no previous file with comments | « tools/perf/benchmarks/blink_perf.js ('k') | tools/perf/benchmarks/canvasmark.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698