Changeset 90924 in webkit
- Timestamp:
- Jul 13, 2011 10:01:38 AM (13 years ago)
- Location:
- trunk/Tools
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r90923 r90924 1 2011-07-13 Adam Barth <abarth@webkit.org> 2 3 Refine garden-o-matic status pane 4 https://bugs.webkit.org/show_bug.cgi?id=64442 5 6 Reviewed by Dimitri Glazkov. 7 8 This patch makes two improvements to the status pane: 9 10 1) We only query the server for failure types that we're expecting. 11 This dramatically reduces the number of HTTP requests, making 12 loading the status pane faster. 13 14 2) The status pane now displays which test and which builder it is 15 showing results for. 16 17 * Scripts/webkitpy/tool/servers/data/gardeningserver/config.js: 18 * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html: 19 * Scripts/webkitpy/tool/servers/data/gardeningserver/main.css: 20 * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js: 21 * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js: 22 * Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js: 23 * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js: 24 1 25 2011-07-13 Adam Barth <abarth@webkit.org> 2 26 -
trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/config.js
r90923 r90924 22 22 config.kTestNameAttr = 'data-test-name'; 23 23 config.kBuilderNameAttr = 'data-builder-name'; 24 config.kFailureCountAttr = 'data-failure-count'; 25 config.kFailureTypesAttr = 'data-failure-types'; 24 26 25 27 })(); -
trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/index.html
r90923 r90924 14 14 <div class="results"></div> 15 15 <div class="results-detail"> 16 <div class="toolbar">< a class="dismiss" href="#">Close</a></div><div class="content"></div></div>16 <div class="toolbar"><span class="status"></span> <a class="dismiss" href="#">Close</a></div><div class="content"></div></div> 17 17 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 18 18 <script src="config.js"></script> -
trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/main.css
r90923 r90924 165 165 .results-detail .toolbar { 166 166 border-top: 1px solid #CCC; 167 text-align: right;168 167 border-bottom: 1px solid #CCC; 169 168 } 170 169 171 .results-detail .dismiss { 170 .results-detail .toolbar .status { 171 display: inline-block; 172 padding: 5px; 173 } 174 175 .results-detail .toolbar .dismiss { 176 float: right; 172 177 display: inline-block; 173 178 padding: 5px; … … 193 198 } 194 199 200 .results-detail .failure-details img { 201 width: 100%; 202 height: auto; 203 } 204 195 205 .results-detail .failure-details td { 196 206 height: 100%; -
trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/main.js
r90923 r90924 44 44 }); 45 45 results.countFailureOccurances(builderNameList, testName, function(failureCount) { 46 $(testSummary).attr( 'data-failure-count', failureCount);46 $(testSummary).attr(config.kFailureCountAttr, failureCount); 47 47 $('.failure-count', testSummary).text(ui.failureCount(failureCount)); 48 48 }); … … 57 57 function showResultsDetail() 58 58 { 59 var testBlock = $(this).parents('.test'); 59 60 var builderName = $(this).attr(config.kBuilderNameAttr); 60 var testName = $('.what', $(this).parents('.test')).text(); 61 var testName = $('.what', testBlock).text(); 62 var failureTypeList = testBlock.attr(config.kFailureTypesAttr).split(' '); 61 63 62 64 var content = $('.results-detail .content'); … … 66 68 displayOnButterbar('Loading results'); 67 69 68 results.fetchResultsURLs(builderName, testName, function(resultsURLs) { 70 results.fetchResultsURLs(builderName, testName, failureTypeList, function(resultsURLs) { 71 var status = $('.results-detail .toolbar .status'); 72 69 73 function appendResults() { 74 status.text(testName + ' [' + builderName + ']'); 70 75 content.append(ui.failureDetails(resultsURLs)); 71 76 $('.results', content).attr(config.kBuilderNameAttr, builderName); … … 76 81 if (children.length && $('.results-detail').is(":visible")) { 77 82 // The results-detail pane is already open. Let's do a quick cross-fade. 83 status.fadeOut('fast'); 78 84 children.fadeOut('fast', function() { 79 85 content.empty(); 80 86 appendResults(); 87 status.fadeIn('fast'); 81 88 content.children().hide().fadeIn('fast', dismissButterbar); 82 89 }); -
trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results.js
r90923 r90924 11 11 var kLayoutTestResultsServer = 'http://build.chromium.org/f/chromium/layout_test_results/'; 12 12 var kLayoutTestResultsPath = '/results/layout-test-results/'; 13 14 // FIXME: Add support for the rest of the result types.15 var kPossibleSuffixList = [16 '-expected.png',17 '-actual.png',18 '-diff.png',19 // '-expected.txt',20 // '-actual.txt',21 '-diff.txt',22 '-crash-log.txt',23 // '-wdiff.html',24 // '-pretty-diff.html',25 // '-expected.html',26 // '-expected-mismatch.html',27 // '-expected.wav',28 // '-actual.wav',29 // ... and possibly more.30 ];31 13 32 14 var PASS = 'PASS'; … … 39 21 var kFailingResults = [TIMEOUT, TEXT, CRASH, IMAGE, IMAGE_TEXT]; 40 22 23 var kExpectedImageSuffix = '-expected.png'; 24 var kActualImageSuffix = '-actual.png'; 25 var kImageDiffSuffix = '-diff.png'; 26 var kTextDiffSuffix = '-diff.txt'; 27 var kCrashLogSuffix = '-crash-log.txt'; 28 29 var kPreferredSuffixOrder = [ 30 kExpectedImageSuffix, 31 kActualImageSuffix, 32 kImageDiffSuffix, 33 kTextDiffSuffix, 34 kCrashLogSuffix, 35 // FIXME: Add support for the rest of the result types. 36 ]; 37 41 38 // Kinds of results. 42 39 results.kActualKind = 'actual'; … … 68 65 name: testName, 69 66 }; 67 } 68 69 function possibleSuffixListFor(failureTypeList) 70 { 71 var suffixList = []; 72 73 function pushImageSuffixes() 74 { 75 suffixList.push(kExpectedImageSuffix); 76 suffixList.push(kActualImageSuffix); 77 suffixList.push(kImageDiffSuffix); 78 } 79 80 function pushTextSuffixes() 81 { 82 // '-expected.txt', 83 // '-actual.txt', 84 suffixList.push(kTextDiffSuffix); 85 // '-wdiff.html', 86 // '-pretty-diff.html', 87 } 88 89 $.each(failureTypeList, function(index, failureType) { 90 switch(failureType) { 91 case IMAGE: 92 pushImageSuffixes(); 93 break; 94 case TEXT: 95 pushTextSuffixes(); 96 break; 97 case IMAGE_TEXT: 98 pushImageSuffixes(); 99 pushTextSuffixes(); 100 break; 101 case CRASH: 102 suffixList.push(kCrashLogSuffix); 103 break; 104 default: 105 // FIXME: Add support for the rest of the result types. 106 // '-expected.html', 107 // '-expected-mismatch.html', 108 // '-expected.wav', 109 // '-actual.wav', 110 // ... and possibly more. 111 break; 112 } 113 }); 114 115 return suffixList; 70 116 } 71 117 … … 362 408 { 363 409 var sortedURLs = []; 364 $.each(kP ossibleSuffixList, function(i, suffix) {410 $.each(kPreferredSuffixOrder, function(i, suffix) { 365 411 $.each(urls, function(j, url) { 366 412 if (!base.endsWith(url, suffix)) … … 374 420 } 375 421 376 results.fetchResultsURLs = function(builderName, testName, callback)422 results.fetchResultsURLs = function(builderName, testName, failureTypeList, callback) 377 423 { 378 424 var stem = resultsDirectoryURL(builderName); 379 425 var testNameStem = base.trimExtension(testName); 380 426 427 var suffixList = possibleSuffixListFor(failureTypeList); 428 381 429 var resultURLs = []; 382 var requestsInFlight = kPossibleSuffixList.length;430 var requestsInFlight = suffixList.length; 383 431 384 432 function checkComplete() … … 388 436 } 389 437 390 $.each( kPossibleSuffixList, function(index, suffix) {438 $.each(suffixList, function(index, suffix) { 391 439 var url = stem + testNameStem + suffix; 392 440 base.probe(url, { -
trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js
r90923 r90924 343 343 344 344 simulator.runTest(function() { 345 results.fetchResultsURLs("Mock Builder", "userscripts/another-test.html", function(resultURLs) {345 results.fetchResultsURLs("Mock Builder", "userscripts/another-test.html", ['IMAGE', 'CRASH'], function(resultURLs) { 346 346 deepEqual(resultURLs, [ 347 "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/another-test-diff.txt",348 347 "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/another-test-crash-log.txt" 349 348 ]); … … 355 354 "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/another-test-actual.png", 356 355 "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/another-test-diff.png", 357 "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/another-test-diff.txt",358 356 "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/another-test-crash-log.txt" 359 357 ]); -
trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js
r90923 r90924 39 39 '</div>'); 40 40 $('.what a', block).text(testName).attr('href', ui.urlForTest(testName)).attr('class', unexpectedResults.join(' ')); 41 block.attr(config.kFailureTypesAttr, unexpectedResults); 41 42 42 43 var where = $('.where', block);
Note: See TracChangeset
for help on using the changeset viewer.