Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: tools/gardening/lib/src/client.dart

Issue 3002743002: Fix buildbot_data_test (Closed)
Patch Set: Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:io' hide HttpException; 6 import 'dart:io' hide HttpException;
7 7
8 import 'buildbot_data.dart'; 8 import 'buildbot_data.dart';
9 import 'buildbot_loading.dart'; 9 import 'buildbot_loading.dart';
10 import 'buildbot_structures.dart'; 10 import 'buildbot_structures.dart';
11 import 'logdog.dart'; 11 import 'logdog.dart';
12 import 'util.dart'; 12 import 'util.dart';
13 13
14 /// Interface for pulling build bot results. 14 /// Interface for pulling build bot results.
15 abstract class BuildbotClient { 15 abstract class BuildbotClient {
16 /// Reads the [BuildResult] for the [buildUri]. 16 /// Reads the [BuildResult] for the [buildUri].
17 Future<BuildResult> readResult(BuildUri buildUri); 17 Future<BuildResult> readResult(BuildUri buildUri);
18 18
19 int get mostRecentBuildNumber; 19 int get mostRecentBuildNumber;
20 20
21 /// Closes the client and cleans up its state. 21 /// Closes the client and cleans up its state.
22 void close(); 22 void close();
23 } 23 }
24 24
25 /// Buildbot client that pulls build bot results through http. 25 /// Buildbot client that pulls build bot results through http.
26 class HttpBuildbotClient implements BuildbotClient { 26 class HttpBuildbotClient implements BuildbotClient {
27 final HttpClient _client = new HttpClient(); 27 final HttpClient _client = new HttpClient();
28 28
29 static const int maxSkips = 3;
30
29 @override 31 @override
30 Future<BuildResult> readResult(BuildUri buildUri) async { 32 Future<BuildResult> readResult(BuildUri buildUri) async {
33 int skips = 0;
31 Duration timeout; 34 Duration timeout;
32 if (buildUri.buildNumber < 0) { 35 if (buildUri.buildNumber < 0) {
33 timeout = new Duration(seconds: 1); 36 timeout = new Duration(seconds: 1);
34 } 37 }
35 38
36 void skipToPreviousBuildNumber() { 39 void skipToPreviousBuildNumber() {
37 BuildUri prevBuildUri = buildUri.prev(); 40 BuildUri prevBuildUri = buildUri.prev();
38 log('Skip build number on ${buildUri} -> ${prevBuildUri.buildNumber}'); 41 log('Skip build number on ${buildUri} -> ${prevBuildUri.buildNumber}');
39 buildUri = buildUri.prev(); 42 buildUri = buildUri.prev();
40 } 43 }
41 44
42 while (true) { 45 while (true) {
43 try { 46 try {
44 return await readBuildResultFromHttp(_client, buildUri, timeout); 47 return await readBuildResultFromHttp(_client, buildUri, timeout);
45 } on TimeoutException { 48 } on TimeoutException {
46 if (timeout != null) { 49 if (timeout != null && skips < maxSkips) {
50 skips++;
47 skipToPreviousBuildNumber(); 51 skipToPreviousBuildNumber();
48 continue; 52 continue;
49 } 53 }
50 return null; 54 return null;
51 } on HttpException { 55 } on HttpException {
52 if (timeout != null) { 56 if (timeout != null && skips < maxSkips) {
57 skips++;
53 skipToPreviousBuildNumber(); 58 skipToPreviousBuildNumber();
54 continue; 59 continue;
55 } 60 }
56 return null; 61 return null;
57 } on SocketException { 62 } on SocketException {
58 return null; 63 return null;
59 } 64 }
60 } 65 }
61 } 66 }
62 67
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 buildUri = buildUri.withBuildNumber(buildNumber); 117 buildUri = buildUri.withBuildNumber(buildNumber);
113 } 118 }
114 } 119 }
115 } 120 }
116 121
117 @override 122 @override
118 void close() { 123 void close() {
119 // Nothing to do. 124 // Nothing to do.
120 } 125 }
121 } 126 }
OLDNEW
« no previous file with comments | « tools/gardening/lib/src/buildbot_structures.dart ('k') | tools/gardening/test/buildbot_data_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698