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

Unified Diff: build/android/buildbot/bb_run_bot.py

Issue 17114007: [Android] Refactor the buildbot scripts to prepare for downstream usage. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address second round of comments Created 7 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/android/buildbot/bb_host_steps.py ('k') | build/android/buildbot/bb_utils.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/buildbot/bb_run_bot.py
diff --git a/build/android/buildbot/bb_run_bot.py b/build/android/buildbot/bb_run_bot.py
index e54fa9af69ed92a45fda0b5a3cada9599dd670b5..56da03c61f7a44fa7fdc304b6bd7ca6af63bbe31 100755
--- a/build/android/buildbot/bb_run_bot.py
+++ b/build/android/buildbot/bb_run_bot.py
@@ -15,14 +15,18 @@ import sys
import bb_utils
-BotConfig = collections.namedtuple(
+_BotConfig = collections.namedtuple(
'BotConfig', ['bot_id', 'host_obj', 'test_obj'])
HostConfig = collections.namedtuple(
'HostConfig',
- ['host_steps', 'extra_args', 'extra_gyp_defines', 'target_arch'])
+ ['script', 'host_steps', 'extra_args', 'extra_gyp_defines', 'target_arch'])
-TestConfig = collections.namedtuple('Tests', ['tests', 'extra_args'])
+TestConfig = collections.namedtuple('Tests', ['script', 'tests', 'extra_args'])
+
+
+def BotConfig(bot_id, host_object, test_object=None):
+ return _BotConfig(bot_id, host_object, test_object)
def DictDiff(d1, d2):
@@ -74,24 +78,25 @@ def GetEnvironment(host_obj, testing):
return env
-def GetCommands(options, bot_config):
+def GetCommands(options, bot_config, host_step_script, device_step_script):
"""Get a formatted list of commands.
Args:
options: Options object.
bot_config: A BotConfig named tuple.
+ host_step_script: Host step script.
+ device_step_script: Device step script.
Returns:
list of Command objects.
"""
property_args = bb_utils.EncodeProperties(options)
- commands = [['build/android/buildbot/bb_host_steps.py'] +
- ['--steps=%s' % ','.join(bot_config.host_obj.host_steps)] +
+ commands = [[host_step_script,
+ '--steps=%s' % ','.join(bot_config.host_obj.host_steps)] +
property_args + (bot_config.host_obj.extra_args or [])]
test_obj = bot_config.test_obj
if test_obj:
- run_test_cmd = [
- 'build/android/buildbot/bb_device_steps.py', '--reboot'] + property_args
+ run_test_cmd = [device_step_script, '--reboot'] + property_args
for test in test_obj.tests:
run_test_cmd.extend(['-f', test])
if test_obj.extra_args:
@@ -108,14 +113,13 @@ def GetBotStepMap():
std_tests = ['ui', 'unit']
flakiness_server = '--upload-to-flakiness-server'
- def B(bot_id, host_object, test_object=None):
- return BotConfig(bot_id, host_object, test_object)
-
- def T(tests, extra_args=None):
- return TestConfig(tests, extra_args)
-
- def H(host_steps, extra_args=None, extra_gyp=None, target_arch=None):
- return HostConfig(host_steps, extra_args, extra_gyp, target_arch)
+ B = BotConfig
+ H = (lambda steps, extra_args=None, extra_gyp=None, target_arch=None :
+ HostConfig('build/android/buildbot/bb_host_steps.py', steps, extra_args,
+ extra_gyp, target_arch))
+ T = (lambda tests, extra_args=None :
+ TestConfig('build/android/buildbot/bb_device_steps.py', tests,
+ extra_args))
bot_configs = [
# Main builders
@@ -181,11 +185,32 @@ def GetBotStepMap():
return bot_map
-def main(argv):
+# Return an object from the map, looking first for an exact id match.
+# If this fails, look for an id which is a substring of the specified id.
+# Choose the longest of all substring matches.
+# pylint: disable=W0622
+def GetBestMatch(id_map, id):
+ config = id_map.get(id)
+ if not config:
+ substring_matches = filter(lambda x: x in id, id_map.iterkeys())
+ if substring_matches:
+ max_id = max(substring_matches, key=len)
+ print 'Using config from id="%s" (substring match).' % max_id
+ config = id_map[max_id]
+ return config
+
+
+def GetRunBotOptParser():
parser = bb_utils.GetParser()
parser.add_option('--bot-id', help='Specify bot id directly.')
parser.add_option('--testing', action='store_true',
help='For testing: print, but do not run commands')
+
+ return parser
+
+
+def main(argv):
+ parser = GetRunBotOptParser()
options, args = parser.parse_args(argv[1:])
if args:
parser.error('Unused args: %s' % args)
@@ -194,25 +219,17 @@ def main(argv):
if not bot_id:
parser.error('A bot id must be specified through option or factory_props.')
- # Get a BotConfig object looking first for an exact bot-id match. If no exact
- # match, look for a bot-id which is a substring of the specified id.
- # This allows similar bots to have unique IDs, but to share config.
- # If multiple substring matches exist, pick the longest one.
- bot_map = GetBotStepMap()
- bot_config = bot_map.get(bot_id)
- if not bot_config:
- substring_matches = filter(lambda x: x in bot_id, bot_map.iterkeys())
- if substring_matches:
- max_id = max(substring_matches, key=len)
- print 'Using config from id="%s" (substring match).' % max_id
- bot_config = bot_map[max_id]
+ bot_config = GetBestMatch(GetBotStepMap(), bot_id)
if not bot_config:
print 'Error: config for id="%s" cannot be inferred.' % bot_id
return 1
print 'Using config:', bot_config
- commands = GetCommands(options, bot_config)
+ commands = GetCommands(
+ options, bot_config,
+ 'build/android/buildbot/bb_host_steps.py',
+ 'build/android/buildbot/bb_device_steps.py')
for command in commands:
print 'Will run: ', bb_utils.CommandToString(command)
print
« no previous file with comments | « build/android/buildbot/bb_host_steps.py ('k') | build/android/buildbot/bb_utils.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698