Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / tools / perf / benchmarks / scirra.py
1 # Copyright 2013 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 """Scirra WebGL and Canvas2D rendering benchmark suite.
6
7 The Scirra WebGL performance test measures the number of 2D triangles
8 represented onscreen when the animation reaches the 30 FPS threshold.
9 """
10
11 import os
12
13 from telemetry import benchmark
14 from telemetry.page import page_set
15 from telemetry.page import page_test
16 from telemetry.value import scalar
17
18
19 class _ScirraMeasurement(page_test.PageTest):
20
21   def WillNavigateToPage(self, page, tab):
22     page.script_to_evaluate_on_commit = 'window.sprites = 0;'
23
24   def ValidateAndMeasurePage(self, _, tab, results):
25     object_count = '$objectcount$'
26     fps = '$fps$'
27     tickcount = '$tickcount$'
28     # For http://www.scirra.com/labs/renderperf3/, JavaScript generated by
29     # Construct 2 has different variables for Objects, fps and tickcount.
30     if 'renderperf3' in tab.url:
31       object_count = '$d'
32       fps = 'Rb'
33       tickcount = 'Ff'
34
35     # Updates object count variable, when the FPS reaches 30 threshold and
36     # tickcounts to reach value greater than 500(just to stablize frames).
37     js_is_done = """
38         var IsTestDone = function() {
39           if (window.cr_getC2Runtime().%(tickcount)s > 500 &&
40               window.cr_getC2Runtime().%(fps)s == 30) {
41             window.sprites = window.cr_getC2Runtime().%(object_count)s;
42             return true;
43           } else {
44             return false;
45           }
46         };
47         IsTestDone();
48         """ % {'tickcount': tickcount, 'fps': fps, 'object_count': object_count}
49     tab.WaitForJavaScriptExpression(js_is_done, 300)
50     total = int(tab.EvaluateJavaScript('window.sprites'))
51     results.AddValue(scalar.ScalarValue(
52       results.current_page, 'Count', 'count', total))
53
54 @benchmark.Disabled
55 class ScirraBenchmark(benchmark.Benchmark):
56   """WebGL and Canvas2D rendering benchmark suite."""
57   test = _ScirraMeasurement
58   def CreatePageSet(self, options):
59     ps = page_set.PageSet(
60         archive_data_file='../page_sets/data/scirra.json',
61         make_javascript_deterministic=False,
62         file_path=os.path.abspath(__file__))
63     for url in ('http://www.scirra.com/labs/renderperf3/',
64                 'http://www.scirra.com/demos/c2/renderperfgl/',
65                 'http://www.scirra.com/demos/c2/renderperf2d/'):
66       ps.AddPageWithDefaultRunNavigate(url)
67     return ps
68
69
70