Index: Tools/GardeningServer/scripts/model.js |
diff --git a/Tools/GardeningServer/scripts/model.js b/Tools/GardeningServer/scripts/model.js |
index 2a85ce3985bc0b627b6238b3ddaa896b14f477ab..2bc3b89d6cbabe830ce4ddcc6ac1dc6f5af18835 100644 |
--- a/Tools/GardeningServer/scripts/model.js |
+++ b/Tools/GardeningServer/scripts/model.js |
@@ -99,13 +99,12 @@ model.takeExpectationUpdateQueue = function() |
var g_commitIndex = {}; |
-model.updateRecentCommits = function(callback) |
+model.updateRecentCommits = function() |
{ |
- trac.recentCommitData('trunk', kCommitLogLength, function(commitDataList) { |
+ return trac.recentCommitData('trunk', kCommitLogLength).then(function(commitDataList) { |
model.state.recentCommits = commitDataList; |
updateCommitIndex(); |
findAndMarkRevertedRevisions(model.state.recentCommits); |
- callback(); |
}); |
}; |
@@ -141,7 +140,7 @@ model.buildersInFlightForRevision = function(revision) |
model.latestRevision = function() |
{ |
return model.state.recentCommits[0].revision; |
-} |
+}; |
model.latestRevisionWithNoBuildersInFlight = function() |
{ |
@@ -165,15 +164,15 @@ model.latestRevisionByBuilder = function() |
return revision; |
} |
-model.updateResultsByBuilder = function(callback) |
+model.updateResultsByBuilder = function() |
{ |
- results.fetchResultsByBuilder(Object.keys(config.builders), function(resultsByBuilder) { |
+ return results.fetchResultsByBuilder(Object.keys(config.builders)).then(function(resultsByBuilder) { |
model.state.resultsByBuilder = resultsByBuilder; |
- callback(); |
}); |
}; |
-model.analyzeUnexpectedFailures = function(callback, completionCallback) |
+// failureCallback is called multiple times: once for each failure |
+model.analyzeUnexpectedFailures = function(failureCallback) |
{ |
var unexpectedFailures = results.unexpectedFailuresByTest(model.state.resultsByBuilder); |
@@ -182,10 +181,12 @@ model.analyzeUnexpectedFailures = function(callback, completionCallback) |
delete model.state.failureAnalysisByTest[testName]; |
}); |
- var tracker = new base.RequestTracker(Object.keys(unexpectedFailures).length, completionCallback); |
+ var failurePromises = []; |
$.each(unexpectedFailures, function(testName, resultNodesByBuilder) { |
var builderNameList = Object.keys(resultNodesByBuilder); |
- results.unifyRegressionRanges(builderNameList, testName, function(oldestFailingRevision, newestPassingRevision) { |
+ failurePromises.push(results.unifyRegressionRanges(builderNameList, testName).then(function(result) { |
+ var oldestFailingRevision = result[0]; |
+ var newestPassingRevision = result[1]; |
var failureAnalysis = { |
'testName': testName, |
'resultNodesByBuilder': resultNodesByBuilder, |
@@ -204,11 +205,11 @@ model.analyzeUnexpectedFailures = function(callback, completionCallback) |
} |
model.state.failureAnalysisByTest[testName] = failureAnalysis; |
- |
- callback(failureAnalysis); |
- tracker.requestComplete(); |
- }); |
+ |
+ failureCallback(failureAnalysis); |
+ })); |
}); |
+ return Promise.all(failurePromises); |
}; |
model.unexpectedFailureInfoForTestName = function(testName) |
@@ -220,7 +221,8 @@ model.unexpectedFailureInfoForTestName = function(testName) |
}); |
}; |
-model.analyzeexpectedFailures = function(callback) |
+// failureCallback is called multiple times: once for each failure |
+model.analyzeexpectedFailures = function(failureCallback) |
{ |
var expectedFailures = results.expectedFailuresByTest(model.state.resultsByBuilder); |
$.each(expectedFailures, function(testName, resultNodesByBuilder) { |
@@ -232,7 +234,7 @@ model.analyzeexpectedFailures = function(callback) |
// FIXME: Consider looking at the history to see how long this test |
// has been failing. |
- callback(failureAnalysis); |
+ failureCallback(failureAnalysis); |
}); |
}; |