Title: [90924] trunk/Tools
Revision
90924
Author
[email protected]
Date
2011-07-13 10:01:38 -0700 (Wed, 13 Jul 2011)

Log Message

Refine garden-o-matic status pane
https://bugs.webkit.org/show_bug.cgi?id=64442

Reviewed by Dimitri Glazkov.

This patch makes two improvements to the status pane:

1) We only query the server for failure types that we're expecting.
   This dramatically reduces the number of HTTP requests, making
   loading the status pane faster.

2) The status pane now displays which test and which builder it is
   showing results for.

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

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (90923 => 90924)


--- trunk/Tools/ChangeLog	2011-07-13 16:57:14 UTC (rev 90923)
+++ trunk/Tools/ChangeLog	2011-07-13 17:01:38 UTC (rev 90924)
@@ -1,5 +1,29 @@
 2011-07-13  Adam Barth  <[email protected]>
 
+        Refine garden-o-matic status pane
+        https://bugs.webkit.org/show_bug.cgi?id=64442
+
+        Reviewed by Dimitri Glazkov.
+
+        This patch makes two improvements to the status pane:
+
+        1) We only query the server for failure types that we're expecting.
+           This dramatically reduces the number of HTTP requests, making
+           loading the status pane faster.
+
+        2) The status pane now displays which test and which builder it is
+           showing results for.
+
+        * Scripts/webkitpy/tool/servers/data/gardeningserver/config.js:
+        * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
+        * Scripts/webkitpy/tool/servers/data/gardeningserver/main.css:
+        * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
+        * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
+        * Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js:
+        * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
+
+2011-07-13  Adam Barth  <[email protected]>
+
         garden-o-matic should show test results
         https://bugs.webkit.org/show_bug.cgi?id=64440
 

Modified: trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/config.js (90923 => 90924)


--- trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/config.js	2011-07-13 16:57:14 UTC (rev 90923)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/config.js	2011-07-13 17:01:38 UTC (rev 90924)
@@ -21,5 +21,7 @@
 
 config.kTestNameAttr = 'data-test-name';
 config.kBuilderNameAttr = 'data-builder-name';
+config.kFailureCountAttr = 'data-failure-count';
+config.kFailureTypesAttr = 'data-failure-types';
 
 })();

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


--- trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/index.html	2011-07-13 16:57:14 UTC (rev 90923)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/index.html	2011-07-13 17:01:38 UTC (rev 90924)
@@ -13,7 +13,7 @@
 <div class="butterbar"><span class="status">Loading...</span> <a class="dismiss" href=""
 <div class="results"></div>
 <div class="results-detail">
-<div class="toolbar"><a class="dismiss" href="" class="content"></div></div>
+<div class="toolbar"><span class="status"></span> <a class="dismiss" href="" class="content"></div></div>
 <script src="" 
 <script src=""
 <script src=""

Modified: trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/main.css (90923 => 90924)


--- trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/main.css	2011-07-13 16:57:14 UTC (rev 90923)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/main.css	2011-07-13 17:01:38 UTC (rev 90924)
@@ -164,15 +164,20 @@
 
 .results-detail .toolbar {
     border-top: 1px solid #CCC;
-    text-align: right;
     border-bottom: 1px solid #CCC;
 }
 
-.results-detail .dismiss {
+.results-detail .toolbar .status {
     display: inline-block;
     padding: 5px;
 }
 
+.results-detail .toolbar .dismiss {
+    float: right;
+    display: inline-block;
+    padding: 5px;
+}
+
 .results-detail .toolbar {
     position: relative;
 }
@@ -192,6 +197,11 @@
     height: 100%;
 }
 
+.results-detail .failure-details img {
+  width: 100%;
+  height: auto;
+}
+
 .results-detail .failure-details td {
     height: 100%;
 }

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


--- trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/main.js	2011-07-13 16:57:14 UTC (rev 90923)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/main.js	2011-07-13 17:01:38 UTC (rev 90924)
@@ -43,7 +43,7 @@
                     });
                 });
                 results.countFailureOccurances(builderNameList, testName, function(failureCount) {
-                    $(testSummary).attr('data-failure-count', failureCount);
+                    $(testSummary).attr(config.kFailureCountAttr, failureCount);
                     $('.failure-count', testSummary).text(ui.failureCount(failureCount));
                 });
             });
@@ -56,8 +56,10 @@
 
 function showResultsDetail()
 {
+    var testBlock = $(this).parents('.test');
     var builderName = $(this).attr(config.kBuilderNameAttr);
-    var testName = $('.what', $(this).parents('.test')).text();
+    var testName = $('.what', testBlock).text();
+    var failureTypeList = testBlock.attr(config.kFailureTypesAttr).split(' ');
 
     var content = $('.results-detail .content');
     if ($('.results', content).attr(config.kBuilderNameAttr) == builderName && $('.results', content).attr(config.kTestNameAttr) == testName)
@@ -65,8 +67,11 @@
 
     displayOnButterbar('Loading results');
 
-    results.fetchResultsURLs(builderName, testName, function(resultsURLs) {
+    results.fetchResultsURLs(builderName, testName, failureTypeList, function(resultsURLs) {
+        var status = $('.results-detail .toolbar .status');
+
         function appendResults() {
+            status.text(testName + ' [' + builderName + ']');
             content.append(ui.failureDetails(resultsURLs));
             $('.results', content).attr(config.kBuilderNameAttr, builderName);
             $('.results', content).attr(config.kTestNameAttr, testName);
@@ -75,9 +80,11 @@
         var children = content.children();
         if (children.length && $('.results-detail').is(":visible")) {
             // The results-detail pane is already open. Let's do a quick cross-fade.
+            status.fadeOut('fast');
             children.fadeOut('fast', function() {
                 content.empty();
                 appendResults();
+                status.fadeIn('fast');
                 content.children().hide().fadeIn('fast', dismissButterbar);
             });
         } else {

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


--- trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results.js	2011-07-13 16:57:14 UTC (rev 90923)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results.js	2011-07-13 17:01:38 UTC (rev 90924)
@@ -11,24 +11,6 @@
 var kLayoutTestResultsServer = 'http://build.chromium.org/f/chromium/layout_test_results/';
 var kLayoutTestResultsPath = '/results/layout-test-results/';
 
-// FIXME: Add support for the rest of the result types.
-var kPossibleSuffixList = [
-    '-expected.png',
-    '-actual.png',
-    '-diff.png',
-    // '-expected.txt',
-    // '-actual.txt',
-    '-diff.txt',
-    '-crash-log.txt',
-    // '-wdiff.html',
-    // '-pretty-diff.html',
-    // '-expected.html',
-    // '-expected-mismatch.html',
-    // '-expected.wav',
-    // '-actual.wav',
-    // ... and possibly more.
-];
-
 var PASS = 'PASS';
 var TIMEOUT = 'TIMEOUT';
 var TEXT = 'TEXT';
@@ -38,6 +20,21 @@
 
 var kFailingResults = [TIMEOUT, TEXT, CRASH, IMAGE, IMAGE_TEXT];
 
+var kExpectedImageSuffix = '-expected.png';
+var kActualImageSuffix = '-actual.png';
+var kImageDiffSuffix = '-diff.png';
+var kTextDiffSuffix = '-diff.txt';
+var kCrashLogSuffix = '-crash-log.txt';
+
+var kPreferredSuffixOrder = [
+    kExpectedImageSuffix,
+    kActualImageSuffix,
+    kImageDiffSuffix,
+    kTextDiffSuffix,
+    kCrashLogSuffix,
+    // FIXME: Add support for the rest of the result types.
+];
+
 // Kinds of results.
 results.kActualKind = 'actual';
 results.kExpectedKind = 'expected';
@@ -69,6 +66,55 @@
     };
 }
 
+function possibleSuffixListFor(failureTypeList)
+{
+    var suffixList = [];
+
+    function pushImageSuffixes()
+    {
+        suffixList.push(kExpectedImageSuffix);
+        suffixList.push(kActualImageSuffix);
+        suffixList.push(kImageDiffSuffix);
+    }
+
+    function pushTextSuffixes()
+    {
+        // '-expected.txt',
+        // '-actual.txt',
+        suffixList.push(kTextDiffSuffix);
+        // '-wdiff.html',
+        // '-pretty-diff.html',
+    }
+
+    $.each(failureTypeList, function(index, failureType) {
+        switch(failureType) {
+            case IMAGE:
+                pushImageSuffixes();
+                break;
+            case TEXT:
+                pushTextSuffixes();
+                break;
+            case IMAGE_TEXT:
+                pushImageSuffixes();
+                pushTextSuffixes();
+                break;
+            case CRASH:
+                suffixList.push(kCrashLogSuffix);
+                break;
+            default:
+                // FIXME: Add support for the rest of the result types.
+                // '-expected.html',
+                // '-expected-mismatch.html',
+                // '-expected.wav',
+                // '-actual.wav',
+                // ... and possibly more.
+                break;
+        }
+    });
+
+    return suffixList;
+}
+
 function resultsSummaryURL(builderName, testName)
 {
     return kTestResultsQuery + $.param(resultsParameters(builderName, testName));
@@ -361,7 +407,7 @@
 function sortResultURLsBySuffix(urls)
 {
     var sortedURLs = [];
-    $.each(kPossibleSuffixList, function(i, suffix) {
+    $.each(kPreferredSuffixOrder, function(i, suffix) {
         $.each(urls, function(j, url) {
             if (!base.endsWith(url, suffix))
                 return;
@@ -373,13 +419,15 @@
     return sortedURLs;
 }
 
-results.fetchResultsURLs = function(builderName, testName, callback)
+results.fetchResultsURLs = function(builderName, testName, failureTypeList, callback)
 {
     var stem = resultsDirectoryURL(builderName);
     var testNameStem = base.trimExtension(testName);
 
+    var suffixList = possibleSuffixListFor(failureTypeList);
+
     var resultURLs = [];
-    var requestsInFlight = kPossibleSuffixList.length;
+    var requestsInFlight = suffixList.length;
 
     function checkComplete()
     {
@@ -387,7 +435,7 @@
             callback(sortResultURLsBySuffix(resultURLs));
     }
 
-    $.each(kPossibleSuffixList, function(index, suffix) {
+    $.each(suffixList, function(index, suffix) {
         var url = "" + testNameStem + suffix;
         base.probe(url, {
             success: function() {

Modified: trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js (90923 => 90924)


--- trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js	2011-07-13 16:57:14 UTC (rev 90923)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js	2011-07-13 17:01:38 UTC (rev 90924)
@@ -342,9 +342,8 @@
     };
 
     simulator.runTest(function() {
-        results.fetchResultsURLs("Mock Builder", "userscripts/another-test.html", function(resultURLs) {
+        results.fetchResultsURLs("Mock Builder", "userscripts/another-test.html", ['IMAGE', 'CRASH'], function(resultURLs) {
             deepEqual(resultURLs, [
-                "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/another-test-diff.txt",
                 "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/another-test-crash-log.txt"
             ]);
         });
@@ -354,7 +353,6 @@
         "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/another-test-expected.png",
         "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/another-test-actual.png",
         "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/another-test-diff.png",
-        "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/another-test-diff.txt",
         "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/another-test-crash-log.txt"
     ]);
 });

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


--- trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js	2011-07-13 16:57:14 UTC (rev 90923)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js	2011-07-13 17:01:38 UTC (rev 90924)
@@ -38,6 +38,7 @@
           '</div>' +
         '</div>');
     $('.what a', block).text(testName).attr('href', ui.urlForTest(testName)).attr('class', unexpectedResults.join(' '));
+    block.attr(config.kFailureTypesAttr, unexpectedResults);
 
     var where = $('.where', block);
     $.each(resultNodesByBuilder, function(builderName, resultNode) {
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to