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

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

Issue 1588793002: Support variable substitution and tryserver- and waterfall-only cmd line args. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/build.git@master
Patch Set: Addressed review feedback. Revised tests. Rebased. Created 4 years, 11 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/recipe_modules/chromium_tests/bot_config_and_test_db.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 collections 5 import collections
6 import contextlib 6 import contextlib
7 import copy 7 import copy
8 import itertools 8 import itertools
9 import json 9 import json
10 10
(...skipping 30 matching lines...) Expand all
41 'chromium.fyi': 35, # This should be lower than the CQ. 41 'chromium.fyi': 35, # This should be lower than the CQ.
42 'chromium.memory.fyi': 27, 42 'chromium.memory.fyi': 27,
43 }) 43 })
44 44
45 45
46 class ChromiumTestsApi(recipe_api.RecipeApi): 46 class ChromiumTestsApi(recipe_api.RecipeApi):
47 def __init__(self, *args, **kwargs): 47 def __init__(self, *args, **kwargs):
48 super(ChromiumTestsApi, self).__init__(*args, **kwargs) 48 super(ChromiumTestsApi, self).__init__(*args, **kwargs)
49 self._builders = {} 49 self._builders = {}
50 self.add_builders(builders.BUILDERS) 50 self.add_builders(builders.BUILDERS)
51 self._precommit_mode = False
51 52
52 @property 53 @property
53 def builders(self): 54 def builders(self):
54 return self._builders 55 return self._builders
55 56
56 @property 57 @property
57 def steps(self): 58 def steps(self):
58 return steps 59 return steps
59 60
60 @property 61 @property
61 def trybots(self): 62 def trybots(self):
62 return trybots.TRYBOTS 63 return trybots.TRYBOTS
63 64
64 def add_builders(self, builders): 65 def add_builders(self, builders):
65 """Adds builders to our builder map""" 66 """Adds builders to our builder map"""
66 self._builders.update(builders) 67 self._builders.update(builders)
67 68
68 def create_bot_config_object(self, mastername, buildername): 69 def create_bot_config_object(self, mastername, buildername):
69 bot_id = {'mastername': mastername, 'buildername': buildername} 70 bot_id = {'mastername': mastername, 'buildername': buildername}
70 return bdb_module.BotConfig(self.builders, [bot_id]) 71 return bdb_module.BotConfig(self.builders, [bot_id])
71 72
72 def create_generalized_bot_config_object(self, bot_ids): 73 def create_generalized_bot_config_object(self, bot_ids):
73 return bdb_module.BotConfig(self.builders, bot_ids) 74 return bdb_module.BotConfig(self.builders, bot_ids)
74 75
76 def set_precommit_mode(self):
77 """Configures this module to indicate that tests are running before
78 the changes are committed. This must be called very early in the
79 recipe, certainly before prepare_checkout, and the action can not
80 be undone.
81 """
82 self._precommit_mode = True
83
84 def is_precommit_mode(self):
85 """Returns a Boolean indicating whether this module is running in
86 precommit mode; i.e., whether tests are running before the changes
87 are committed.
88 """
89 return self._precommit_mode
90
75 def configure_build(self, bot_config, override_bot_type=None): 91 def configure_build(self, bot_config, override_bot_type=None):
76 # Get the buildspec version. It can be supplied as a build property or as 92 # Get the buildspec version. It can be supplied as a build property or as
77 # a recipe config value. 93 # a recipe config value.
78 buildspec_version = (self.m.properties.get('buildspec_version') or 94 buildspec_version = (self.m.properties.get('buildspec_version') or
79 bot_config.get('buildspec_version')) 95 bot_config.get('buildspec_version'))
80 96
81 self.m.chromium.set_config( 97 self.m.chromium.set_config(
82 bot_config.get('chromium_config'), 98 bot_config.get('chromium_config'),
83 **bot_config.get('chromium_config_kwargs', {})) 99 **bot_config.get('chromium_config_kwargs', {}))
84 100
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 lambda bot_id: bot_id['mastername'] == 'tryserver.chromium.perf' and 202 lambda bot_id: bot_id['mastername'] == 'tryserver.chromium.perf' and
187 bot_id['buildername'].endswith('builder')) 203 bot_id['buildername'].endswith('builder'))
188 and bot_config.get('bot_type') == 'builder'): 204 and bot_config.get('bot_type') == 'builder'):
189 if bot_config.should_force_legacy_compiling(self): 205 if bot_config.should_force_legacy_compiling(self):
190 self.m.chromium.c.project_generator.tool = 'gyp' 206 self.m.chromium.c.project_generator.tool = 'gyp'
191 207
192 self.set_up_swarming(bot_config) 208 self.set_up_swarming(bot_config)
193 self.runhooks(update_step) 209 self.runhooks(update_step)
194 210
195 bot_db = bdb_module.BotConfigAndTestDB() 211 bot_db = bdb_module.BotConfigAndTestDB()
196 bot_config.initialize_bot_db(self, bot_db) 212 bot_config.initialize_bot_db(self, bot_db, update_step)
197 213
198 if self.m.chromium.c.lto and \ 214 if self.m.chromium.c.lto and \
199 not self.m.chromium.c.env.LLVM_FORCE_HEAD_REVISION: 215 not self.m.chromium.c.env.LLVM_FORCE_HEAD_REVISION:
200 self.m.chromium.download_lto_plugin() 216 self.m.chromium.download_lto_plugin()
201 217
202 return update_step, bot_db 218 return update_step, bot_db
203 219
204 def generate_tests_from_test_spec(self, api, test_spec, builder_dict, 220 def generate_tests_from_test_spec(self, api, test_spec, builder_dict,
205 buildername, mastername, enable_swarming, scripts_compile_targets, 221 buildername, mastername, enable_swarming, scripts_compile_targets,
206 generators): 222 generators, bot_update_step):
207 tests = builder_dict.get('tests', ()) 223 tests = builder_dict.get('tests', ())
208 # TODO(phajdan.jr): Switch everything to scripts generators and simplify. 224 # TODO(phajdan.jr): Switch everything to scripts generators and simplify.
209 for generator in generators: 225 for generator in generators:
210 tests = ( 226 tests = (
211 tuple(generator(api, mastername, buildername, test_spec, 227 tuple(generator(api, self, mastername, buildername, test_spec,
212 enable_swarming=enable_swarming, 228 bot_update_step, enable_swarming=enable_swarming,
213 scripts_compile_targets=scripts_compile_targets)) + 229 scripts_compile_targets=scripts_compile_targets)) +
214 tests) 230 tests)
215 return tests 231 return tests
216 232
217 def read_test_spec(self, api, test_spec_file): 233 def read_test_spec(self, api, test_spec_file):
218 test_spec_path = api.path['checkout'].join('testing', 'buildbot', 234 test_spec_path = api.path['checkout'].join('testing', 'buildbot',
219 test_spec_file) 235 test_spec_file)
220 test_spec_result = api.json.read( 236 test_spec_result = api.json.read(
221 'read test spec', 237 'read test spec',
222 test_spec_path, 238 test_spec_path,
(...skipping 581 matching lines...) Expand 10 before | Expand all | Expand 10 after
804 def get_compile_targets_for_scripts(self): 820 def get_compile_targets_for_scripts(self):
805 return self.m.python( 821 return self.m.python(
806 name='get compile targets for scripts', 822 name='get compile targets for scripts',
807 script=self.m.path['checkout'].join( 823 script=self.m.path['checkout'].join(
808 'testing', 'scripts', 'get_compile_targets.py'), 824 'testing', 'scripts', 'get_compile_targets.py'),
809 args=[ 825 args=[
810 '--output', self.m.json.output(), 826 '--output', self.m.json.output(),
811 '--', 827 '--',
812 ] + self.get_common_args_for_scripts(), 828 ] + self.get_common_args_for_scripts(),
813 step_test_data=lambda: self.m.json.test_api.output({})) 829 step_test_data=lambda: self.m.json.test_api.output({}))
OLDNEW
« no previous file with comments | « no previous file | scripts/slave/recipe_modules/chromium_tests/bot_config_and_test_db.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698