flood STATUS:							-*-text-*-
Last modified at [$Date$]

Release:

    1.0:           Released July 23, 2002
    milestone-03:  Tagged January 16, 2002
    ASF-transfer:  Released July 17, 2001
    milestone-02:  Tagged August 13, 2001
    milestone-01:  Tagged July 11, 2001 (tag lost during transfer)

RELEASE SHOWSTOPPERS:

    * "Everything needs to work perfectly"

Other bugs that need fixing:

    * I get a SIGBUS on Darwin with our examples/round-robin-ssl.xml
      config, on the second URL. I'm using OpenSSL 0.9.6c 21 dec 2001.
      
    * iPlanet sends "Content-length" - there is a hack in there now
      to recognize it.  However, all HTTP headers need to be normalized
      before checking their values.  This isn't easy to do.  Grr.

    * OpenSSL 0.9.6
      Segfaults under high load.  Upgrade to OpenSSL 0.9.6b.
       Aaron says: I just found a big bug that might have been causing
                   this all along (we weren't closing ssl sockets).
                   How can I reproduce the problem you were seeing
                   to verify if this was the fix?

    * SEGVs when /tmp/.rnd doesn't exist are bad. Make it configurable
      and at least bomb with a good error message. (See Doug's patch.)
       Status: This is fixed, no?

    * If APR has disabled threads, flood should as well. We might want
      to have an enable/disable parameter that does this also, providing
      an error if threads are desired but not available.

    * flood needs to clear pools more often. With a long running test
      it can chew up memory very quickly. We should just bite the bullet
      and create/destroy/clear pools for each level of our model:
      farm, farmer, profile, url/request-cycle, etc.

    * APR needs to have a unified interface for ephemeral port
      exhaustion, but aparently Solaris and Linux return different
      errors at the moment. Fix this in APR then take advantage of
      it in flood.

    * The examples/analyze-relative scripts fail when there are less
      than 5 unique URLs.

Other features that need writing:

    * More analysis and graphing scripts are needed

    * Write robust tool (using tethereal perhaps) to take network dumps 
      and convert them to flood's XML format.
        Status: Justin volunteers.  Aaron had a script somewhere that is
                a start. Jacek is working on a Mozilla application, codename
                "Flood URL bag" (much like Live HTTP Headers) and small
                HTTP proxy.

    * Get chunked encoding support working.
        Status: Justin volunteers.  He got sidetracked by the httpd
                implementation of input filtering and never finished 
                this.  This is a stopgap until apr-serf is completed.

    * Maybe we should make randfile and capath runtime directives that
      come out of the XML, instead of autoconf parameters.

    * We are using apr_os_thread_current() and getpid() in some places
      when what we really want is a GUID. The GUID will be used to
      correlate raw output data with each farmer. We may wish to print
      a unique ID for each of farm, farmer, profile, and url to help in
      postprocessing.

    * We are using strtol() in some places and strtoll() in others.
      Pick one (Aaron says strtol(), but he's not sure).

    * Validation of responses (known C-L, specific strings in response)
       Status: Justin volunteers

    * HTTP error codes (ie. teach it about 302s)
       Justin says: Yeah, this won't be with round_robin as implemented.  
                    Need a linked list-based profile where we can insert 
                    new URLs into the sequence.

    * Farmer (Single-thread, multiple profiles)
       Status: Aaron says: If you have threads, then any Farmer can be
       run as part of any Farm. If you don't have threads, you can
       currently only run one Farmer named "Joe" right now (this will
       be changed so that if you don't have threads, flood will attempt
       to run all Farmers in serial under one process).

    * Collective (Single-host, multiple farms)
      This is a number of Farms that have been fork()ed into child processes.

    * Megaconglomerate (Multiple hosts each running a collective)
      This is a number of Collectives running on a number of hosts, invoked
      via RSH/SSH or maybe even some proprietary mechanism.

    * Other types of urllists
        a) Random / Random-weighted
        b) Sequenced (useful with cookie propogation)
        c) Round-robin
        d) Chaining of the above strategies
      Status: Round-robin is complete.

    * Other types of reports
      Status: Aaron says: "simple" reports are functional. Justin added
              a new type that simply prints the approx. timestamp when
              the test was run, and the result as OK/FAIL; it is called
              "easy reports" (see flood_easy_reports.h).
              Furthermore, simple_reports and easy_reports both print
              out the current requesting URI line.

Documentation that needs writing:

    * Documentation?  What documentation? RTFS?
        Status: Justin volunteers.  He'll probably use Anakia for user
                docs and doxygen for source code comments.

    * Feature set
      We'll have to eventually write down all the features we support,
      which will most likely come out to be the various XML parameters
      we support.

Available Patches:

Open issues:

    * Ponder using apr-serf in flood
        Status: This requires apr-serf to be written.  Chicken and egg.
                Ideally, apr-serf would handle buckets, filters, and
                other cool stuff.  However, this isn't the highest of
                priorities.

    * Validating XML Parser?
       Justin says: I don't think we want this.  We want a standalone 
                    validator.
       Aaron says: I strongly feel we should have this turned on at
                   least for the invoking "Megaconglomerate". The added
                   overhead for validating when we're already parsing
                   will be minimal. It will not affect the results of
                   the tests. It only happens when a new flood process
                   is created (directly or via rsh/ssh), not when invoking
                   a collective, farm, farmer, or profile. What it gives
                   us from the user's standpoint is far greater than
                   the impact of the added startup overhead.
                   (Maybe a flood argument that disables it for when
                   some UI wrapper already did the checking or if it's
                   being invoked as part of a megaconglomerate (rsh/ssh).)
  
    * Supporting use of installed APR / APR-util
       Justin says: Requires changes to APR/APR-util to make it install
                    the right stuff.  We currently rely on the source.

    * Mandrake Linux 8.0 and OpenSSL 0.9.6a just aren't coexisting at all.
      The problem seems to be that OpenSSL is refusing to initialize the
      PRNG.  Go figure.  I give up on this for now, but it is a big nasty
      bug in something somewhere.  This code works on Solaris/Intel.
      That's all I'll say on the matter for now.

    * Report Aggregation
      We're not sure how to handle reporting quite yet. We'd like to keep
      it open ended and flexible, but that will be difficult to do while
      maintaining the ability to run a huge variety of tests.

    * WebLogic 5.10 Service Pack 9
      No one told BEA how to make an HTTP server.  Send it Connection: Close
      and a cookie, and it'll respond with Connection: Keep-Alive (no cookie
      and it honors Connection: Close).  That's wrong.
