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

Side by Side Diff: tools/bisect-perf-regression.py

Issue 18991015: Unset some environment vars so they can be set up via the bisect script. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changes from review. Created 7 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 | « build/android/buildbot/bb_host_steps.py ('k') | tools/bisect_utils.py » ('j') | 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/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 """Performance Test Bisect Tool 6 """Performance Test Bisect Tool
7 7
8 This script bisects a series of changelists using binary search. It starts at 8 This script bisects a series of changelists using binary search. It starts at
9 a bad revision where a performance metric has regressed, and asks for a last 9 a bad revision where a performance metric has regressed, and asks for a last
10 known-good revision. It will then binary search across this revision range by 10 known-good revision. It will then binary search across this revision range by
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 A tuple of the output and return code. 287 A tuple of the output and return code.
288 """ 288 """
289 (output, return_code) = RunGit(command) 289 (output, return_code) = RunGit(command)
290 290
291 assert not return_code, 'An error occurred while running'\ 291 assert not return_code, 'An error occurred while running'\
292 ' "git %s"' % ' '.join(command) 292 ' "git %s"' % ' '.join(command)
293 return output 293 return output
294 294
295 295
296 def BuildWithMake(threads, targets): 296 def BuildWithMake(threads, targets):
297 cmd = ['make', 'BUILDTYPE=Release', '-j%d' % threads] + targets 297 cmd = ['make', 'BUILDTYPE=Release']
298
299 if threads:
300 cmd.append('-j%d' % threads)
301
302 cmd += targets
298 303
299 return_code = RunProcess(cmd) 304 return_code = RunProcess(cmd)
300 305
301 return not return_code 306 return not return_code
302 307
303 308
304 def BuildWithNinja(threads, targets): 309 def BuildWithNinja(threads, targets):
305 cmd = ['ninja', '-C', os.path.join('out', 'Release'), 310 cmd = ['ninja', '-C', os.path.join('out', 'Release')]
306 '-j%d' % threads] + targets 311
312 if threads:
313 cmd.append('-j%d' % threads)
314
315 cmd += targets
307 316
308 return_code = RunProcess(cmd) 317 return_code = RunProcess(cmd)
309 318
310 return not return_code 319 return not return_code
311 320
312 321
313 def BuildWithVisualStudio(targets): 322 def BuildWithVisualStudio(targets):
314 path_to_devenv = os.path.abspath( 323 path_to_devenv = os.path.abspath(
315 os.path.join(os.environ['VS100COMNTOOLS'], '..', 'IDE', 'devenv.com')) 324 os.path.join(os.environ['VS100COMNTOOLS'], '..', 'IDE', 'devenv.com'))
316 path_to_sln = os.path.join(os.getcwd(), 'chrome', 'chrome.sln') 325 path_to_sln = os.path.join(os.getcwd(), 'chrome', 'chrome.sln')
(...skipping 22 matching lines...) Expand all
339 348
340 Args: 349 Args:
341 depot: Current depot being bisected. 350 depot: Current depot being bisected.
342 opts: The options parsed from the command line. 351 opts: The options parsed from the command line.
343 352
344 Returns: 353 Returns:
345 True if build was successful. 354 True if build was successful.
346 """ 355 """
347 targets = ['chrome', 'performance_ui_tests'] 356 targets = ['chrome', 'performance_ui_tests']
348 357
349 threads = 16 358 threads = None
350 if opts.use_goma: 359 if opts.use_goma:
351 threads = 64 360 threads = 64
352 361
353 build_success = False 362 build_success = False
354 if opts.build_preference == 'make': 363 if opts.build_preference == 'make':
355 build_success = BuildWithMake(threads, targets) 364 build_success = BuildWithMake(threads, targets)
356 elif opts.build_preference == 'ninja': 365 elif opts.build_preference == 'ninja':
357 if IsWindows(): 366 if IsWindows():
358 targets = [t + '.exe' for t in targets] 367 targets = [t + '.exe' for t in targets]
359 build_success = BuildWithNinja(threads, targets) 368 build_success = BuildWithNinja(threads, targets)
(...skipping 10 matching lines...) Expand all
370 def InstallAPK(self, opts): 379 def InstallAPK(self, opts):
371 """Installs apk to device. 380 """Installs apk to device.
372 381
373 Args: 382 Args:
374 opts: The options parsed from the command line. 383 opts: The options parsed from the command line.
375 384
376 Returns: 385 Returns:
377 True if successful. 386 True if successful.
378 """ 387 """
379 path_to_tool = os.path.join('build', 'android', 'adb_install_apk.py') 388 path_to_tool = os.path.join('build', 'android', 'adb_install_apk.py')
380 cmd = [path_to_tool, '--apk', 'ContentShell.apk', '--apk_package', 389 cmd = [path_to_tool, '--apk', 'ChromiumTestShell.apk', '--apk_package',
381 'org.chromium.content_shell_apk', '--release'] 390 'org.chromium.chrome.testshell', '--release']
382 return_code = RunProcess(cmd) 391 return_code = RunProcess(cmd)
392
383 return not return_code 393 return not return_code
384 394
385 def Build(self, depot, opts): 395 def Build(self, depot, opts):
386 """Builds the android content shell and other necessary tools using options 396 """Builds the android content shell and other necessary tools using options
387 passed into the script. 397 passed into the script.
388 398
389 Args: 399 Args:
390 depot: Current depot being bisected. 400 depot: Current depot being bisected.
391 opts: The options parsed from the command line. 401 opts: The options parsed from the command line.
392 402
393 Returns: 403 Returns:
394 True if build was successful. 404 True if build was successful.
395 """ 405 """
396 targets = ['content_shell_apk', 'forwarder2', 'md5sum'] 406 targets = ['chromium_testshell', 'forwarder2', 'md5sum']
397 threads = 16 407 threads = None
398 if opts.use_goma: 408 if opts.use_goma:
399 threads = 64 409 threads = 64
400 410
401 build_success = False 411 build_success = False
402 if opts.build_preference == 'ninja': 412 if opts.build_preference == 'ninja':
403 build_success = BuildWithNinja(threads, targets) 413 build_success = BuildWithNinja(threads, targets)
404 else: 414 else:
405 assert False, 'No build system defined.' 415 assert False, 'No build system defined.'
406 416
407 if build_success: 417 if build_success:
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 528
519 ie. gclient sync --revision <revision> 529 ie. gclient sync --revision <revision>
520 530
521 Args: 531 Args:
522 revision: The git SHA1 or svn CL (depending on workflow). 532 revision: The git SHA1 or svn CL (depending on workflow).
523 533
524 Returns: 534 Returns:
525 The return code of the call. 535 The return code of the call.
526 """ 536 """
527 return bisect_utils.RunGClient(['sync', '--revision', 537 return bisect_utils.RunGClient(['sync', '--revision',
528 revision, '--verbose']) 538 revision, '--verbose', '--nohooks'])
529 539
530 def SyncToRevisionWithRepo(self, timestamp): 540 def SyncToRevisionWithRepo(self, timestamp):
531 """Uses repo to sync all the underlying git depots to the specified 541 """Uses repo to sync all the underlying git depots to the specified
532 time. 542 time.
533 543
534 Args: 544 Args:
535 timestamp: The unix timestamp to sync to. 545 timestamp: The unix timestamp to sync to.
536 546
537 Returns: 547 Returns:
538 The return code of the call. 548 The return code of the call.
(...skipping 639 matching lines...) Expand 10 before | Expand all | Expand 10 after
1178 elif depot == 'cros': 1188 elif depot == 'cros':
1179 return self.PerformCrosChrootCleanup() 1189 return self.PerformCrosChrootCleanup()
1180 return True 1190 return True
1181 1191
1182 def RunPostSync(self, depot): 1192 def RunPostSync(self, depot):
1183 """Performs any work after syncing. 1193 """Performs any work after syncing.
1184 1194
1185 Returns: 1195 Returns:
1186 True if successful. 1196 True if successful.
1187 """ 1197 """
1198 if self.opts.target_platform == 'android':
1199 cwd = os.getcwd()
1200 os.chdir(os.path.join(self.src_cwd, '..'))
1201 if not bisect_utils.SetupAndroidBuildEnvironment(self.opts):
1202 return False
1203 os.chdir(cwd)
1204
1188 if depot == 'cros': 1205 if depot == 'cros':
1189 return self.CreateCrosChroot() 1206 return self.CreateCrosChroot()
1190 else: 1207 else:
1191 return self.RunGClientHooks() 1208 return self.RunGClientHooks()
1192 return True 1209 return True
1193 1210
1194 def ShouldSkipRevision(self, depot, revision): 1211 def ShouldSkipRevision(self, depot, revision):
1195 """Some commits can be safely skipped (such as a DEPS roll), since the tool 1212 """Some commits can be safely skipped (such as a DEPS roll), since the tool
1196 is git based those changes would have no effect. 1213 is git based those changes would have no effect.
1197 1214
(...skipping 1133 matching lines...) Expand 10 before | Expand all | Expand 10 after
2331 2348
2332 if not(bisect_results['error']): 2349 if not(bisect_results['error']):
2333 return 0 2350 return 0
2334 else: 2351 else:
2335 print 'Error: ' + bisect_results['error'] 2352 print 'Error: ' + bisect_results['error']
2336 print 2353 print
2337 return 1 2354 return 1
2338 2355
2339 if __name__ == '__main__': 2356 if __name__ == '__main__':
2340 sys.exit(main()) 2357 sys.exit(main())
OLDNEW
« no previous file with comments | « build/android/buildbot/bb_host_steps.py ('k') | tools/bisect_utils.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698