Skip to content

Commit

Permalink
Fix index bug in readResults
Browse files Browse the repository at this point in the history
R=floitsch@google.com

Review-Url: https://codereview.chromium.org/2996013002 .
  • Loading branch information
johnniwinther committed Aug 16, 2017
1 parent 3f9d99b commit 9abec74
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 3 deletions.
6 changes: 4 additions & 2 deletions tools/gardening/lib/src/bot.dart
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,16 @@ class Bot {
return _client.readResult(buildUri);
}

/// Maximum number of [BuildResult]s read concurrently by [readResults].
static const maxParallel = 20;

/// Reads the build results of all given uris.
///
/// Returns a list of the results. If a uri couldn't be read, then the entry
/// in the list is `null`.
Future<List<BuildResult>> readResults(List<BuildUri> buildUris) async {
var result = <BuildResult>[];
int i = 0;
const maxParallel = 20;
while (i < buildUris.length) {
var end = i + maxParallel;
if (end > buildUris.length) end = buildUris.length;
Expand All @@ -60,7 +62,7 @@ class Bot {
}
return result;
})));
i = end + 1;
i = end;
}
return result;
}
Expand Down
6 changes: 5 additions & 1 deletion tools/gardening/lib/src/compare_failures_impl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,11 @@ Future<Map<BuildUri, List<BuildResult>>> loadBuildResults(
Map<BuildUri, List<BuildResult>> pastResultsMap =
<BuildUri, List<BuildResult>>{};
List<BuildResult> buildResults = await bot.readResults(buildUriList);
for (int index = 0; index < buildUriList.length; index++) {
if (buildResults.length != buildUriList.length) {
print('Result mismatch: Pulled ${buildUriList.length} uris, '
'received ${buildResults.length} results.');
}
for (int index = 0; index < buildResults.length; index++) {
BuildUri buildUri = buildUriList[index];
BuildResult buildResult = buildResults[index];
List<BuildResult> results =
Expand Down
20 changes: 20 additions & 0 deletions tools/gardening/test/bot_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Copyright (c) 2017, 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.

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 'test_client.dart';

main() async {
Bot bot = new Bot.internal(new DummyClient());
List<BuildUri> buildUriList = buildGroups
.firstWhere((g) => g.groupName == 'dart2js-linux')
.createUris(bot.mostRecentBuildNumber);
Expect.isTrue(buildUriList.length > Bot.maxParallel);
List<BuildResult> buildResults = await bot.readResults(buildUriList);
Expect.equals(buildUriList.length, buildResults.length);
bot.close();
}
14 changes: 14 additions & 0 deletions tools/gardening/test/test_client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,17 @@ class TestClient implements BuildbotClient {
@override
int get mostRecentBuildNumber => -1;
}

class DummyClient implements BuildbotClient {
@override
Future<BuildResult> readResult(BuildUri buildUri) {
return new Future.value(
new BuildResult(buildUri, 1, const [], const [], const []));
}

@override
void close() {}

@override
int get mostRecentBuildNumber => -1;
}

0 comments on commit 9abec74

Please sign in to comment.