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

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

Issue 873403002: Add support for cc_perftests and other non-telemetry gtest based tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/build.git@master
Patch Set: Rebase again + coverage. Created 5 years, 10 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 | « scripts/slave/recipe_modules/chromium/steps.py ('k') | scripts/slave/recipes/android/perf.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 contextlib 5 import contextlib
6 import copy 6 import copy
7 import json 7 import json
8 8
9 from infra.libs.infra_types import freeze, thaw 9 from infra.libs.infra_types import freeze, thaw
10 from slave import recipe_api 10 from slave import recipe_api
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 self.m.chromium.runhooks(name='runhooks (with patch)') 263 self.m.chromium.runhooks(name='runhooks (with patch)')
264 except self.m.step.StepFailure: 264 except self.m.step.StepFailure:
265 # As part of deapplying patch we call runhooks without the patch. 265 # As part of deapplying patch we call runhooks without the patch.
266 self.deapply_patch(update_step) 266 self.deapply_patch(update_step)
267 raise 267 raise
268 else: 268 else:
269 self.m.chromium.runhooks() 269 self.m.chromium.runhooks()
270 270
271 test_spec_file = bot_config.get('testing', {}).get('test_spec_file', 271 test_spec_file = bot_config.get('testing', {}).get('test_spec_file',
272 '%s.json' % mastername) 272 '%s.json' % mastername)
273 test_spec_path = self.m.path['checkout'].join('testing', 'buildbot', 273
274 test_spec_file)
275 # TODO(phajdan.jr): Bots should have no generators instead. 274 # TODO(phajdan.jr): Bots should have no generators instead.
276 if bot_config.get('disable_tests'): 275 if bot_config.get('disable_tests'):
277 test_spec = {} 276 test_spec = {}
278 scripts_compile_targets = {} 277 scripts_compile_targets = {}
279 else: 278 else:
280 test_spec_result = self.m.json.read( 279 test_spec = self.read_test_spec(self.m, test_spec_file)
281 'read test spec', 280 test_spec_path = self.m.path['checkout'].join('testing', 'buildbot',
282 test_spec_path, 281 test_spec_file)
283 step_test_data=lambda: self.m.json.test_api.output({}))
284 test_spec_result.presentation.step_text = 'path: %s' % test_spec_path
285 test_spec = test_spec_result.json.output
286 282
287 scripts_compile_targets = \ 283 scripts_compile_targets = \
288 self.m.chromium.get_compile_targets_for_scripts().json.output 284 self.m.chromium.get_compile_targets_for_scripts().json.output
289 285
290 for loop_buildername, builder_dict in master_dict.get( 286 for loop_buildername, builder_dict in master_dict.get(
291 'builders', {}).iteritems(): 287 'builders', {}).iteritems():
292 builder_dict.setdefault('tests', []) 288 builder_dict['tests'] = self.generate_tests_from_test_spec(
293 # TODO(phajdan.jr): Switch everything to scripts generators and simplify. 289 self.m, test_spec, builder_dict,
294 for generator in builder_dict.get('test_generators', []): 290 loop_buildername, mastername, enable_swarming,
295 builder_dict['tests'] = ( 291 scripts_compile_targets, builder_dict.get('test_generators', []))
296 list(generator(self.m, mastername, loop_buildername, test_spec,
297 enable_swarming=enable_swarming,
298 scripts_compile_targets=scripts_compile_targets)) +
299 builder_dict['tests'])
300 292
301 return update_step, freeze(master_dict), test_spec 293 return update_step, freeze(master_dict), test_spec
302 294
295 def generate_tests_from_test_spec(self, api, test_spec, builder_dict,
296 buildername, mastername, enable_swarming, scripts_compile_targets,
297 generators):
298 tests = builder_dict.get('tests', [])
299 # TODO(phajdan.jr): Switch everything to scripts generators and simplify.
300 for generator in generators:
301 tests = (
302 list(generator(api, mastername, buildername, test_spec,
303 enable_swarming=enable_swarming,
304 scripts_compile_targets=scripts_compile_targets)) +
305 tests)
306 return tests
307
308 def read_test_spec(self, api, test_spec_file):
309 test_spec_path = api.path['checkout'].join('testing', 'buildbot',
310 test_spec_file)
311 test_spec_result = api.json.read(
312 'read test spec',
313 test_spec_path,
314 step_test_data=lambda: api.json.test_api.output({}))
315 test_spec_result.presentation.step_text = 'path: %s' % test_spec_path
316 test_spec = test_spec_result.json.output
317
318 return test_spec
319
303 def create_test_runner(self, api, tests, suffix=''): 320 def create_test_runner(self, api, tests, suffix=''):
304 """Creates a test runner to run a set of tests. 321 """Creates a test runner to run a set of tests.
305 322
306 Args: 323 Args:
307 api: API of the calling recipe. 324 api: API of the calling recipe.
308 tests: List of step.Test objects to be run. 325 tests: List of step.Test objects to be run.
309 suffix: Suffix to be passed when running the tests. 326 suffix: Suffix to be passed when running the tests.
310 327
311 Returns: 328 Returns:
312 A function that can be passed to setup_chromium_tests or run directly. 329 A function that can be passed to setup_chromium_tests or run directly.
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 master_config.get('build_gs_bucket'), 709 master_config.get('build_gs_bucket'),
693 extra_url_components=None) 710 extra_url_components=None)
694 elif (mastername == 'tryserver.chromium.perf' or 711 elif (mastername == 'tryserver.chromium.perf' or
695 (mastername == 'tryserver.chromium.linux' and 712 (mastername == 'tryserver.chromium.linux' and
696 buildername == 'linux_full_bisect_builder')): 713 buildername == 'linux_full_bisect_builder')):
697 return None 714 return None
698 else: 715 else:
699 return self.m.archive.legacy_upload_url( 716 return self.m.archive.legacy_upload_url(
700 master_config.get('build_gs_bucket'), 717 master_config.get('build_gs_bucket'),
701 extra_url_components=self.m.properties['mastername']) 718 extra_url_components=self.m.properties['mastername'])
OLDNEW
« no previous file with comments | « scripts/slave/recipe_modules/chromium/steps.py ('k') | scripts/slave/recipes/android/perf.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698