| Index: scripts/slave/recipes/chromium_trybot.py
|
| diff --git a/scripts/slave/recipes/chromium_trybot.py b/scripts/slave/recipes/chromium_trybot.py
|
| index 0f7c560f1f924a3e96605808a98b628780a9690a..229264fba114dcab376d21657dd2ee01ae39e0ae 100644
|
| --- a/scripts/slave/recipes/chromium_trybot.py
|
| +++ b/scripts/slave/recipes/chromium_trybot.py
|
| @@ -407,6 +407,7 @@ def add_swarming_builder(original, swarming, server):
|
| conf['enable_swarming'] = True
|
| BUILDERS[server]['builders'][swarming] = conf
|
|
|
| +
|
| def should_filter_builder(name, regexs):
|
| """Returns true if the builder |name| should be filtered. |regexs| is a list
|
| of the regular expressions specifying the builders that should *not* be
|
| @@ -418,6 +419,23 @@ def should_filter_builder(name, regexs):
|
| return False
|
| return True
|
|
|
| +
|
| +def get_test_names(gtest_tests, swarming_tests):
|
| + """Returns the names of each of the tests in |gtest_tests| and
|
| + |swarming_tests|. These are lists of GTestTest and SwarmingGTestTest."""
|
| + return [test.name for test in gtest_tests + swarming_tests]
|
| +
|
| +
|
| +def filter_tests(possible_tests, needed_tests):
|
| + """Returns a list of all the tests in |possible_tests| whose name is in
|
| + |needed_tests|."""
|
| + result = []
|
| + for test in possible_tests:
|
| + if test.name in needed_tests:
|
| + result.append(test)
|
| + return result
|
| +
|
| +
|
| add_swarming_builder('linux_chromium_rel', 'linux_chromium_rel_swarming',
|
| 'tryserver.chromium.linux')
|
| add_swarming_builder('linux_chromium_chromeos_rel',
|
| @@ -546,17 +564,6 @@ def GenSteps(api):
|
| step_result.presentation.step_text = 'path: %s' % test_spec_path
|
| test_spec = step_result.json.output
|
|
|
| - runhooks_env = bot_config.get('runhooks_env', {})
|
| -
|
| - # See if the patch needs to compile on the current platform.
|
| - if isinstance(test_spec, dict) and should_filter_builder(
|
| - buildername, test_spec.get('non_filter_builders', [])):
|
| - api.filter.does_patch_require_compile(
|
| - exclusions=test_spec.get('gtest_tests_filter_exclusions', []),
|
| - env=runhooks_env)
|
| - if not api.filter.result:
|
| - return
|
| -
|
| def should_use_test(test):
|
| """Given a test dict from test spec returns True or False."""
|
| if 'platforms' in test:
|
| @@ -576,6 +583,22 @@ def GenSteps(api):
|
| bot_config.get('enable_swarming'),
|
| should_use_test)
|
|
|
| + runhooks_env = bot_config.get('runhooks_env', {})
|
| +
|
| + # See if the patch needs to compile on the current platform.
|
| + if isinstance(test_spec, dict) and should_filter_builder(
|
| + buildername, test_spec.get('non_filter_builders', [])):
|
| + api.filter.does_patch_require_compile(
|
| + exclusions=test_spec.get('gtest_tests_filter_exclusions', []),
|
| + exes=get_test_names(gtest_tests, swarming_tests),
|
| + env=runhooks_env)
|
| + if not api.filter.result:
|
| + return
|
| + # Patch needs compile. Filter the list of test targets.
|
| + if buildername in test_spec.get('filter_tests_builders', []):
|
| + gtest_tests = filter_tests(gtest_tests, api.filter.matching_exes)
|
| + swarming_tests = filter_tests(swarming_tests, api.filter.matching_exes)
|
| +
|
| # Swarming uses Isolate to transfer files to swarming bots.
|
| # set_isolate_environment modifies GYP_DEFINES to enable test isolation.
|
| if bot_config.get('use_isolate') or swarming_tests:
|
| @@ -952,5 +975,61 @@ def GenTests(api):
|
| ) +
|
| api.override_step_data(
|
| 'analyze',
|
| - api.raw_io.stream_output('Found dependency'))
|
| + api.json.output({'status': 'Found dependency', 'targets': []}))
|
| + )
|
| +
|
| + # Tests analyze module by way of not specifying non_filter_builders and
|
| + # analyze result returning true along with a smaller set of tests.
|
| + yield (
|
| + api.test('compile_because_of_analyze_with_filtered_tests_no_builder') +
|
| + props(buildername='linux_chromium_rel') +
|
| + api.platform.name('linux') +
|
| + api.override_step_data('read test spec', api.json.output({
|
| + 'gtest_tests': [
|
| + {
|
| + 'test': 'base_unittests',
|
| + 'swarming': {'can_use_on_swarming_builders': True},
|
| + },
|
| + {
|
| + 'test': 'browser_tests',
|
| + },
|
| + {
|
| + 'test': 'unittests',
|
| + },
|
| + ],
|
| + })
|
| + ) +
|
| + api.override_step_data(
|
| + 'analyze',
|
| + api.json.output({'status': 'Found dependency',
|
| + 'targets': ['browser_tests', 'base_unittests']}))
|
| + )
|
| +
|
| + # Tests analyze module by way of not specifying non_filter_builders and
|
| + # analyze result returning true along with a smaller set of tests. This
|
| + # specifices a 'filter_test_builder', so that this bot uses the filtered set.
|
| + yield (
|
| + api.test('compile_because_of_analyze_with_filtered_tests') +
|
| + props(buildername='linux_chromium_rel') +
|
| + api.platform.name('linux') +
|
| + api.override_step_data('read test spec', api.json.output({
|
| + 'filter_tests_builders': 'linux_chromium_rel',
|
| + 'gtest_tests': [
|
| + {
|
| + 'test': 'base_unittests',
|
| + 'swarming': {'can_use_on_swarming_builders': True},
|
| + },
|
| + {
|
| + 'test': 'browser_tests',
|
| + },
|
| + {
|
| + 'test': 'unittests',
|
| + },
|
| + ],
|
| + })
|
| + ) +
|
| + api.override_step_data(
|
| + 'analyze',
|
| + api.json.output({'status': 'Found dependency',
|
| + 'targets': ['browser_tests', 'base_unittests']}))
|
| )
|
|
|