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

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: 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
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 return bdb_module.BotConfig( 70 return bdb_module.BotConfig(
70 self.builders, 71 self.builders,
71 [{'mastername': mastername, 'buildername': buildername}]) 72 [{'mastername': mastername, 'buildername': buildername}])
72 73
74 def set_precommit_mode(self):
75 """Configures this module to indicate that tests are running before
76 the changes are committed. This must be called very early in the
77 recipe, certainly before prepare_checkout, and the action can not
78 be undone.
79 """
80 self._precommit_mode = True
81
82 def is_precommit_mode(self):
83 """Returns a Boolean indicating whether this module is running in
84 precommit mode; i.e., whether tests are running before the changes
85 are committed.
86 """
87 return self._precommit_mode
88
73 def configure_build(self, bot_config, override_bot_type=None): 89 def configure_build(self, bot_config, override_bot_type=None):
74 # Get the buildspec version. It can be supplied as a build property or as 90 # Get the buildspec version. It can be supplied as a build property or as
75 # a recipe config value. 91 # a recipe config value.
76 buildspec_version = (self.m.properties.get('buildspec_version') or 92 buildspec_version = (self.m.properties.get('buildspec_version') or
77 bot_config.get('buildspec_version')) 93 bot_config.get('buildspec_version'))
78 94
79 self.m.chromium.set_config( 95 self.m.chromium.set_config(
80 bot_config.get('chromium_config'), 96 bot_config.get('chromium_config'),
81 **bot_config.get('chromium_config_kwargs', {})) 97 **bot_config.get('chromium_config_kwargs', {}))
82 98
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 lambda bot_id: bot_id['mastername'] == 'tryserver.chromium.perf' and 200 lambda bot_id: bot_id['mastername'] == 'tryserver.chromium.perf' and
185 bot_id['buildername'].endswith('builder')) 201 bot_id['buildername'].endswith('builder'))
186 and bot_config.get('bot_type') == 'builder'): 202 and bot_config.get('bot_type') == 'builder'):
187 if bot_config.should_force_legacy_compiling(self): 203 if bot_config.should_force_legacy_compiling(self):
188 self.m.chromium.c.project_generator.tool = 'gyp' 204 self.m.chromium.c.project_generator.tool = 'gyp'
189 205
190 self.set_up_swarming(bot_config) 206 self.set_up_swarming(bot_config)
191 self.runhooks(update_step) 207 self.runhooks(update_step)
192 208
193 bot_db = bdb_module.BotConfigAndTestDB() 209 bot_db = bdb_module.BotConfigAndTestDB()
194 bot_config.initialize_bot_db(self, bot_db) 210 bot_config.initialize_bot_db(self, bot_db, update_step)
195 211
196 if self.m.chromium.c.lto and \ 212 if self.m.chromium.c.lto and \
197 not self.m.chromium.c.env.LLVM_FORCE_HEAD_REVISION: 213 not self.m.chromium.c.env.LLVM_FORCE_HEAD_REVISION:
198 self.m.chromium.download_lto_plugin() 214 self.m.chromium.download_lto_plugin()
199 215
200 return update_step, bot_db 216 return update_step, bot_db
201 217
202 def generate_tests_from_test_spec(self, api, test_spec, builder_dict, 218 def generate_tests_from_test_spec(self, api, test_spec, builder_dict,
203 buildername, mastername, enable_swarming, scripts_compile_targets, 219 buildername, mastername, enable_swarming, scripts_compile_targets,
204 generators): 220 generators, bot_update_step):
205 tests = builder_dict.get('tests', ()) 221 tests = builder_dict.get('tests', ())
206 # TODO(phajdan.jr): Switch everything to scripts generators and simplify. 222 # TODO(phajdan.jr): Switch everything to scripts generators and simplify.
207 for generator in generators: 223 for generator in generators:
208 tests = ( 224 tests = (
209 tuple(generator(api, mastername, buildername, test_spec, 225 tuple(generator(api, self, mastername, buildername, test_spec,
210 enable_swarming=enable_swarming, 226 bot_update_step, enable_swarming=enable_swarming,
211 scripts_compile_targets=scripts_compile_targets)) + 227 scripts_compile_targets=scripts_compile_targets)) +
212 tests) 228 tests)
213 return tests 229 return tests
214 230
215 def read_test_spec(self, api, test_spec_file): 231 def read_test_spec(self, api, test_spec_file):
216 test_spec_path = api.path['checkout'].join('testing', 'buildbot', 232 test_spec_path = api.path['checkout'].join('testing', 'buildbot',
217 test_spec_file) 233 test_spec_file)
218 test_spec_result = api.json.read( 234 test_spec_result = api.json.read(
219 'read test spec', 235 'read test spec',
220 test_spec_path, 236 test_spec_path,
(...skipping 562 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 def get_compile_targets_for_scripts(self): 799 def get_compile_targets_for_scripts(self):
784 return self.m.python( 800 return self.m.python(
785 name='get compile targets for scripts', 801 name='get compile targets for scripts',
786 script=self.m.path['checkout'].join( 802 script=self.m.path['checkout'].join(
787 'testing', 'scripts', 'get_compile_targets.py'), 803 'testing', 'scripts', 'get_compile_targets.py'),
788 args=[ 804 args=[
789 '--output', self.m.json.output(), 805 '--output', self.m.json.output(),
790 '--', 806 '--',
791 ] + self.get_common_args_for_scripts(), 807 ] + self.get_common_args_for_scripts(),
792 step_test_data=lambda: self.m.json.test_api.output({})) 808 step_test_data=lambda: self.m.json.test_api.output({}))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698