Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / tools / perf / benchmarks / spaceport.py
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.
4
5 """Runs spaceport.io's PerfMarks benchmark."""
6
7 import logging
8 import os
9
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
14
15
16 class _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')
60 class 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