diff --git a/tools/gardening/lib/src/buildbot_data.dart b/tools/gardening/lib/src/buildbot_data.dart index 1bb7da410e7..3948e15b2fd 100644 --- a/tools/gardening/lib/src/buildbot_data.dart +++ b/tools/gardening/lib/src/buildbot_data.dart @@ -551,10 +551,28 @@ const List buildGroups = const [ const BuildGroup( groupName: 'chrome', subgroups: const [ + const BuildSubgroup(shardNames: const [ + 'dart2js-linux-drt-csp-minified-be' + ], testSteps: const [ + 'dart2js-drt tests', + 'dart2js-drt-observatory_ui tests', + 'dart2js-drt-package tests', + 'dart2js-drt-co19 tests', + 'dart2js-drt-extra tests', + 'dart2js-drt-fast-startup tests', + 'dart2js-drt-observatory_ui-fast-startup tests', + 'dart2js-drt-package-fast-startup tests', + 'dart2js-drt-co19-fast-startup tests', + 'dart2js-drt-extra-fast-startup tests', + 'dart2js-drt-fast-startup-checked tests', + 'dart2js-drt-observatory_ui-fast-startup-checked tests', + 'dart2js-drt-package-fast-startup-checked tests', + 'dart2js-drt-co19-fast-startup-checked tests', + 'dart2js-drt-extra-fast-startup-checked tests', + ], isActive: false), const BuildSubgroup(shardNames: const [ 'dart2js-linux-drt-1-2-be', 'dart2js-linux-drt-2-2-be', - 'dart2js-linux-drt-csp-minified-be' ], testSteps: const [ 'dart2js-drt tests', 'dart2js-drt-observatory_ui tests', diff --git a/tools/gardening/lib/src/buildbot_structures.dart b/tools/gardening/lib/src/buildbot_structures.dart index c4fda31070a..36ac35c99eb 100644 --- a/tools/gardening/lib/src/buildbot_structures.dart +++ b/tools/gardening/lib/src/buildbot_structures.dart @@ -6,13 +6,9 @@ import 'util.dart'; /// The [Uri] of a build step stdio log split into its subparts. class BuildUri { - final String scheme; - final String host; - final String prefix; final String botName; final int buildNumber; final String stepName; - final String suffix; factory BuildUri(Uri uri) { List parts = split(Uri.decodeFull(uri.path), @@ -31,13 +27,7 @@ class BuildUri { return new BuildUri(Uri.parse(url)); } - factory BuildUri.fromData(String botName, int buildNumber, String stepName) { - return new BuildUri.internal('https', 'build.chromium.org', - '/p/client.dart', botName, buildNumber, stepName, 'stdio/text'); - } - - BuildUri.internal(this.scheme, this.host, this.prefix, this.botName, - this.buildNumber, this.stepName, this.suffix); + BuildUri.fromData(this.botName, this.buildNumber, this.stepName); BuildUri withBuildNumber(int buildNumber) { return new BuildUri.fromData(botName, buildNumber, stepName); @@ -50,7 +40,7 @@ class BuildUri { String get buildName => '/builders/$botName/builds/$buildNumber/steps/$stepName'; - String get path => '$prefix$buildName/logs/$suffix'; + String get path => '/p/client.dart$buildName/logs/stdio/text'; /// Returns the path used in logdog for this build uri. /// @@ -66,13 +56,12 @@ class BuildUri { /// Creates the [Uri] for this build step stdio log. Uri toUri() { - return new Uri(scheme: scheme, host: host, path: path); + return new Uri(scheme: 'https', host: 'build.chromium.org', path: path); } /// Returns the [BuildUri] the previous build of this build step. BuildUri prev() { - return new BuildUri.internal( - scheme, host, prefix, botName, buildNumber - 1, stepName, suffix); + return new BuildUri.fromData(botName, buildNumber - 1, stepName); } String toString() { diff --git a/tools/gardening/lib/src/client.dart b/tools/gardening/lib/src/client.dart index 0257f5c8a15..eb09ac8f385 100644 --- a/tools/gardening/lib/src/client.dart +++ b/tools/gardening/lib/src/client.dart @@ -26,8 +26,11 @@ abstract class BuildbotClient { class HttpBuildbotClient implements BuildbotClient { final HttpClient _client = new HttpClient(); + static const int maxSkips = 3; + @override Future readResult(BuildUri buildUri) async { + int skips = 0; Duration timeout; if (buildUri.buildNumber < 0) { timeout = new Duration(seconds: 1); @@ -43,13 +46,15 @@ class HttpBuildbotClient implements BuildbotClient { try { return await readBuildResultFromHttp(_client, buildUri, timeout); } on TimeoutException { - if (timeout != null) { + if (timeout != null && skips < maxSkips) { + skips++; skipToPreviousBuildNumber(); continue; } return null; } on HttpException { - if (timeout != null) { + if (timeout != null && skips < maxSkips) { + skips++; skipToPreviousBuildNumber(); continue; } diff --git a/tools/gardening/test/buildbot_data_test.dart b/tools/gardening/test/buildbot_data_test.dart index e02713502c9..7141683f508 100644 --- a/tools/gardening/test/buildbot_data_test.dart +++ b/tools/gardening/test/buildbot_data_test.dart @@ -6,9 +6,9 @@ import 'package:args/args.dart'; import 'package:expect/expect.dart'; +import 'package:gardening/src/bot.dart'; import 'package:gardening/src/buildbot_data.dart'; import 'package:gardening/src/buildbot_structures.dart'; -import 'package:gardening/src/client.dart'; import 'package:gardening/src/util.dart'; main(List args) async { @@ -17,32 +17,34 @@ main(List args) async { processArgResults(argResults); bool useLogdog = argResults['logdog']; - BuildbotClient client = - useLogdog ? new LogdogBuildbotClient() : new HttpBuildbotClient(); + Bot bot = new Bot(logdog: useLogdog); List failingUris = []; + List buildUris = []; for (BuildGroup buildGroup in buildGroups) { for (BuildSubgroup buildSubgroup in buildGroup.subgroups) { if (!useLogdog && !buildSubgroup.isActive) continue; - List buildUris = - buildSubgroup.createUris(client.mostRecentBuildNumber); - for (BuildUri buildUri in buildUris) { - BuildResult result = await client.readResult(buildUri); - if (result == null) { - failingUris.add('$buildUri'); - } - } + buildUris.addAll(buildSubgroup.createUris(bot.mostRecentBuildNumber)); + } + } + List buildResults = await bot.readResults(buildUris); + for (int index = 0; index < buildResults.length; index++) { + BuildUri buildUri = buildUris[index]; + BuildResult result = buildResults[index]; + if (result == null) { + failingUris.add('$buildUri'); } } // TODO(johnniwinther): Find out why these steps cannot be read. Expect.setEquals([ - '/builders/pkg-mac10.11-release-be/builds/-2/' + '/builders/pkg-mac10.11-release-be/builds/-1/' 'steps/third_party/pkg_tested unit tests', - '/builders/pkg-linux-release-be/builds/-2/steps/' + '/builders/pkg-linux-release-be/builds/-1/steps/' 'third_party/pkg_tested unit tests', - '/builders/pkg-win7-release-be/builds/-2/steps/' + '/builders/pkg-win7-release-be/builds/-1/steps/' 'third_party/pkg_tested unit tests', - ], failingUris, "Unexpected failing buildbot uris: $failingUris"); + ], failingUris, + "Unexpected failing buildbot uris:\n ${failingUris.join('\n ')}"); - client.close(); + bot.close(); }