Index: Tools/GardeningServer/scripts/builders.js |
diff --git a/Tools/GardeningServer/scripts/builders.js b/Tools/GardeningServer/scripts/builders.js |
index 9d2aafb1d0e21434cf7d61ba62d9aa6aadf08293..29be9f5164c8f484c6b7ffc765d83043938d1105 100644 |
--- a/Tools/GardeningServer/scripts/builders.js |
+++ b/Tools/GardeningServer/scripts/builders.js |
@@ -70,9 +70,9 @@ function mostRecentCompletedBuildNumber(individualBuilderStatus) |
return null; |
} |
-var g_buildInfoCache = new base.AsynchronousCache(function(key, callback) { |
+var g_buildInfoCache = new base.AsynchronousCache(function(key) { |
var explodedKey = key.split('\n'); |
- net.json(urlForBuildInfo(explodedKey[0], explodedKey[1])).then(callback); |
+ return net.json(urlForBuildInfo(explodedKey[0], explodedKey[1])); |
}); |
builders.clearBuildInfoCache = function() |
@@ -80,36 +80,35 @@ builders.clearBuildInfoCache = function() |
g_buildInfoCache.clear(); |
}; |
-function fetchMostRecentBuildInfoByBuilder(callback) |
+function fetchMostRecentBuildInfoByBuilder() |
{ |
- net.json(config.buildConsoleURL + '/json/builders').then(function(builderStatus) { |
- var buildInfoByBuilder = {}; |
+ var buildInfoByBuilder = {}; |
+ var requestPromises = []; |
+ return net.json(config.buildConsoleURL + '/json/builders').then(function(builderStatus) { |
var builderNames = Object.keys(builderStatus); |
- var requestTracker = new base.RequestTracker(builderNames.length, callback, [buildInfoByBuilder]); |
builderNames.forEach(function(builderName) { |
- if (!config.builderApplies(builderName)) { |
- requestTracker.requestComplete(); |
+ if (!config.builderApplies(builderName)) |
return; |
- } |
var buildNumber = mostRecentCompletedBuildNumber(builderStatus[builderName]); |
- if (!buildNumber) { |
- buildInfoByBuilder[builderName] = null; |
- requestTracker.requestComplete(); |
+ if (!buildNumber) |
return; |
- } |
- g_buildInfoCache.get(builderName + '\n' + buildNumber, function(buildInfo) { |
- buildInfoByBuilder[builderName] = buildInfo; |
- requestTracker.requestComplete(); |
- }); |
+ requestPromises.push(g_buildInfoCache.get(builderName + '\n' + buildNumber) |
+ .then(function(buildInfo) { |
+ buildInfoByBuilder[builderName] = buildInfo; |
+ })); |
+ }); |
+ |
+ return Promise.all(requestPromises).then(function() { |
+ return buildInfoByBuilder; |
}); |
}); |
} |
-builders.buildersFailingNonLayoutTests = function(callback) |
+builders.buildersFailingNonLayoutTests = function() |
{ |
- fetchMostRecentBuildInfoByBuilder(function(buildInfoByBuilder) { |
+ return fetchMostRecentBuildInfoByBuilder().then(function(buildInfoByBuilder) { |
var failureList = {}; |
$.each(buildInfoByBuilder, function(builderName, buildInfo) { |
if (!buildInfo) |
@@ -118,15 +117,15 @@ builders.buildersFailingNonLayoutTests = function(callback) |
if (failures.length) |
failureList[builderName] = failures.map(function(failure) { return failure.name; }); |
}); |
- callback(failureList); |
+ return failureList; |
}); |
}; |
-builders.mostRecentBuildForBuilder = function(builderName, callback) { |
- net.json(config.buildConsoleURL + '/json/builders/' + builderName).then(function(builderStatus) { |
+builders.mostRecentBuildForBuilder = function(builderName) { |
+ return net.json(config.buildConsoleURL + '/json/builders/' + builderName).then(function(builderStatus) { |
var cachedBuilds = builderStatus.cachedBuilds; |
var mostRecentBuild = Math.max.apply(Math, cachedBuilds); |
- callback(mostRecentBuild); |
+ return mostRecentBuild; |
}); |
}; |