| OLD | NEW |
| 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 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 """Utility class to build the swarm master BuildFactory's. | 5 """Utility class to build the swarm master BuildFactory's. |
| 6 | 6 |
| 7 Based on chromium_factory.py and adds chromium-specific steps.""" | 7 Based on chromium_factory.py and adds chromium-specific steps.""" |
| 8 | 8 |
| 9 import os | 9 import os |
| 10 | 10 |
| 11 from buildbot.process.properties import WithProperties |
| 12 |
| 11 from master.factory import chromium_factory | 13 from master.factory import chromium_factory |
| 12 from master.factory import swarm_commands | 14 from master.factory import swarm_commands |
| 13 | 15 |
| 14 class SwarmFactory(chromium_factory.ChromiumFactory): | 16 class SwarmFactory(chromium_factory.ChromiumFactory): |
| 15 def SwarmFactory(self, target='Release', clobber=False, tests=None, | 17 def SwarmFactory(self, target='Release', clobber=False, tests=None, |
| 16 mode=None, slave_type='BuilderTester', | 18 mode=None, slave_type='BuilderTester', |
| 17 options=None, compile_timeout=1200, build_url=None, | 19 options=None, compile_timeout=1200, build_url=None, |
| 18 project=None, factory_properties=None, gclient_deps=None): | 20 project=None, factory_properties=None, gclient_deps=None): |
| 19 # Do not pass the tests to the ChromiumFactory, they'll be processed below. | 21 # Do not pass the tests to the ChromiumFactory, they'll be processed below. |
| 20 factory = self.ChromiumFactory(target, clobber, [], mode, slave_type, | 22 factory = self.ChromiumFactory(target, clobber, [], mode, slave_type, |
| 21 options, compile_timeout, build_url, project, | 23 options, compile_timeout, build_url, project, |
| 22 factory_properties, gclient_deps) | 24 factory_properties, gclient_deps) |
| 23 | 25 |
| 24 swarm_command_obj = swarm_commands.SwarmCommands(factory, | 26 swarm_command_obj = swarm_commands.SwarmCommands(factory, |
| 25 target, | 27 target, |
| 26 self._build_dir, | 28 self._build_dir, |
| 27 self._target_platform) | 29 self._target_platform) |
| 28 | 30 |
| 29 gclient_env = factory_properties.get("gclient_env") | 31 gclient_env = factory_properties.get('gclient_env') |
| 30 swarm_server = factory_properties.get('swarm_server', | 32 swarm_server = factory_properties.get('swarm_server', |
| 31 'http://localhost:9001') | 33 'http://localhost:9001') |
| 34 data_server = factory_properties.get('data_server', |
| 35 'http://localhost:8080') |
| 36 |
| 37 data_dest_root = factory_properties.get('data_dest_dir') |
| 38 if self._target_platform == 'win32': |
| 39 data_dest_dir = WithProperties(data_dest_root + '\\%s', |
| 40 'buildername:-slave') |
| 41 else: |
| 42 data_dest_dir = WithProperties(data_dest_root + '/%s', |
| 43 'buildername:-slave') |
| 44 |
| 32 gyp_defines = gclient_env['GYP_DEFINES'] | 45 gyp_defines = gclient_env['GYP_DEFINES'] |
| 33 if 'tests_run=hashtable' in gyp_defines: | 46 if 'tests_run=hashtable' in gyp_defines: |
| 34 if self._target_platform == 'win32': | 47 if self._target_platform == 'win32': |
| 35 out_dir = 'build' | 48 out_dir = 'build' |
| 36 elif self._target_platform == 'darwin': | 49 elif self._target_platform == 'darwin': |
| 37 out_dir = 'xcodebuild' | 50 out_dir = 'xcodebuild' |
| 38 else: | 51 else: |
| 39 out_dir = 'out' | 52 out_dir = 'out' |
| 40 | 53 |
| 41 # Send of all the test requests as a single step. | 54 # Send of all the test requests as a single step. |
| 42 swarm_inputs = [os.path.join('src', out_dir, target, test + '.results') | 55 swarm_inputs = [os.path.join('src', out_dir, target, test + '.results') |
| 43 for test in tests] | 56 for test in tests] |
| 57 hashtable_directory = os.path.join('src', out_dir, 'hashtable') |
| 44 swarm_command_obj.AddTriggerSwarmTestStep(self._target_platform, | 58 swarm_command_obj.AddTriggerSwarmTestStep(self._target_platform, |
| 45 swarm_server, | 59 swarm_server, |
| 60 data_server, |
| 61 hashtable_directory, |
| 62 data_dest_dir, |
| 46 factory_properties.get('min_swarm_shards', '3'), | 63 factory_properties.get('min_swarm_shards', '3'), |
| 47 factory_properties.get('max_swarm_shards', '3'), | 64 factory_properties.get('max_swarm_shards', '3'), |
| 48 swarm_inputs) | 65 swarm_inputs) |
| 49 | 66 |
| 50 # Each test has its output returned as its own step. | 67 # Each test has its output returned as its own step. |
| 51 for test in tests: | 68 for test in tests: |
| 52 swarm_command_obj.AddGetSwarmTestStep(swarm_server, test) | 69 swarm_command_obj.AddGetSwarmTestStep(swarm_server, test) |
| 53 | 70 |
| 54 return factory | 71 return factory |
| OLD | NEW |