Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / tools / perf / benchmarks / kraken.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 Mozilla's Kraken JavaScript benchmark."""
6
7 import os
8
9 from metrics import power
10 from telemetry import test
11 from telemetry.page import page_measurement
12 from telemetry.page import page_set
13
14
15 def _Mean(l):
16   return float(sum(l)) / len(l) if len(l) > 0 else 0.0
17
18
19 class _KrakenMeasurement(page_measurement.PageMeasurement):
20   def __init__(self):
21     super(_KrakenMeasurement, self).__init__()
22     self._power_metric = power.PowerMetric()
23
24   def CustomizeBrowserOptions(self, options):
25     power.PowerMetric.CustomizeBrowserOptions(options)
26
27   def DidNavigateToPage(self, page, tab):
28     self._power_metric.Start(page, tab)
29
30   def MeasurePage(self, page, tab, results):
31     tab.WaitForDocumentReadyStateToBeComplete()
32     tab.WaitForJavaScriptExpression(
33         'document.title.indexOf("Results") != -1', 500)
34
35     self._power_metric.Stop(page, tab)
36     self._power_metric.AddResults(tab, results)
37
38     js_get_results = """
39 var formElement = document.getElementsByTagName("input")[0];
40 decodeURIComponent(formElement.value.split("?")[1]);
41 """
42     result_dict = eval(tab.EvaluateJavaScript(js_get_results))
43     total = 0
44     for key in result_dict:
45       if key == 'v':
46         continue
47       results.Add(key, 'ms', result_dict[key], data_type='unimportant')
48       total += _Mean(result_dict[key])
49     results.Add('Total', 'ms', total)
50
51
52 class Kraken(test.Test):
53   """Mozilla's Kraken JavaScript benchmark."""
54   test = _KrakenMeasurement
55
56   def CreatePageSet(self, options):
57     return page_set.PageSet.FromDict({
58         'archive_data_file': '../page_sets/data/kraken.json',
59         'pages': [
60           { 'url': 'http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html' }
61           ]
62         }, os.path.abspath(__file__))