Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(10)

Side by Side Diff: tools/android/loading/sandwich_swr.py

Issue 2009883002: sandwich: Make metrics extraction more customizable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: s/ADDITIONAL_COLUMN_NAMES/additional_column_names/g Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright 2016 The Chromium Authors. All rights reserved. 1 # Copyright 2016 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import csv 5 import csv
6 import logging 6 import logging
7 import os 7 import os
8 import shutil 8 import shutil
9 9
10 import chrome_cache 10 import chrome_cache
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 in Task names (prefer names without spaces and special characters). 94 in Task names (prefer names without spaces and special characters).
95 transformer_list: An ordered list of function that takes an instance of 95 transformer_list: An ordered list of function that takes an instance of
96 SandwichRunner as parameter, would be applied immediately before 96 SandwichRunner as parameter, would be applied immediately before
97 SandwichRunner.Run() in the given order. 97 SandwichRunner.Run() in the given order.
98 98
99 Here is the full dependency of the added tree for the returned task: 99 Here is the full dependency of the added tree for the returned task:
100 <transformer_list_name>/{swr,worstcase}-metrics.csv 100 <transformer_list_name>/{swr,worstcase}-metrics.csv
101 depends on: <transformer_list_name>/{swr,worstcase}-run/ 101 depends on: <transformer_list_name>/{swr,worstcase}-run/
102 depends on: some tasks saved by PopulateCommonPipelines() 102 depends on: some tasks saved by PopulateCommonPipelines()
103 """ 103 """
104 additional_column_names = ['url', 'repeat_id']
105
104 task_prefix = os.path.join(transformer_list_name, '') 106 task_prefix = os.path.join(transformer_list_name, '')
105 if enable_swr: 107 if enable_swr:
106 task_prefix += 'swr' 108 task_prefix += 'swr'
107 else: 109 else:
108 task_prefix += 'worstcase' 110 task_prefix += 'worstcase'
109 111
110 @self.RegisterTask(task_prefix + '-run/', [self._patched_cache_task]) 112 @self.RegisterTask(task_prefix + '-run/', [self._patched_cache_task])
111 def RunBenchmark(): 113 def RunBenchmark():
112 runner = self._common_builder.CreateSandwichRunner() 114 runner = self._common_builder.CreateSandwichRunner()
113 for transformer in transformer_list: 115 for transformer in transformer_list:
114 transformer(runner) 116 transformer(runner)
115 runner.wpr_archive_path = self._common_builder.original_wpr_task.path 117 runner.wpr_archive_path = self._common_builder.original_wpr_task.path
116 runner.wpr_out_log_path = os.path.join( 118 runner.wpr_out_log_path = os.path.join(
117 RunBenchmark.path, sandwich_runner.WPR_LOG_FILENAME) 119 RunBenchmark.path, sandwich_runner.WPR_LOG_FILENAME)
118 runner.cache_archive_path = self._patched_cache_task.path 120 runner.cache_archive_path = self._patched_cache_task.path
119 runner.cache_operation = sandwich_runner.CacheOperation.PUSH 121 runner.cache_operation = sandwich_runner.CacheOperation.PUSH
120 runner.output_dir = RunBenchmark.path 122 runner.output_dir = RunBenchmark.path
121 if enable_swr: 123 if enable_swr:
122 runner.chrome_args.append('--enable-features=StaleWhileRevalidate2') 124 runner.chrome_args.append('--enable-features=StaleWhileRevalidate2')
123 runner.Run() 125 runner.Run()
124 126
125 @self.RegisterTask(task_prefix + '-metrics.csv', [RunBenchmark]) 127 @self.RegisterTask(task_prefix + '-metrics.csv', [RunBenchmark])
126 def ExtractMetrics(): 128 def ExtractMetrics():
127 trace_metrics_list = \ 129 run_metrics_list = []
128 sandwich_metrics.ExtractMetricsFromRunnerOutputDirectory( 130 for repeat_id, repeat_dir in sandwich_runner.WalkRepeatedRuns(
129 None, RunBenchmark.path) 131 RunBenchmark.path):
130 trace_metrics_list.sort(key=lambda e: e['repeat_id']) 132 trace_path = os.path.join(repeat_dir, sandwich_runner.TRACE_FILENAME)
133 logging.info('processing trace: %s', trace_path)
134 trace = loading_trace.LoadingTrace.FromJsonFile(trace_path)
135 run_metrics = {
136 'url': trace.url,
137 'repeat_id': repeat_id,
138 }
139 run_metrics.update(
140 sandwich_metrics.ExtractCommonMetricsFromRepeatDirectory(
141 repeat_dir, trace))
142 run_metrics_list.append(run_metrics)
143
144 run_metrics_list.sort(key=lambda e: e['repeat_id'])
131 with open(ExtractMetrics.path, 'w') as csv_file: 145 with open(ExtractMetrics.path, 'w') as csv_file:
132 writer = csv.DictWriter(csv_file, 146 writer = csv.DictWriter(csv_file, fieldnames=(additional_column_names +
133 fieldnames=sandwich_metrics.CSV_FIELD_NAMES) 147 sandwich_metrics.COMMON_CSV_COLUMN_NAMES))
134 writer.writeheader() 148 writer.writeheader()
135 for trace_metrics in trace_metrics_list: 149 for trace_metrics in run_metrics_list:
136 writer.writerow(trace_metrics) 150 writer.writerow(trace_metrics)
137 151
138 self._common_builder.default_final_tasks.append(ExtractMetrics) 152 self._common_builder.default_final_tasks.append(ExtractMetrics)
OLDNEW
« no previous file with comments | « tools/android/loading/sandwich_runner.py ('k') | tools/android/loading/sandwich_task_builder.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698