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