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

Side by Side Diff: infra/bots/recipes/swarm_trigger.py

Issue 2263323002: Apply gerrit ref if it is a Gerrit patch (Closed) Base URL: https://skia.googlesource.com/skia@master
Patch Set: Cleanup Created 4 years, 3 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 5
6 # Recipe module for Skia Swarming trigger. 6 # Recipe module for Skia Swarming trigger.
7 7
8 8
9 import os 9 import os
10 import json 10 import json
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 properties = { 186 properties = {
187 'buildername': builder, 187 'buildername': builder,
188 'mastername': master, 188 'mastername': master,
189 'buildnumber': buildnumber, 189 'buildnumber': buildnumber,
190 'reason': 'Triggered by Skia swarm_trigger Recipe', 190 'reason': 'Triggered by Skia swarm_trigger Recipe',
191 'revision': got_revision, 191 'revision': got_revision,
192 'slavename': slave, 192 'slavename': slave,
193 'swarm_out_dir': '${ISOLATED_OUTDIR}', 193 'swarm_out_dir': '${ISOLATED_OUTDIR}',
194 } 194 }
195 if builder_cfg['is_trybot']: 195 if builder_cfg['is_trybot']:
196 properties['issue'] = str(api.properties['issue']) 196 if api.properties.get('patch_storage') == 'gerrit':
197 properties['patchset'] = str(api.properties['patchset']) 197 properties['patch_storage'] = api.properties['patch_storage']
198 properties['rietveld'] = api.properties['rietveld'] 198 properties['repository'] = api.properties['repository']
199 properties['event.patchSet.ref'] = api.properties['event.patchSet.ref']
200 properties['event.change.number'] = api.properties['event.change.number']
201 else:
202 properties['issue'] = str(api.properties['issue'])
203 properties['patchset'] = str(api.properties['patchset'])
204 properties['rietveld'] = api.properties['rietveld']
199 205
200 extra_args = [ 206 extra_args = [
201 '--workdir', '../../..', 207 '--workdir', '../../..',
202 'swarm_%s' % task_name, 208 'swarm_%s' % task_name,
203 ] 209 ]
204 for k, v in properties.iteritems(): 210 for k, v in properties.iteritems():
205 extra_args.append('%s=%s' % (k, v)) 211 extra_args.append('%s=%s' % (k, v))
206 212
207 isolate_base_dir = api.path['slave_build'] 213 isolate_base_dir = api.path['slave_build']
208 dimensions = swarm_dimensions(builder_cfg) 214 dimensions = swarm_dimensions(builder_cfg)
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 if api.path._test_data.enabled: 417 if api.path._test_data.enabled:
412 home_dir = '[HOME]' 418 home_dir = '[HOME]'
413 419
414 boto_path = None 420 boto_path = None
415 if boto_file: 421 if boto_file:
416 boto_path = api.path.join(home_dir, boto_file) 422 boto_path = api.path.join(home_dir, boto_file)
417 return {'AWS_CREDENTIAL_FILE': boto_path, 423 return {'AWS_CREDENTIAL_FILE': boto_path,
418 'BOTO_CONFIG': boto_path} 424 'BOTO_CONFIG': boto_path}
419 425
420 426
427 def get_issue_num(api):
428 if api.properties.get('patch_storage') == 'gerrit':
429 return str(api.properties['event.change.number'])
430 else:
431 return str(api.properties['issue'])
432
433
421 def perf_steps_trigger(api, builder_cfg, got_revision, infrabots_dir, 434 def perf_steps_trigger(api, builder_cfg, got_revision, infrabots_dir,
422 extra_hashes, cipd_packages): 435 extra_hashes, cipd_packages):
423 """Trigger perf tests via Swarming.""" 436 """Trigger perf tests via Swarming."""
424 437
425 expiration, hard_timeout, io_timeout = get_timeouts(builder_cfg) 438 expiration, hard_timeout, io_timeout = get_timeouts(builder_cfg)
426 return trigger_task( 439 return trigger_task(
427 api, 440 api,
428 'perf', 441 'perf',
429 api.properties['buildername'], 442 api.properties['buildername'],
430 api.properties['mastername'], 443 api.properties['mastername'],
(...skipping 30 matching lines...) Expand all
461 'nanobench_%s_%s.json' % (got_revision, git_timestamp)) 474 'nanobench_%s_%s.json' % (got_revision, git_timestamp))
462 api.file.copy('perf_results', src_results_file, dst_results_file, 475 api.file.copy('perf_results', src_results_file, dst_results_file,
463 infra_step=True) 476 infra_step=True)
464 477
465 gsutil_path = api.path['slave_build'].join( 478 gsutil_path = api.path['slave_build'].join(
466 'skia', 'infra', 'bots', '.recipe_deps', 'depot_tools', 'third_party', 479 'skia', 'infra', 'bots', '.recipe_deps', 'depot_tools', 'third_party',
467 'gsutil', 'gsutil') 480 'gsutil', 'gsutil')
468 upload_args = [api.properties['buildername'], api.properties['buildnumber'], 481 upload_args = [api.properties['buildername'], api.properties['buildnumber'],
469 perf_data_dir, got_revision, gsutil_path] 482 perf_data_dir, got_revision, gsutil_path]
470 if is_trybot: 483 if is_trybot:
471 upload_args.append(api.properties['issue']) 484 upload_args.append(get_issue_num(api))
borenet 2016/08/23 18:45:33 I'm just realizing that it's weird we don't includ
rmistry 2016/08/23 19:04:37 We do include the patchset in the DM and nanobench
borenet 2016/08/23 19:06:29 Gotcha.
472 api.python( 485 api.python(
473 'Upload perf results', 486 'Upload perf results',
474 script=api.core.resource('upload_bench_results.py'), 487 script=api.core.resource('upload_bench_results.py'),
475 args=upload_args, 488 args=upload_args,
476 cwd=api.path['checkout'], 489 cwd=api.path['checkout'],
477 infra_step=True) 490 infra_step=True)
478 491
479 492
480 def test_steps_trigger(api, builder_cfg, got_revision, infrabots_dir, 493 def test_steps_trigger(api, builder_cfg, got_revision, infrabots_dir,
481 extra_hashes, cipd_packages): 494 extra_hashes, cipd_packages):
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
513 526
514 # Upload them to Google Storage. 527 # Upload them to Google Storage.
515 api.python( 528 api.python(
516 'Upload DM Results', 529 'Upload DM Results',
517 script=api.core.resource('upload_dm_results.py'), 530 script=api.core.resource('upload_dm_results.py'),
518 args=[ 531 args=[
519 dm_dir, 532 dm_dir,
520 got_revision, 533 got_revision,
521 api.properties['buildername'], 534 api.properties['buildername'],
522 api.properties['buildnumber'], 535 api.properties['buildnumber'],
523 api.properties['issue'] if is_trybot else '', 536 get_issue_num(api) if is_trybot else '',
524 api.path['slave_build'].join('skia', 'common', 'py', 'utils'), 537 api.path['slave_build'].join('skia', 'common', 'py', 'utils'),
525 ], 538 ],
526 cwd=api.path['checkout'], 539 cwd=api.path['checkout'],
527 env=gsutil_env(api, 'chromium-skia-gm.boto'), 540 env=gsutil_env(api, 'chromium-skia-gm.boto'),
528 infra_step=True) 541 infra_step=True)
529 542
530 if builder_cfg['configuration'] == 'Coverage': 543 if builder_cfg['configuration'] == 'Coverage':
531 upload_coverage_results(api, task, got_revision, is_trybot) 544 upload_coverage_results(api, task, got_revision, is_trybot)
532 545
533 546
534 def upload_coverage_results(api, task, got_revision, is_trybot): 547 def upload_coverage_results(api, task, got_revision, is_trybot):
535 results_dir = task.task_output_dir.join('0') 548 results_dir = task.task_output_dir.join('0')
536 git_timestamp = api.git.get_timestamp(test_data='1408633190', 549 git_timestamp = api.git.get_timestamp(test_data='1408633190',
537 infra_step=True) 550 infra_step=True)
538 551
539 # Upload raw coverage data. 552 # Upload raw coverage data.
540 cov_file_basename = '%s.cov' % got_revision 553 cov_file_basename = '%s.cov' % got_revision
541 cov_file = results_dir.join(cov_file_basename) 554 cov_file = results_dir.join(cov_file_basename)
542 now = api.time.utcnow() 555 now = api.time.utcnow()
543 gs_json_path = '/'.join(( 556 gs_json_path = '/'.join((
544 str(now.year).zfill(4), str(now.month).zfill(2), 557 str(now.year).zfill(4), str(now.month).zfill(2),
545 str(now.day).zfill(2), str(now.hour).zfill(2), 558 str(now.day).zfill(2), str(now.hour).zfill(2),
546 api.properties['buildername'], 559 api.properties['buildername'],
547 str(api.properties['buildnumber']))) 560 str(api.properties['buildnumber'])))
548 if is_trybot: 561 if is_trybot:
549 gs_json_path = '/'.join(('trybot', gs_json_path, 562 gs_json_path = '/'.join(('trybot', gs_json_path, get_issue_num(api)))
550 str(api.properties['issue'])))
551 api.gsutil.upload( 563 api.gsutil.upload(
552 name='upload raw coverage data', 564 name='upload raw coverage data',
553 source=cov_file, 565 source=cov_file,
554 bucket='skia-infra', 566 bucket='skia-infra',
555 dest='/'.join(('coverage-raw-v1', gs_json_path, 567 dest='/'.join(('coverage-raw-v1', gs_json_path,
556 cov_file_basename)), 568 cov_file_basename)),
557 env={'AWS_CREDENTIAL_FILE': None, 'BOTO_CONFIG': None}, 569 env={'AWS_CREDENTIAL_FILE': None, 'BOTO_CONFIG': None},
558 ) 570 )
559 571
560 # Transform the nanobench_${git_hash}.json file received from swarming bot 572 # Transform the nanobench_${git_hash}.json file received from swarming bot
561 # into the nanobench_${git_hash}_${timestamp}.json file 573 # into the nanobench_${git_hash}_${timestamp}.json file
562 # upload_bench_results.py expects. 574 # upload_bench_results.py expects.
563 src_nano_file = results_dir.join('nanobench_%s.json' % got_revision) 575 src_nano_file = results_dir.join('nanobench_%s.json' % got_revision)
564 dst_nano_file = results_dir.join( 576 dst_nano_file = results_dir.join(
565 'nanobench_%s_%s.json' % (got_revision, git_timestamp)) 577 'nanobench_%s_%s.json' % (got_revision, git_timestamp))
566 api.file.copy('nanobench JSON', src_nano_file, dst_nano_file, 578 api.file.copy('nanobench JSON', src_nano_file, dst_nano_file,
567 infra_step=True) 579 infra_step=True)
568 api.file.remove('old nanobench JSON', src_nano_file) 580 api.file.remove('old nanobench JSON', src_nano_file)
569 581
570 # Upload nanobench JSON data. 582 # Upload nanobench JSON data.
571 gsutil_path = api.depot_tools.gsutil_py_path 583 gsutil_path = api.depot_tools.gsutil_py_path
572 upload_args = [api.properties['buildername'], api.properties['buildnumber'], 584 upload_args = [api.properties['buildername'], api.properties['buildnumber'],
573 results_dir, got_revision, gsutil_path] 585 results_dir, got_revision, gsutil_path]
574 if is_trybot: 586 if is_trybot:
575 upload_args.append(api.properties['issue']) 587 upload_args.append(get_issue_num(api))
576 api.python( 588 api.python(
577 'upload nanobench coverage results', 589 'upload nanobench coverage results',
578 script=api.core.resource('upload_bench_results.py'), 590 script=api.core.resource('upload_bench_results.py'),
579 args=upload_args, 591 args=upload_args,
580 cwd=api.path['checkout'], 592 cwd=api.path['checkout'],
581 env=gsutil_env(api, 'chromium-skia-gm.boto'), 593 env=gsutil_env(api, 'chromium-skia-gm.boto'),
582 infra_step=True) 594 infra_step=True)
583 595
584 # Transform the coverage_by_line_${git_hash}.json file received from 596 # Transform the coverage_by_line_${git_hash}.json file received from
585 # swarming bot into a coverage_by_line_${git_hash}_${timestamp}.json file. 597 # swarming bot into a coverage_by_line_${git_hash}_${timestamp}.json file.
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
766 test += api.path.exists(*paths) 778 test += api.path.exists(*paths)
767 779
768 return test 780 return test
769 781
770 782
771 def GenTests(api): 783 def GenTests(api):
772 for mastername, slaves in TEST_BUILDERS.iteritems(): 784 for mastername, slaves in TEST_BUILDERS.iteritems():
773 for slavename, builders_by_slave in slaves.iteritems(): 785 for slavename, builders_by_slave in slaves.iteritems():
774 for builder in builders_by_slave: 786 for builder in builders_by_slave:
775 yield test_for_bot(api, builder, mastername, slavename) 787 yield test_for_bot(api, builder, mastername, slavename)
788
789 gerrit_kwargs = {
790 'patch_storage': 'gerrit',
791 'repository': 'skia',
792 'event.patchSet.ref': 'refs/changes/00/2100/2',
793 'event.change.number': '2100',
794 }
795 yield (
796 api.test('recipe_with_gerrit_patch') +
797 api.properties(
798 buildername='Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-Trybot',
799 mastername='client.skia',
800 slavename='skiabot-linux-swarm-000',
801 buildnumber=5,
802 path_config='kitchen',
803 revision='abc123',
804 **gerrit_kwargs) +
805 api.step_data(
806 'upload new .isolated file for test_skia',
807 stdout=api.raw_io.output('def456 XYZ.isolated'))
808 )
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698