gecko/layout/tools/pageloader
2010-06-22 12:59:15 -04:00
..
jar.mn
Makefile.in Bug 568691 - Convert existing JS components to use NSGetFactory and add manifest files for them. In a followup we will link the .manifest files together at packaging time. This patch was developed on Linux: Windows and Mac may require additional changes. 2010-06-22 12:59:15 -04:00
pageloader.js
pageloader.xul
quit.js
README
report.js
tp-cmdline.js Bug 568691 - Convert existing JS components to use NSGetFactory and add manifest files for them. In a followup we will link the .manifest files together at packaging time. This patch was developed on Linux: Windows and Mac may require additional changes. 2010-06-22 12:59:15 -04:00
tp-cmdline.manifest Bug 568691 - Convert existing JS components to use NSGetFactory and add manifest files for them. In a followup we will link the .manifest files together at packaging time. This patch was developed on Linux: Windows and Mac may require additional changes. 2010-06-22 12:59:15 -04:00

Pageload Test Component
=======================

Usage:

  ./firefox -tp file:///path/to/manifest.txt [-tpargs...]

See ./firefox -help for other arguments.


Manifest file format
====================

Comments in the manifest file start with a #.  Each line may be:

* a URL (absolute or relative to the manifest)

This URL is added to the list of tests.

* one or more flags, followed by whitespace, followed by a URL

The only flag supported currently is '%', which indicates that
a test will do its own timing.  (See Self-timing Tests below.)

* "include" followed by whitespace, followed by a URL

Parse the given manifest file.

Self-timing Tests
=================

Most timing tests are interested in timing how long it takes the page
to load; that is, from the start of page loading until the 'load'
event is dispatched.  By default, this is what the pageloader will
time.  However, if a test URL has the % flag, the test is expected to
report its own timing.  For this purpose, the pageloader will provide
a function named "tpRecordTime" in the test's global object that it
should call once it has performed whatever timing it wants to do.
The given value will be used as the timing result for this test.

Output format
=============

The result is a dump to stdout via dump() --
browser.dom.window.dump.enabled must be set to true in the profile.  A
number of output formats can be specified via the -tpformat command
line option, currently 'js', 'text', and 'tinderbox' are supported.

Sample 'js' format output:

([({page:"1280x1024-PNG/index.html", value:133, stddev:20.049937655763422}),({page:"bugzilla.mozilla.org/index.html", value:233, stddev:36.66606060105176}),({page:"espn.go.com/index.html", value:117.6, stddev:1.2}),({page:"home.netscape.com/index.html", value:97.8, stddev:47.41898354035017}),])

Sample 'text' format output:

============================================================
    Page                                     mean  stdd   min   max raw
  0 1280x1024-PNG/index.html                  133    20   121   297 297,173,122,121,124,125
  1 bugzilla.mozilla.org/index.html           233    37   192   395 395,273,223,192,198,279
  2 espn.go.com/index.html                    118     1   116   254 254,117,116,119,119,117
  3 home.netscape.com/index.html               98    47     3   124 3,121,120,124,124,121
============================================================

Sample 'tinderbox' format output:

__start_tp_report
_x_x_mozilla_page_load,778.5,NaN,NaN
_x_x_mozilla_page_load_details,avgmedian|778.5|average|766.75|minimum|NaN|maximum|NaN|stddev|NaN|0;file:///c:/proj/mozilla-cvs/perf/tp2/base/www.cnn.com/index.html;778.5;766.75;722;1027;1027;788;777;722;780|...
__end_tp_report

Note that the minimum, maximum, stddev are not calculated; they're
always reported as NaN.  (They were the minimum and maximum values of
any sampled value, and the standard deviation across all sampled
values -- not very useful.)

TODO
====

* Command line option to choose whether to run with or without browser chrome.  Currently runs without.

* Tinderbox-dropping style output
  * better yet would be to teach tinderbox about JSON