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

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

Issue 2357343004: chromium_tests: automatically set up test genrators (Closed)
Patch Set: Created 4 years, 2 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 2016 The Chromium Authors. All rights reserved. 1 # Copyright 2016 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 ast 5 import ast
6 import copy 6 import copy
7 7
8 from recipe_engine.types import freeze 8 from recipe_engine.types import freeze
9 9
10 10
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 61
62 test_spec_file = self.get('testing', {}).get( 62 test_spec_file = self.get('testing', {}).get(
63 'test_spec_file', '%s.json' % mastername) 63 'test_spec_file', '%s.json' % mastername)
64 64
65 # TODO(phajdan.jr): Bots should have no generators instead. 65 # TODO(phajdan.jr): Bots should have no generators instead.
66 if self.get('disable_tests'): 66 if self.get('disable_tests'):
67 return {} 67 return {}
68 return chromium_tests_api.read_test_spec(chromium_tests_api.m, test_spec_fil e) 68 return chromium_tests_api.read_test_spec(chromium_tests_api.m, test_spec_fil e)
69 69
70 def initialize_bot_db(self, chromium_tests_api, bot_db, bot_update_step): 70 def initialize_bot_db(self, chromium_tests_api, bot_db, bot_update_step):
71 # TODO(phajdan.jr): Bots should have no generators instead. 71 # TODO(phajdan.jr): Bots should have no generators instead.
ghost stip (do not use) 2016/09/22 23:25:48 should we remove this todo?
Paweł Hajdan Jr. 2016/09/23 01:14:54 Good point. I updated it.
72 if self.get('disable_tests'): 72 if self.get('disable_tests'):
73 scripts_compile_targets = {} 73 scripts_compile_targets = {}
74 else: 74 else:
75 scripts_compile_targets = \ 75 scripts_compile_targets = \
76 chromium_tests_api.get_compile_targets_for_scripts().json.output 76 chromium_tests_api.get_compile_targets_for_scripts().json.output
77 77
78 test_generators = [
79 chromium_tests_api.steps.generate_gtest,
80 chromium_tests_api.steps.generate_instrumentation_test,
81 chromium_tests_api.steps.generate_junit_test,
82 chromium_tests_api.steps.generate_script,
83 chromium_tests_api.steps.generate_isolated_script,
84 ]
85
78 masternames = set(bot_id['mastername'] for bot_id in self._bot_ids) 86 masternames = set(bot_id['mastername'] for bot_id in self._bot_ids)
79 for mastername in sorted(self._bots_dict): 87 for mastername in sorted(self._bots_dict):
80 # We manually thaw the path to the elements we are modifying, since the 88 # We manually thaw the path to the elements we are modifying, since the
81 # builders are frozen. 89 # builders are frozen.
82 master_dict = dict(self._bots_dict[mastername]) 90 master_dict = dict(self._bots_dict[mastername])
83 91
84 if mastername in masternames: 92 if mastername in masternames:
85 test_spec = self._get_test_spec(chromium_tests_api, mastername) 93 test_spec = self._get_test_spec(chromium_tests_api, mastername)
86 94
87 builders = master_dict['builders'] = dict(master_dict['builders']) 95 builders = master_dict['builders'] = dict(master_dict['builders'])
88 for loop_buildername in builders: 96 for loop_buildername in builders:
89 builder_dict = builders[loop_buildername] = ( 97 builder_dict = builders[loop_buildername] = (
90 dict(builders[loop_buildername])) 98 dict(builders[loop_buildername]))
91 builders[loop_buildername]['tests'] = ( 99 builders[loop_buildername]['tests'] = (
92 chromium_tests_api.generate_tests_from_test_spec( 100 chromium_tests_api.generate_tests_from_test_spec(
93 chromium_tests_api.m, test_spec, builder_dict, 101 chromium_tests_api.m, test_spec, builder_dict,
94 loop_buildername, mastername, 102 loop_buildername, mastername,
95 # TODO(phajdan.jr): Get enable_swarming value from 103 # TODO(phajdan.jr): Get enable_swarming value from
96 # builder_dict. Above should remove the need to get 104 # builder_dict. Above should remove the need to get
97 # bot_config and buildername in this method. 105 # bot_config and buildername in this method.
98 self.get('enable_swarming', False), 106 self.get('enable_swarming', False),
99 builder_dict.get('swarming_dimensions', {}), 107 builder_dict.get('swarming_dimensions', {}),
100 scripts_compile_targets, 108 scripts_compile_targets,
101 builder_dict.get('test_generators', []), 109 test_generators,
102 bot_update_step 110 bot_update_step
103 )) 111 ))
104 else: 112 else:
105 test_spec = None 113 test_spec = None
106 114
107 115
108 bot_db._add_master_dict_and_test_spec( 116 bot_db._add_master_dict_and_test_spec(
109 mastername, freeze(master_dict), freeze(test_spec)) 117 mastername, freeze(master_dict), freeze(test_spec))
110 118
111 def get_tests(self, bot_db): 119 def get_tests(self, bot_db):
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 'builders', {}).iteritems(): 205 'builders', {}).iteritems():
198 master_matches = (bot_config.get('parent_mastername', mastername) == 206 master_matches = (bot_config.get('parent_mastername', mastername) ==
199 parent_mastername) 207 parent_mastername)
200 builder_matches = (bot_config.get('parent_buildername') == 208 builder_matches = (bot_config.get('parent_buildername') ==
201 parent_buildername) 209 parent_buildername)
202 if master_matches and builder_matches: 210 if master_matches and builder_matches:
203 yield mastername, buildername, bot_config 211 yield mastername, buildername, bot_config
204 212
205 def get_test_spec(self, mastername, buildername): 213 def get_test_spec(self, mastername, buildername):
206 return self._db[mastername]['test_spec'].get(buildername, {}) 214 return self._db[mastername]['test_spec'].get(buildername, {})
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698