Index: tools/perf/benchmarks/rail.py |
diff --git a/tools/perf/benchmarks/rail.py b/tools/perf/benchmarks/rail.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d4da284e037a758a62ffb2365d0be17983b252e8 |
--- /dev/null |
+++ b/tools/perf/benchmarks/rail.py |
@@ -0,0 +1,52 @@ |
+# Copyright 2015 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+import os |
+ |
+ |
+from core import perf_benchmark |
+ |
+from telemetry.timeline import tracing_category_filter |
+from telemetry.value import scalar |
+from telemetry.value import failure |
+from telemetry.web_perf import trace_mappers_based_measurement |
+ |
+import page_sets |
+ |
+class RailMapperHandler(trace_mappers_based_measurement.TraceMapperHandler): |
+ _weather_report_map_func_dir = os.path.join( |
+ os.path.dirname(__file__), '..', '..', '..', 'third_party', |
+ 'catapult', 'perf_insights', 'perf_insights', 'mappers', |
+ 'weather_report_map_function.html') |
+ def __init__(self): |
+ super(RailMapperHandler, self).__init__( |
+ trace_mapper_path=self._weather_report_map_func_dir) |
+ |
+ def AddResults(self, pi_results, page, results): |
+ wr_value = pi_results.FindValueNamed('wr') |
+ try: |
+ rail_score = wr_value['irTree']['overallScore'] |
+ results.AddValue( |
+ scalar.ScalarValue( |
+ page=results.current_page, name='RailScore', units='percent', |
+ value=rail_score, important=True, description='RAIL score.')) |
+ except Exception: |
+ results.AddValue( |
+ failure.FromMessage( |
+ page=page, message='Failed to compute RAIL score.')) |
+ |
+ |
+class RailTop25Sites(perf_benchmark.PerfBenchmark): |
+ """Measures GPU timeline metric for the top 25 sites.""" |
+ page_set = page_sets.Top25SmoothPageSet |
+ test = trace_mappers_based_measurement.TraceMapperBasedMeasurement |
+ |
+ def CreateTimelineBasedMeasurementOptions(self): |
+ options = trace_mappers_based_measurement.Options( |
+ tracing_category_filter.CreateDebugOverheadFilter()) |
+ options.AddTraceMapperHandlers(RailMapperHandler()) |
+ return options |
+ |
+ @classmethod |
+ def Name(cls): |
+ return 'rail.top_25_smooth' |