- add sources.
[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 CustomizeBrowserOptions(self, options):
18     options.AppendExtraBrowserArgs('--disable-gpu-vsync')
19
20   def MeasurePage(self, _, tab, results):
21     tab.WaitForJavaScriptExpression(
22         '!document.getElementById("start-performance-tests").disabled', 60)
23
24     tab.ExecuteJavaScript("""
25         window.__results = {};
26         window.console.log = function(str) {
27             if (!str) return;
28             var key_val = str.split(': ');
29             if (!key_val.length == 2) return;
30             __results[key_val[0]] = key_val[1];
31         };
32         document.getElementById('start-performance-tests').click();
33     """)
34
35     num_results = 0
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))
44
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()])
53
54
55 class Spaceport(test.Test):
56   """spaceport.io's PerfMarks benchmark."""
57   test = _SpaceportMeasurement
58
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'}]},
64         spaceport_dir)