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

Side by Side Diff: experimental/benchtools/rebase.py

Issue 298683004: fix some bench rebase tool problems. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: copyright etc. Created 6 years, 7 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 | « experimental/benchtools/greenify.py ('k') | 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/python2.7 1 #!/usr/bin/env python
2 # Copyright (c) 2014 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
2 6
3 """rebase.py: standalone script to batch update bench expectations. 7 """rebase.py: standalone script to batch update bench expectations.
4 Usage: 8
5 Copy script to a separate dir outside Skia repo. The script will create a 9 Requires gsutil to access gs://chromium-skia-gm and Rietveld credentials.
6 skia dir on the first run to host the repo, and will create/delete temp 10
7 dirs as needed. 11 Usage:
8 ./rebase.py --githash <githash prefix to use for getting bench data> 12 Copy script to a separate dir outside Skia repo. The script will create a
13 skia dir on the first run to host the repo, and will create/delete
14 temp dirs as needed.
15 ./rebase.py --githash <githash prefix to use for getting bench data>
9 """ 16 """
10 17
18
11 import argparse 19 import argparse
12 import filecmp 20 import filecmp
13 import os 21 import os
14 import re 22 import re
15 import shutil 23 import shutil
16 import subprocess 24 import subprocess
17 import time 25 import time
18 import urllib2 26 import urllib2
19 27
20 28
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 proc = subprocess.Popen(['gsutil', 'ls', 63 proc = subprocess.Popen(['gsutil', 'ls',
56 '/'.join([GS_PREFIX, p, 'bench_' + h + '_data_skp_*'])], 64 '/'.join([GS_PREFIX, p, 'bench_' + h + '_data_skp_*'])],
57 stdout=subprocess.PIPE) 65 stdout=subprocess.PIPE)
58 out, err = proc.communicate() 66 out, err = proc.communicate()
59 if err or not out: 67 if err or not out:
60 return [] 68 return []
61 return [i for i in out.strip().split('\n') if not filter_file(i)] 69 return [i for i in out.strip().split('\n') if not filter_file(i)]
62 70
63 def download_gs_files(p, h, gs_dir): 71 def download_gs_files(p, h, gs_dir):
64 print 'Downloading raw bench files from Google Storage...' 72 print 'Downloading raw bench files from Google Storage...'
65 proc = subprocess.Popen(['gsutil', '-q', 'cp', 73 proc = subprocess.Popen(['gsutil', 'cp', '-q',
66 '/'.join([GS_PREFIX, p, 'bench_' + h + '_data_skp_*']), 74 '/'.join([GS_PREFIX, p, 'bench_' + h + '_data_skp_*']),
67 '%s/%s' % (gs_dir, p)], 75 '%s/%s' % (gs_dir, p)],
68 stdout=subprocess.PIPE) 76 stdout=subprocess.PIPE)
69 out, err = proc.communicate() 77 out, err = proc.communicate()
70 if err: 78 if err:
71 clean_dir(gs_dir) 79 clean_dir(gs_dir)
72 return False 80 return False
73 files = 0 81 files = 0
74 for f in os.listdir(os.path.join(gs_dir, p)): 82 for f in os.listdir(os.path.join(gs_dir, p)):
75 if filter_file(f): 83 if filter_file(f):
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 commit_msg = """bench rebase after %s 129 commit_msg = """bench rebase after %s
122 130
123 TBR=robertphillips@google.com 131 TBR=robertphillips@google.com
124 132
125 Bypassing trybots: 133 Bypassing trybots:
126 NOTRY=true""" % h 134 NOTRY=true""" % h
127 old_cwd = os.getcwd() 135 old_cwd = os.getcwd()
128 os.chdir(repo_dir) 136 os.chdir(repo_dir)
129 upload = ['git', 'cl', 'upload', '-f', '--bypass-hooks', 137 upload = ['git', 'cl', 'upload', '-f', '--bypass-hooks',
130 '--bypass-watchlists', '-m', commit_msg] 138 '--bypass-watchlists', '-m', commit_msg]
139 branch = exp_dir.split('/')[-1]
131 if commit: 140 if commit:
132 upload.append('--use-commit-queue') 141 upload.append('--use-commit-queue')
133 cmds = ([['git', 'checkout', 'master'], 142 cmds = ([['git', 'checkout', 'master'],
134 ['git', 'pull'], 143 ['git', 'pull'],
135 ['git', 'checkout', '-b', exp_dir, '-t', 'origin/master']] + 144 ['git', 'checkout', '-b', branch, '-t', 'origin/master']] +
136 [['cp', '../%s/%s' % (exp_dir, f), 'expectations/bench'] for f in 145 [['cp', '%s/%s' % (exp_dir, f), 'expectations/bench'] for f in
137 update_li] + 146 update_li] +
138 [['git', 'add'] + ['expectations/bench/%s' % i for i in update_li], 147 [['git', 'add'] + ['expectations/bench/%s' % i for i in update_li],
139 ['git', 'commit', '-m', commit_msg], 148 ['git', 'commit', '-m', commit_msg],
140 upload, 149 upload,
141 ['git', 'checkout', 'master'], 150 ['git', 'checkout', 'master'],
142 ['git', 'branch', '-D', exp_dir], 151 ['git', 'branch', '-D', branch],
143 ]) 152 ])
144 status = True 153 status = True
145 for cmd in cmds: 154 for cmd in cmds:
146 print 'Running ' + ' '.join(cmd) 155 print 'Running ' + ' '.join(cmd)
147 if subprocess.call(cmd): 156 if subprocess.call(cmd):
148 print 'FAILED. Please check if skia git repo is present.' 157 print 'FAILED. Please check if skia git repo is present.'
149 subprocess.call(['git', 'checkout', 'master']) 158 subprocess.call(['git', 'checkout', 'master'])
150 status = False 159 status = False
151 break 160 break
152 os.chdir(old_cwd) 161 os.chdir(old_cwd)
(...skipping 18 matching lines...) Expand all
171 help='Whether to commit changes automatically.') 180 help='Whether to commit changes automatically.')
172 args = parser.parse_args() 181 args = parser.parse_args()
173 182
174 repo_dir = os.path.join(d, 'skia') 183 repo_dir = os.path.join(d, 'skia')
175 if not os.path.exists(repo_dir): 184 if not os.path.exists(repo_dir):
176 os.makedirs(repo_dir) 185 os.makedirs(repo_dir)
177 if not checkout_or_update_skia(repo_dir): 186 if not checkout_or_update_skia(repo_dir):
178 print 'ERROR setting up Skia repo at %s' % repo_dir 187 print 'ERROR setting up Skia repo at %s' % repo_dir
179 return 1 188 return 1
180 189
181 for item in os.listdir(os.path.join(d, 'skia/expectations/bench')):
182 PLATFORMS.append(
183 item.replace('bench_expectations_', '').replace('.txt', ''))
184
185 file_in_repo = os.path.join(d, 'skia/experimental/benchtools/rebase.py') 190 file_in_repo = os.path.join(d, 'skia/experimental/benchtools/rebase.py')
186 if not filecmp.cmp(__file__, file_in_repo): 191 if not filecmp.cmp(__file__, file_in_repo):
187 shutil.copy(file_in_repo, __file__) 192 shutil.copy(file_in_repo, __file__)
188 print 'Updated this script from repo; please run again.' 193 print 'Updated this script from repo; please run again.'
189 return 194 return
190 195
196 for item in os.listdir(os.path.join(d, 'skia/expectations/bench')):
197 PLATFORMS.append(
198 item.replace('bench_expectations_', '').replace('.txt', ''))
199
191 if not args.githash or len(args.githash) < 7: 200 if not args.githash or len(args.githash) < 7:
192 raise Exception('Please provide --githash with a longer prefix (7+).') 201 raise Exception('Please provide --githash with a longer prefix (7+).')
193 commit = False 202 commit = False
194 if args.commit: 203 if args.commit:
195 commit = True 204 commit = True
196 rebase_hash = args.githash[:7] 205 rebase_hash = args.githash[:7]
197 hashes = get_git_hashes() 206 hashes = get_git_hashes()
198 short_hashes = [h[:7] for h in hashes] 207 short_hashes = [h[:7] for h in hashes]
199 if rebase_hash not in short_hashes: 208 if rebase_hash not in short_hashes:
200 raise Exception('Provided --githash not found in recent history!') 209 raise Exception('Provided --githash not found in recent history!')
(...skipping 29 matching lines...) Expand all
230 print 'ERROR uploading expectations using git.' 239 print 'ERROR uploading expectations using git.'
231 elif not commit: 240 elif not commit:
232 print 'CL created. Please take a look at the link above.' 241 print 'CL created. Please take a look at the link above.'
233 else: 242 else:
234 print 'New bench baselines should be in CQ now.' 243 print 'New bench baselines should be in CQ now.'
235 delete_dirs([gs_dir, exp_dir]) 244 delete_dirs([gs_dir, exp_dir])
236 245
237 246
238 if __name__ == "__main__": 247 if __name__ == "__main__":
239 main() 248 main()
OLDNEW
« no previous file with comments | « experimental/benchtools/greenify.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698