Index: scripts/slave/recipe_modules/chromium_tests/bot_config_and_test_db.py |
diff --git a/scripts/slave/recipe_modules/chromium_tests/bot_config_and_test_db.py b/scripts/slave/recipe_modules/chromium_tests/bot_config_and_test_db.py |
index 527adacf5bee91e3641b5fba5f6fcadbc927f6b7..9a396b6e2ceeeeb760a5384f59e21a419f656df9 100644 |
--- a/scripts/slave/recipe_modules/chromium_tests/bot_config_and_test_db.py |
+++ b/scripts/slave/recipe_modules/chromium_tests/bot_config_and_test_db.py |
@@ -76,29 +76,34 @@ class BotConfig(object): |
chromium_tests_api.get_compile_targets_for_scripts().json.output |
masternames = set(bot_id['mastername'] for bot_id in self._bot_ids) |
- for mastername in masternames: |
- test_spec = self._get_test_spec(chromium_tests_api, mastername) |
- |
+ for mastername in sorted(self._bots_dict): |
# We manually thaw the path to the elements we are modifying, since the |
# builders are frozen. |
master_dict = dict(self._bots_dict[mastername]) |
- builders = master_dict['builders'] = dict(master_dict['builders']) |
- for loop_buildername in builders: |
- builder_dict = builders[loop_buildername] = ( |
- dict(builders[loop_buildername])) |
- builders[loop_buildername]['tests'] = ( |
- chromium_tests_api.generate_tests_from_test_spec( |
- chromium_tests_api.m, test_spec, builder_dict, |
- loop_buildername, mastername, |
- # TODO(phajdan.jr): Get enable_swarming value from builder_dict. |
- # Above should remove the need to get bot_config and buildername |
- # in this method. |
- self.get('enable_swarming', False), |
- builder_dict.get('swarming_dimensions', {}), |
- scripts_compile_targets, |
- builder_dict.get('test_generators', []), |
- bot_update_step |
- )) |
+ |
+ if mastername in masternames: |
+ test_spec = self._get_test_spec(chromium_tests_api, mastername) |
+ |
+ builders = master_dict['builders'] = dict(master_dict['builders']) |
+ for loop_buildername in builders: |
+ builder_dict = builders[loop_buildername] = ( |
+ dict(builders[loop_buildername])) |
+ builders[loop_buildername]['tests'] = ( |
+ chromium_tests_api.generate_tests_from_test_spec( |
+ chromium_tests_api.m, test_spec, builder_dict, |
+ loop_buildername, mastername, |
+ # TODO(phajdan.jr): Get enable_swarming value from |
+ # builder_dict. Above should remove the need to get |
+ # bot_config and buildername in this method. |
+ self.get('enable_swarming', False), |
+ builder_dict.get('swarming_dimensions', {}), |
+ scripts_compile_targets, |
+ builder_dict.get('test_generators', []), |
+ bot_update_step |
+ )) |
+ else: |
+ test_spec = None |
+ |
bot_db._add_master_dict_and_test_spec( |
mastername, freeze(master_dict), freeze(test_spec)) |
@@ -120,7 +125,7 @@ class BotConfig(object): |
bot_config = bot_db.get_bot_config( |
bot_id['mastername'], bot_id['buildername']) |
- for _, test_bot in bot_db.bot_configs_matching_parent_buildername( |
+ for _, _, test_bot in bot_db.bot_configs_matching_parent_buildername( |
bot_id['mastername'], bot_id['buildername']): |
tests_including_triggered.extend(test_bot.get('tests', [])) |
@@ -182,14 +187,20 @@ class BotConfigAndTestDB(object): |
return self._db[mastername]['master_dict'].get('settings', {}) |
def bot_configs_matching_parent_buildername( |
- self, mastername, parent_buildername): |
+ self, parent_mastername, parent_buildername): |
"""A generator of all the (buildername, bot_config) tuples whose |
parent_buildername is the passed one on the given master. |
""" |
- for buildername, bot_config in self._db[mastername]['master_dict'].get( |
- 'builders', {}).iteritems(): |
- if bot_config.get('parent_buildername') == parent_buildername: |
- yield buildername, bot_config |
+ for mastername, master_config in self._db.iteritems(): |
+ master_dict = master_config['master_dict'] |
+ for buildername, bot_config in master_dict.get( |
+ 'builders', {}).iteritems(): |
+ master_matches = (bot_config.get('parent_mastername', mastername) == |
+ parent_mastername) |
+ builder_matches = (bot_config.get('parent_buildername') == |
+ parent_buildername) |
+ if master_matches and builder_matches: |
+ yield mastername, buildername, bot_config |
def get_test_spec(self, mastername, buildername): |
return self._db[mastername]['test_spec'].get(buildername, {}) |