| 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 import collections | 4 import collections | 
| 5 import json | 5 import json | 
| 6 import os | 6 import os | 
| 7 | 7 | 
| 8 from telemetry import test | 8 from telemetry import test | 
| 9 from telemetry.core import util | 9 from telemetry.core import util | 
| 10 from telemetry.page import page_measurement | 10 from telemetry.page import page_measurement | 
| 11 from telemetry.page import page_set | 11 from telemetry.page import page_set | 
| 12 | 12 | 
| 13 | 13 | 
| 14 class SunspiderMeasurement(page_measurement.PageMeasurement): | 14 class _SunspiderMeasurement(page_measurement.PageMeasurement): | 
| 15   def MeasurePage(self, _, tab, results): | 15   def MeasurePage(self, _, tab, results): | 
| 16     tab.WaitForJavaScriptExpression( | 16     tab.WaitForJavaScriptExpression( | 
| 17         'window.location.pathname.indexOf("results.html") >= 0' | 17         'window.location.pathname.indexOf("results.html") >= 0' | 
| 18         '&& typeof(output) != "undefined"', 300) | 18         '&& typeof(output) != "undefined"', 300) | 
| 19 | 19 | 
| 20     js_get_results = 'JSON.stringify(output);' | 20     js_get_results = 'JSON.stringify(output);' | 
| 21     js_results = json.loads(tab.EvaluateJavaScript(js_get_results)) | 21     js_results = json.loads(tab.EvaluateJavaScript(js_get_results)) | 
| 22     r = collections.defaultdict(list) | 22     r = collections.defaultdict(list) | 
| 23     totals = [] | 23     totals = [] | 
| 24     # js_results is: [{'foo': v1, 'bar': v2}, | 24     # js_results is: [{'foo': v1, 'bar': v2}, | 
| 25     #                 {'foo': v3, 'bar': v4}, | 25     #                 {'foo': v3, 'bar': v4}, | 
| 26     #                 ...] | 26     #                 ...] | 
| 27     for result in js_results: | 27     for result in js_results: | 
| 28       total = 0 | 28       total = 0 | 
| 29       for key, value in result.iteritems(): | 29       for key, value in result.iteritems(): | 
| 30         r[key].append(value) | 30         r[key].append(value) | 
| 31         total += value | 31         total += value | 
| 32       totals.append(total) | 32       totals.append(total) | 
| 33     for key, values in r.iteritems(): | 33     for key, values in r.iteritems(): | 
| 34       results.Add(key, 'ms', values, data_type='unimportant') | 34       results.Add(key, 'ms', values, data_type='unimportant') | 
| 35     results.Add('Total', 'ms', totals) | 35     results.Add('Total', 'ms', totals) | 
| 36 | 36 | 
| 37 | 37 | 
| 38 class Sunspider(test.Test): | 38 class Sunspider(test.Test): | 
| 39   """Apple's SunSpider JavaScript benchmark.""" | 39   """Apple's SunSpider JavaScript benchmark.""" | 
| 40   test = SunspiderMeasurement | 40   test = _SunspiderMeasurement | 
| 41 | 41 | 
| 42   def CreatePageSet(self, options): | 42   def CreatePageSet(self, options): | 
| 43     sunspider_dir = os.path.join(util.GetChromiumSrcDir(), | 43     sunspider_dir = os.path.join(util.GetChromiumSrcDir(), | 
| 44                                  'chrome', 'test', 'data', 'sunspider') | 44                                  'chrome', 'test', 'data', 'sunspider') | 
| 45     return page_set.PageSet.FromDict( | 45     return page_set.PageSet.FromDict( | 
| 46         { | 46         { | 
| 47           'serving_dirs': ['.'], | 47           'serving_dirs': ['.'], | 
| 48           'pages': [{ 'url': 'file://sunspider-1.0/driver.html' }], | 48           'pages': [{ 'url': 'file://sunspider-1.0/driver.html' }], | 
| 49         }, | 49         }, | 
| 50         sunspider_dir) | 50         sunspider_dir) | 
| OLD | NEW | 
|---|