| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 | 2 |
| 3 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 3 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 4 # for details. All rights reserved. Use of this source code is governed by a | 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. | 5 # BSD-style license that can be found in the LICENSE file. |
| 6 | 6 |
| 7 """ | 7 """ |
| 8 Pkg buildbot steps. | 8 Pkg buildbot steps. |
| 9 | 9 |
| 10 Runs tests for packages that are hosted in the main Dart repo and in | 10 Runs tests for packages that are hosted in the main Dart repo and in |
| 11 third_party/pkg_tested. | 11 third_party/pkg_tested. |
| 12 """ | 12 """ |
| 13 | 13 |
| 14 import os | 14 import os |
| 15 import re | 15 import re |
| 16 import sys | 16 import sys |
| 17 | 17 |
| 18 import bot | 18 import bot |
| 19 | 19 |
| 20 PKG_BUILDER = r'pkg-(linux|mac|win)(-(russian))?(-(debug))?' | 20 PKG_BUILDER = r'pkg-(linux|mac|win)(-(russian))?' |
| 21 | 21 |
| 22 def PkgConfig(name, is_buildbot): | 22 def PkgConfig(name, is_buildbot): |
| 23 """Returns info for the current buildbot based on the name of the builder. | 23 """Returns info for the current buildbot based on the name of the builder. |
| 24 | 24 |
| 25 Currently, this is just: | 25 Currently, this is just: |
| 26 - mode: "debug", "release" | |
| 27 - system: "linux", "mac", or "win" | 26 - system: "linux", "mac", or "win" |
| 28 """ | 27 """ |
| 29 pkg_pattern = re.match(PKG_BUILDER, name) | 28 pkg_pattern = re.match(PKG_BUILDER, name) |
| 30 if not pkg_pattern: | 29 if not pkg_pattern: |
| 31 return None | 30 return None |
| 32 | 31 |
| 33 system = pkg_pattern.group(1) | 32 system = pkg_pattern.group(1) |
| 34 locale = pkg_pattern.group(3) | 33 locale = pkg_pattern.group(3) |
| 35 mode = pkg_pattern.group(5) or 'release' | |
| 36 if system == 'win': system = 'windows' | 34 if system == 'win': system = 'windows' |
| 37 | 35 |
| 38 return bot.BuildInfo('none', 'vm', mode, system, checked=True, | 36 return bot.BuildInfo('none', 'vm', 'release', system, checked=True, |
| 39 builder_tag=locale) | 37 builder_tag=locale) |
| 40 | 38 |
| 41 def PkgSteps(build_info): | 39 def PkgSteps(build_info): |
| 42 common_args = ['--write-test-outcome-log'] | 40 common_args = ['--write-test-outcome-log'] |
| 43 if build_info.builder_tag: | 41 if build_info.builder_tag: |
| 44 common_args.append('--builder-tag=%s' % build_info.builder_tag) | 42 common_args.append('--builder-tag=%s' % build_info.builder_tag) |
| 45 | 43 |
| 46 # There are a number of big/integration tests in pkg, run with bigger timeout | 44 # There are a number of big/integration tests in pkg, run with bigger timeout |
| 47 timeout = 300 if build_info.mode == 'debug' else 120 | 45 common_args.append('--timeout=120') |
| 48 common_args.append('--timeout=%s' % timeout) | |
| 49 # We have some unreproducible vm crashes on these bots | 46 # We have some unreproducible vm crashes on these bots |
| 50 common_args.append('--copy-coredumps') | 47 common_args.append('--copy-coredumps') |
| 51 | 48 |
| 52 # We are seeing issues with pub get calls on the windows bots. | 49 # We are seeing issues with pub get calls on the windows bots. |
| 53 # Experiment with not running concurrent calls. | 50 # Experiment with not running concurrent calls. |
| 54 if build_info.system == 'windows': | 51 if build_info.system == 'windows': |
| 55 common_args.append('-j1') | 52 common_args.append('-j1') |
| 56 | 53 |
| 57 bot.RunTest('pkg', build_info, | 54 bot.RunTest('pkg', build_info, |
| 58 common_args + ['pkg', 'docs'], | 55 common_args + ['pkg', 'docs'], |
| 59 swallow_error=True) | 56 swallow_error=True) |
| 60 | 57 |
| 61 # Pkg tests currently have a lot of timeouts when run in debug mode. | |
| 62 # See issue 18479 | |
| 63 if build_info.mode != 'release': return | |
| 64 | |
| 65 with bot.BuildStep('third_party pkg tests', swallow_error=True): | 58 with bot.BuildStep('third_party pkg tests', swallow_error=True): |
| 66 pkg_tested = os.path.join('third_party', 'pkg_tested') | 59 pkg_tested = os.path.join('third_party', 'pkg_tested') |
| 67 for entry in os.listdir(pkg_tested): | 60 for entry in os.listdir(pkg_tested): |
| 68 path = os.path.join(pkg_tested, entry) | 61 path = os.path.join(pkg_tested, entry) |
| 69 if os.path.isdir(path): bot.RunTestRunner(build_info, path) | 62 if os.path.isdir(path): |
| 63 bot.RunTestRunner(build_info, path) |
| 70 | 64 |
| 71 pkgbuild_build_info = bot.BuildInfo('none', 'vm', build_info.mode, | 65 pkgbuild_build_info = bot.BuildInfo('none', 'vm', build_info.mode, |
| 72 build_info.system, checked=False) | 66 build_info.system, checked=False) |
| 73 bot.RunTest('pkgbuild_repo_pkgs', pkgbuild_build_info, | |
| 74 common_args + ['--append_logs', '--use-repository-packages', | |
| 75 'pkgbuild'], | |
| 76 swallow_error=True) | |
| 77 | 67 |
| 78 public_args = (common_args + | 68 public_args = (common_args + ['--append_logs', 'pkgbuild']) |
| 79 ['--append_logs', '--use-public-packages', 'pkgbuild']) | |
| 80 bot.RunTest('pkgbuild_public_pkgs', pkgbuild_build_info, public_args) | 69 bot.RunTest('pkgbuild_public_pkgs', pkgbuild_build_info, public_args) |
| 81 | 70 |
| 82 if __name__ == '__main__': | 71 if __name__ == '__main__': |
| 83 bot.RunBot(PkgConfig, PkgSteps) | 72 bot.RunBot(PkgConfig, PkgSteps) |
| OLD | NEW |