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

Side by Side Diff: build/android/buildbot/bb_run_bot.py

Issue 12758002: Add android buildbot support for exe tests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Don't wrap with bash for presubmit testing. CQ has no android_tools directory. Created 7 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « build/android/buildbot/bb_device_steps.py ('k') | build/android/pylib/gtest/dispatch.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright (c) 2013 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 import collections 7 import collections
8 import json 8 import json
9 import optparse 9 import optparse
10 import os 10 import os
11 import pipes 11 import pipes
12 import subprocess 12 import subprocess
13 import sys 13 import sys
14 14
15 sys.path.append(os.path.join(os.path.dirname(__file__), '..')) 15 sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
16 from pylib import buildbot_report 16 from pylib import buildbot_report
17 17
18 CHROME_SRC = os.path.abspath( 18 CHROME_SRC = os.path.abspath(
19 os.path.join(os.path.dirname(__file__), '..', '..', '..')) 19 os.path.join(os.path.dirname(__file__), '..', '..', '..'))
20 20
21 GLOBAL_SLAVE_PROPS = {} 21 GLOBAL_SLAVE_PROPS = {}
22 22
23 BotConfig = collections.namedtuple( 23 BotConfig = collections.namedtuple(
24 'BotConfig', ['bot_id', 'bash_funs', 'test_obj', 'slave_props']) 24 'BotConfig', ['bot_id', 'bash_funs', 'test_obj', 'slave_props'])
25 TestConfig = collections.namedtuple('Tests', ['tests', 'extra_args']) 25 TestConfig = collections.namedtuple('Tests', ['tests', 'extra_args'])
26 Command = collections.namedtuple('Command', ['step_name', 'command']) 26 Command = collections.namedtuple(
27 'Command', ['step_name', 'command', 'testing_cmd'])
27 28
28 29
29 def GetCommands(options, bot_config): 30 def GetCommands(options, bot_config):
30 """Get a formatted list of commands. 31 """Get a formatted list of commands.
31 32
32 Args: 33 Args:
33 options: Options object. 34 options: Options object.
34 bot_config: A BotConfig named tuple. 35 bot_config: A BotConfig named tuple.
35 Returns: 36 Returns:
36 list of Command objects. 37 list of Command objects.
37 """ 38 """
38 slave_props = dict(GLOBAL_SLAVE_PROPS) 39 slave_props = dict(GLOBAL_SLAVE_PROPS)
39 if bot_config.slave_props: 40 if bot_config.slave_props:
40 slave_props.update(bot_config.slave_props) 41 slave_props.update(bot_config.slave_props)
41 42
42 property_args = [ 43 property_args = [
43 '--factory-properties=%s' % json.dumps(options.factory_properties), 44 '--factory-properties=%s' % json.dumps(options.factory_properties),
44 '--build-properties=%s' % json.dumps(options.build_properties), 45 '--build-properties=%s' % json.dumps(options.build_properties),
45 '--slave-properties=%s' % json.dumps(slave_props)] 46 '--slave-properties=%s' % json.dumps(slave_props)]
46 47
47 commands = [] 48 commands = []
49 def WrapWithBash(command):
50 """Wrap a bash command string with envsetup scripts."""
51 return ['bash', '-exc', '; '.join([
52 '. build/android/buildbot/buildbot_functions.sh',
53 'bb_baseline_setup %s %s' % (
54 CHROME_SRC,
55 ' '.join(map(pipes.quote, property_args))),
56 command])
57 ]
58
48 if bot_config.bash_funs: 59 if bot_config.bash_funs:
49 bash_base = [ 60 # bash_funs command does not have a testing mode.
50 '. build/android/buildbot/buildbot_functions.sh', 61 commands.append(
51 "bb_baseline_setup %s '%s'" % 62 Command(None, WrapWithBash('; '.join(bot_config.bash_funs)), None))
52 (CHROME_SRC, "' '".join(property_args))]
53 commands.append(Command(
54 None, ['bash', '-exc', '; '.join(bash_base + bot_config.bash_funs)]))
55 63
56 test_obj = bot_config.test_obj 64 test_obj = bot_config.test_obj
57 if test_obj: 65 if test_obj:
58 run_test_cmd = [ 66 run_test_cmd = [
59 'build/android/buildbot/bb_device_steps.py', '--reboot'] + property_args 67 'build/android/buildbot/bb_device_steps.py', '--reboot'] + property_args
60 for test in test_obj.tests: 68 for test in test_obj.tests:
61 run_test_cmd.extend(['-f', test]) 69 run_test_cmd.extend(['-f', test])
62 if test_obj.extra_args: 70 if test_obj.extra_args:
63 run_test_cmd.extend(test_obj.extra_args) 71 run_test_cmd.extend(test_obj.extra_args)
64 commands.append(Command('Run tests', run_test_cmd)) 72 commands.append(Command(
73 'Run tests',
74 WrapWithBash(' '.join(map(pipes.quote, run_test_cmd))), run_test_cmd))
65 75
66 return commands 76 return commands
67 77
68 78
69 def GetBotStepMap(): 79 def GetBotStepMap():
70 compile_step = ['bb_compile'] 80 compile_step = ['bb_compile']
71 std_build_steps = ['bb_compile', 'bb_zip_build'] 81 std_build_steps = ['bb_compile', 'bb_zip_build']
72 std_test_steps = ['bb_extract_build'] 82 std_test_steps = ['bb_extract_build']
73 std_tests = ['ui', 'unit'] 83 std_tests = ['ui', 'unit']
74 84
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 print 'Will run:', CommandToString(command_obj.command) 191 print 'Will run:', CommandToString(command_obj.command)
182 192
183 for command_obj in command_objs: 193 for command_obj in command_objs:
184 if command_obj.step_name: 194 if command_obj.step_name:
185 buildbot_report.PrintNamedStep(command_obj.step_name) 195 buildbot_report.PrintNamedStep(command_obj.step_name)
186 command = command_obj.command 196 command = command_obj.command
187 print CommandToString(command) 197 print CommandToString(command)
188 sys.stdout.flush() 198 sys.stdout.flush()
189 env = None 199 env = None
190 if options.TESTING: 200 if options.TESTING:
191 # The bash command doesn't yet support the testing option. 201 if not command_obj.testing_cmd:
192 if command[0] == 'bash':
193 continue 202 continue
194 env = dict(os.environ) 203 return_code = subprocess.call(
195 env['BUILDBOT_TESTING'] = '1' 204 command_obj.testing_cmd,
196 205 cwd=CHROME_SRC,
197 return_code = subprocess.call(command, cwd=CHROME_SRC, env=env) 206 env=dict(os.environ, BUILDBOT_TESTING='1'))
207 else:
208 return_code = subprocess.call(command, cwd=CHROME_SRC, env=env)
198 if return_code != 0: 209 if return_code != 0:
199 return return_code 210 return return_code
200 211
201 212
202 if __name__ == '__main__': 213 if __name__ == '__main__':
203 sys.exit(main(sys.argv)) 214 sys.exit(main(sys.argv))
OLDNEW
« no previous file with comments | « build/android/buildbot/bb_device_steps.py ('k') | build/android/pylib/gtest/dispatch.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698