| OLD | NEW |
| (Empty) |
| 1 #!/usr/bin/python | |
| 2 | |
| 3 # Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | |
| 4 # for details. All rights reserved. Use of this source code is governed by a | |
| 5 # BSD-style license that can be found in the LICENSE file. | |
| 6 | |
| 7 """ | |
| 8 Buildbot steps for functional testing master and slaves | |
| 9 """ | |
| 10 | |
| 11 import os | |
| 12 import os.path | |
| 13 import re | |
| 14 import shutil | |
| 15 import subprocess | |
| 16 import sys | |
| 17 | |
| 18 import bot | |
| 19 import bot_utils | |
| 20 | |
| 21 utils = bot_utils.GetUtils() | |
| 22 | |
| 23 FT_BUILDER = r'ft-slave-(linux|mac)' | |
| 24 FT_MASTER = r'ft-master' | |
| 25 | |
| 26 HOST_OS = utils.GuessOS() | |
| 27 | |
| 28 def IsWindows(): | |
| 29 return HOST_OS == 'win32' | |
| 30 | |
| 31 def SrcConfig(name, is_buildbot): | |
| 32 """Returns info for the current buildbot based on the name of the builder. | |
| 33 | |
| 34 - mode: always "release" | |
| 35 - system: always "linux" or "mac" | |
| 36 """ | |
| 37 pattern = re.match(FT_BUILDER, name) | |
| 38 master_pattern = re.match(FT_MASTER, name) | |
| 39 if not pattern and not master_pattern: | |
| 40 return None | |
| 41 if master_pattern: | |
| 42 tag = 'master' | |
| 43 system = 'linux' | |
| 44 else: | |
| 45 tag = 'slave' | |
| 46 system = pattern.group(1) | |
| 47 return bot.BuildInfo('none', 'none', 'release', system, | |
| 48 builder_tag=tag) | |
| 49 | |
| 50 def Run(args): | |
| 51 print "Running: %s" % ' '.join(args) | |
| 52 sys.stdout.flush() | |
| 53 bot.RunProcess(args) | |
| 54 | |
| 55 def FTSlave(config): | |
| 56 | |
| 57 # Run SWTBot tests | |
| 58 if len(sys.argv) > 0: | |
| 59 scriptdir = os.path.dirname(sys.argv[0]) | |
| 60 builddir = os.path.join(scriptdir, '..', '..', 'editor', 'build') | |
| 61 testScript = os.path.join(builddir, 'testswteditor.py') | |
| 62 cmd = [sys.executable, testScript] | |
| 63 try: | |
| 64 subprocess.call(cmd, shell=IsWindows()) | |
| 65 except: | |
| 66 pass | |
| 67 | |
| 68 # Prepare to run EggPlant tests | |
| 69 with bot.BuildStep('Fetching editor'): | |
| 70 revision = int(os.environ['BUILDBOT_GOT_REVISION']) | |
| 71 bot_name, _ = bot.GetBotName() | |
| 72 print bot_name | |
| 73 channel = bot_utils.GetChannelFromName(bot_name) | |
| 74 namer = bot_utils.GCSNamer(channel=channel) | |
| 75 system = config.system | |
| 76 if system == 'mac': | |
| 77 system = 'macos' | |
| 78 editor_path = namer.editor_zipfilepath(revision, system, 'x64') | |
| 79 gsutils = bot_utils.GSUtil() | |
| 80 editor_location='/home/chrome-bot/Desktop' | |
| 81 if system == 'macos': | |
| 82 editor_location='/Users/chrome-bot/Desktop' | |
| 83 local_path = os.path.join(editor_location, 'editor.zip') | |
| 84 if os.path.exists(local_path): | |
| 85 os.remove(local_path) | |
| 86 local_extracted = os.path.join(editor_location, 'dart') | |
| 87 shutil.rmtree(local_extracted, ignore_errors=True) | |
| 88 gsutils.execute(['cp', editor_path, local_path]) | |
| 89 Run(['unzip', local_path, '-d', editor_location]) | |
| 90 | |
| 91 def FTMaster(config): | |
| 92 run = int(os.environ['BUILDBOT_ANNOTATED_STEPS_RUN']) | |
| 93 with bot.BuildStep('Master run %s' % run): | |
| 94 if run == 1: | |
| 95 print 'Not doing anything on master before the triggers' | |
| 96 return | |
| 97 else: | |
| 98 builddir = os.path.join(bot_utils.DART_DIR, | |
| 99 utils.GetBuildDir(HOST_OS), | |
| 100 'functional_testing') | |
| 101 shutil.rmtree(builddir, ignore_errors=True) | |
| 102 os.makedirs(builddir) | |
| 103 script_locations = os.path.join(bot_utils.DART_DIR, 'editor', 'ft') | |
| 104 Run(['/home/chrome-bot/func-test/bot-run', builddir, script_locations]) | |
| 105 #TODO Copy builddir to shared storage somewhere. | |
| 106 | |
| 107 def FTSteps(config): | |
| 108 if config.builder_tag == 'master': | |
| 109 FTMaster(config) | |
| 110 else: | |
| 111 FTSlave(config) | |
| 112 | |
| 113 if __name__ == '__main__': | |
| 114 bot.RunBot(SrcConfig, FTSteps, build_step=None) | |
| OLD | NEW |