Diff
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout.js (92345 => 92346)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout.js 2011-08-04 03:54:57 UTC (rev 92345)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout.js 2011-08-04 04:16:47 UTC (rev 92346)
@@ -28,6 +28,13 @@
});
};
+checkout.updateExpectations = function(failureInfoList, callback)
+{
+ $.post('/updateexpectations', JSON.stringify(failureInfoList), function() {
+ callback();
+ });
+};
+
checkout.optimizeBaselines = function(testName, callback)
{
$.post('/optimizebaselines?' + $.param({
@@ -37,21 +44,21 @@
});
};
-checkout.rebaseline = function(rebaselineTasks, callback)
+checkout.rebaseline = function(failureInfoList, callback)
{
- base.callInSequence(function(task, callback) {
- var extensionList = Array.prototype.concat.apply([], task.failureTypeList.map(results.failureTypeToExtensionList));
+ base.callInSequence(function(failureInfo, callback) {
+ var extensionList = Array.prototype.concat.apply([], failureInfo.failureTypeList.map(results.failureTypeToExtensionList));
base.callInSequence(function(extension, callback) {
$.post('/rebaseline?' + $.param({
- 'builder': task.builderName,
- 'test': task.testName,
+ 'builder': failureInfo.builderName,
+ 'test': failureInfo.testName,
'extension': extension
}), function() {
callback();
});
}, extensionList, callback);
- }, rebaselineTasks, function() {
- var testNameList = base.uniquifyArray(rebaselineTasks.map(function(task) { return task.testName; }));
+ }, failureInfoList, function() {
+ var testNameList = base.uniquifyArray(failureInfoList.map(function(failureInfo) { return failureInfo.testName; }));
base.callInSequence(checkout.optimizeBaselines, testNameList, callback);
});
};
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html (92345 => 92346)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html 2011-08-04 03:54:57 UTC (rev 92345)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html 2011-08-04 04:16:47 UTC (rev 92346)
@@ -15,6 +15,7 @@
<div class="actions">
<button class="show-selected-failures">Show Selected Failures</button>
<button class="rebaseline-selected">Rebaseline Selected</button>
+ <button class="add-selected-expectations">Mark Selected as Expected</button>
<button class="refresh">Refresh</button>
</div>
<div class="recent-history"></div>
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js (92345 => 92346)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js 2011-08-04 03:54:57 UTC (rev 92345)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js 2011-08-04 04:16:47 UTC (rev 92346)
@@ -59,16 +59,22 @@
button.attr('disabled', true)
}
-function rebaseline(rebaselineTasks)
+function rebaseline(failureInfoList)
{
displayOnButterbar('Rebaselining...');
- checkout.rebaseline(rebaselineTasks, function() {
+ checkout.rebaseline(failureInfoList, function() {
dismissButterbar();
// FIXME: We should use something like a lightbox rather than alert!
alert('New results downloaded to your working copy. Please use "webkit-patch land-cowboy" to land the updated baselines.');
});
}
+function updateExpectations(failureInfoList)
+{
+ displayOnButterbar('Adding expectations...');
+ checkout.updateExpectations(failureInfoList, dismissButterbar);
+}
+
function showResultsDetail(testName, builderName, failureTypeList)
{
var failureTypes = failureTypeList.join(' ');
@@ -109,11 +115,11 @@
function executeQueuedRebaselines()
{
- var rebaselineQueue = model.takeRebaselineQueue();
- if (!rebaselineQueue.length)
+ var failureInfoList = model.takeRebaselineQueue();
+ if (!failureInfoList.length)
return;
// FIXME: Should we confirm with the use before executing the queue?
- rebaseline(rebaselineQueue);
+ rebaseline(failureInfoList);
}
function hideResultsDetail()
@@ -156,7 +162,7 @@
function selectedFailures()
{
- var failures = [];
+ var failureInfoList = [];
$('.test input:checkbox').each(function() {
if (!this.checked)
@@ -169,7 +175,7 @@
return
var failureTypeList = failureTypes.split(' ');
var builderName = $(this).attr(config.kBuilderNameAttr);
- failures.push({
+ failureInfoList.push({
'testName': testName,
'builderName': builderName,
'failureTypeList': failureTypeList,
@@ -177,7 +183,7 @@
});
});
- return failures;
+ return failureInfoList;
}
function rebaselineSelected()
@@ -185,10 +191,15 @@
rebaseline(selectedFailures());
}
+function updateExpectationsForSelected()
+{
+ updateExpectations(selectedFailures());
+}
+
function showSelectedFailures()
{
- var argumentList = selectedFailures().map(function(failureDescription) {
- return [failureDescription.testName, failureDescription.builderName, failureDescription.failureTypeList];
+ var argumentList = selectedFailures().map(function(failureInfo) {
+ return [failureInfo.testName, failureInfo.builderName, failureInfo.failureTypeList];
});
g_resultsDetailsIterator = new base.CallbackIterator(showResultsDetail, argumentList);
g_resultsDetailsIterator.callNext();
@@ -265,6 +276,7 @@
$('.show-selected-failures').live('click', showSelectedFailures);
$('.rebaseline-selected').live('click', rebaselineSelected);
+$('.update-expectations-selected').live('click', updateExpectationsForSelected);
$('.refresh').live('click', update);
$('.results-detail .actions .next').live('click', nextResultsDetail);
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js (92345 => 92346)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js 2011-08-04 03:54:57 UTC (rev 92345)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js 2011-08-04 04:16:47 UTC (rev 92346)
@@ -57,7 +57,6 @@
model.analyzeUnexpectedFailures = function(callback)
{
var unexpectedFailures = results.unexpectedFailuresByTest(model.state.resultsByBuilder);
- console.log(unexpectedFailures);
$.each(model.state.failureAnalysisByTest, function(testName, failureAnalysis) {
if (!(testName in unexpectedFailures))
Modified: trunk/Tools/ChangeLog (92345 => 92346)
--- trunk/Tools/ChangeLog 2011-08-04 03:54:57 UTC (rev 92345)
+++ trunk/Tools/ChangeLog 2011-08-04 04:16:47 UTC (rev 92346)
@@ -1,5 +1,22 @@
2011-08-03 Adam Barth <[email protected]>
+ Add UI to garden-o-matic for updating expectations
+ https://bugs.webkit.org/show_bug.cgi?id=65644
+
+ Reviewed by Dimitri Glazkov.
+
+ The patch plumbs the UI back to the gardening server, but the gardening
+ server endpoint is just a stub at this point.
+
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout.js:
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js:
+ * Scripts/webkitpy/tool/servers/gardeningserver.py:
+ * Scripts/webkitpy/tool/servers/reflectionhandler.py:
+
+2011-08-03 Adam Barth <[email protected]>
+
garden-o-matic details view should queue rebaselines for later execution
https://bugs.webkit.org/show_bug.cgi?id=65636
Modified: trunk/Tools/Scripts/webkitpy/tool/servers/gardeningserver.py (92345 => 92346)
--- trunk/Tools/Scripts/webkitpy/tool/servers/gardeningserver.py 2011-08-04 03:54:57 UTC (rev 92345)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/gardeningserver.py 2011-08-04 04:16:47 UTC (rev 92346)
@@ -80,6 +80,11 @@
])
self._serve_text('success')
+ def updateexpectations(self):
+ failure_info_list = self._read_entity_body_as_json()
+ print 'FailureInfoList:', failure_info_list
+ self._serve_text('success')
+
def rebaseline(self):
builder = self.query['builder'][0]
test = self.query['test'][0]
Modified: trunk/Tools/Scripts/webkitpy/tool/servers/reflectionhandler.py (92345 => 92346)
--- trunk/Tools/Scripts/webkitpy/tool/servers/reflectionhandler.py 2011-08-04 03:54:57 UTC (rev 92345)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/reflectionhandler.py 2011-08-04 04:16:47 UTC (rev 92346)
@@ -61,6 +61,13 @@
def do_POST(self):
self._handle_request()
+ def _read_entity_body(self):
+ length = int(self.headers.getheader('content-length'))
+ return self.rfile.read(length)
+
+ def _read_entity_body_as_json(self):
+ return json.loads(self._read_entity_body())
+
def _handle_request(self):
if "?" in self.path:
path, query_string = self.path.split("?", 1)