1 # Copyright (c) 2012 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.
5 """Runs spaceport.io's PerfMarks benchmark."""
10 from telemetry import test
11 from telemetry.core import util
12 from telemetry.page import page_measurement
13 from telemetry.page import page_set
16 class _SpaceportMeasurement(page_measurement.PageMeasurement):
17 def CustomizeBrowserOptions(self, options):
18 options.AppendExtraBrowserArgs('--disable-gpu-vsync')
20 def MeasurePage(self, _, tab, results):
21 tab.WaitForJavaScriptExpression(
22 '!document.getElementById("start-performance-tests").disabled', 60)
24 tab.ExecuteJavaScript("""
25 window.__results = {};
26 window.console.log = function(str) {
28 var key_val = str.split(': ');
29 if (!key_val.length == 2) return;
30 __results[key_val[0]] = key_val[1];
32 document.getElementById('start-performance-tests').click();
36 num_tests_in_spaceport = 24
37 while num_results < num_tests_in_spaceport:
38 tab.WaitForJavaScriptExpression(
39 'Object.keys(window.__results).length > %d' % num_results, 180)
40 num_results = tab.EvaluateJavaScript(
41 'Object.keys(window.__results).length')
42 logging.info('Completed test %d of %d' %
43 (num_results, num_tests_in_spaceport))
45 result_dict = eval(tab.EvaluateJavaScript(
46 'JSON.stringify(window.__results)'))
47 for key in result_dict:
48 chart, trace = key.split('.', 1)
49 results.Add(trace, 'objects (bigger is better)', float(result_dict[key]),
50 chart_name=chart, data_type='unimportant')
51 results.Add('Score', 'objects (bigger is better)',
52 [float(x) for x in result_dict.values()])
55 class Spaceport(test.Test):
56 """spaceport.io's PerfMarks benchmark."""
57 test = _SpaceportMeasurement
59 def CreatePageSet(self, options):
60 spaceport_dir = os.path.join(util.GetChromiumSrcDir(), 'chrome', 'test',
61 'data', 'third_party', 'spaceport')
62 return page_set.PageSet.FromDict(
63 {'pages': [{'url': 'file://index.html'}]},