Title: [92346] trunk/Tools
Revision
92346
Author
[email protected]
Date
2011-08-03 21:16:47 -0700 (Wed, 03 Aug 2011)

Log Message

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:

Modified Paths

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)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to