Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / tools / perf / benchmarks / octane.py
index 3097196..689ccd9 100644 (file)
@@ -13,15 +13,28 @@ Octane 2.0 consists of 17 tests, four more than Octane v1.
 
 import os
 
+from metrics import power
 from metrics import statistics
 from telemetry import test
 from telemetry.page import page_measurement
 from telemetry.page import page_set
 
+_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 +42,19 @@ class _OctaneMeasurement(page_measurement.PageMeasurement):
           __results.push(msg);
           __real_log.apply(this, [msg]);
         }
-        """
+        skipBenchmarks = [%s]
+        """ % (skipBenchmarks)
 
-  def MeasurePage(self, _, tab, results):
+  def DidNavigateToPage(self, page, tab):
+    self._power_metric.Start(page, tab)
+
+  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,11 +63,12 @@ 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')