
Changelog and things to do for "Hammerhead":

Key:
    +  -- completed.
    ?  -- not sure of status

13/11/02
    + Fixes for current version of FreeBSD (> 4.0)

    Need to recognise the various versions of FreeBSD 

08/11/02
    + Strips trailing whitespace from scenario names.

06/10/02
    + Improved warnings for dud scenarios.
    
17/12/01
    + Seg-fault problem writing compact scenario file
        with expected result

    + Seg-fault in thread version of find_img_src()
    
14/12/01
    + Changed commandline parsing to use getopt and added:
	- long option support
	- old c/C option is now only uppercase (-C or --checkconf)
	- old t/T option is now only lowercase (-t or --test)
	- lowercase -c is now option for configfile location
	- option for seconds to run (-s)
	- option for version and help added
	(nfx3)

10/12/01
    + Problem with relative images gets in pages 
        (found by Niklas Fondberg <n.fondberg@telia.com>).

    Limit to a single image load per page (for duplicated images)
        (suggested by Niklas Fondberg <n.fondberg@telia.com>).
    
30/8/01
    + The following from Paul Edgar <pedgar@users.sourceforge.net>
        + Added in sec_sleep() to stop usleep() overflow problems

26/7/01
    Make it so instead of scenarios it finds ".perl" files
        and distributes these among the threads and pipes
        stuff in and out of the perl. The perl acts as
        an "agent".

18/7/01
    + Separated make / make install so rpm's are easier to build.

    + Add a couple of extra scenario options:  
        + terminate thread scenario (T_exit)
        + wait until a certain time or sync point (T+<millisecs>)

16/7/01
    + Added --with-pthreads=yes/no support for compiling with pthreads.

10/7/01
    + The following from Robert Nielson <robert.nielsen@everest.com>:
        + Header/Body support for POST requests
        + Better Cookie support and handling 

    + Configurable HTTP type
        (note: should check a valid value is given)

    + Fixes to SSL autoconf stuff (better at finding it now)

20/6/01
    + Fixed stupid crashing bug when checking scenarios
            (thanks Jonathon Bayer).

6/6/01
    + INSTALL document
        (ok - it still needs work)

    Document the log format

20/10/00
    + Provide a switch to select between threaded/multiple process method.
        (it's a configure option now)

28/8/00
    Resolve ramp-up problems in a better way

    ? Finish the SSL connection stuff,
        should be able to handle v2 and v3 SSL.

    Write a portable spinlock
        (seems ok under FreeBSD and Linux)

30/4/98
    + Investigate support needed to fake packets with different
		IP source locations (use ip aliasing).

    Non-blocking version?

21/7/97
    + Make hammerhead faster by using iterator for next scenario
      (instead of a name lookup).

    Do some basic statistical analysis of measures taken
        . standard deviation

    + Allow substitutions in get request lines:
        %S - a random 8 bit string

18/7/97
    + av response time (to initial request rather than total request).
    pages/s
    requests/s


17/7/97
    + Send crapped up requests

9/7/97
    + Send cookies (configurable)

    + More detailed reporting

    + Premature socket closure

    Track and wait for closing sockets        


12/3/97
    
    + Build test harness to evaluate Apache vs NCSA

    Write a design/plan document

19/3/97

    + Be able to read in "scenerio" fragments

    + Be able to read in expected result with scenario fragments
        (including expected log output)

    Be able to verify output and log output

    + Be able to multi-thread and run at a "maximum" speed
        (should be running faster than redback and httpds)

    + Be able to measure response speed of individual requests

    + Be able to measure overall throughput

    + Scenarios will be fired off at random
        (unless they have a dependency which needs to be met first)

    + Scenario format:
      N name of scenario
      D* dependencys to be met
      R request to be made
      E* expected output line
      L expected log result        
      S* scenario recommended in sequence
      T think time

      * - can be more than one.

    'E' and 'L' can be regular expressions
    
    + scenarios will be in a sub-directory "scenarios" - program
        will read the directory and get all available scenarios
        (named: X.scn)

    + Manage multiple (N) sessions (using threads)

21/3/97
    + Allow substitutions in get request lines:
        %P - pin

    + Add Seed support
 
    + Add sequence Sequence_probability 

    + Add Sleep_time 100 
 
25/3/97
    + some formatting stuff

26/3/97
    + moved file processing to ReadScenarios, out of Scenario::Restore to
        allow multiple scenarios per file

    + add support for creating scenarios with expected results (using second
      cmd line arg)

26/3/97
    + log high resolution time to process request
    
    + log times with log entries

    + Add think time

    + Add multiple scenarios/file 

    + Add Expected output line generation to specified scenario file

27/3/97
    + Add a `runtime' option (for length of run).

    + Collect some statistics for fixed length runs.
        (total throughput, average processing time, etc)

9/4/97
    + Share request/result strings between scenarios

    + Share scenario_arr and size vars in threads (to avoid something
    thread-unsafe in element_array())

    + Add ThinkLimit to test for excessive think times 

    + Add SummaryInterval to print summary lines after a defined
    number of requests in each thread

    statistics.cc should really be subsumed by session.cc
        (global variables should be static within the Session class)

26/6/97
    + use one thread per crawl scenario, since currently can only 
      crawl on one scenario.
    + clean up thread termination
    + dump returned page to build static content
