Fix buildbot_data_test
+ clean up BuildUri state R=floitsch@google.com Review-Url: https://codereview.chromium.org/3002743002 .
This commit is contained in:
@@ -551,10 +551,28 @@ const List<BuildGroup> buildGroups = const <BuildGroup>[
|
||||
const BuildGroup(
|
||||
groupName: 'chrome',
|
||||
subgroups: const <BuildSubgroup>[
|
||||
const BuildSubgroup(shardNames: const <String>[
|
||||
'dart2js-linux-drt-csp-minified-be'
|
||||
], testSteps: const <String>[
|
||||
'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 <String>[
|
||||
'dart2js-linux-drt-1-2-be',
|
||||
'dart2js-linux-drt-2-2-be',
|
||||
'dart2js-linux-drt-csp-minified-be'
|
||||
], testSteps: const <String>[
|
||||
'dart2js-drt tests',
|
||||
'dart2js-drt-observatory_ui tests',
|
||||
|
||||
@@ -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<String> 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() {
|
||||
|
||||
@@ -26,8 +26,11 @@ abstract class BuildbotClient {
|
||||
class HttpBuildbotClient implements BuildbotClient {
|
||||
final HttpClient _client = new HttpClient();
|
||||
|
||||
static const int maxSkips = 3;
|
||||
|
||||
@override
|
||||
Future<BuildResult> 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;
|
||||
}
|
||||
|
||||
@@ -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<String> args) async {
|
||||
@@ -17,32 +17,34 @@ main(List<String> args) async {
|
||||
processArgResults(argResults);
|
||||
bool useLogdog = argResults['logdog'];
|
||||
|
||||
BuildbotClient client =
|
||||
useLogdog ? new LogdogBuildbotClient() : new HttpBuildbotClient();
|
||||
Bot bot = new Bot(logdog: useLogdog);
|
||||
|
||||
List<String> failingUris = <String>[];
|
||||
List<BuildUri> buildUris = <BuildUri>[];
|
||||
for (BuildGroup buildGroup in buildGroups) {
|
||||
for (BuildSubgroup buildSubgroup in buildGroup.subgroups) {
|
||||
if (!useLogdog && !buildSubgroup.isActive) continue;
|
||||
List<BuildUri> 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<BuildResult> 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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user