  WebLoad 4.1.3 README
  Linas Vepstas (linas@linas.org)
  14 May 1999

  Breif Overview of the WebLoad Tool Suite.

  WebLoad is a collection of tools for testing and measuring web
  applications and web servers.  The tools can be used to record and
  playback HTTP conversations between a web browser and a web server,
  make timing measurements, and gather statistics.  The true power of
  this tool lies in its stress-test and stress-measurement abilities: It
  can simulate a large number of users accessing a web site in
  structured yet randomized sessions.


  WebLoad has been loosely derived from the public-domain WebStone
  package, but has seen a major redesign since then, with the addition
  numerous features and enhancements.  Features include:


  +o  RReeccoorrdd aanndd ppllaayybbaacckk ooff UURRLL''ss,, iinncclluuddiinngg ......

  +o  Ability to handle generic HTTP traffic, including XML-based
     prototocls such as OFX.  Custom HTTP headers and bodies may be
     specified.

  +o  Ability to trace/record through multiple servers, capturing entire
     web surfing sessions over many sites.

  +o  Can act as man-in-the-middle, gathering detailed traces of HTTP
     traffic to debug server, browser or proxy bugs.

  +o  Checksum generation and validation to detect mangled, missing or
     misdelivered pages.

  +o  Adjustable timeout to detect non-responding servers.

  +o  Logon password support, allowing websites that require customer
     registration and logon to be traced.

  +o  Autologoff when error condition is detected, allowing a logon id to
     be reused, thus avoiding a manual reset or logon timeout.

  +o  Support for cookies and handles embedded in URL's.

  +o  Limited ability to make generic text and key-value substitutions in
     HTTP header and body.

  +o  Support for HTTP/1.0 and HTTP/1.1 protocols, including KeepAlive
     and persistant connections.

  +o  Support for SSLv2 and SSLv3 encryption.

  +o  Works through Socks & Proxy firewalls.

  +o  Rudimentary support for JavaScript, Frames, Layers, base href tags.
     This allows more complex sites to be correctly traversed.

  +o  Automatic followup of redirects (302 and 304 return codes).

  +o  Works with password-protected sites.





  +o  AAbbiilliittyy ttoo eemmuullaattee aa rreeaall uusseerr tthhrroouugghh aa vvaarriieettyy ooff ffeeaattuurreess,, ssuucchh
     aass ......

  +o  Emulation of the browser image (GIF) cache; cached images, and
     audio/video clips are not refetched.

  +o  Fixed or randomly distributed "think time" to simulate a user
     pausing to read a web page.  Think time may be assigned per page,
     or an average declared for the session.  Exponential and gaussian
     distributions supported.

  +o  Blocks of URL's can be assigned fractional probabilities for
     playback.  Thus, complex user behaviours, such as visting only part
     of a web site only some of the time can be emulated.




  +o  AAbbiilliittyy ttoo ggaatthheerr ttiimmeessttaammppss aanndd ppeerrffoorrmmaannccee ssttaattiissttiiccss,, iinncclluuddiinngg
     ......

  +o  Ability to time individual events, as well as gether summary
     statistics for entire sessions.  Features include:

  +o  Ability to timestamp a user session, including socket connect, SSL
     negotiation, socket read and write times, elapsed delay times.
     Timestamps can be obtained during record and during playback.

  +o  Automatic collection of statistics, including average, min, max and
     standard deviations.

  +o  Stats may be reported in detail, in blocks, and as a summary.  For
     example, the standard deviation for socket connection delay for a
     particular URL can be obtained, or the average connect time for a
     block of URL's, or the average end-to-end time over all pages for
     the entire session.




  +o  AAbbiilliittyy ttoo ssttrreessss llooaadd aa sseerrvveerr aanndd ggaatthheerr ssttrreessss ssttaattiissttiiccss
     tthhrroouugghh mmuullttii--uusseerr eemmuullaattiioonn..  FFeeaattuurreess iinncclluuddee ......

  +o  Load Rampup. Startup of clients staggered in blocks, avoiding
     initialization bottlenecks, as well as lockstep servicing,
     "sloshing" and other mutli-user measurement pitfalls.

  +o  Statistics gathering synchronization.  This guarentees that that no
     statistics are gathered during the rampup and rampdown phases.

  +o  Statistics gathering checkpointing.  Statistics are gathered and
     presented only for whole sessions, thus excluding partially begun
     or paritally completed sessions that occur at rampup and rampdown.
     Stats are "rolled back" to last complete session.

  +o  Variety of scripts to extract, summarize and manipulate multi-user
     run reports, including CPU usage, queue lengths, page and session
     times.




  +o  MMuullttii--OOSS ssuuppppoorrtt:: AAIIXX,, LLiinnuuxx,, 9955 aanndd NNTT..



  +o  Ports to other Unixes should be straightforward.

  +o  Multiuser support, stress-loading and tools not available on 95/NT
     due to OS limitations.  (Multiuser support requires shared memory.
     Timeouts require alarms, neither are supported on NT/95. SSL
     support requires encryption, NT licensing is
     restrictive/prohibitive.  NT/95 TCP/IP stack is slowww, shaky and
     prone to frequent hangs, crashes.)


























































