Title: [91487] trunk/Tools
Revision
91487
Author
[email protected]
Date
2011-07-21 12:14:39 -0700 (Thu, 21 Jul 2011)

Log Message

garden-o-matic should be able to rebaseline many tests at once
https://bugs.webkit.org/show_bug.cgi?id=64963

Reviewed by Dimitri Glazkov.

This patch contains some UI for rebaselining tests in bulk.  I don't
expect this UI to be the final UI, but the underlying infrastructure
will be useful.

* Scripts/webkitpy/tool/servers/data/gardeningserver/checkout.js:
* Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
* Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
* Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
* Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (91486 => 91487)


--- trunk/Tools/ChangeLog	2011-07-21 19:13:47 UTC (rev 91486)
+++ trunk/Tools/ChangeLog	2011-07-21 19:14:39 UTC (rev 91487)
@@ -1,5 +1,22 @@
 2011-07-21  Adam Barth  <[email protected]>
 
+        garden-o-matic should be able to rebaseline many tests at once
+        https://bugs.webkit.org/show_bug.cgi?id=64963
+
+        Reviewed by Dimitri Glazkov.
+
+        This patch contains some UI for rebaselining tests in bulk.  I don't
+        expect this UI to be the final UI, but the underlying infrastructure
+        will be useful.
+
+        * Scripts/webkitpy/tool/servers/data/gardeningserver/checkout.js:
+        * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
+        * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
+        * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
+        * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
+
+2011-07-21  Adam Barth  <[email protected]>
+
         garden-o-matic has trouble when the same test fails in different ways on diffrent bots
         https://bugs.webkit.org/show_bug.cgi?id=64830
 

Modified: trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/checkout.js (91486 => 91487)


--- trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/checkout.js	2011-07-21 19:13:47 UTC (rev 91486)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/checkout.js	2011-07-21 19:14:39 UTC (rev 91487)
@@ -36,11 +36,11 @@
         extensionList = extensionList.concat(results.failureTypeToExtensionList(failureType));
     });
 
-    var requestsInFlight = extensionList.length;
-
-    if (!requestsInFlight)
+    if (!extensionList.length)
         callback();
 
+    var requestTracker = new base.RequestTracker(extensionList.length, callback);
+
     $.each(extensionList, function(index, extension) {
         $.post('/rebaseline?' + $.param({
             'builder': builderName,
@@ -48,11 +48,26 @@
             // FIXME: Rename "suffix" query parameter to "extension".
             'suffix': extension
         }), function() {
-            --requestsInFlight;
-            if (!requestsInFlight)
-                callback();
+            requestTracker.requestComplete();
         });
     });
 };
 
+checkout.rebaselineAll = function(rebaselineTasks, callback)
+{
+    var nextIndex = 0;
+
+    function rebaselineNext()
+    {
+        if (nextIndex >= rebaselineTasks.length) {
+            callback();
+            return;
+        }
+        var task = rebaselineTasks[nextIndex++];
+        checkout.rebaseline(task.builderName, task.testName, task.failureTypeList, rebaselineNext);
+    }
+
+    rebaselineNext();
+};
+
 })();

Modified: trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/index.html (91486 => 91487)


--- trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/index.html	2011-07-21 19:13:47 UTC (rev 91486)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/index.html	2011-07-21 19:14:39 UTC (rev 91487)
@@ -17,6 +17,7 @@
     <div class="toolbar">
         <div class="actions">
             <button class="triage">Triage Failures</button>
+            <button class="rebaseline-selected">Rebaseline Selected</button>
         </div>
     </div>
 </div>

Modified: trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/main.js (91486 => 91487)


--- trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/main.js	2011-07-21 19:13:47 UTC (rev 91486)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/main.js	2011-07-21 19:14:39 UTC (rev 91487)
@@ -246,6 +246,31 @@
     g_resultsDetailsIterator.callNext();
 }
 
+function rebaselineSelected()
+{
+    var rebaselineTasks = [];
+
+    $('.results .test input:checkbox').each(function() {
+        if (!this.checked)
+            return;
+        var testSummary = $(this).parents('.test');
+        var testName = testSummary.attr(config.kTestNameAttr);
+        $('.builder-name', testSummary).each(function() {
+            var builderName = $(this).attr(config.kBuilderNameAttr);
+            var failureTypes = $(this).attr(config.kFailureTypesAttr);
+            var failureTypeList = failureTypes.split(' ');
+            rebaselineTasks.push({
+                'builderName': builderName,
+                'testName': testName,
+                'failureTypeList': failureTypeList,
+            });
+        });
+    });
+
+    displayOnButterbar('Rebaselining...');
+    checkout.rebaselineAll(rebaselineTasks, dismissButterbar);
+}
+
 function rebaselineResults()
 {
     var failureDetails = $('.failure-details', $(this).parents('.results-detail'));
@@ -278,6 +303,7 @@
 }
 
 $('.results .toolbar .triage').live('click', triageFailures);
+$('.results .toolbar .rebaseline-selected').live('click', rebaselineSelected);
 $('.results-detail .actions .next').live('click', nextResultsDetail);
 $('.results-detail .actions .previous').live('click', previousResultsDetail);
 $('.results-detail .actions .rebaseline').live('click', rebaselineResults);

Modified: trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results.js (91486 => 91487)


--- trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results.js	2011-07-21 19:13:47 UTC (rev 91486)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results.js	2011-07-21 19:14:39 UTC (rev 91487)
@@ -203,7 +203,7 @@
     return resultsList.concat(kFailingResults);
 }
 
-function unexpectedResults(resultNode)
+results.unexpectedResults = function(resultNode)
 {
     var actualResults = resultNode.actual.split(' ');
     var expectedResults = addImpliedExpectations(resultNode.expected.split(' '))
@@ -211,7 +211,7 @@
     return $.grep(actualResults, function(result) {
         return expectedResults.indexOf(result) == -1;
     });
-}
+};
 
 function isUnexpectedFailure(resultNode)
 {
@@ -219,7 +219,7 @@
         return false;
     if (anyIsSuccess(resultNode.actual.split(' ')))
         return false;
-    return anyIsFailure(unexpectedResults(resultNode));
+    return anyIsFailure(results.unexpectedResults(resultNode));
 }
 
 function isResultNode(node)
@@ -253,12 +253,11 @@
 
 results.collectUnexpectedResults = function(dictionaryOfResultNodes)
 {
-    var collectedResults = {};
-    var results = [];
+    var collectedResults = [];
     $.each(dictionaryOfResultNodes, function(key, resultNode) {
-        results = results.concat(unexpectedResults(resultNode));
+        collectedResults = collectedResults.concat(results.unexpectedResults(resultNode));
     });
-    return base.uniquifyArray(results);
+    return base.uniquifyArray(collectedResults);
 };
 
 function walkHistory(builderName, testName, callback)

Modified: trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js (91486 => 91487)


--- trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js	2011-07-21 19:13:47 UTC (rev 91486)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js	2011-07-21 19:14:39 UTC (rev 91487)
@@ -48,6 +48,7 @@
     var unexpectedResults = results.collectUnexpectedResults(resultNodesByBuilder);
     var block = $(
         '<tr class="test">' +
+          '<td><input type="checkbox"></td>' +
           '<td class="what"><a class="test-name"></a></td>' +
           '<td class="where"><ul></ul></td>' +
           '<td class="when"></td>' +
@@ -61,7 +62,7 @@
     var where = $('.where', block);
     $.each(resultNodesByBuilder, function(builderName, resultNode) {
         var listElement = $('<li class="builder-name"></li>');
-        listElement.attr(config.kBuilderNameAttr, builderName).text(displayNameForBuilder(builderName));
+        listElement.attr(config.kBuilderNameAttr, builderName).attr(config.kFailureTypesAttr, results.unexpectedResults(resultNode)).text(displayNameForBuilder(builderName));
         where.append(listElement);
     });
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to