blob: 7369ef91d3fd65a94bd98210264343513ab00f15 [file] [log] [blame]
Changes since milestone-02:
* Updated apr_lock_create to reflect the API change in APR.
[Aaron Bannert]
* Fix an unterminated string that would produce garbage cookie strings
when processing multiple cookies. [Chris Williams <chriwill@cmguc.com>]
* Allow OpenSSL to seed from memory rather than a file if we don't
have random support. [Doug MacEachern]
* Allow better detection of randfile and capath options when SSL is
enabled. [Justin Erenkrantz]
* Detect when we have a https URL and don't have SSL support built in.
[Justin Erenkrantz]
* Fix longstanding bug that was probably leaking massive file descriptors
when SSL was being used. [Aaron Bannert]
* Always link the runtime library search path into our binary for
libararies like APR, APR-UTIL, etc. [Aaron Bannert]
* Conditionally compile SSL support (set with the --enable-ssl parameter).
We no longer require SSL to build flood. [Aaron Bannert]
* SSL is now disabled by default and must be explicitly enabled.
This is to comply with certain legal restrictions. [Aaron Bannert]
* Require openssl 0.9.6 or greater. (This may be raised to 0.9.6b if
rumors of lower versions crashing under load become true.)
[Aaron Bannert]
* If SSL is enabled we now check that we have the appropriate headers
and libraries available. [Aaron Bannert]
* Rework of --with-openssl parameter to work with the new --enable-ssl
param. There are three ways to use an installed openssl: if it
exists in the default places, if you specify CFLAGS/LDFLAGS to
the configure script, or if you specify the path prefix to the
installation with this new parameter. [Aaron Bannert]
* Add new parameter (--enable-ssl). [Aaron Bannert]
* Display URL that failed when we get an error. [Justin Erenkrantz]
* Add support for platforms that do not have threads (or are unusable by APR).
[Justin Erenkrantz]
* Sleep for four minutes (typical TIME_WAIT period) when we run out of
ports rather than exiting with an error. [Justin Erenkrantz]
* Fix regex code to work with Linux as well. [Justin Erenkrantz]
* Add ability to have a staggered startup of threads. By specifying
startdelay="X" and startcount="Y", flood will start Y threads every
X seconds until the count value is reached. [Justin Erenkrantz]
* Rewrite the expression/template code to use variable names (backed by a
hash table) and allow use of regular expressions for the response
template.
The new syntax is as follows:
${foo} substitutes foo's value.
${=foo} generates a random number and stores it in foo and substitutes it.
([^>]*) (regex sub-expression) coupled with responsename="foo" allows
that subexpression to be stored in foo based on what is in the
response from the server. It will only take the first
sub-expression in the regex and store it in the value.
[Justin Erenkrantz]
Changes since milestone-01:
* Merge SSL socket code in with the normal socket calls. flood will
now determine (based on the protocol scheme) whether it should use
SSL or not. [Justin Erenkrantz]
* Add ability to retrieve some data from the response and place it in
state variables (max of 10). These "state" variables live for the
life of the profile (i.e. all elements in the urllist). They may be
referred in any template via $[0-9]. Add ability to store the
entire response (only active if a response template is present).
[Justin Erenkrantz]
* Added a new report type called "relative_timers". Each
of our 4 main timers is printed just as with the "easy"
reporting scheme, only they only show elapsed time since
the beginning of the request/response test cycle.
[Aaron Bannert]
* Added another timer (begin) that happens immediately before
the connect() is made (or would be made). This is necessary
if we want to calculate the elapsed time for the rest of
our timers. [Aaron Bannert]
* Add better resolution timers (connect, write, read, close).
[Justin Erenkrantz]
* A farmer may now be run for an arbitrary amount of time (specified in
seconds) rather than a specific number of requests. [Justin Erenkrantz]
* The seed used for the global pseudo-random number generator
can now be set with the <seed>n</seed> tag. [Aaron Bannert]
* Added random pre and post delay. You can also specify a precision
amount. This means that the actual delay will be:
actual_delay + (precision * e)
(where e is a number between -1 and 1).
This can be accomplished in the <url> tag, like so:
<url predelay="10" predelayprecision="2">http://example.com/</url>
<url postdelay="10" postdelayprecision="2">http://example.com/</url>
Both types of delays can be used together, and they are all optional.
[Aaron Bannert]
* Add pseudo-random data to a POST payload via the $$ character in the
new payloadtemplate parameter for a URL. [Justin Erenkrantz]
* Add group shortcuts when defining a profile. The following syntaxes are
now valid:
<report>easy</report>,<report>simple</report>
<socket>generic</socket>,<socket>ssl</socket>,<socket>keepalive</socket>
<profiletype>round_robin</profiletype>
These tags will now setup the functions for this "group." You do not need
to know the function names anymore (although the old syntax is still valid).
[Justin Erenkrantz]
* Profile events are now split into logical "groups". A "group"
is a bunch of functions that all need to be overriden together
to add some new functionality. This logical grouping may
become enforced in code at some later time (it will make
it easier for users to build configurations). Currently
the groupings we have are:
profile events, socket events, reporting events, and
verification events. [Aaron Bannert]
* Added delay support for urllist. A urllist entry can now be
given a delay (in seconds) that happens each time that URL
is used in a request. [Justin Erenkrantz]
* Changed "simple" and "easy" reporting systems to both print
out the URL for each request. [Aaron Bannert]
* Now using strncasecmp() instead of strncmp() to compare XML
identifiers. [Aaron Bannert]
* There is now limited support for Cookies in a Round Robin profile.
[Justin Erenkrantz]
* A Farm can consist of multiple Farmers now, instead of being
restricted to a single Farmer named "Joe". (This is only correct
if you have thread support on your system.) [Aaron Bannert]
* Limited support for Farms has been implemented. There can
be one Farm named "Bingo". [Aaron Bannert]