1 |
Changes since 1.0: |
2 |
|
3 |
* Fix issue with chunked keep-alive responses when the initial chunk content |
4 |
starts with a NULL byte. [Justin Erenkrantz] |
5 |
|
6 |
* Fix HTTP keepalives over SSL. |
7 |
[Justin Erenkrantz] |
8 |
|
9 |
* Support building against installed Ubuntu APR packages. |
10 |
[Justin Erenkrantz] |
11 |
|
12 |
* Update relative times report to use appropriate APR format string. |
13 |
[Justin Erenkrantz] |
14 |
|
15 |
* Protect relative times report output with a mutex to avoid overlap. |
16 |
[Justin Erenkrantz] |
17 |
|
18 |
* Fix compilation error with newer gcc versions. |
19 |
[Ohad Lutzky <ohad lutzky.net>] |
20 |
|
21 |
* Implement a random substitution feature; requires a requesttemplate, |
22 |
one or more substitution variables of the form ${varname) in the |
23 |
requesttemplate and a substitution file formatted with one value |
24 |
per newline delimited line (more than one variable per URL permitted). |
25 |
The variables and files are referred to as subst variables and subst |
26 |
files. Each time the URL is sent the subst variable is replaced with |
27 |
one line randomly selected from the subst file. Any part of the |
28 |
requesttemplate can be randomly substituted, protocol, host, port, etc. |
29 |
[Guy Ferraiolo <guyf cnet.com>] |
30 |
|
31 |
* Add extraheader attribute to url's to allow custom headers to be set. |
32 |
[Justin Erenkrantz] |
33 |
|
34 |
* Add payloadfile attribute to url's to allow the body to be read from a file. |
35 |
[Justin Erenkrantz] |
36 |
|
37 |
* Support custom HTTP methods. [Justin Erenkrantz] |
38 |
|
39 |
* Fix corruption when we have multiple usefarmer's without a count. |
40 |
[Justin Erenkrantz] |
41 |
|
42 |
* Sync with latest find_apr.m4 and find_apu.m4 to detect 1.0 APR and APR-util. |
43 |
[Justin Erenkrantz] |
44 |
|
45 |
* Add <proxyurl> child element to <urllist> to request against a proxy. |
46 |
[Justin Erenkrantz] |
47 |
|
48 |
* Accept HTTP/1.0 responses to HTTP/1.1 requests. [Justin Erenkrantz] |
49 |
|
50 |
* Use APR's bundled mkdir script. [Justin Erenkrantz] |
51 |
|
52 |
* Support VPATH builds again. [Justin Erenkrantz] |
53 |
|
54 |
* Added the "content-type" parameter for URLs using the POST method. |
55 |
[Philippe Marzouk <phil@ozigo.org>] |
56 |
|
57 |
* Remove .deps code that is just broken for now. [Justin Erenkrantz] |
58 |
|
59 |
* Added configversion attribute (root element <flood>) which ties config |
60 |
file structure with certain flood version and warns user if there is a |
61 |
conflict. [Jacek Prucia] |
62 |
|
63 |
* Added attribute responsescript (element <url>), which allows flood to |
64 |
delegate response processing to external script. [Jacek Prucia] |
65 |
|
66 |
* Change open_socket prototype to return errors. [Justin Erenkrantz] |
67 |
|
68 |
* Fix HEAD responses with Content-Length specified being handled incorrectly. |
69 |
[Justin Erenkrantz] |
70 |
|
71 |
* Flood manual (DocBook based). [Jacek Prucia] |
72 |
|
73 |
* Added <baseurl> element. When present, it's contents are copied in front |
74 |
of every <url> element, which makes relative urllist's possible. |
75 |
[Jacek Prucia] |
76 |
|
77 |
* Added basic auth support. When user and passowrd attributes of <url> |
78 |
element are present and non-empty, flood sends auth data with request. |
79 |
[Jacek Prucia] |
80 |
|
81 |
* Added generic_fullresp_recv_resp() to force full response. |
82 |
[Phi-Long Tran <ptran@pobox.com>] |
83 |
|
84 |
* Fixed compiler warning about signed/unsigned mismatch in generic_recv_resp. |
85 |
[Phi-Long Tran <ptran@pobox.com>] |
86 |
|
87 |
* Include correct header to import defintion of apr_pstrmemdup in |
88 |
flood_socket_keepalive.c. [Phi-Long Tran <ptran@pobox.com>] |
89 |
|
90 |
* Namespace protect expand_param_e enum values to not conflict with Win32 |
91 |
headers. [Phi-Long Tran <ptran@pobox.com>] |
92 |
|
93 |
* Added error handling for failed config-file open. |
94 |
[Phi-Long Tran <ptran@pobox.com>] |
95 |
|
96 |
* Fix Win32 crash resulting from strtoll() macro |
97 |
[Phi-Long Tran <ptran@pobox.com>] |
98 |
|
99 |
* Catch some badly formed URLs and exit instead of later crashing. |
100 |
[Jacek Prucia <jacek.prucia@7bulls.com>] |
101 |
|
102 |
* Fix tab formatting in some analysis scripts. |
103 |
[Reini Urban <rurban@inode.at>] |
104 |
|
105 |
Changes since milestone-03: |
106 |
|
107 |
* Revamp keepalive_recv_resp to use the APR table API. This allows true |
108 |
case insensitivity with the response headers. [Justin Erenkrantz] |
109 |
|
110 |
* Support autoconf-2.5+. [Justin Erenkrantz] |
111 |
|
112 |
* Switch to new apr_poll() API. [Justin Erenkrantz] |
113 |
|
114 |
* Stop using the apr_lock.h API and start using apr_thread_mutex.h |
115 |
instead. [Aaron Bannert] |
116 |
|
117 |
* Remove the USE_RW_LOCK_FOR_SSL conditional compiles since we |
118 |
didn't have an autoconf feature test for it nor was it really |
119 |
giving us any benefit. [Aaron Bannert] |
120 |
|
121 |
* Add ability to detect when the server has closed the connection instead |
122 |
of erroring out (think Keep-Alive). [Justin Erenkrantz] |
123 |
|
124 |
* Add chunked support. [Justin Erenkrantz] |
125 |
|
126 |
* Add detection of CAPATH variable for RedHat installs. |
127 |
[Justin Erenkrantz] |
128 |
|
129 |
* Fix return value in parse_xml_url_info. [Justin Erenkrantz] |
130 |
|
131 |
* Fix linking problems due to misordering of libraries on Solaris. |
132 |
[Justin Erenkrantz] |
133 |
|
134 |
* Add config.nice support from apr_common.m4. [Justin Erenkrantz] |
135 |
|
136 |
* Add apr_common.m4 and fix up building/configuration of source |
137 |
apr/apr-util. [Justin Erenkrantz] |
138 |
|
139 |
* Introduce sequence tag to urllist element. This tag has the following |
140 |
form: |
141 |
|
142 |
<urllist> |
143 |
<sequence sequencename="myseq" sequencelist="bob, jane, joe"> |
144 |
<url requesttemplate="http://www.you.com/~${myseq}/" /> |
145 |
<url requesttemplate="http://www.you.com/~${myseq}/index.html" /> |
146 |
</sequence> |
147 |
</urllist> |
148 |
|
149 |
This will hit: |
150 |
http://www.you.com/~bob/ |
151 |
http://www.you.com/~bob/index.html |
152 |
http://www.you.com/~jane/ |
153 |
http://www.you.com/~jane/index.html |
154 |
http://www.you.com/~joe/ |
155 |
http://www.you.com/~joe/index.html |
156 |
|
157 |
This allows certain URL patterns to be simplified. [Justin Erenkrantz] |
158 |
|
159 |
* Remove shadow declaration of stat in flood_round_robin.c. |
160 |
[Justin Erenkrantz] |
161 |
|
162 |
* Factor out handling of URI XML fields. [Justin Erenkrantz] |
163 |
|
164 |
* Properly detect and use APR's libtool. [Justin Erenkrantz] |
165 |
|
166 |
* Reworked build system to ease integration with APR/apr-util. |
167 |
[Justin Erenkrantz] |
168 |
|
169 |
Changes since milestone-02: |
170 |
|
171 |
* Updated apr_lock_create to reflect the API change in APR. |
172 |
[Aaron Bannert] |
173 |
|
174 |
* Fix an unterminated string that would produce garbage cookie strings |
175 |
when processing multiple cookies. [Chris Williams <chriwill@cmguc.com>] |
176 |
|
177 |
* Allow OpenSSL to seed from memory rather than a file if we don't |
178 |
have random support. [Doug MacEachern] |
179 |
|
180 |
* Allow better detection of randfile and capath options when SSL is |
181 |
enabled. [Justin Erenkrantz] |
182 |
|
183 |
* Detect when we have a https URL and don't have SSL support built in. |
184 |
[Justin Erenkrantz] |
185 |
|
186 |
* Fix longstanding bug that was probably leaking massive file descriptors |
187 |
when SSL was being used. [Aaron Bannert] |
188 |
|
189 |
* Always link the runtime library search path into our binary for |
190 |
libararies like APR, APR-UTIL, etc. [Aaron Bannert] |
191 |
|
192 |
* Conditionally compile SSL support (set with the --enable-ssl parameter). |
193 |
We no longer require SSL to build flood. [Aaron Bannert] |
194 |
|
195 |
* SSL is now disabled by default and must be explicitly enabled. |
196 |
This is to comply with certain legal restrictions. [Aaron Bannert] |
197 |
|
198 |
* Require openssl 0.9.6 or greater. (This may be raised to 0.9.6b if |
199 |
rumors of lower versions crashing under load become true.) |
200 |
[Aaron Bannert] |
201 |
|
202 |
* If SSL is enabled we now check that we have the appropriate headers |
203 |
and libraries available. [Aaron Bannert] |
204 |
|
205 |
* Rework of --with-openssl parameter to work with the new --enable-ssl |
206 |
param. There are three ways to use an installed openssl: if it |
207 |
exists in the default places, if you specify CFLAGS/LDFLAGS to |
208 |
the configure script, or if you specify the path prefix to the |
209 |
installation with this new parameter. [Aaron Bannert] |
210 |
|
211 |
* Add new parameter (--enable-ssl). [Aaron Bannert] |
212 |
|
213 |
* Display URL that failed when we get an error. [Justin Erenkrantz] |
214 |
|
215 |
* Add support for platforms that do not have threads (or are unusable by APR). |
216 |
[Justin Erenkrantz] |
217 |
|
218 |
* Sleep for four minutes (typical TIME_WAIT period) when we run out of |
219 |
ports rather than exiting with an error. [Justin Erenkrantz] |
220 |
|
221 |
* Fix regex code to work with Linux as well. [Justin Erenkrantz] |
222 |
|
223 |
* Add ability to have a staggered startup of threads. By specifying |
224 |
startdelay="X" and startcount="Y", flood will start Y threads every |
225 |
X seconds until the count value is reached. [Justin Erenkrantz] |
226 |
|
227 |
* Rewrite the expression/template code to use variable names (backed by a |
228 |
hash table) and allow use of regular expressions for the response |
229 |
template. |
230 |
The new syntax is as follows: |
231 |
${foo} substitutes foo's value. |
232 |
${=foo} generates a random number and stores it in foo and substitutes it. |
233 |
([^>]*) (regex sub-expression) coupled with responsename="foo" allows |
234 |
that subexpression to be stored in foo based on what is in the |
235 |
response from the server. It will only take the first |
236 |
sub-expression in the regex and store it in the value. |
237 |
[Justin Erenkrantz] |
238 |
|
239 |
Changes since milestone-01: |
240 |
|
241 |
* Merge SSL socket code in with the normal socket calls. flood will |
242 |
now determine (based on the protocol scheme) whether it should use |
243 |
SSL or not. [Justin Erenkrantz] |
244 |
|
245 |
* Add ability to retrieve some data from the response and place it in |
246 |
state variables (max of 10). These "state" variables live for the |
247 |
life of the profile (i.e. all elements in the urllist). They may be |
248 |
referred in any template via $[0-9]. Add ability to store the |
249 |
entire response (only active if a response template is present). |
250 |
[Justin Erenkrantz] |
251 |
|
252 |
* Added a new report type called "relative_timers". Each |
253 |
of our 4 main timers is printed just as with the "easy" |
254 |
reporting scheme, only they only show elapsed time since |
255 |
the beginning of the request/response test cycle. |
256 |
[Aaron Bannert] |
257 |
|
258 |
* Added another timer (begin) that happens immediately before |
259 |
the connect() is made (or would be made). This is necessary |
260 |
if we want to calculate the elapsed time for the rest of |
261 |
our timers. [Aaron Bannert] |
262 |
|
263 |
* Add better resolution timers (connect, write, read, close). |
264 |
[Justin Erenkrantz] |
265 |
|
266 |
* A farmer may now be run for an arbitrary amount of time (specified in |
267 |
seconds) rather than a specific number of requests. [Justin Erenkrantz] |
268 |
|
269 |
* The seed used for the global pseudo-random number generator |
270 |
can now be set with the <seed>n</seed> tag. [Aaron Bannert] |
271 |
|
272 |
* Added random pre and post delay. You can also specify a precision |
273 |
amount. This means that the actual delay will be: |
274 |
actual_delay + (precision * e) |
275 |
(where e is a number between -1 and 1). |
276 |
This can be accomplished in the <url> tag, like so: |
277 |
<url predelay="10" predelayprecision="2">http://example.com/</url> |
278 |
<url postdelay="10" postdelayprecision="2">http://example.com/</url> |
279 |
Both types of delays can be used together, and they are all optional. |
280 |
[Aaron Bannert] |
281 |
|
282 |
* Add pseudo-random data to a POST payload via the $$ character in the |
283 |
new payloadtemplate parameter for a URL. [Justin Erenkrantz] |
284 |
|
285 |
* Add group shortcuts when defining a profile. The following syntaxes are |
286 |
now valid: |
287 |
<report>easy</report>,<report>simple</report> |
288 |
<socket>generic</socket>,<socket>ssl</socket>,<socket>keepalive</socket> |
289 |
<profiletype>round_robin</profiletype> |
290 |
These tags will now setup the functions for this "group." You do not need |
291 |
to know the function names anymore (although the old syntax is still valid). |
292 |
[Justin Erenkrantz] |
293 |
|
294 |
* Profile events are now split into logical "groups". A "group" |
295 |
is a bunch of functions that all need to be overriden together |
296 |
to add some new functionality. This logical grouping may |
297 |
become enforced in code at some later time (it will make |
298 |
it easier for users to build configurations). Currently |
299 |
the groupings we have are: |
300 |
profile events, socket events, reporting events, and |
301 |
verification events. [Aaron Bannert] |
302 |
|
303 |
* Added delay support for urllist. A urllist entry can now be |
304 |
given a delay (in seconds) that happens each time that URL |
305 |
is used in a request. [Justin Erenkrantz] |
306 |
|
307 |
* Changed "simple" and "easy" reporting systems to both print |
308 |
out the URL for each request. [Aaron Bannert] |
309 |
|
310 |
* Now using strncasecmp() instead of strncmp() to compare XML |
311 |
identifiers. [Aaron Bannert] |
312 |
|
313 |
* There is now limited support for Cookies in a Round Robin profile. |
314 |
[Justin Erenkrantz] |
315 |
|
316 |
* A Farm can consist of multiple Farmers now, instead of being |
317 |
restricted to a single Farmer named "Joe". (This is only correct |
318 |
if you have thread support on your system.) [Aaron Bannert] |
319 |
|
320 |
* Limited support for Farms has been implemented. There can |
321 |
be one Farm named "Bingo". [Aaron Bannert] |
322 |
|