Mojo C++ bindings: better log message for serialization warnings.
[chromium-blink-merge.git] / tools / perf / benchmarks / scirra.py
blob4b7d05a90464dcef82f2784f801e4ea67e45eaff
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.
5 """Scirra WebGL and Canvas2D rendering benchmark suite.
7 The Scirra WebGL performance test measures the number of 2D triangles
8 represented onscreen when the animation reaches the 30 FPS threshold.
9 """
11 import os
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
19 class _ScirraMeasurement(page_test.PageTest):
21 def WillNavigateToPage(self, page, tab):
22 page.script_to_evaluate_on_commit = 'window.sprites = 0;'
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'
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;
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))
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