- add sources.
[platform/framework/web/crosswalk.git] / src / tools / perf / benchmarks / dromaeo.py
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
3 # found in the LICENSE file.
4
5 import os
6
7 from telemetry import test
8 from telemetry.core import util
9 from telemetry.page import page_measurement
10 from telemetry.page import page_set
11
12
13 class _DromaeoMeasurement(page_measurement.PageMeasurement):
14   def MeasurePage(self, page, tab, results):
15     tab.WaitForJavaScriptExpression(
16         'window.document.cookie.indexOf("__done=1") >= 0', 600)
17
18     js_get_results = 'JSON.stringify(window.automation.GetResults())'
19     print js_get_results
20     score = eval(tab.EvaluateJavaScript(js_get_results))
21
22     def Escape(k):
23       chars = [' ', '-', '/', '(', ')', '*']
24       for c in chars:
25         k = k.replace(c, '_')
26       return k
27
28     suffix = page.url[page.url.index('?') + 1 : page.url.index('&')]
29     for k, v in score.iteritems():
30       data_type = 'unimportant'
31       if k == suffix:
32         data_type = 'default'
33       results.Add(Escape(k), 'runs/s', v, data_type=data_type)
34
35
36 class _DromaeoBenchmark(test.Test):
37   """A base class for Dromaeo benchmarks."""
38   test = _DromaeoMeasurement
39
40   def CreatePageSet(self, options):
41     """Makes a PageSet for Dromaeo benchmarks."""
42     # Subclasses are expected to define a class member called query_param.
43     if not hasattr(self, 'query_param'):
44       raise NotImplementedError('query_param not in Dromaeo benchmark.')
45     url = 'file://index.html?%s&automated' % self.query_param
46     # The docstring of benchmark classes may also be used as a description
47     # when 'run_benchmarks list' is run.
48     description = self.__doc__ or 'Dromaeo JavaScript Benchmark'
49     page_set_dict = {
50         'description': description,
51         'pages': [{'url': url}],
52     }
53     dromaeo_dir = os.path.join(util.GetChromiumSrcDir(),
54                                'chrome', 'test', 'data', 'dromaeo')
55     return page_set.PageSet.FromDict(page_set_dict, dromaeo_dir)
56
57
58 class DromaeoDomCoreAttr(_DromaeoBenchmark):
59   """Dromaeo DOMCore attr JavaScript benchmark."""
60   tag = 'domcoreattr'
61   query_param = 'dom-attr'
62
63
64 class DromaeoDomCoreModify(_DromaeoBenchmark):
65   """Dromaeo DOMCore modify JavaScript benchmark."""
66   tag = 'domcoremodify'
67   query_param = 'dom-modify'
68
69
70 class DromaeoDomCoreQuery(_DromaeoBenchmark):
71   """Dromaeo DOMCore query JavaScript benchmark."""
72   tag = 'domcorequery'
73   query_param = 'dom-query'
74
75
76 class DromaeoDomCoreTraverse(_DromaeoBenchmark):
77   """Dromaeo DOMCore traverse JavaScript benchmark."""
78   tag = 'domcoretraverse'
79   query_param = 'dom-traverse'
80
81
82 class DromaeoJslibAttrJquery(_DromaeoBenchmark):
83   """Dromaeo JSLib attr jquery JavaScript benchmark"""
84   tag = 'jslibattrjquery'
85   query_param = 'jslib-attr-jquery'
86
87
88 class DromaeoJslibAttrPrototype(_DromaeoBenchmark):
89   """Dromaeo JSLib attr prototype JavaScript benchmark"""
90   tag = 'jslibattrprototype'
91   query_param = 'jslib-attr-prototype'
92
93
94 class DromaeoJslibEventJquery(_DromaeoBenchmark):
95   """Dromaeo JSLib event jquery JavaScript benchmark"""
96   tag = 'jslibeventjquery'
97   query_param = 'jslib-event-jquery'
98
99
100 class DromaeoJslibEventPrototype(_DromaeoBenchmark):
101   """Dromaeo JSLib event prototype JavaScript benchmark"""
102   tag = 'jslibeventprototype'
103   query_param = 'jslib-event-prototype'
104
105
106 class DromaeoJslibModifyJquery(_DromaeoBenchmark):
107   """Dromaeo JSLib modify jquery JavaScript benchmark"""
108   tag = 'jslibmodifyjquery'
109   query_param = 'jslib-modify-jquery'
110
111
112 class DromaeoJslibModifyPrototype(_DromaeoBenchmark):
113   """Dromaeo JSLib modify prototype JavaScript benchmark"""
114   tag = 'jslibmodifyprototype'
115   query_param = 'jslib-modify-prototype'
116
117
118 class DromaeoJslibStyleJquery(_DromaeoBenchmark):
119   """Dromaeo JSLib style jquery JavaScript benchmark"""
120   tag = 'jslibstylejquery'
121   query_param = 'jslib-style-jquery'
122
123
124 class DromaeoJslibStylePrototype(_DromaeoBenchmark):
125   """Dromaeo JSLib style prototype JavaScript benchmark"""
126   tag = 'jslibstyleprototype'
127   query_param = 'jslib-style-prototype'
128
129
130 class DromaeoJslibTraverseJquery(_DromaeoBenchmark):
131   """Dromaeo JSLib traverse jquery JavaScript benchmark"""
132   tag = 'jslibtraversejquery'
133   query_param = 'jslib-traverse-jquery'
134
135
136 class DromaeoJslibTraversePrototype(_DromaeoBenchmark):
137   """Dromaeo JSLib traverse prototype JavaScript benchmark"""
138   tag = 'jslibtraverseprototype'
139   query_param = 'jslib-traverse-prototype'
140