| Index: masters/master.chromium.webkit/master_gpu_latest_cfg.py
|
| diff --git a/masters/master.chromium.webkit/master_gpu_latest_cfg.py b/masters/master.chromium.webkit/master_gpu_latest_cfg.py
|
| index 77c96fa17e0e6c03991fc5e7cd25881c38543c41..311e4a364f5b3cbb242b73486cff0c5427676239 100644
|
| --- a/masters/master.chromium.webkit/master_gpu_latest_cfg.py
|
| +++ b/masters/master.chromium.webkit/master_gpu_latest_cfg.py
|
| @@ -6,15 +6,18 @@
|
| from master import master_config
|
| from master.factory import annotator_factory
|
|
|
| +import collections
|
| +
|
| defaults = {}
|
|
|
| helper = master_config.Helper(defaults)
|
| B = helper.Builder
|
| F = helper.Factory
|
| +T = helper.Triggerable
|
|
|
| # TODO(kbr): it would be better if this waterfall were refactored so
|
| # that we could access the slaves_list here.
|
| -gpu_bot_info = [
|
| +gpu_slave_info = [
|
| {
|
| 'builder': 'GPU Win Builder',
|
| 'factory_id': 'f_gpu_win_builder_rel',
|
| @@ -30,15 +33,17 @@ gpu_bot_info = [
|
| {
|
| 'builder': 'GPU Win7 (NVIDIA)',
|
| 'factory_id': 'f_gpu_win_rel',
|
| - 'recipe': 'gpu/build_and_test',
|
| + 'recipe': 'gpu/download_and_test',
|
| 'build_config': 'Release',
|
| 'perf_id': 'gpu-webkit-win7-nvidia',
|
| + 'triggered_by': 'GPU Win Builder',
|
| },
|
| {
|
| 'builder': 'GPU Win7 (dbg) (NVIDIA)',
|
| 'factory_id': 'f_gpu_win_dbg',
|
| - 'recipe': 'gpu/build_and_test',
|
| + 'recipe': 'gpu/download_and_test',
|
| 'build_config': 'Debug',
|
| + 'triggered_by': 'GPU Win Builder (dbg)',
|
| },
|
| {
|
| 'builder': 'GPU Mac Builder',
|
| @@ -55,15 +60,17 @@ gpu_bot_info = [
|
| {
|
| 'builder': 'GPU Mac10.7',
|
| 'factory_id': 'f_gpu_mac_rel',
|
| - 'recipe': 'gpu/build_and_test',
|
| + 'recipe': 'gpu/download_and_test',
|
| 'build_config': 'Release',
|
| 'perf_id': 'gpu-webkit-mac',
|
| + 'triggered_by': 'GPU Mac Builder',
|
| },
|
| {
|
| 'builder': 'GPU Mac10.7 (dbg)',
|
| 'factory_id': 'f_gpu_mac_dbg',
|
| - 'recipe': 'gpu/build_and_test',
|
| + 'recipe': 'gpu/download_and_test',
|
| 'build_config': 'Debug',
|
| + 'triggered_by': 'GPU Mac Builder (dbg)',
|
| },
|
| {
|
| 'builder': 'GPU Linux Builder',
|
| @@ -80,15 +87,17 @@ gpu_bot_info = [
|
| {
|
| 'builder': 'GPU Linux (NVIDIA)',
|
| 'factory_id': 'f_gpu_linux_rel',
|
| - 'recipe': 'gpu/build_and_test',
|
| + 'recipe': 'gpu/download_and_test',
|
| 'build_config': 'Release',
|
| 'perf_id': 'gpu-webkit-linux-nvidia',
|
| + 'triggered_by': 'GPU Linux Builder',
|
| },
|
| {
|
| 'builder': 'GPU Linux (dbg) (NVIDIA)',
|
| 'factory_id': 'f_gpu_linux_dbg',
|
| - 'recipe': 'gpu/build_and_test',
|
| + 'recipe': 'gpu/download_and_test',
|
| 'build_config': 'Debug',
|
| + 'triggered_by': 'GPU Linux Builder (dbg)',
|
| },
|
| ]
|
|
|
| @@ -96,20 +105,57 @@ m_annotator = annotator_factory.AnnotatorFactory()
|
|
|
| defaults['category'] = 'gpu'
|
|
|
| -for bot in gpu_bot_info:
|
| +# Maps the parent builder to a set of the names of the builders it triggers.
|
| +trigger_map = collections.defaultdict(list)
|
| +# Maps the name of the parent builder to the (synthesized) name of its
|
| +# trigger, wrapped in a list.
|
| +trigger_name_map = {}
|
| +next_group_id = 0
|
| +# Note this code is very similar to that in recipe_master_helper.py.
|
| +# Unfortunately due to the different structure of this waterfall it's
|
| +# impossible to share the code.
|
| +def BuilderExists(builder_name):
|
| + for s in gpu_slave_info:
|
| + if s['builder'] == builder_name:
|
| + return True
|
| + return False
|
| +
|
| +for slave in gpu_slave_info:
|
| + builder = slave['builder']
|
| + parent_builder = slave.get('triggered_by')
|
| + if parent_builder is not None:
|
| + if not BuilderExists(parent_builder):
|
| + raise Exception('Could not find parent builder %s for builder %s' %
|
| + (parent_builder, builder))
|
| + trigger_map[parent_builder].append(builder)
|
| + if parent_builder not in trigger_name_map:
|
| + trigger_name_map[parent_builder] = 'trigger_group_%d' % next_group_id
|
| + next_group_id += 1
|
| +
|
| +# Create triggers
|
| +for trigger_name in trigger_name_map.values():
|
| + T(trigger_name)
|
| +
|
| +# Set up bots
|
| +for slave in gpu_slave_info:
|
| factory_properties = {
|
| 'test_results_server': 'test-results.appspot.com',
|
| 'generate_gtest_json': True,
|
| - 'build_config': bot['build_config'],
|
| + 'build_config': slave['build_config'],
|
| 'top_of_tree_blink': True
|
| }
|
| - if 'perf_id' in bot:
|
| + if 'perf_id' in slave:
|
| factory_properties['show_perf_results'] = True
|
| - factory_properties['perf_id'] = bot['perf_id']
|
| - B(bot['builder'], bot['factory_id'], scheduler='global_scheduler')
|
| - F(bot['factory_id'], m_annotator.BaseFactory(
|
| - bot['recipe'],
|
| - factory_properties))
|
| + factory_properties['perf_id'] = slave['perf_id']
|
| + name = slave['builder']
|
| + scheduler = 'global_scheduler'
|
| + if 'triggered_by' in slave:
|
| + scheduler = trigger_name_map[slave['triggered_by']]
|
| + B(name, slave['factory_id'], scheduler=scheduler)
|
| + F(slave['factory_id'], m_annotator.BaseFactory(
|
| + slave['recipe'],
|
| + factory_properties,
|
| + [trigger_name_map[name]] if name in trigger_name_map else None))
|
|
|
|
|
| def Update(_config, _active_master, c):
|
|
|