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

Side by Side Diff: scripts/slave/recipes/skia/swarm_trigger.py

Issue 2162563002: [Skia] Convert Sk Images to a CIPD package (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/build.git@master
Patch Set: Fix whitespace Created 4 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
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 json 9 import json
10 10
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 api.gsutil.upload( 554 api.gsutil.upload(
555 name='upload line-by-line coverage data', 555 name='upload line-by-line coverage data',
556 source=dst_lbl_file, 556 source=dst_lbl_file,
557 bucket='skia-infra', 557 bucket='skia-infra',
558 dest='/'.join(('coverage-json-v1', gs_json_path, 558 dest='/'.join(('coverage-json-v1', gs_json_path,
559 dst_lbl_file_basename)), 559 dst_lbl_file_basename)),
560 env={'AWS_CREDENTIAL_FILE': None, 'BOTO_CONFIG': None}, 560 env={'AWS_CREDENTIAL_FILE': None, 'BOTO_CONFIG': None},
561 ) 561 )
562 562
563 563
564 def cipd_pkg(api, infrabots_dir, asset_name):
565 """Find and return the CIPD package info for the given asset."""
566 version_file = infrabots_dir.join('assets', asset_name, 'VERSION')
567 version = api.skia._readfile(version_file,
568 name='read %s VERSION' % asset_name,
569 test_data='0').rstrip()
570 version = 'version:%s' % version
571 return (asset_name, 'skia/bots/%s' % asset_name, version)
572
573
564 def RunSteps(api): 574 def RunSteps(api):
565 got_revision = checkout_steps(api) 575 got_revision = checkout_steps(api)
566 api.skia_swarming.setup( 576 api.skia_swarming.setup(
567 api.path['checkout'].join('infra', 'bots', 'tools', 'luci-go'), 577 api.path['checkout'].join('infra', 'bots', 'tools', 'luci-go'),
568 swarming_rev='') 578 swarming_rev='')
569 579
570 # Run gsutil.py to ensure that it's installed. 580 # Run gsutil.py to ensure that it's installed.
571 api.gsutil(['help']) 581 api.gsutil(['help'])
572 582
573 recipes_hash = isolate_recipes(api) 583 recipes_hash = isolate_recipes(api)
574 extra_hashes = [recipes_hash] 584 extra_hashes = [recipes_hash]
575 585
576 # Get ready to compile. 586 # Get ready to compile.
577 compile_cipd_deps = [] 587 compile_cipd_deps = []
578 extra_compile_hashes = [recipes_hash] 588 extra_compile_hashes = [recipes_hash]
579 589
580 infrabots_dir = api.path['checkout'].join('infra', 'bots') 590 infrabots_dir = api.path['checkout'].join('infra', 'bots')
581 if 'Infra' in api.properties['buildername']: 591 if 'Infra' in api.properties['buildername']:
582 return infra_swarm(api, got_revision, infrabots_dir, extra_hashes) 592 return infra_swarm(api, got_revision, infrabots_dir, extra_hashes)
583 593
584 builder_spec = api.skia.get_builder_spec(api.path['checkout'], 594 builder_spec = api.skia.get_builder_spec(api.path['checkout'],
585 api.properties['buildername']) 595 api.properties['buildername'])
586 builder_cfg = builder_spec['builder_cfg'] 596 builder_cfg = builder_spec['builder_cfg']
587 597
588 # Android bots require an SDK. 598 # Android bots require an SDK.
589 if 'Android' in api.properties['buildername']: 599 if 'Android' in api.properties['buildername']:
590 android_sdk_version_file = infrabots_dir.join( 600 android_sdk_version_file = infrabots_dir.join(
591 'assets', 'android_sdk', 'VERSION') 601 'assets', 'android_sdk', 'VERSION')
592 if api.path.exists(android_sdk_version_file): 602 if api.path.exists(android_sdk_version_file):
593 android_sdk_version = api.skia._readfile(android_sdk_version_file, 603 compile_cipd_deps.append(cipd_pkg(api, infrabots_dir, 'android_sdk'))
594 name='read android_sdk VERSION',
595 test_data='0').rstrip()
596 android_sdk_version = 'version:%s' % android_sdk_version
597 pkg = ('android_sdk', 'skia/bots/android_sdk', android_sdk_version)
598 compile_cipd_deps.append(pkg)
599 else: 604 else:
600 # TODO(borenet): Remove this legacy method after 7/1/2016. 605 # TODO(borenet): Remove this legacy method after 7/1/2016.
601 test_data = 'a27a70d73b85191b9e671ff2a44547c3f7cc15ee' 606 test_data = 'a27a70d73b85191b9e671ff2a44547c3f7cc15ee'
602 hash_file = infrabots_dir.join('android_sdk_hash') 607 hash_file = infrabots_dir.join('android_sdk_hash')
603 # try/except as a temporary measure to prevent breakages for backfills 608 # try/except as a temporary measure to prevent breakages for backfills
604 # and branches. 609 # and branches.
605 try: 610 try:
606 h = api.skia._readfile(hash_file, 611 h = api.skia._readfile(hash_file,
607 name='Read android_sdk_hash', 612 name='Read android_sdk_hash',
608 test_data=test_data).rstrip() 613 test_data=test_data).rstrip()
(...skipping 21 matching lines...) Expand all
630 cipd_packages = [] 635 cipd_packages = []
631 636
632 do_test_steps = builder_spec['do_test_steps'] 637 do_test_steps = builder_spec['do_test_steps']
633 do_perf_steps = builder_spec['do_perf_steps'] 638 do_perf_steps = builder_spec['do_perf_steps']
634 639
635 if not (do_test_steps or do_perf_steps): 640 if not (do_test_steps or do_perf_steps):
636 return 641 return
637 642
638 api.skia.download_skps(api.path['slave_build'].join('tmp'), 643 api.skia.download_skps(api.path['slave_build'].join('tmp'),
639 api.path['slave_build'].join('skps')) 644 api.path['slave_build'].join('skps'))
640 api.skia.download_images(api.path['slave_build'].join('tmp'), 645 if api.path.exists(infrabots_dir.join('assets', 'skimage', 'VERSION')):
641 api.path['slave_build'].join('images')) 646 cipd_packages.append(cipd_pkg(api, infrabots_dir, 'skimage'))
647 else:
648 # TODO(borenet): Remove this once enough time has passed.
649 api.skia.download_images(api.path['slave_build'].join('tmp'),
650 api.path['slave_build'].join('images'))
642 651
643 test_task = None 652 test_task = None
644 perf_task = None 653 perf_task = None
645 if do_test_steps: 654 if do_test_steps:
646 test_task = test_steps_trigger(api, builder_spec, got_revision, 655 test_task = test_steps_trigger(api, builder_spec, got_revision,
647 infrabots_dir, extra_hashes, cipd_packages) 656 infrabots_dir, extra_hashes, cipd_packages)
648 if do_perf_steps: 657 if do_perf_steps:
649 perf_task = perf_steps_trigger(api, builder_spec, got_revision, 658 perf_task = perf_steps_trigger(api, builder_spec, got_revision,
650 infrabots_dir, extra_hashes, cipd_packages) 659 infrabots_dir, extra_hashes, cipd_packages)
651 is_trybot = builder_cfg['is_trybot'] 660 is_trybot = builder_cfg['is_trybot']
652 if test_task: 661 if test_task:
653 test_steps_collect(api, test_task, builder_spec['upload_dm_results'], 662 test_steps_collect(api, test_task, builder_spec['upload_dm_results'],
654 got_revision, is_trybot, builder_cfg) 663 got_revision, is_trybot, builder_cfg)
655 if perf_task: 664 if perf_task:
656 perf_steps_collect(api, perf_task, builder_spec['upload_perf_results'], 665 perf_steps_collect(api, perf_task, builder_spec['upload_perf_results'],
657 got_revision, is_trybot) 666 got_revision, is_trybot)
658 667
659 668
660 def test_for_bot(api, builder, mastername, slavename, testname=None, 669 def test_for_bot(api, builder, mastername, slavename, testname=None,
661 legacy_android_sdk=False, legacy_win_toolchain=False): 670 legacy_android_sdk=False, legacy_win_toolchain=False,
671 legacy_skimage_version=False):
662 """Generate a test for the given bot.""" 672 """Generate a test for the given bot."""
663 testname = testname or builder 673 testname = testname or builder
664 test = ( 674 test = (
665 api.test(testname) + 675 api.test(testname) +
666 api.properties(buildername=builder, 676 api.properties(buildername=builder,
667 mastername=mastername, 677 mastername=mastername,
668 slavename=slavename, 678 slavename=slavename,
669 buildnumber=5, 679 buildnumber=5,
670 revision='abc123') + 680 revision='abc123')
671 api.path.exists(
672 api.path['slave_build'].join('skia'),
673 api.path['slave_build'].join('tmp', 'uninteresting_hashes.txt')
674 )
675 ) 681 )
682 paths = [
683 api.path['slave_build'].join('skia'),
684 api.path['slave_build'].join('tmp', 'uninteresting_hashes.txt'),
685 ]
676 if 'Trybot' in builder: 686 if 'Trybot' in builder:
677 test += api.properties(issue=500, 687 test += api.properties(issue=500,
678 patchset=1, 688 patchset=1,
679 rietveld='https://codereview.chromium.org') 689 rietveld='https://codereview.chromium.org')
680 if 'Android' in builder: 690 if 'Android' in builder:
681 if not legacy_android_sdk: 691 if not legacy_android_sdk:
682 test += api.path.exists(api.path['slave_build'].join( 692 paths.append(api.path['slave_build'].join(
683 'skia', 'infra', 'bots', 'assets', 'android_sdk', 'VERSION')) 693 'skia', 'infra', 'bots', 'assets', 'android_sdk', 'VERSION'))
684 if 'Coverage' not in builder and 'Infra' not in builder: 694 if 'Coverage' not in builder and 'Infra' not in builder:
685 test += api.step_data( 695 test += api.step_data(
686 'upload new .isolated file for compile_skia', 696 'upload new .isolated file for compile_skia',
687 stdout=api.raw_io.output('def456 XYZ.isolated')) 697 stdout=api.raw_io.output('def456 XYZ.isolated'))
688 if 'Test' in builder: 698 if 'Test' in builder:
689 test += api.step_data( 699 test += api.step_data(
690 'upload new .isolated file for test_skia', 700 'upload new .isolated file for test_skia',
691 stdout=api.raw_io.output('def456 XYZ.isolated')) 701 stdout=api.raw_io.output('def456 XYZ.isolated'))
692 if ('Test' in builder and 'Debug' in builder) or 'Perf' in builder or ( 702 if ('Test' in builder and 'Debug' in builder) or 'Perf' in builder or (
693 'Valgrind' in builder and 'Test' in builder): 703 'Valgrind' in builder and 'Test' in builder):
694 test += api.step_data( 704 test += api.step_data(
695 'upload new .isolated file for perf_skia', 705 'upload new .isolated file for perf_skia',
696 stdout=api.raw_io.output('def456 XYZ.isolated')) 706 stdout=api.raw_io.output('def456 XYZ.isolated'))
697 if 'Housekeeper' in builder: 707 if 'Housekeeper' in builder:
698 test += api.step_data( 708 test += api.step_data(
699 'upload new .isolated file for housekeeper_skia', 709 'upload new .isolated file for housekeeper_skia',
700 stdout=api.raw_io.output('def456 XYZ.isolated')) 710 stdout=api.raw_io.output('def456 XYZ.isolated'))
701 if 'Infra' in builder: 711 if 'Infra' in builder:
702 test += api.step_data( 712 test += api.step_data(
703 'upload new .isolated file for infra_skia', 713 'upload new .isolated file for infra_skia',
704 stdout=api.raw_io.output('def456 XYZ.isolated')) 714 stdout=api.raw_io.output('def456 XYZ.isolated'))
705 if 'Win' in builder: 715 if 'Win' in builder:
706 if not legacy_win_toolchain: 716 if not legacy_win_toolchain:
707 test += api.path.exists(api.path['slave_build'].join( 717 paths.append(api.path['slave_build'].join(
708 'skia', 'infra', 'bots', 'assets', 'win_toolchain', 'VERSION')) 718 'skia', 'infra', 'bots', 'assets', 'win_toolchain', 'VERSION'))
719 if not legacy_skimage_version:
720 paths.append(api.path['slave_build'].join(
721 'skia', 'infra', 'bots', 'assets', 'skimage', 'VERSION'))
722
723 test += api.path.exists(*paths)
709 724
710 return test 725 return test
711 726
712 727
713 def GenTests(api): 728 def GenTests(api):
714 for mastername, slaves in TEST_BUILDERS.iteritems(): 729 for mastername, slaves in TEST_BUILDERS.iteritems():
715 for slavename, builders_by_slave in slaves.iteritems(): 730 for slavename, builders_by_slave in slaves.iteritems():
716 for builder in builders_by_slave: 731 for builder in builders_by_slave:
717 yield test_for_bot(api, builder, mastername, slavename) 732 yield test_for_bot(api, builder, mastername, slavename)
718 733
719 builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug' 734 builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug'
720 master = 'client.skia' 735 master = 'client.skia'
721 slave = 'skiabot-linux-test-000' 736 slave = 'skiabot-linux-test-000'
722 test = test_for_bot(api, builder, master, slave, 'No_downloaded_SKP_VERSION') 737 test = test_for_bot(api, builder, master, slave, 'No_downloaded_SKP_VERSION')
723 test += api.step_data('Get downloaded SKP_VERSION', retcode=1) 738 test += api.step_data('Get downloaded SKP_VERSION', retcode=1)
724 test += api.path.exists(
725 api.path['slave_build'].join('skia'),
726 api.path['slave_build'].join('tmp', 'uninteresting_hashes.txt')
727 )
728 yield test 739 yield test
729 740
730 test = test_for_bot(api, builder, master, slave, 741 test = test_for_bot(api, builder, master, slave,
731 'Wrong_downloaded_SKP_VERSION') 742 'Wrong_downloaded_SKP_VERSION')
732 test += api.properties(test_downloaded_skp_version='999') 743 test += api.properties(test_downloaded_skp_version='999')
733 test += api.path.exists(
734 api.path['slave_build'].join('skia'),
735 api.path['slave_build'].join('tmp', 'uninteresting_hashes.txt')
736 )
737 yield test 744 yield test
738 745
739 builder = 'Build-Ubuntu-GCC-Arm7-Release-Android_Vulkan' 746 builder = 'Build-Ubuntu-GCC-Arm7-Release-Android_Vulkan'
740 master = 'client.skia.compile' 747 master = 'client.skia.compile'
741 slave = 'skiabot-linux-compile-000' 748 slave = 'skiabot-linux-compile-000'
742 test = test_for_bot(api, builder, master, slave, 'legacy_android_sdk', 749 test = test_for_bot(api, builder, master, slave, 'legacy_android_sdk',
743 legacy_android_sdk=True) 750 legacy_android_sdk=True)
744 test += api.step_data('Read android_sdk_hash', 751 test += api.step_data('Read android_sdk_hash',
745 stdout=api.raw_io.output('<android_sdk_hash>')) 752 stdout=api.raw_io.output('<android_sdk_hash>'))
746 yield test 753 yield test
747 754
748 test = test_for_bot(api, builder, master, slave, 'Missing_android_sdk_hash', 755 test = test_for_bot(api, builder, master, slave, 'Missing_android_sdk_hash',
749 legacy_android_sdk=True) 756 legacy_android_sdk=True)
750 test += api.step_data('Read android_sdk_hash', retcode=1) 757 test += api.step_data('Read android_sdk_hash', retcode=1)
751 yield test 758 yield test
752 759
753 builder = 'Build-Win-MSVC-x86_64-Release-Vulkan' 760 builder = 'Build-Win-MSVC-x86_64-Release-Vulkan'
754 master = 'client.skia.compile' 761 master = 'client.skia.compile'
755 test = test_for_bot(api, builder, master, slave, 'legacy_win_toolchain', 762 test = test_for_bot(api, builder, master, slave, 'legacy_win_toolchain',
756 legacy_win_toolchain=True) 763 legacy_win_toolchain=True)
757 yield test 764 yield test
765
766 builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug'
767 master = 'client.skia'
768 test = test_for_bot(api, builder, master, slave, 'legacy_skimage_version',
769 legacy_skimage_version=True)
770 test += api.step_data('Get downloaded SK_IMAGE_VERSION', retcode=1)
771 yield test
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698