Index: PRESUBMIT.py |
diff --git a/PRESUBMIT.py b/PRESUBMIT.py |
index 91748c29c2500018131287cbd81bb5b9ad345595..c942ffb54b7cda149569ed892e1bb6a1b8dc2bfa 100644 |
--- a/PRESUBMIT.py |
+++ b/PRESUBMIT.py |
@@ -1003,6 +1003,166 @@ def CheckChangeOnUpload(input_api, output_api): |
return results |
+def GetDefaultTryConfigs(bots=None): |
+ """Returns a list of ('bot', set(['tests']), optionally filtered by [bots]. |
+ |
+ To add tests to this list, they MUST be in the the corresponding master's |
+ gatekeeper config. For example, anything on master.chromium would be closed by |
+ /chrome/trunk/tools/build/masters/master.chromium/master_gatekeeper_cfg.py. |
+ |
+ If 'bots' is specified, will only return configurations for bots in that list. |
+ """ |
+ |
+ standard_tests = [ |
+ 'base_unittests', |
+ 'browser_tests', |
+ 'cacheinvalidation_unittests', |
+ 'check_deps', |
+ 'content_browsertests', |
+ 'content_unittests', |
+ 'crypto_unittests', |
+ #'gfx_unittests', |
+ 'gpu_unittests', |
+ 'ipc_tests', |
+ 'interactive_ui_tests', |
+ 'jingle_unittests', |
+ 'media_unittests', |
+ 'net_unittests', |
+ 'ppapi_unittests', |
+ 'printing_unittests', |
+ 'sql_unittests', |
+ 'sync_unit_tests', |
+ 'unit_tests', |
+ # Broken in release. |
+ #'url_unittests', |
+ #'webkit_unit_tests', |
+ ] |
+ |
+ # Use a smaller set of tests for *_aura, since there's a lot of overlap with |
+ # the corresponding *_rel builders. |
+ # Note: *_aura are Release builders even if their names convey otherwise. |
+ aura_tests = [ |
+ 'app_list_unittests', |
+ 'aura_unittests', |
+ 'browser_tests', |
+ 'compositor_unittests', |
+ 'content_browsertests', |
+ 'content_unittests', |
+ 'interactive_ui_tests', |
+ 'unit_tests', |
+ 'views_unittests', |
+ ] |
+ linux_aura_tests = aura_tests[:] |
+ linux_aura_tests.remove('views_unittests') |
+ win7_aura_tests = aura_tests[:] |
+ win7_aura_tests.remove('app_list_unittests') |
+ builders_and_tests = { |
+ # TODO(maruel): Figure out a way to run 'sizes' where people can |
+ # effectively update the perf expectation correctly. This requires a |
+ # clobber=True build running 'sizes'. 'sizes' is not accurate with |
+ # incremental build. Reference: |
+ # http://chromium.org/developers/tree-sheriffs/perf-sheriffs. |
+ # TODO(maruel): An option would be to run 'sizes' but not count a failure |
+ # of this step as a try job failure. |
+ 'android_dbg': ['slave_steps'], |
+ 'android_clang_dbg': ['slave_steps'], |
+ 'android_aosp': ['compile'], |
+ 'ios_dbg_simulator': [ |
+ 'compile', |
+ 'base_unittests', |
+ 'content_unittests', |
+ 'crypto_unittests', |
+ 'url_unittests', |
+ 'net_unittests', |
+ 'sql_unittests', |
+ 'ui_unittests', |
+ ], |
+ 'ios_rel_device': ['compile'], |
+ 'linux_aura': linux_aura_tests, |
+ 'linux_asan': ['defaulttests'], |
+ 'linux_clang': ['compile'], |
+ 'linux_chromeos_clang': ['compile'], |
+ # Note: It is a Release builder even if its name convey otherwise. |
+ 'linux_chromeos': standard_tests + [ |
+ 'app_list_unittests', |
+ 'aura_unittests', |
+ 'ash_unittests', |
+ 'chromeos_unittests', |
+ 'components_unittests', |
+ 'dbus_unittests', |
+ 'device_unittests', |
+ 'sandbox_linux_unittests', |
+ ], |
+ 'linux_rel': standard_tests + [ |
+ 'cc_unittests', |
+ 'chromedriver2_unittests', |
+ 'components_unittests', |
+ 'nacl_integration', |
+ 'remoting_unittests', |
+ 'sandbox_linux_unittests', |
+ 'sync_integration_tests', |
+ ], |
+ 'mac': ['compile'], |
+ 'mac_rel': standard_tests + [ |
+ 'app_list_unittests', |
+ 'cc_unittests', |
+ 'chromedriver2_unittests', |
+ 'components_unittests', |
+ 'google_apis_unittests', |
+ 'message_center_unittests', |
+ 'nacl_integration', |
+ 'remoting_unittests', |
+ 'sync_integration_tests', |
+ 'telemetry_unittests', |
+ ], |
+ 'win': ['compile'], |
+ 'win7_aura': win7_aura_tests + [ |
+ 'ash_unittests', |
+ ], |
+ 'win_rel': standard_tests + [ |
+ 'app_list_unittests', |
+ 'cc_unittests', |
+ 'chrome_frame_net_tests', |
+ 'chrome_frame_tests', |
+ 'chrome_frame_unittests', |
+ 'chromedriver2_unittests', |
+ 'components_unittests', |
+ 'installer_util_unittests', |
+ 'mini_installer_test', |
+ 'nacl_integration', |
+ 'remoting_unittests', |
+ 'sync_integration_tests', |
+ 'telemetry_unittests', |
+ ], |
+ 'win_x64_rel': [ |
+ 'base_unittests', |
+ ], |
+ } |
+ |
+ swarm_enabled_builders = ( |
+ 'linux_rel', |
+ 'mac_rel', |
+ ) |
+ |
+ swarm_enabled_tests = ( |
+ 'base_unittests', |
+ 'browser_tests', |
+ 'interactive_ui_tests', |
+ 'net_unittests', |
+ 'unit_tests', |
+ ) |
+ |
+ for bot in builders_and_tests: |
+ if bot in swarm_enabled_builders: |
+ builders_and_tests[bot] = [x + '_swarm' if x in swarm_enabled_tests else x |
+ for x in builders_and_tests[bot]] |
+ |
+ if bots: |
+ return [(bot, set(builders_and_tests[bot])) for bot in bots] |
+ else: |
+ return [(bot, set(tests)) for bot, tests in builders_and_tests.iteritems()] |
+ |
+ |
def CheckChangeOnCommit(input_api, output_api): |
results = [] |
results.extend(_CommonChecks(input_api, output_api)) |
@@ -1034,17 +1194,27 @@ def GetPreferredTrySlaves(project, change): |
return [] |
if all(re.search('\.(m|mm)$|(^|[/_])mac[/_.]', f) for f in files): |
- return ['mac_rel', 'mac:compile'] |
+ return GetDefaultTryConfigs(['mac_rel']) + [ |
+ ('mac', set(['compile']))] |
if all(re.search('(^|[/_])win[/_.]', f) for f in files): |
- return ['win_rel', 'win7_aura', 'win:compile'] |
+ return GetDefaultTryConfigs(['win_rel', 'win7_aura']) + [ |
+ ('win', set(['compile']))] |
if all(re.search('(^|[/_])android[/_.]', f) for f in files): |
- return ['android_aosp', 'android_dbg', 'android_clang_dbg'] |
+ return GetDefaultTryConfigs([ |
+ 'android_aosp', |
+ 'android_clang_dbg', |
+ 'android_dbg', |
+ ]) |
if all(re.search('^native_client_sdk', f) for f in files): |
- return ['linux_nacl_sdk', 'win_nacl_sdk', 'mac_nacl_sdk'] |
+ return GetDefaultTryConfigs([ |
+ 'linux_nacl_sdk', |
+ 'mac_nacl_sdk', |
+ 'win_nacl_sdk', |
+ ]) |
if all(re.search('[/_]ios[/_.]', f) for f in files): |
- return ['ios_rel_device', 'ios_dbg_simulator'] |
+ return GetDefaultTryConfigs(['ios_rel_device', 'ios_dbg_simulator']) |
- trybots = [ |
+ trybots = GetDefaultTryConfigs([ |
'android_clang_dbg', |
'android_dbg', |
'ios_dbg_simulator', |
@@ -1052,20 +1222,21 @@ def GetPreferredTrySlaves(project, change): |
'linux_asan', |
'linux_aura', |
'linux_chromeos', |
- 'linux_clang:compile', |
+ 'linux_clang', |
'linux_rel', |
+ 'mac', |
'mac_rel', |
- 'mac:compile', |
+ 'win', |
'win7_aura', |
'win_rel', |
- 'win:compile', |
- 'win_x64_rel:base_unittests', |
- ] |
+ 'win_x64_rel', |
+ ]) |
# Match things like path/aura/file.cc and path/file_aura.cc. |
# Same for chromeos. |
if any(re.search('[/_](aura|chromeos)', f) for f in files): |
- trybots += ['linux_chromeos_clang:compile', 'linux_chromeos_asan'] |
+ trybots.extend(GetDefaultTryConfigs(['linux_chromeos_clang'])) |
+ trybots.append(('linux_chromeos_asan', set(['defaulttests']))) |
# If there are gyp changes to base, build, or chromeos, run a full cros build |
# in addition to the shorter linux_chromeos build. Changes to high level gyp |
@@ -1073,13 +1244,13 @@ def GetPreferredTrySlaves(project, change): |
# differnt from the linux_chromeos build that most chrome developers test |
# with. |
if any(re.search('^(base|build|chromeos).*\.gypi?$', f) for f in files): |
- trybots += ['cros_x86'] |
+ trybots.append(('cros_x86', set(['defaulttests']))) |
# The AOSP bot doesn't build the chrome/ layer, so ignore any changes to it |
# unless they're .gyp(i) files as changes to those files can break the gyp |
# step on that bot. |
if (not all(re.search('^chrome', f) for f in files) or |
any(re.search('\.gypi?$', f) for f in files)): |
- trybots += ['android_aosp'] |
+ trybots.extend(GetDefaultTryConfigs(['android_aosp'])) |
return trybots |