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

Side by Side Diff: tools/gen_bench_expectations_from_codereview.py

Issue 368043002: gen_bench_expectations: use subprocess instead of shell_utils due to buildbot-side name collision (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 5 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 2
3 # Copyright (c) 2014 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2014 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 7
8 """Generate new bench expectations from results of trybots on a code review.""" 8 """Generate new bench expectations from results of trybots on a code review."""
9 9
10 10
11 import collections 11 import collections
12 import compare_codereview 12 import compare_codereview
13 import json 13 import json
14 import os 14 import os
15 import re 15 import re
16 import shutil 16 import shutil
17 import subprocess
17 import sys 18 import sys
18 import urllib2 19 import urllib2
19 20
20 import fix_pythonpath # pylint: disable=W0611
21 from common.py.utils import shell_utils
22
23 21
24 BENCH_DATA_URL = 'gs://chromium-skia-gm/perfdata/%s/%s/bench_*_data_*' 22 BENCH_DATA_URL = 'gs://chromium-skia-gm/perfdata/%s/%s/bench_*_data_*'
25 BUILD_STATUS_SUCCESS = 0 23 BUILD_STATUS_SUCCESS = 0
26 BUILD_STATUS_WARNINGS = 1 24 BUILD_STATUS_WARNINGS = 1
27 CHECKOUT_PATH = os.path.realpath(os.path.join( 25 CHECKOUT_PATH = os.path.realpath(os.path.join(
28 os.path.dirname(os.path.abspath(__file__)), os.pardir)) 26 os.path.dirname(os.path.abspath(__file__)), os.pardir))
29 TMP_BENCH_DATA_DIR = os.path.join(CHECKOUT_PATH, '.bench_data') 27 TMP_BENCH_DATA_DIR = os.path.join(CHECKOUT_PATH, '.bench_data')
30 28
31 29
32 TryBuild = collections.namedtuple( 30 TryBuild = collections.namedtuple(
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 89
92 def get_bench_data(builder, build_num, dest_dir): 90 def get_bench_data(builder, build_num, dest_dir):
93 """Download the bench data for the given builder at the given build_num. 91 """Download the bench data for the given builder at the given build_num.
94 92
95 Args: 93 Args:
96 builder: string; name of the builder. 94 builder: string; name of the builder.
97 build_num: string; build number. 95 build_num: string; build number.
98 dest_dir: string; destination directory for the bench data. 96 dest_dir: string; destination directory for the bench data.
99 """ 97 """
100 url = BENCH_DATA_URL % (builder, build_num) 98 url = BENCH_DATA_URL % (builder, build_num)
101 shell_utils.run(['gsutil', 'cp', '-R', url, dest_dir]) 99 subprocess.check_call(['gsutil', 'cp', '-R', url, dest_dir])
102 100
103 101
104 def find_revision_from_downloaded_data(dest_dir): 102 def find_revision_from_downloaded_data(dest_dir):
105 """Finds the revision at which the downloaded data was generated. 103 """Finds the revision at which the downloaded data was generated.
106 104
107 Args: 105 Args:
108 dest_dir: string; directory holding the downloaded data. 106 dest_dir: string; directory holding the downloaded data.
109 107
110 Returns: 108 Returns:
111 The revision (git commit hash) at which the downloaded data was 109 The revision (git commit hash) at which the downloaded data was
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 if try_builder in failed_run: 190 if try_builder in failed_run:
193 continue 191 continue
194 192
195 builder = try_builder.replace('-Trybot', '') 193 builder = try_builder.replace('-Trybot', '')
196 194
197 # Download the data. 195 # Download the data.
198 dest_dir = os.path.join(TMP_BENCH_DATA_DIR, builder) 196 dest_dir = os.path.join(TMP_BENCH_DATA_DIR, builder)
199 os.makedirs(dest_dir) 197 os.makedirs(dest_dir)
200 try: 198 try:
201 get_bench_data(try_builder, try_build.build_number, dest_dir) 199 get_bench_data(try_builder, try_build.build_number, dest_dir)
202 except shell_utils.CommandFailedException: 200 except subprocess.CalledProcessError:
203 failed_data_pull.append(try_builder) 201 failed_data_pull.append(try_builder)
204 continue 202 continue
205 203
206 # Find the revision at which the data was generated. 204 # Find the revision at which the data was generated.
207 revision = find_revision_from_downloaded_data(dest_dir) 205 revision = find_revision_from_downloaded_data(dest_dir)
208 if not revision: 206 if not revision:
209 # If we can't find a revision, then something is wrong with the data we 207 # If we can't find a revision, then something is wrong with the data we
210 # downloaded. Skip this builder. 208 # downloaded. Skip this builder.
211 failed_data_pull.append(try_builder) 209 failed_data_pull.append(try_builder)
212 continue 210 continue
213 211
214 # Generate new expectations. 212 # Generate new expectations.
215 output_file = os.path.join(CHECKOUT_PATH, 'expectations', 'bench', 213 output_file = os.path.join(CHECKOUT_PATH, 'expectations', 'bench',
216 'bench_expectations_%s.txt' % builder) 214 'bench_expectations_%s.txt' % builder)
217 try: 215 try:
218 shell_utils.run(['python', 216 subprocess.check_call(['python',
219 os.path.join(CHECKOUT_PATH, 'bench', 217 os.path.join(CHECKOUT_PATH, 'bench',
220 'gen_bench_expectations.py'), 218 'gen_bench_expectations.py'),
221 '-b', builder, '-o', output_file, 219 '-b', builder, '-o', output_file,
222 '-d', dest_dir, '-r', revision]) 220 '-d', dest_dir, '-r', revision])
223 except shell_utils.CommandFailedException: 221 except subprocess.CalledProcessError:
224 failed_gen_expectations.append(builder) 222 failed_gen_expectations.append(builder)
225 223
226 failure = '' 224 failure = ''
227 if failed_data_pull: 225 if failed_data_pull:
228 failure += 'Failed to load data for: %s\n\n' % ','.join(failed_data_pull) 226 failure += 'Failed to load data for: %s\n\n' % ','.join(failed_data_pull)
229 if failed_gen_expectations: 227 if failed_gen_expectations:
230 failure += 'Failed to generate expectations for: %s\n\n' % ','.join( 228 failure += 'Failed to generate expectations for: %s\n\n' % ','.join(
231 failed_gen_expectations) 229 failed_gen_expectations)
232 if failure: 230 if failure:
233 raise Exception(failure) 231 raise Exception(failure)
234 232
235 233
236 if __name__ == '__main__': 234 if __name__ == '__main__':
237 gen_bench_expectations_from_codereview(sys.argv[1]) 235 gen_bench_expectations_from_codereview(sys.argv[1])
238 236
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698