Changeset 91487 in webkit


Ignore:
Timestamp:
Jul 21, 2011 12:14:39 PM (13 years ago)
Author:
abarth@webkit.org
Message:

garden-o-matic should be able to rebaseline many tests at once
https://bugs.webkit.org/show_bug.cgi?id=64963

Reviewed by Dimitri Glazkov.

This patch contains some UI for rebaselining tests in bulk. I don't
expect this UI to be the final UI, but the underlying infrastructure
will be useful.

  • Scripts/webkitpy/tool/servers/data/gardeningserver/checkout.js:
  • Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
  • Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
  • Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
  • Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
Location:
trunk/Tools
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r91478 r91487  
     12011-07-21  Adam Barth  <abarth@webkit.org>
     2
     3        garden-o-matic should be able to rebaseline many tests at once
     4        https://bugs.webkit.org/show_bug.cgi?id=64963
     5
     6        Reviewed by Dimitri Glazkov.
     7
     8        This patch contains some UI for rebaselining tests in bulk.  I don't
     9        expect this UI to be the final UI, but the underlying infrastructure
     10        will be useful.
     11
     12        * Scripts/webkitpy/tool/servers/data/gardeningserver/checkout.js:
     13        * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
     14        * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
     15        * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
     16        * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
     17
    1182011-07-21  Adam Barth  <abarth@webkit.org>
    219
  • trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/checkout.js

    r91042 r91487  
    3737    });
    3838
    39     var requestsInFlight = extensionList.length;
     39    if (!extensionList.length)
     40        callback();
    4041
    41     if (!requestsInFlight)
    42         callback();
     42    var requestTracker = new base.RequestTracker(extensionList.length, callback);
    4343
    4444    $.each(extensionList, function(index, extension) {
     
    4949            'suffix': extension
    5050        }), function() {
    51             --requestsInFlight;
    52             if (!requestsInFlight)
    53                 callback();
     51            requestTracker.requestComplete();
    5452        });
    5553    });
    5654};
    5755
     56checkout.rebaselineAll = function(rebaselineTasks, callback)
     57{
     58    var nextIndex = 0;
     59
     60    function rebaselineNext()
     61    {
     62        if (nextIndex >= rebaselineTasks.length) {
     63            callback();
     64            return;
     65        }
     66        var task = rebaselineTasks[nextIndex++];
     67        checkout.rebaseline(task.builderName, task.testName, task.failureTypeList, rebaselineNext);
     68    }
     69
     70    rebaselineNext();
     71};
     72
    5873})();
  • trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/index.html

    r91241 r91487  
    1818        <div class="actions">
    1919            <button class="triage">Triage Failures</button>
     20            <button class="rebaseline-selected">Rebaseline Selected</button>
    2021        </div>
    2122    </div>
  • trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/main.js

    r91241 r91487  
    247247}
    248248
     249function rebaselineSelected()
     250{
     251    var rebaselineTasks = [];
     252
     253    $('.results .test input:checkbox').each(function() {
     254        if (!this.checked)
     255            return;
     256        var testSummary = $(this).parents('.test');
     257        var testName = testSummary.attr(config.kTestNameAttr);
     258        $('.builder-name', testSummary).each(function() {
     259            var builderName = $(this).attr(config.kBuilderNameAttr);
     260            var failureTypes = $(this).attr(config.kFailureTypesAttr);
     261            var failureTypeList = failureTypes.split(' ');
     262            rebaselineTasks.push({
     263                'builderName': builderName,
     264                'testName': testName,
     265                'failureTypeList': failureTypeList,
     266            });
     267        });
     268    });
     269
     270    displayOnButterbar('Rebaselining...');
     271    checkout.rebaselineAll(rebaselineTasks, dismissButterbar);
     272}
     273
    249274function rebaselineResults()
    250275{
     
    279304
    280305$('.results .toolbar .triage').live('click', triageFailures);
     306$('.results .toolbar .rebaseline-selected').live('click', rebaselineSelected);
    281307$('.results-detail .actions .next').live('click', nextResultsDetail);
    282308$('.results-detail .actions .previous').live('click', previousResultsDetail);
  • trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results.js

    r91478 r91487  
    204204}
    205205
    206 function unexpectedResults(resultNode)
     206results.unexpectedResults = function(resultNode)
    207207{
    208208    var actualResults = resultNode.actual.split(' ');
     
    212212        return expectedResults.indexOf(result) == -1;
    213213    });
    214 }
     214};
    215215
    216216function isUnexpectedFailure(resultNode)
     
    220220    if (anyIsSuccess(resultNode.actual.split(' ')))
    221221        return false;
    222     return anyIsFailure(unexpectedResults(resultNode));
     222    return anyIsFailure(results.unexpectedResults(resultNode));
    223223}
    224224
     
    254254results.collectUnexpectedResults = function(dictionaryOfResultNodes)
    255255{
    256     var collectedResults = {};
    257     var results = [];
     256    var collectedResults = [];
    258257    $.each(dictionaryOfResultNodes, function(key, resultNode) {
    259         results = results.concat(unexpectedResults(resultNode));
    260     });
    261     return base.uniquifyArray(results);
     258        collectedResults = collectedResults.concat(results.unexpectedResults(resultNode));
     259    });
     260    return base.uniquifyArray(collectedResults);
    262261};
    263262
  • trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js

    r91478 r91487  
    4949    var block = $(
    5050        '<tr class="test">' +
     51          '<td><input type="checkbox"></td>' +
    5152          '<td class="what"><a class="test-name"></a></td>' +
    5253          '<td class="where"><ul></ul></td>' +
     
    6263    $.each(resultNodesByBuilder, function(builderName, resultNode) {
    6364        var listElement = $('<li class="builder-name"></li>');
    64         listElement.attr(config.kBuilderNameAttr, builderName).text(displayNameForBuilder(builderName));
     65        listElement.attr(config.kBuilderNameAttr, builderName).attr(config.kFailureTypesAttr, results.unexpectedResults(resultNode)).text(displayNameForBuilder(builderName));
    6566        where.append(listElement);
    6667    });
Note: See TracChangeset for help on using the changeset viewer.