Diff
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js (94308 => 94309)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js 2011-09-01 17:47:00 UTC (rev 94308)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js 2011-09-01 17:48:59 UTC (rev 94309)
@@ -54,6 +54,14 @@
return parent + '/' + child;
};
+base.dirName = function(path)
+{
+ var directoryIndex = path.lastIndexOf('/');
+ if (directoryIndex == -1)
+ return path;
+ return path.substr(0, directoryIndex);
+};
+
base.trimExtension = function(url)
{
var index = url.lastIndexOf('.');
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js (94308 => 94309)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js 2011-09-01 17:47:00 UTC (rev 94308)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js 2011-09-01 17:48:59 UTC (rev 94309)
@@ -58,6 +58,12 @@
equals(value, "test.html");
});
+test("dirName", 3, function() {
+ equals(base.dirName("foo.html"), "foo.html");
+ equals(base.dirName("foo/bar.html"), "foo");
+ equals(base.dirName("foo/bar/baz.html"), "foo/bar");
+});
+
test("uniquifyArray", 5, function() {
deepEqual(base.uniquifyArray([]), []);
deepEqual(base.uniquifyArray(["a"]), ["a"]);
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js (94308 => 94309)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js 2011-09-01 17:47:00 UTC (rev 94308)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js 2011-09-01 17:48:59 UTC (rev 94309)
@@ -51,25 +51,27 @@
deepEqual(Object.getOwnPropertyNames(grid.__proto__), ["init", "_rowByResult", "add", "removeResultRows"]);
equal(grid.outerHTML, '<table class="failures">' +
'<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
- '<tbody></tbody>' +
+ '<tbody><tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr></tbody>' +
'</table>');
var row = grid._rowByResult('TEXT');
equal(grid.outerHTML, '<table class="failures">' +
'<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
'<tbody>' +
- '<tr>' +
+ '<tr class="TEXT">' +
'<td>TEXT</td><td></td><td></td>' +
'</tr>' +
+ '<tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr>' +
'</tbody>' +
'</table>');
- equal(row.outerHTML, '<tr><td>TEXT</td><td></td><td></td></tr>');
+ equal(row.outerHTML, '<tr class="TEXT"><td>TEXT</td><td></td><td></td></tr>');
grid.add({});
equal(grid.outerHTML, '<table class="failures">' +
'<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
'<tbody>' +
- '<tr>' +
+ '<tr class="TEXT">' +
'<td>TEXT</td><td></td><td></td>' +
'</tr>' +
+ '<tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr>' +
'</tbody>' +
'</table>');
raises(function() {
@@ -79,43 +81,46 @@
equal(grid.outerHTML, '<table class="failures">' +
'<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
'<tbody>' +
- '<tr>' +
+ '<tr class="TEXT">' +
'<td>TEXT</td>' +
'<td></td>' +
'<td><div><span class="architecture">64-bit</span><span class="version">lucid</span></div></td>' +
'</tr>' +
+ '<tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr>' +
'</tbody>' +
'</table>');
grid.add({'Webkit Mac10.5 (CG)': { actual: 'IMAGE+TEXT'}});
equal(grid.outerHTML, '<table class="failures">' +
'<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
'<tbody>' +
- '<tr>' +
+ '<tr class="IMAGE+TEXT">' +
+ '<td>IMAGE+TEXT</td>' +
+ '<td><div><span class="version">leopard</span></div></td>' +
+ '<td></td>' +
+ '</tr>' +
+ '<tr class="TEXT">' +
'<td>TEXT</td>' +
'<td></td>' +
'<td><div><span class="architecture">64-bit</span><span class="version">lucid</span></div></td>' +
'</tr>' +
- '<tr>' +
- '<td>IMAGE+TEXT</td>' +
- '<td><div><span class="version">leopard</span></div></td>' +
- '<td></td>' +
- '</tr>' +
+ '<tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr>' +
'</tbody>' +
'</table>');
grid.add({'Webkit Mac10.5 (CG)': { actual: 'IMAGE+TEXT'}});
equal(grid.outerHTML, '<table class="failures">' +
'<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
'<tbody>' +
- '<tr>' +
+ '<tr class="IMAGE+TEXT">' +
+ '<td>IMAGE+TEXT</td>' +
+ '<td><div><span class="version">leopard</span></div></td>' +
+ '<td></td>' +
+ '</tr>' +
+ '<tr class="TEXT">' +
'<td>TEXT</td>' +
'<td></td>' +
'<td><div><span class="architecture">64-bit</span><span class="version">lucid</span></div></td>' +
'</tr>' +
- '<tr>' +
- '<td>IMAGE+TEXT</td>' +
- '<td><div><span class="version">leopard</span></div></td>' +
- '<td></td>' +
- '</tr>' +
+ '<tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr>' +
'</tbody>' +
'</table>');
});
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js (94308 => 94309)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js 2011-09-01 17:47:00 UTC (rev 94308)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js 2011-09-01 17:48:59 UTC (rev 94309)
@@ -28,6 +28,8 @@
(function(){
+var kMaxTestsPerGroup = 3;
+
ui.notifications.Stream = base.extends('ol', {
init: function()
{
@@ -82,15 +84,10 @@
}
});
-ui.notifications.FailingTest = base.extends('li', {
- init: function(failureAnalysis)
+ui.notifications.FailingTestGroup = base.extends('li', {
+ init: function(testGroup)
{
- this._failureAnalysis = failureAnalysis;
- this.textContent = failureAnalysis.testName;
- },
- equals: function(failureAnalysis)
- {
- return this._failureAnalysis.testName == failureAnalysis.testName;
+ this.textContent = testGroup;
}
})
@@ -160,9 +157,7 @@
},
containsFailureAnalysis: function(failureAnalysis)
{
- return Array.prototype.some.call(this._effects.children, function(child) {
- return child.equals(failureAnalysis);
- });
+ return this._testNameList.indexOf(failureAnalysis.testName) != -1;
},
updateBuilderResults: function(resultNodesByBuilder)
{
@@ -174,7 +169,10 @@
return;
this._testNameList.push(failureAnalysis.testName);
this.updateBuilderResults(failureAnalysis.resultNodesByBuilder);
- return this._effects.appendChild(new ui.notifications.FailingTest(failureAnalysis));
+ $(this._effects).empty();
+ this._forEachTestGroup(function (testGroup) {
+ this._effects.appendChild(new ui.notifications.FailingTestGroup(testGroup))
+ }.bind(this));
},
addCommitData: function(commitData)
{
@@ -184,6 +182,26 @@
this._time.setDate(commitDataDate);
}
return this._causes.appendChild(new ui.notifications.SuspiciousCommit(commitData));
+ },
+ _forEachTestGroup: function(callback)
+ {
+ var testsByDirectory = {};
+ this._testNameList.forEach(function(testName) {
+ var directory = base.dirName(testName);
+ testsByDirectory[directory] = testsByDirectory[directory] || [];
+ testsByDirectory[directory].push(testName);
+ });
+ var individualTests = [];
+ Object.keys(testsByDirectory).forEach(function(directory) {
+ var testsInDirectory = testsByDirectory[directory];
+ var count = testsInDirectory.length;
+ if (count <= kMaxTestsPerGroup) {
+ individualTests = individualTests.concat(testsInDirectory);
+ return;
+ }
+ callback(directory + ' (' + count + ' tests)');
+ });
+ individualTests.forEach(callback);
}
});
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js (94308 => 94309)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js 2011-09-01 17:47:00 UTC (rev 94308)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js 2011-09-01 17:48:59 UTC (rev 94309)
@@ -76,12 +76,10 @@
equal(info.innerHTML, '<div class="how"></div><div class="what">info</div>');
});
-test('FailingTest', 4, function() {
- var failingTest = new ui.notifications.FailingTest({testName: 'test'});
+test('FailingTestGroup', 2, function() {
+ var failingTest = new ui.notifications.FailingTestGroup('test');
equal(failingTest.tagName, 'LI');
equal(failingTest.innerHTML, 'test');
- ok(failingTest.equals({testName: 'test'}));
- ok(!failingTest.equals({testName: 'foo'}));
});
test('SuspiciousCommit', 2, function() {
@@ -106,6 +104,7 @@
"testNameList",
"updateBuilderResults",
"addFailureAnalysis",
+ "_forEachTestGroup",
"containsFailureAnalysis",
"addCommitData"
]);
@@ -115,7 +114,7 @@
'<time class="relative">Just now</time>' +
'<table class="failures">' +
'<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
- '<tbody></tbody>' +
+ '<tbody><tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr></tbody>' +
'</table>' +
'</div>' +
'<div class="what">' +
@@ -134,7 +133,7 @@
'<time class="relative">Just now</time>' +
'<table class="failures">' +
'<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
- '<tbody></tbody>' +
+ '<tbody><tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr></tbody>' +
'</table>' +
'</div>' +
'<div class="what">' +
@@ -156,7 +155,7 @@
'<time class="relative">Just now</time>' +
'<table class="failures">' +
'<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
- '<tbody></tbody>' +
+ '<tbody><tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr></tbody>' +
'</table>' +
'</div>' +
'<div class="what">' +
@@ -180,7 +179,7 @@
'<time class="relative">10 minutes ago</time>' +
'<table class="failures">' +
'<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
- '<tbody></tbody>' +
+ '<tbody><tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr></tbody>' +
'</table>' +
'</div>' +
'<div class="what">' +
@@ -214,11 +213,12 @@
'<table class="failures">' +
'<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
'<tbody>' +
- '<tr>' +
+ '<tr class="TEXT">' +
'<td>TEXT</td>' +
'<td></td>' +
'<td><div><span class="architecture">64-bit</span><span class="version">lucid</span></div></td>' +
'</tr>' +
+ '<tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr>' +
'</tbody>' +
'</table>' +
'</div>' +
@@ -254,12 +254,12 @@
'<table class="failures">' +
'<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
'<tbody>' +
- '<tr>' +
+ '<tr class="TEXT">' +
'<td>TEXT</td>' +
'<td></td>' +
'<td><div><span class="architecture">64-bit</span><span class="version">lucid</span></div></td>' +
'</tr>' +
- '<tr>' +
+ '<tr class="BUILDING" style="">' +
'<td>BUILDING</td>' +
'<td><div><span class="version">leopard</span></div></td>' +
'<td></td>' +
@@ -293,6 +293,36 @@
'</div>');
});
+test('TestsFailing (grouping)', 1, function() {
+ var testFailures = new ui.notifications.TestsFailing();
+ testFailures.addFailureAnalysis({testName: 'path/to/test1.html', resultNodesByBuilder: {}});
+ testFailures.addFailureAnalysis({testName: 'path/to/test2.html', resultNodesByBuilder: {}});
+ testFailures.addFailureAnalysis({testName: 'path/to/test3.html', resultNodesByBuilder: {}});
+ testFailures.addFailureAnalysis({testName: 'path/to/test4.html', resultNodesByBuilder: {}});
+ testFailures.addFailureAnalysis({testName: 'path/another/test.html', resultNodesByBuilder: {}});
+ equal(testFailures.innerHTML,
+ '<div class="how">' +
+ '<time class="relative">Just now</time>' +
+ '<table class="failures">' +
+ '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
+ '<tbody><tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr></tbody>' +
+ '</table>' +
+ '</div>' +
+ '<div class="what">' +
+ '<div class="problem">' +
+ '<ul class="effects">' +
+ '<li>path/to (4 tests)</li>' +
+ '<li>path/another/test.html</li>' +
+ '</ul>' +
+ '<ul class="actions">' +
+ '<li><button>Examine</button></li>' +
+ '</ul>' +
+ '</div>' +
+ '<ul class="causes"></ul>' +
+ '</div>');
+
+});
+
test('BuildersFailing', 1, function() {
var builderFailing = new ui.notifications.BuildersFailing();
builderFailing.setFailingBuilders(['WebKit Linux', 'Webkit Vista']);
@@ -301,7 +331,7 @@
'<time class="relative">Just now</time>' +
'<table class="failures">' +
'<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
- '<tbody></tbody>' +
+ '<tbody><tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr></tbody>' +
'</table>' +
'</div>' +
'<div class="what">' +
Modified: trunk/Tools/ChangeLog (94308 => 94309)
--- trunk/Tools/ChangeLog 2011-09-01 17:47:00 UTC (rev 94308)
+++ trunk/Tools/ChangeLog 2011-09-01 17:48:59 UTC (rev 94309)
@@ -1,5 +1,24 @@
2011-09-01 Adam Barth <[email protected]>
+ Group failing tests in garden-o-matic if there are more than three in a folder
+ https://bugs.webkit.org/show_bug.cgi?id=67373
+
+ Reviewed by Dimitri Glazkov.
+
+ Sometimes a failure will cause many tests in a given directory to fail.
+ When that happens, it's better to list the directory as a single item
+ (with a count) rather than spamming all the test names.
+
+ (This patch also updates a bunch of unit test expected results after my last commit.)
+
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js:
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js:
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
+
+2011-09-01 Adam Barth <[email protected]>
+
Lower the visual noise from the failing builders display
https://bugs.webkit.org/show_bug.cgi?id=67369