| Index: tools/gardening/bin/compare_failures.dart
|
| diff --git a/tools/gardening/bin/compare_failures.dart b/tools/gardening/bin/compare_failures.dart
|
| index 8ccf5d66ce898ebf4e27ef016d073cd13e011397..4005a7c716502e74a78759bc77dfea5ddcb2feb6 100644
|
| --- a/tools/gardening/bin/compare_failures.dart
|
| +++ b/tools/gardening/bin/compare_failures.dart
|
| @@ -11,13 +11,18 @@ import 'dart:io';
|
|
|
| import 'package:args/args.dart';
|
| import 'package:gardening/src/buildbot_structures.dart';
|
| -import 'package:gardening/src/buildbot_loading.dart';
|
| +import 'package:gardening/src/client.dart';
|
| import 'package:gardening/src/util.dart';
|
|
|
| main(List<String> args) async {
|
| ArgParser argParser = createArgParser();
|
| ArgResults argResults = argParser.parse(args);
|
| processArgResults(argResults);
|
| +
|
| + BuildbotClient client = argResults['logdog']
|
| + ? new LogdogBuildbotClient()
|
| + : new HttpBuildbotClient();
|
| +
|
| if (argResults.rest.length != 1) {
|
| print('Usage: compare_failures [options] <log-uri>');
|
| print('where <log-uri> is the uri the stdio output of a failing test step');
|
| @@ -31,7 +36,6 @@ main(List<String> args) async {
|
| url += '/text';
|
| }
|
| Uri uri = Uri.parse(url);
|
| - HttpClient client = new HttpClient();
|
| BuildUri buildUri = new BuildUri(uri);
|
| List<BuildResult> results = await readBuildResults(client, buildUri);
|
| print(generateBuildResultsSummary(buildUri, results));
|
| @@ -41,14 +45,15 @@ main(List<String> args) async {
|
| /// Creates a [BuildResult] for [buildUri] and, if it contains failures, the
|
| /// [BuildResult]s for the previous 5 builds.
|
| Future<List<BuildResult>> readBuildResults(
|
| - HttpClient client, BuildUri buildUri) async {
|
| + BuildbotClient client, BuildUri buildUri) async {
|
| List<BuildResult> summaries = <BuildResult>[];
|
| - BuildResult firstSummary = await readBuildResult(client, buildUri);
|
| - summaries.add(firstSummary);
|
| - if (firstSummary.hasFailures) {
|
| + BuildResult summary = await client.readResult(buildUri);
|
| + summaries.add(summary);
|
| + if (summary.hasFailures) {
|
| for (int i = 0; i < 10; i++) {
|
| - buildUri = buildUri.prev();
|
| - summaries.add(await readBuildResult(client, buildUri));
|
| + buildUri = summary.buildUri.prev();
|
| + summary = await client.readResult(buildUri);
|
| + summaries.add(summary);
|
| }
|
| }
|
| return summaries;
|
| @@ -64,8 +69,6 @@ String generateBuildResultsSummary(
|
| timeoutIds.addAll(result.timeouts.map((TestFailure failure) => failure.id));
|
| }
|
| if (timeoutIds.isNotEmpty) {
|
| - int firstBuildNumber = results.first.buildUri.buildNumber;
|
| - int lastBuildNumber = results.last.buildUri.buildNumber;
|
| Map<TestConfiguration, Map<int, Map<String, Timing>>> map =
|
| <TestConfiguration, Map<int, Map<String, Timing>>>{};
|
| Set<String> stepNames = new Set<String>();
|
| @@ -84,9 +87,8 @@ String generateBuildResultsSummary(
|
| sb.write('$id\n');
|
| sb.write(
|
| '${' ' * 8} ${stepNames.map((t) => padRight(t, 14)).join(' ')}\n');
|
| - for (int buildNumber = firstBuildNumber;
|
| - buildNumber >= lastBuildNumber;
|
| - buildNumber--) {
|
| + for (BuildResult result in results) {
|
| + int buildNumber = result.buildUri.buildNumber;
|
| Map<String, Timing> steps = timings[buildNumber] ?? const {};
|
| sb.write(padRight(' ${buildNumber}: ', 8));
|
| for (String stepName in stepNames) {
|
| @@ -107,8 +109,6 @@ String generateBuildResultsSummary(
|
| errorIds.addAll(result.errors.map((TestFailure failure) => failure.id));
|
| }
|
| if (errorIds.isNotEmpty) {
|
| - int firstBuildNumber = results.first.buildUri.buildNumber;
|
| - int lastBuildNumber = results.last.buildUri.buildNumber;
|
| Map<TestConfiguration, Map<int, TestFailure>> map =
|
| <TestConfiguration, Map<int, TestFailure>>{};
|
| for (BuildResult result in results) {
|
| @@ -122,9 +122,8 @@ String generateBuildResultsSummary(
|
| map.forEach((TestConfiguration id, Map<int, TestFailure> failures) {
|
| if (!errorIds.contains(id)) return;
|
| sb.write('$id\n');
|
| - for (int buildNumber = firstBuildNumber;
|
| - buildNumber >= lastBuildNumber;
|
| - buildNumber--) {
|
| + for (BuildResult result in results) {
|
| + int buildNumber = result.buildUri.buildNumber;
|
| TestFailure failure = failures[buildNumber];
|
| sb.write(padRight(' ${buildNumber}: ', 8));
|
| if (failure != null) {
|
|
|