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) {