Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / tools / perf / benchmarks / octane.py
index 3097196..4fc6a3e 100644 (file)
@@ -13,15 +13,29 @@ Octane 2.0 consists of 17 tests, four more than Octane v1.
 
 import os
 
-from metrics import statistics
+from metrics import power
 from telemetry import test
 from telemetry.page import page_measurement
 from telemetry.page import page_set
+from telemetry.util import statistics
+from telemetry.value import scalar
 
+_GB = 1024 * 1024 * 1024
 
 class _OctaneMeasurement(page_measurement.PageMeasurement):
+  def __init__(self):
+    super(_OctaneMeasurement, self).__init__()
+    self._power_metric = power.PowerMetric()
+
+  def CustomizeBrowserOptions(self, options):
+    power.PowerMetric.CustomizeBrowserOptions(options)
+
 
   def WillNavigateToPage(self, page, tab):
+    if tab.browser.memory_stats['SystemTotalPhysicalMemory'] < 1 * _GB:
+      skipBenchmarks = '"zlib"'
+    else:
+      skipBenchmarks = ''
     page.script_to_evaluate_on_commit = """
         var __results = [];
         var __real_log = window.console.log;
@@ -29,12 +43,19 @@ class _OctaneMeasurement(page_measurement.PageMeasurement):
           __results.push(msg);
           __real_log.apply(this, [msg]);
         }
-        """
+        skipBenchmarks = [%s]
+        """ % (skipBenchmarks)
+
+  def DidNavigateToPage(self, page, tab):
+    self._power_metric.Start(page, tab)
 
-  def MeasurePage(self, _, tab, results):
+  def MeasurePage(self, page, tab, results):
     tab.WaitForJavaScriptExpression(
         'completed && !document.getElementById("progress-bar-container")', 1200)
 
+    self._power_metric.Stop(page, tab)
+    self._power_metric.AddResults(tab, results)
+
     results_log = tab.EvaluateJavaScript('__results')
     all_scores = []
     for output in results_log:
@@ -43,13 +64,15 @@ class _OctaneMeasurement(page_measurement.PageMeasurement):
       score_and_name = output.split(': ', 2)
       assert len(score_and_name) == 2, \
         'Unexpected result format "%s"' % score_and_name
-      name = score_and_name[0]
-      score = int(score_and_name[1])
-      results.Add(name, 'score', score, data_type='unimportant')
-      # Collect all test scores to compute geometric mean.
-      all_scores.append(score)
+      if 'Skipped' not in score_and_name[1]:
+        name = score_and_name[0]
+        score = int(score_and_name[1])
+        results.Add(name, 'score', score, data_type='unimportant')
+        # Collect all test scores to compute geometric mean.
+        all_scores.append(score)
     total = statistics.GeometricMean(all_scores)
-    results.AddSummary('Score', 'score', total, chart_name='Total')
+    results.AddSummaryValue(
+        scalar.ScalarValue(None, 'Total.Score', 'score', total))
 
 
 class Octane(test.Test):
@@ -57,13 +80,10 @@ class Octane(test.Test):
   test = _OctaneMeasurement
 
   def CreatePageSet(self, options):
-    return page_set.PageSet.FromDict({
-      'archive_data_file': '../page_sets/data/octane.json',
-      'make_javascript_deterministic': False,
-      'pages': [{
-          'url':
-          'http://octane-benchmark.googlecode.com/svn/latest/index.html?auto=1'
-          }
-        ]
-      }, os.path.abspath(__file__))
-
+    ps = page_set.PageSet(
+      archive_data_file='../page_sets/data/octane.json',
+      make_javascript_deterministic=False,
+      file_path=os.path.abspath(__file__))
+    ps.AddPageWithDefaultRunNavigate(
+      'http://octane-benchmark.googlecode.com/svn/latest/index.html?auto=1')
+    return ps