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

Side by Side Diff: scripts/slave/recipe_modules/chromium_tests/steps.py

Issue 2207263002: Add logcats link in builbot page for android swarming tasks (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/build.git@master
Patch Set: Update expectations Created 4 years, 4 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 | « no previous file | scripts/slave/recipes/chromium.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 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 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 import datetime 5 import datetime
6 import re 6 import re
7 import string 7 import string
8 8
9
10 class Test(object): 9 class Test(object):
11 """ 10 """
12 Base class for tests that can be retried after deapplying a previously 11 Base class for tests that can be retried after deapplying a previously
13 applied patch. 12 applied patch.
14 """ 13 """
15 14
16 def __init__(self): 15 def __init__(self):
17 super(Test, self).__init__() 16 super(Test, self).__init__()
18 self._test_runs = {} 17 self._test_runs = {}
19 18
(...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 if test['shard_index'] != 0 or test['total_shards'] != 1: 433 if test['shard_index'] != 0 or test['total_shards'] != 1:
435 args.extend(['--test-launcher-shard-index=%d' % test['shard_index'], 434 args.extend(['--test-launcher-shard-index=%d' % test['shard_index'],
436 '--test-launcher-total-shards=%d' % test['total_shards']]) 435 '--test-launcher-total-shards=%d' % test['total_shards']])
437 use_swarming = False 436 use_swarming = False
438 swarming_shards = 1 437 swarming_shards = 1
439 swarming_dimension_sets = None 438 swarming_dimension_sets = None
440 swarming_priority = None 439 swarming_priority = None
441 swarming_expiration = None 440 swarming_expiration = None
442 swarming_hard_timeout = None 441 swarming_hard_timeout = None
443 cipd_packages = None 442 cipd_packages = None
443 output_links = None
444 if enable_swarming: 444 if enable_swarming:
445 swarming_spec = test.get('swarming', {}) 445 swarming_spec = test.get('swarming', {})
446 if swarming_spec.get('can_use_on_swarming_builders'): 446 if swarming_spec.get('can_use_on_swarming_builders'):
447 use_swarming = True 447 use_swarming = True
448 swarming_shards = swarming_spec.get('shards', 1) 448 swarming_shards = swarming_spec.get('shards', 1)
449 swarming_dimension_sets = swarming_spec.get('dimension_sets') 449 swarming_dimension_sets = swarming_spec.get('dimension_sets')
450 swarming_priority = swarming_spec.get('priority_adjustment') 450 swarming_priority = swarming_spec.get('priority_adjustment')
451 swarming_expiration = swarming_spec.get('expiration') 451 swarming_expiration = swarming_spec.get('expiration')
452 swarming_hard_timeout = swarming_spec.get('hard_timeout') 452 swarming_hard_timeout = swarming_spec.get('hard_timeout')
453 packages = swarming_spec.get('cipd_packages') 453 packages = swarming_spec.get('cipd_packages')
454 output_links = swarming_spec.get('output_links')
454 if packages: 455 if packages:
455 cipd_packages = [(p['location'], 456 cipd_packages = [(p['location'],
456 p['cipd_package'], 457 p['cipd_package'],
457 p['revision']) 458 p['revision'])
458 for p in packages] 459 for p in packages]
459 override_compile_targets = test.get('override_compile_targets', None) 460 override_compile_targets = test.get('override_compile_targets', None)
460 override_isolate_target = test.get('override_isolate_target', None) 461 override_isolate_target = test.get('override_isolate_target', None)
461 target_name = str(test['test']) 462 target_name = str(test['test'])
462 name = str(test.get('name', target_name)) 463 name = str(test.get('name', target_name))
463 swarming_dimensions = swarming_dimensions or {} 464 swarming_dimensions = swarming_dimensions or {}
464 use_xvfb = test.get('use_xvfb', True) 465 use_xvfb = test.get('use_xvfb', True)
465 if use_swarming and swarming_dimension_sets: 466 if use_swarming and swarming_dimension_sets:
466 for dimensions in swarming_dimension_sets: 467 for dimensions in swarming_dimension_sets:
467 # Yield potentially multiple invocations of the same test, on 468 # Yield potentially multiple invocations of the same test, on
468 # different machine configurations. 469 # different machine configurations.
469 new_dimensions = dict(swarming_dimensions) 470 new_dimensions = dict(swarming_dimensions)
470 new_dimensions.update(dimensions) 471 new_dimensions.update(dimensions)
471 yield GTestTest(name, args=args, target_name=target_name, 472 yield GTestTest(name, args=args, target_name=target_name,
472 flakiness_dash=True, 473 flakiness_dash=True,
473 enable_swarming=True, 474 enable_swarming=True,
474 swarming_shards=swarming_shards, 475 swarming_shards=swarming_shards,
475 swarming_dimensions=new_dimensions, 476 swarming_dimensions=new_dimensions,
476 swarming_priority=swarming_priority, 477 swarming_priority=swarming_priority,
477 swarming_expiration=swarming_expiration, 478 swarming_expiration=swarming_expiration,
478 swarming_hard_timeout=swarming_hard_timeout, 479 swarming_hard_timeout=swarming_hard_timeout,
479 override_compile_targets=override_compile_targets, 480 override_compile_targets=override_compile_targets,
480 override_isolate_target=override_isolate_target, 481 override_isolate_target=override_isolate_target,
481 use_xvfb=use_xvfb, cipd_packages=cipd_packages) 482 use_xvfb=use_xvfb, cipd_packages=cipd_packages,
483 output_links=output_links)
482 else: 484 else:
483 yield GTestTest(name, args=args, target_name=target_name, 485 yield GTestTest(name, args=args, target_name=target_name,
484 flakiness_dash=True, 486 flakiness_dash=True,
485 enable_swarming=use_swarming, 487 enable_swarming=use_swarming,
486 swarming_dimensions=swarming_dimensions, 488 swarming_dimensions=swarming_dimensions,
487 swarming_shards=swarming_shards, 489 swarming_shards=swarming_shards,
488 swarming_priority=swarming_priority, 490 swarming_priority=swarming_priority,
489 swarming_expiration=swarming_expiration, 491 swarming_expiration=swarming_expiration,
490 swarming_hard_timeout=swarming_hard_timeout, 492 swarming_hard_timeout=swarming_hard_timeout,
491 override_compile_targets=override_compile_targets, 493 override_compile_targets=override_compile_targets,
492 override_isolate_target=override_isolate_target, 494 override_isolate_target=override_isolate_target,
493 use_xvfb=use_xvfb, cipd_packages=cipd_packages) 495 use_xvfb=use_xvfb, cipd_packages=cipd_packages,
496 output_links=output_links)
494 497
495 498
496 def generate_instrumentation_test(api, chromium_tests_api, mastername, 499 def generate_instrumentation_test(api, chromium_tests_api, mastername,
497 buildername, test_spec, bot_update_step, 500 buildername, test_spec, bot_update_step,
498 enable_swarming=False, 501 enable_swarming=False,
499 swarming_dimensions=None, 502 swarming_dimensions=None,
500 scripts_compile_targets=None): 503 scripts_compile_targets=None):
501 for test in test_spec.get(buildername, {}).get('instrumentation_tests', []): 504 for test in test_spec.get(buildername, {}).get('instrumentation_tests', []):
502 test_name = str(test.get('test')) 505 test_name = str(test.get('test'))
503 use_swarming = False 506 use_swarming = False
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
829 @property 832 @property
830 def uses_swarming(self): 833 def uses_swarming(self):
831 return True 834 return True
832 835
833 836
834 class SwarmingGTestTest(SwarmingTest): 837 class SwarmingGTestTest(SwarmingTest):
835 def __init__(self, name, args=None, target_name=None, shards=1, 838 def __init__(self, name, args=None, target_name=None, shards=1,
836 dimensions=None, tags=None, extra_suffix=None, priority=None, 839 dimensions=None, tags=None, extra_suffix=None, priority=None,
837 expiration=None, hard_timeout=None, upload_test_results=True, 840 expiration=None, hard_timeout=None, upload_test_results=True,
838 override_compile_targets=None, override_isolate_target=None, 841 override_compile_targets=None, override_isolate_target=None,
839 cipd_packages=None): 842 cipd_packages=None, output_links=None):
840 super(SwarmingGTestTest, self).__init__(name, dimensions, tags, target_name, 843 super(SwarmingGTestTest, self).__init__(name, dimensions, tags, target_name,
841 extra_suffix, priority, expiration, 844 extra_suffix, priority, expiration,
842 hard_timeout) 845 hard_timeout)
843 self._args = args or [] 846 self._args = args or []
844 self._shards = shards 847 self._shards = shards
845 self._upload_test_results = upload_test_results 848 self._upload_test_results = upload_test_results
846 self._override_compile_targets = override_compile_targets 849 self._override_compile_targets = override_compile_targets
847 self._override_isolate_target = override_isolate_target 850 self._override_isolate_target = override_isolate_target
848 self._cipd_packages = cipd_packages 851 self._cipd_packages = cipd_packages
852 self._output_links = output_links
849 853
850 def compile_targets(self, api): 854 def compile_targets(self, api):
851 # <X>_run target depends on <X>, and then isolates it invoking isolate.py. 855 # <X>_run target depends on <X>, and then isolates it invoking isolate.py.
852 # It is a convention, not a hard coded rule. 856 # It is a convention, not a hard coded rule.
853 # Also include name without the _run suffix to help recipes correctly 857 # Also include name without the _run suffix to help recipes correctly
854 # interpret results returned by "analyze". 858 # interpret results returned by "analyze".
855 if self._override_compile_targets: 859 if self._override_compile_targets:
856 return self._override_compile_targets 860 return self._override_compile_targets
857 861
858 if api.chromium.c.TARGET_PLATFORM == 'android': 862 if api.chromium.c.TARGET_PLATFORM == 'android':
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
905 909
906 return True, gtest_results.failures 910 return True, gtest_results.failures
907 911
908 def post_run(self, api, suffix, test_filter=None): 912 def post_run(self, api, suffix, test_filter=None):
909 """Waits for launched test to finish and collects the results.""" 913 """Waits for launched test to finish and collects the results."""
910 try: 914 try:
911 super(SwarmingGTestTest, self).post_run( 915 super(SwarmingGTestTest, self).post_run(
912 api, suffix,test_filter=test_filter) 916 api, suffix,test_filter=test_filter)
913 finally: 917 finally:
914 step_result = api.step.active_result 918 step_result = api.step.active_result
919
920 # Populate additional swarming links on buildbot page
921 if self._output_links:
922 for task in self._tasks.values():
923 for test in task.trigger_output['tasks'].values():
924 task_id = test.get('task_id')
925 shard_index = str(test.get('shard_index'))
926 for output in self._output_links:
927 name = output['name']
928 link = output['link']
ghost stip (do not use) 2016/08/08 20:51:12 can you move this down so it's just above 931? tha
929 name = (name.replace('${SHARD_INDEX}', shard_index)).replace(
930 '${TASK_ID}', task_id)
931 link = ''.join(link)
ghost stip (do not use) 2016/08/08 20:51:12 put a comment here on why we're doing this
932 link = (link.replace('${SHARD_INDEX}', shard_index)).replace(
933 '${TASK_ID}', task_id)
934 step_result.presentation.links[name] = link
935
915 # Only upload test results if we have gtest results. 936 # Only upload test results if we have gtest results.
916 if (self._upload_test_results and 937 if (self._upload_test_results and
917 hasattr(step_result, 'test_utils') and 938 hasattr(step_result, 'test_utils') and
918 hasattr(step_result.test_utils, 'gtest_results')): 939 hasattr(step_result.test_utils, 'gtest_results')):
919 gtest_results = getattr(step_result.test_utils, 'gtest_results', None) 940 gtest_results = getattr(step_result.test_utils, 'gtest_results', None)
920 if gtest_results and gtest_results.raw: 941 if gtest_results and gtest_results.raw:
921 parsed_gtest_data = gtest_results.raw 942 parsed_gtest_data = gtest_results.raw
922 chrome_revision_cp = api.bot_update.last_returned_properties.get( 943 chrome_revision_cp = api.bot_update.last_returned_properties.get(
923 'got_revision_cp', 'x@{#0}') 944 'got_revision_cp', 'x@{#0}')
924 chrome_revision = str(api.commit_position.parse_revision( 945 chrome_revision = str(api.commit_position.parse_revision(
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
1148 yield LocalIsolatedScriptTest( 1169 yield LocalIsolatedScriptTest(
1149 name=name, args=args, target_name=target_name, 1170 name=name, args=args, target_name=target_name,
1150 override_compile_targets=override_compile_targets) 1171 override_compile_targets=override_compile_targets)
1151 1172
1152 1173
1153 class GTestTest(Test): 1174 class GTestTest(Test):
1154 def __init__(self, name, args=None, target_name=None, enable_swarming=False, 1175 def __init__(self, name, args=None, target_name=None, enable_swarming=False,
1155 swarming_shards=1, swarming_dimensions=None, swarming_tags=None, 1176 swarming_shards=1, swarming_dimensions=None, swarming_tags=None,
1156 swarming_extra_suffix=None, swarming_priority=None, 1177 swarming_extra_suffix=None, swarming_priority=None,
1157 swarming_expiration=None, swarming_hard_timeout=None, 1178 swarming_expiration=None, swarming_hard_timeout=None,
1158 cipd_packages=None, **runtest_kwargs): 1179 cipd_packages=None, output_links=None, **runtest_kwargs):
1159 super(GTestTest, self).__init__() 1180 super(GTestTest, self).__init__()
1160 if enable_swarming: 1181 if enable_swarming:
1161 self._test = SwarmingGTestTest( 1182 self._test = SwarmingGTestTest(
1162 name, args, target_name, swarming_shards, swarming_dimensions, 1183 name, args, target_name, swarming_shards, swarming_dimensions,
1163 swarming_tags, swarming_extra_suffix, swarming_priority, 1184 swarming_tags, swarming_extra_suffix, swarming_priority,
1164 swarming_expiration, swarming_hard_timeout, 1185 swarming_expiration, swarming_hard_timeout,
1165 cipd_packages=cipd_packages, 1186 cipd_packages=cipd_packages, output_links=output_links,
1166 override_compile_targets=runtest_kwargs.get( 1187 override_compile_targets=runtest_kwargs.get(
1167 'override_compile_targets'), 1188 'override_compile_targets'),
1168 override_isolate_target=runtest_kwargs.get( 1189 override_isolate_target=runtest_kwargs.get(
1169 'override_isolate_target')) 1190 'override_isolate_target'))
1170 else: 1191 else:
1171 self._test = LocalGTestTest(name, args, target_name, **runtest_kwargs) 1192 self._test = LocalGTestTest(name, args, target_name, **runtest_kwargs)
1172 1193
1173 self.enable_swarming = enable_swarming 1194 self.enable_swarming = enable_swarming
1174 1195
1175 @property 1196 @property
(...skipping 568 matching lines...) Expand 10 before | Expand all | Expand 10 after
1744 args=args) 1765 args=args)
1745 api.gsutil.upload( 1766 api.gsutil.upload(
1746 temp_output_dir.join( 1767 temp_output_dir.join(
1747 '%s-android-chrome.json' % timestamp_string), 1768 '%s-android-chrome.json' % timestamp_string),
1748 'chromium-annotated-tests', 'android') 1769 'chromium-annotated-tests', 'android')
1749 1770
1750 GOMA_TESTS = [ 1771 GOMA_TESTS = [
1751 GTestTest('base_unittests'), 1772 GTestTest('base_unittests'),
1752 GTestTest('content_unittests'), 1773 GTestTest('content_unittests'),
1753 ] 1774 ]
OLDNEW
« no previous file with comments | « no previous file | scripts/slave/recipes/chromium.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698