Changes between Version 1 and Version 2 of RebaselineServer


Ignore:
Timestamp:
Dec 6, 2010 2:10:14 PM (13 years ago)
Author:
mihaip@chromium.org
Comment:

Rebaseline server: more code descriptions

Legend:

Unmodified
Added
Removed
Modified
  • RebaselineServer

    v1 v2  
    22
    33The "Rebaseline Server" is a tool that makes it easy to do "mass" rebaselines (updating of pixel or text baselines for dozens or hundreds of layout tests). It makes it easy to review changes to baselines and update existing ones (and optionally move them, to handle OS transitions). It's known as a ''server'' because it runs a local HTTP server which makes it easy to have a cross-platform GUI for reviewing that is backed by Python code for doing the SCM (SVN/Git) operations on the filesystem.
     4
     5== UI Walkthrough ==
    46
    57== Sample Usages ==
     
    1517  1. From the footer of the UI, set the '''baseline target''' to `mac` (since we want the default `mac` port baselines to reflect the newest shipping OS)
    1618  1. Similarly, set the '''Move current baselines to:''' dropdown to `mac-leopard`, so that the existing baselines are still used for bots that are on Leopard
    17   1. Refer to the UI walkthrough for more details on how to use the GUI
     19  1. Refer to the [#UIWalkthrough UI walkthrough] for more details on how to use the GUI
     20  1. Commit the result patch with `webkit-patch` as usual
    1821
    1922If working on the Chromium port, the above steps can be used there too, except the baseline target is `chromium-mac` and existing baselines should be moved to `chromium-mac-leopard`.
     
    2932  1. From the footer of the UI, set the '''baseline target''' to `chromium-win` or `chromium-win` as appropriate.
    3033  1. Leave the '''Move current baselines to:''' dropdown set to `Nowhere (replace)`
    31   1. Refer to the UI walkthrough for more details on how to use the GUI
     34  1. Refer to the [#UIWalkthrough UI walkthrough] for more details on how to use the GUI
     35  1. Commit the result patch with `webkit-patch` as usual
    3236
    33 Note that if you'd like to rebaseline both Windows and Linux in the same patch, you'll need to run the tests on both platforms by hand and copy the results file to the machine that's running the rebaseline server.
    34 
    35 == UI Walkthrough ==
     37Note that if you'd like to rebaseline both Windows and Linux in the same patch, you'll need to run the tests on both platforms by hand and copy the results file to the machine that's running the rebaseline server (see the [#CaveatsLimitations caveats] section).
    3638
    3739== Code location and design ==
     
    3941The Python server lives at [http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/webkitpy/tool/commands/rebaselineserver.py WebKitTools/Scripts/webkitpy/tool/commands/rebaselineserver.py], the GUI is at [http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/webkitpy/tool/commands/data/rebaselineserver/ WebKitTools/Scripts/webkitpy/tool/commands/data/rebaselineserver/].
    4042
     43The Python server parses the `unexpected_results.json`file [http://www.google.com/codesearch/p?hl=en#OAMlx_jo-ck/src/third_party/WebKit/WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py&q=unexpected_results%20file:webkitpy&exact_package=chromium&l=823 generated] by `new-run-webkit-tests`. It then starts [http://docs.python.org/library/basehttpserver.html an HTTP server]. That server can respond with the list of failing tests, expected/actual output for a test (read from the test results directory), or to commands to rebaseline tests. The latter is done by using the [http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/webkitpy/common/checkout/scm.py scm.py] wrapper that makes it agnostic to Git vs. SVN checkouts.
     44
     45The UI populates various `<select>`s based on the test output, grouping results by failure type, directory and test. The "loupe" functionality is accomplished by rendering pixel tests into a `<canvas>` and then drawing the enlarged pixels into another <canvas>` (see `loupe.js`). The queue is maintained as a <select>` as well (see `queue.js`).
    4146
    4247== Caveats/Limitations ==