Changeset 94309 in webkit


Ignore:
Timestamp:
Sep 1, 2011 10:48:59 AM (13 years ago)
Author:
abarth@webkit.org
Message:

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:
Location:
trunk/Tools
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js

    r93641 r94309  
    5555};
    5656
     57base.dirName = function(path)
     58{
     59    var directoryIndex = path.lastIndexOf('/');
     60    if (directoryIndex == -1)
     61        return path;
     62    return path.substr(0, directoryIndex);
     63};
     64
    5765base.trimExtension = function(url)
    5866{
  • trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js

    r93641 r94309  
    5757    var value = base.joinPath("", "test.html");
    5858    equals(value, "test.html");
     59});
     60
     61test("dirName", 3, function() {
     62    equals(base.dirName("foo.html"), "foo.html");
     63    equals(base.dirName("foo/bar.html"), "foo");
     64    equals(base.dirName("foo/bar/baz.html"), "foo/bar");
    5965});
    6066
  • trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js

    r93906 r94309  
    5252    equal(grid.outerHTML, '<table class="failures">' +
    5353        '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
    54         '<tbody></tbody>' +
     54        '<tbody><tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr></tbody>' +
    5555    '</table>');
    5656    var row = grid._rowByResult('TEXT');
     
    5858        '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
    5959        '<tbody>' +
    60             '<tr>' +
     60            '<tr class="TEXT">' +
    6161                '<td>TEXT</td><td></td><td></td>' +
    6262            '</tr>' +
     63            '<tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr>' +
    6364        '</tbody>' +
    6465    '</table>');
    65     equal(row.outerHTML, '<tr><td>TEXT</td><td></td><td></td></tr>');
     66    equal(row.outerHTML, '<tr class="TEXT"><td>TEXT</td><td></td><td></td></tr>');
    6667    grid.add({});
    6768    equal(grid.outerHTML, '<table class="failures">' +
    6869        '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
    6970        '<tbody>' +
    70             '<tr>' +
     71            '<tr class="TEXT">' +
    7172                '<td>TEXT</td><td></td><td></td>' +
    7273            '</tr>' +
     74            '<tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr>' +
    7375        '</tbody>' +
    7476    '</table>');
     
    8082        '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
    8183        '<tbody>' +
    82             '<tr>' +
     84            '<tr class="TEXT">' +
    8385                '<td>TEXT</td>' +
    8486                '<td></td>' +
    8587                '<td><div><span class="architecture">64-bit</span><span class="version">lucid</span></div></td>' +
    8688            '</tr>' +
     89            '<tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr>' +
    8790        '</tbody>' +
    8891    '</table>');
     
    9194        '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
    9295        '<tbody>' +
    93             '<tr>' +
     96            '<tr class="IMAGE+TEXT">' +
     97                '<td>IMAGE+TEXT</td>' +
     98                '<td><div><span class="version">leopard</span></div></td>' +
     99                '<td></td>' +
     100            '</tr>' +
     101            '<tr class="TEXT">' +
    94102                '<td>TEXT</td>' +
    95103                '<td></td>' +
    96104                '<td><div><span class="architecture">64-bit</span><span class="version">lucid</span></div></td>' +
    97105            '</tr>' +
    98             '<tr>' +
    99                 '<td>IMAGE+TEXT</td>' +
    100                 '<td><div><span class="version">leopard</span></div></td>' +
    101                 '<td></td>' +
    102             '</tr>' +
     106            '<tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr>' +
    103107        '</tbody>' +
    104108    '</table>');
     
    107111        '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
    108112        '<tbody>' +
    109             '<tr>' +
     113            '<tr class="IMAGE+TEXT">' +
     114                '<td>IMAGE+TEXT</td>' +
     115                '<td><div><span class="version">leopard</span></div></td>' +
     116                '<td></td>' +
     117            '</tr>' +
     118            '<tr class="TEXT">' +
    110119                '<td>TEXT</td>' +
    111120                '<td></td>' +
    112121                '<td><div><span class="architecture">64-bit</span><span class="version">lucid</span></div></td>' +
    113122            '</tr>' +
    114             '<tr>' +
    115                 '<td>IMAGE+TEXT</td>' +
    116                 '<td><div><span class="version">leopard</span></div></td>' +
    117                 '<td></td>' +
    118             '</tr>' +
     123            '<tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr>' +
    119124        '</tbody>' +
    120125    '</table>');
  • trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js

    r93926 r94309  
    2929(function(){
    3030
     31var kMaxTestsPerGroup = 3;
     32
    3133ui.notifications.Stream = base.extends('ol', {
    3234    init: function()
     
    8385});
    8486
    85 ui.notifications.FailingTest = base.extends('li', {
    86     init: function(failureAnalysis)
    87     {
    88         this._failureAnalysis = failureAnalysis;
    89         this.textContent = failureAnalysis.testName;
    90     },
    91     equals: function(failureAnalysis)
    92     {
    93         return this._failureAnalysis.testName == failureAnalysis.testName;
     87ui.notifications.FailingTestGroup = base.extends('li', {
     88    init: function(testGroup)
     89    {
     90        this.textContent = testGroup;
    9491    }
    9592})
     
    161158    containsFailureAnalysis: function(failureAnalysis)
    162159    {
    163         return Array.prototype.some.call(this._effects.children, function(child) {
    164             return child.equals(failureAnalysis);
    165         });
     160        return this._testNameList.indexOf(failureAnalysis.testName) != -1;
    166161    },
    167162    updateBuilderResults: function(resultNodesByBuilder)
     
    175170        this._testNameList.push(failureAnalysis.testName);
    176171        this.updateBuilderResults(failureAnalysis.resultNodesByBuilder);
    177         return this._effects.appendChild(new ui.notifications.FailingTest(failureAnalysis));
     172        $(this._effects).empty();
     173        this._forEachTestGroup(function (testGroup) {
     174            this._effects.appendChild(new ui.notifications.FailingTestGroup(testGroup))
     175        }.bind(this));
    178176    },
    179177    addCommitData: function(commitData)
     
    185183        }
    186184        return this._causes.appendChild(new ui.notifications.SuspiciousCommit(commitData));
     185    },
     186    _forEachTestGroup: function(callback)
     187    {
     188        var testsByDirectory = {};
     189        this._testNameList.forEach(function(testName) {
     190            var directory = base.dirName(testName);
     191            testsByDirectory[directory] = testsByDirectory[directory] || [];
     192            testsByDirectory[directory].push(testName);
     193        });
     194        var individualTests = [];
     195        Object.keys(testsByDirectory).forEach(function(directory) {
     196            var testsInDirectory = testsByDirectory[directory];
     197            var count = testsInDirectory.length;
     198            if (count <= kMaxTestsPerGroup) {
     199                individualTests = individualTests.concat(testsInDirectory);
     200                return;
     201            }
     202            callback(directory + ' (' + count + ' tests)');
     203        });
     204        individualTests.forEach(callback);
    187205    }
    188206});
  • trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js

    r93926 r94309  
    7777});
    7878
    79 test('FailingTest', 4, function() {
    80     var failingTest = new ui.notifications.FailingTest({testName: 'test'});
     79test('FailingTestGroup', 2, function() {
     80    var failingTest = new ui.notifications.FailingTestGroup('test');
    8181    equal(failingTest.tagName, 'LI');
    8282    equal(failingTest.innerHTML, 'test');
    83     ok(failingTest.equals({testName: 'test'}));
    84     ok(!failingTest.equals({testName: 'foo'}));
    8583});
    8684
     
    107105        "updateBuilderResults",
    108106        "addFailureAnalysis",
     107        "_forEachTestGroup",
    109108        "containsFailureAnalysis",
    110109        "addCommitData"
     
    116115            '<table class="failures">' +
    117116                '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
    118                 '<tbody></tbody>' +
     117                '<tbody><tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr></tbody>' +
    119118            '</table>' +
    120119        '</div>' +
     
    135134            '<table class="failures">' +
    136135                '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
    137                 '<tbody></tbody>' +
     136                '<tbody><tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr></tbody>' +
    138137            '</table>' +
    139138        '</div>' +
     
    157156            '<table class="failures">' +
    158157                '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
    159                 '<tbody></tbody>' +
     158                '<tbody><tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr></tbody>' +
    160159            '</table>' +
    161160        '</div>' +
     
    181180            '<table class="failures">' +
    182181                '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
    183                 '<tbody></tbody>' +
     182                '<tbody><tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr></tbody>' +
    184183            '</table>' +
    185184        '</div>' +
     
    215214                '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
    216215                '<tbody>' +
    217                     '<tr>' +
     216                    '<tr class="TEXT">' +
    218217                        '<td>TEXT</td>' +
    219218                        '<td></td>' +
    220219                        '<td><div><span class="architecture">64-bit</span><span class="version">lucid</span></div></td>' +
    221220                    '</tr>' +
     221                    '<tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr>' +
    222222                '</tbody>' +
    223223            '</table>' +
     
    255255                '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
    256256                '<tbody>' +
    257                     '<tr>' +
     257                    '<tr class="TEXT">' +
    258258                        '<td>TEXT</td>' +
    259259                        '<td></td>' +
    260260                        '<td><div><span class="architecture">64-bit</span><span class="version">lucid</span></div></td>' +
    261261                    '</tr>' +
    262                     '<tr>' +
     262                    '<tr class="BUILDING" style="">' +
    263263                        '<td>BUILDING</td>' +
    264264                        '<td><div><span class="version">leopard</span></div></td>' +
     
    294294});
    295295
     296test('TestsFailing (grouping)', 1, function() {
     297    var testFailures = new ui.notifications.TestsFailing();
     298    testFailures.addFailureAnalysis({testName: 'path/to/test1.html', resultNodesByBuilder: {}});
     299    testFailures.addFailureAnalysis({testName: 'path/to/test2.html', resultNodesByBuilder: {}});
     300    testFailures.addFailureAnalysis({testName: 'path/to/test3.html', resultNodesByBuilder: {}});
     301    testFailures.addFailureAnalysis({testName: 'path/to/test4.html', resultNodesByBuilder: {}});
     302    testFailures.addFailureAnalysis({testName: 'path/another/test.html', resultNodesByBuilder: {}});
     303    equal(testFailures.innerHTML,
     304        '<div class="how">' +
     305            '<time class="relative">Just now</time>' +
     306            '<table class="failures">' +
     307                '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
     308                '<tbody><tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr></tbody>' +
     309            '</table>' +
     310        '</div>' +
     311        '<div class="what">' +
     312            '<div class="problem">' +
     313                '<ul class="effects">' +
     314                    '<li>path/to (4 tests)</li>' +
     315                    '<li>path/another/test.html</li>' +
     316                '</ul>' +
     317                '<ul class="actions">' +
     318                    '<li><button>Examine</button></li>' +
     319                '</ul>' +
     320            '</div>' +
     321            '<ul class="causes"></ul>' +
     322        '</div>');
     323
     324});
     325
    296326test('BuildersFailing', 1, function() {
    297327    var builderFailing = new ui.notifications.BuildersFailing();
     
    302332            '<table class="failures">' +
    303333                '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
    304                 '<tbody></tbody>' +
     334                '<tbody><tr class="BUILDING" style="display: none; "><td>BUILDING</td><td></td><td></td></tr></tbody>' +
    305335            '</table>' +
    306336        '</div>' +
  • trunk/Tools/ChangeLog

    r94308 r94309  
     12011-09-01  Adam Barth  <abarth@webkit.org>
     2
     3        Group failing tests in garden-o-matic if there are more than three in a folder
     4        https://bugs.webkit.org/show_bug.cgi?id=67373
     5
     6        Reviewed by Dimitri Glazkov.
     7
     8        Sometimes a failure will cause many tests in a given directory to fail.
     9        When that happens, it's better to list the directory as a single item
     10        (with a count) rather than spamming all the test names.
     11
     12        (This patch also updates a bunch of unit test expected results after my last commit.)
     13
     14        * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
     15        * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js:
     16        * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js:
     17        * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
     18        * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
     19
    1202011-09-01  Adam Barth  <abarth@webkit.org>
    221
Note: See TracChangeset for help on using the changeset viewer.