• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 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.
4
5"""Runs spaceport.io's PerfMarks benchmark."""
6
7import logging
8import os
9
10from telemetry import test
11from telemetry.core import util
12from telemetry.page import page_measurement
13from telemetry.page import page_set
14
15
16class _SpaceportMeasurement(page_measurement.PageMeasurement):
17  def __init__(self):
18    super(_SpaceportMeasurement, self).__init__()
19
20  def CustomizeBrowserOptions(self, options):
21    options.AppendExtraBrowserArgs('--disable-gpu-vsync')
22
23  def MeasurePage(self, page, tab, results):
24    tab.WaitForJavaScriptExpression(
25        '!document.getElementById("start-performance-tests").disabled', 60)
26
27    tab.ExecuteJavaScript("""
28        window.__results = {};
29        window.console.log = function(str) {
30            if (!str) return;
31            var key_val = str.split(': ');
32            if (!key_val.length == 2) return;
33            __results[key_val[0]] = key_val[1];
34        };
35        document.getElementById('start-performance-tests').click();
36    """)
37
38    num_results = 0
39    num_tests_in_spaceport = 24
40    while num_results < num_tests_in_spaceport:
41      tab.WaitForJavaScriptExpression(
42          'Object.keys(window.__results).length > %d' % num_results, 180)
43      num_results = tab.EvaluateJavaScript(
44          'Object.keys(window.__results).length')
45      logging.info('Completed test %d of %d' %
46                   (num_results, num_tests_in_spaceport))
47
48    result_dict = eval(tab.EvaluateJavaScript(
49        'JSON.stringify(window.__results)'))
50    for key in result_dict:
51      chart, trace = key.split('.', 1)
52      results.Add(trace, 'objects (bigger is better)', float(result_dict[key]),
53                  chart_name=chart, data_type='unimportant')
54    results.Add('Score', 'objects (bigger is better)',
55                [float(x) for x in result_dict.values()])
56
57
58# crbug.com/166703: This test frequently times out on Windows.
59@test.Disabled('mac', 'win')
60class Spaceport(test.Test):
61  """spaceport.io's PerfMarks benchmark."""
62  test = _SpaceportMeasurement
63
64  def CreatePageSet(self, options):
65    spaceport_dir = os.path.join(util.GetChromiumSrcDir(), 'chrome', 'test',
66        'data', 'third_party', 'spaceport')
67    ps = page_set.PageSet(file_path=spaceport_dir)
68    ps.AddPageWithDefaultRunNavigate('file://index.html')
69    return ps
70