Changeset 130711 in webkit


Ignore:
Timestamp:
Oct 8, 2012 6:43:08 PM (12 years ago)
Author:
rniwa@webkit.org
Message:

Perf. test results page is broken when runs have different sets of tests
https://bugs.webkit.org/show_bug.cgi?id=98691

Reviewed by Daniel Bates.

Add "missing" columns for tests that are missing some runs.

Also fix regressions from the previous patch:

  • Make reference run switch work again
  • Load jquery plugins from the remote server when the jquery is loaded from the remote server.
  • resources/results-template.html:
Location:
trunk/PerformanceTests
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/PerformanceTests/ChangeLog

    r130669 r130711  
     12012-10-08  Ryosuke Niwa  <rniwa@webkit.org>
     2
     3        Perf. test results page is broken when runs have different sets of tests
     4        https://bugs.webkit.org/show_bug.cgi?id=98691
     5
     6        Reviewed by Daniel Bates.
     7
     8        Add "missing" columns for tests that are missing some runs.
     9
     10        Also fix regressions from the previous patch:
     11        - Make reference run switch work again
     12        - Load jquery plugins from the remote server when the jquery is loaded from the remote server.
     13
     14        * resources/results-template.html:
     15
    1162012-10-08  Ryosuke Niwa  <rniwa@webkit.org>
    217
  • trunk/PerformanceTests/resources/results-template.html

    r130669 r130711  
    9393td.worse {
    9494    color: #c66;
     95}
     96
     97td.missing {
     98    text-align: center;
    9599}
    96100
     
    175179        function () {
    176180            loadScript(remotePath + '/' + jQuery,
    177                 createLoadedJQuery(localPath),
     181                createLoadedJQuery(remotePath),
    178182                function () { alert("Failed to load jQuery."); });
    179183        });
     
    395399        var test = tests[testName];
    396400        if (test.isMemoryTest() != shouldIgnoreMemory)
    397             createTableRow(test, test.results()[referenceIndex]);
     401            createTableRow(runs, test, referenceIndex);
    398402    });
    399403
     
    439443    + '</svg>';
    440444
    441 function createTableRow(test, referenceResult) {
     445function createTableRow(runs, test, referenceIndex) {
    442446    var tableRow = $('<tr><td class="test">' + test.name() + '</td><td class="unit">' + test.unit() + '</td></tr>');
    443447
    444     tableRow.append(test.results().map(function (result, index) {
    445         var secondCell = '';
     448    function markupForRun(result, referenceResult) {
     449        var comparisonCell = '';
    446450        var hiddenValue = '';
    447         if (result !== referenceResult) {
     451        var shouldCompare = result !== referenceResult;
     452        if (shouldCompare && referenceResult) {
    448453            var percentDifference = referenceResult.percentDifference(result);
    449454            var better = test.smallerIsBetter() ? percentDifference < 0 : percentDifference > 0;
     
    455460            }
    456461            hiddenValue = '<span style="display: none">|' + comparison + '</span>';
    457             secondCell = '</td><td class="' + className + '">' + comparison;
    458         }
     462            comparisonCell = '<td class="' + className + '">' + comparison + '</td>';
     463        } else if (shouldCompare)
     464            comparisonCell = '<td class="comparison"></td>';
    459465
    460466        var values = result.values();
     
    476482        return '<td class="result" title="' + statistics + '">' + toFixedWidthPrecision(result.mean()) + hiddenValue
    477483            + '</td><td class="stdev" title="' + statistics + '">&plusmn; '
    478             + formatPercentage(result.stdevRatio()) + warning + secondCell + '</td>';
    479     }).reduce(function (markup, cell) { return markup + cell; }, ''));
     484            + formatPercentage(result.stdevRatio()) + warning + '</td>' + comparisonCell;
     485    }
     486
     487    function markupForMissingRun(isReference) {
     488        return '<td colspan="' + (isReference ? 2 : 3) + '" class="missing">Missing</td>';
     489    }
     490
     491    var runIndex = 0;
     492    var results = test.results();
     493    var referenceResult = undefined;
     494    var resultIndexMap = {};
     495    for (var i = 0; i < results.length; i++) {
     496        while (runs[runIndex] !== results[i].run())
     497            runIndex++;
     498        if (runIndex == referenceIndex)
     499            referenceResult = results[i];
     500        resultIndexMap[runIndex] = i;
     501    }
     502    for (var i = 0; i < runs.length; i++) {
     503        var resultIndex = resultIndexMap[i];
     504        if (resultIndex == undefined)
     505            tableRow.append(markupForMissingRun(i == referenceIndex));
     506        else
     507            tableRow.append(markupForRun(results[resultIndex], referenceResult));
     508    }
    480509
    481510    $('#container').children('tbody').last().append(tableRow);
     
    506535
    507536function init() {
    508     $('.checkbox').each(function (index, checkbox) {
    509         $(checkbox).children('span').click(function (event) {
    510             if ($(this).hasClass('checked'))
    511                 return;
    512             $(checkbox).children('span').removeClass('checked');
    513             $(this).addClass('checked');
    514             $(checkbox).trigger('change', $(this));
    515         });
    516     });
    517 
    518537    $.tablesorter.addParser({
    519538        id: 'comparison',
     
    557576        createTable(tests, runs, shouldIgnoreMemory, referenceIndex);
    558577    });
     578
     579    $('.checkbox').each(function (index, checkbox) {
     580        $(checkbox).children('span').click(function (event) {
     581            if ($(this).hasClass('checked'))
     582                return;
     583            $(checkbox).children('span').removeClass('checked');
     584            $(this).addClass('checked');
     585            $(checkbox).trigger('change', $(this));
     586        });
     587    });
    559588}
    560589
Note: See TracChangeset for help on using the changeset viewer.