4b9def5115
BUG= R=kustermann@google.com Review URL: https://codereview.chromium.org//423483002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@38574 260f80e4-7a28-3924-810f-c04153c831b5
96 lines
2.8 KiB
Python
96 lines
2.8 KiB
Python
#!/usr/bin/python
|
|
|
|
# Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
|
|
# for details. All rights reserved. Use of this source code is governed by a
|
|
# BSD-style license that can be found in the LICENSE file.
|
|
|
|
"""
|
|
Buildbot steps for functional testing master and slaves
|
|
"""
|
|
|
|
import os
|
|
import re
|
|
import shutil
|
|
import sys
|
|
|
|
import bot
|
|
import bot_utils
|
|
|
|
utils = bot_utils.GetUtils()
|
|
|
|
FT_BUILDER = r'ft-slave-(linux|mac)'
|
|
FT_MASTER = r'ft-master'
|
|
|
|
HOST_OS = utils.GuessOS()
|
|
|
|
def SrcConfig(name, is_buildbot):
|
|
"""Returns info for the current buildbot based on the name of the builder.
|
|
|
|
- mode: always "release"
|
|
- system: always "linux" or "mac"
|
|
"""
|
|
pattern = re.match(FT_BUILDER, name)
|
|
master_pattern = re.match(FT_MASTER, name)
|
|
if not pattern and not master_pattern:
|
|
return None
|
|
if master_pattern:
|
|
tag = 'master'
|
|
system = 'linux'
|
|
else:
|
|
tag = 'slave'
|
|
system = pattern.group(1)
|
|
return bot.BuildInfo('none', 'none', 'release', system,
|
|
builder_tag=tag)
|
|
|
|
def Run(args):
|
|
print "Running: %s" % ' '.join(args)
|
|
sys.stdout.flush()
|
|
bot.RunProcess(args)
|
|
|
|
def FTSlave(config):
|
|
with bot.BuildStep('Fetching editor'):
|
|
revision = int(os.environ['BUILDBOT_GOT_REVISION'])
|
|
bot_name, _ = bot.GetBotName()
|
|
print bot_name
|
|
channel = bot_utils.GetChannelFromName(bot_name)
|
|
namer = bot_utils.GCSNamer(channel=channel)
|
|
system = config.system
|
|
if system == 'mac':
|
|
system = 'macos'
|
|
editor_path = namer.editor_zipfilepath(revision, system, 'x64')
|
|
gsutils = bot_utils.GSUtil()
|
|
editor_location='/home/chrome-bot/Desktop'
|
|
if system == 'macos':
|
|
editor_location='/Users/chrome-bot/Desktop'
|
|
local_path = os.path.join(editor_location, 'editor.zip')
|
|
if os.path.exists(local_path):
|
|
os.remove(local_path)
|
|
local_extracted = os.path.join(editor_location, 'dart')
|
|
shutil.rmtree(local_extracted, ignore_errors=True)
|
|
gsutils.execute(['cp', editor_path, local_path])
|
|
Run(['unzip', local_path, '-d', editor_location])
|
|
|
|
def FTMaster(config):
|
|
run = int(os.environ['BUILDBOT_ANNOTATED_STEPS_RUN'])
|
|
with bot.BuildStep('Master run %s' % run):
|
|
if run == 1:
|
|
print 'Not doing anything on master before the triggers'
|
|
return
|
|
else:
|
|
builddir = os.path.join(bot_utils.DART_DIR,
|
|
utils.GetBuildDir(HOST_OS),
|
|
'functional_testing')
|
|
shutil.rmtree(builddir, ignore_errors=True)
|
|
os.makedirs(builddir)
|
|
script_locations = os.path.join(bot_utils.DART_DIR, 'editor', 'ft')
|
|
Run(['/home/chrome-bot/func-test/bot-run', builddir, script_locations])
|
|
|
|
def FTSteps(config):
|
|
if config.builder_tag == 'master':
|
|
FTMaster(config)
|
|
else:
|
|
FTSlave(config)
|
|
|
|
if __name__ == '__main__':
|
|
bot.RunBot(SrcConfig, FTSteps, build_step=None)
|