OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """Run Performance Test Bisect Tool | 6 """Run Performance Test Bisect Tool |
7 | 7 |
8 This script is used by a try bot to run the bisect script with the parameters | 8 This script is used by a try bot to run the bisect script with the parameters |
9 specified in the bisect config file. It checks out a copy of the depot in | 9 specified in the bisect config file. It checks out a copy of the depot in |
10 a subdirectory 'bisect' of the working directory provided, annd runs the | 10 a subdirectory 'bisect' of the working directory provided, annd runs the |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 | 241 |
242 Attempts to build and run the current revision with and without the | 242 Attempts to build and run the current revision with and without the |
243 current patch, with the parameters passed in. | 243 current patch, with the parameters passed in. |
244 """ | 244 """ |
245 # Bisect script expects to be run from the src directory | 245 # Bisect script expects to be run from the src directory |
246 os.chdir(SRC_DIR) | 246 os.chdir(SRC_DIR) |
247 | 247 |
248 bisect_utils.OutputAnnotationStepStart('Building With Patch') | 248 bisect_utils.OutputAnnotationStepStart('Building With Patch') |
249 | 249 |
250 opts = _CreateBisectOptionsFromConfig(config) | 250 opts = _CreateBisectOptionsFromConfig(config) |
251 b = bisect_perf_regression.BisectPerformanceMetrics(opts) | 251 b = bisect_perf_regression.BisectPerformanceMetrics(opts, os.getcwd()) |
252 | 252 |
253 if bisect_utils.RunGClient(['runhooks']): | 253 if bisect_utils.RunGClient(['runhooks']): |
254 raise RuntimeError('Failed to run gclient runhooks') | 254 raise RuntimeError('Failed to run gclient runhooks') |
255 | 255 |
256 if not b.BuildCurrentRevision('chromium'): | 256 if not b.ObtainBuild('chromium'): |
257 raise RuntimeError('Patched version failed to build.') | 257 raise RuntimeError('Patched version failed to build.') |
258 | 258 |
259 bisect_utils.OutputAnnotationStepClosed() | 259 bisect_utils.OutputAnnotationStepClosed() |
260 bisect_utils.OutputAnnotationStepStart('Running With Patch') | 260 bisect_utils.OutputAnnotationStepStart('Running With Patch') |
261 | 261 |
262 results_with_patch = b.RunPerformanceTestAndParseResults( | 262 results_with_patch = b.RunPerformanceTestAndParseResults( |
263 opts.command, opts.metric, reset_on_first_run=True, results_label='Patch') | 263 opts.command, opts.metric, reset_on_first_run=True, results_label='Patch') |
264 | 264 |
265 if results_with_patch[1]: | 265 if results_with_patch[1]: |
266 raise RuntimeError('Patched version failed to run performance test.') | 266 raise RuntimeError('Patched version failed to run performance test.') |
267 | 267 |
268 bisect_utils.OutputAnnotationStepClosed() | 268 bisect_utils.OutputAnnotationStepClosed() |
269 | 269 |
270 bisect_utils.OutputAnnotationStepStart('Reverting Patch') | 270 bisect_utils.OutputAnnotationStepStart('Reverting Patch') |
271 # TODO: When this is re-written to recipes, this should use bot_update's | 271 # TODO: When this is re-written to recipes, this should use bot_update's |
272 # revert mechanism to fully revert the client. But for now, since we know that | 272 # revert mechanism to fully revert the client. But for now, since we know that |
273 # the perf try bot currently only supports src/ and src/third_party/WebKit, we | 273 # the perf try bot currently only supports src/ and src/third_party/WebKit, we |
274 # simply reset those two directories. | 274 # simply reset those two directories. |
275 bisect_utils.CheckRunGit(['reset', '--hard']) | 275 bisect_utils.CheckRunGit(['reset', '--hard']) |
276 bisect_utils.CheckRunGit(['reset', '--hard'], | 276 bisect_utils.CheckRunGit(['reset', '--hard'], |
277 os.path.join('third_party', 'WebKit')) | 277 os.path.join('third_party', 'WebKit')) |
278 bisect_utils.OutputAnnotationStepClosed() | 278 bisect_utils.OutputAnnotationStepClosed() |
279 | 279 |
280 bisect_utils.OutputAnnotationStepStart('Building Without Patch') | 280 bisect_utils.OutputAnnotationStepStart('Building Without Patch') |
281 | 281 |
282 if bisect_utils.RunGClient(['runhooks']): | 282 if bisect_utils.RunGClient(['runhooks']): |
283 raise RuntimeError('Failed to run gclient runhooks') | 283 raise RuntimeError('Failed to run gclient runhooks') |
284 | 284 |
285 if not b.BuildCurrentRevision('chromium'): | 285 if not b.ObtainBuild('chromium'): |
286 raise RuntimeError('Unpatched version failed to build.') | 286 raise RuntimeError('Unpatched version failed to build.') |
287 | 287 |
288 bisect_utils.OutputAnnotationStepClosed() | 288 bisect_utils.OutputAnnotationStepClosed() |
289 bisect_utils.OutputAnnotationStepStart('Running Without Patch') | 289 bisect_utils.OutputAnnotationStepStart('Running Without Patch') |
290 | 290 |
291 results_without_patch = b.RunPerformanceTestAndParseResults( | 291 results_without_patch = b.RunPerformanceTestAndParseResults( |
292 opts.command, opts.metric, upload_on_last_run=True, results_label='ToT') | 292 opts.command, opts.metric, upload_on_last_run=True, results_label='ToT') |
293 | 293 |
294 if results_without_patch[1]: | 294 if results_without_patch[1]: |
295 raise RuntimeError('Unpatched version failed to run performance test.') | 295 raise RuntimeError('Unpatched version failed to run performance test.') |
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
563 if config and config_is_valid: | 563 if config and config_is_valid: |
564 return _SetupAndRunPerformanceTest(config, opts.path_to_goma) | 564 return _SetupAndRunPerformanceTest(config, opts.path_to_goma) |
565 | 565 |
566 print ('Error: Could not load config file. Double check your changes to ' | 566 print ('Error: Could not load config file. Double check your changes to ' |
567 'auto_bisect/bisect.cfg or run-perf-test.cfg for syntax errors.\n') | 567 'auto_bisect/bisect.cfg or run-perf-test.cfg for syntax errors.\n') |
568 return 1 | 568 return 1 |
569 | 569 |
570 | 570 |
571 if __name__ == '__main__': | 571 if __name__ == '__main__': |
572 sys.exit(main()) | 572 sys.exit(main()) |
OLD | NEW |