The httperf - HTTP load generator with post-quantum support from BoringSSL
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

преди 13 години
преди 17 години
преди 18 години
преди 18 години
преди 18 години
преди 18 години
преди 18 години
преди 18 години
преди 18 години
преди 18 години
преди 18 години
преди 18 години
преди 18 години
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960
  1. 2011-02-10 Ted Bullock <tbullock@comlore.com>
  2. * Replaced bundled version of getopt with flavour from openbsd
  3. (smaller code and more liberal redistribution license)
  4. 2011-02-07 Ted Bullock <tbullock@comlore.com>
  5. * Adjusted help text
  6. 2009-12-16 Ted Bullock <tbullock@comlore.com>
  7. * Remove libevent: Remove libevent (for now) from HEAD due to stability
  8. 2008-10-03 Ted Bullock <tbullock@canada.com>
  9. * src/timer.c: Fix build on opensolaris with Sun Studio compiler
  10. * src/lib/heap.c: Fix build on opensolaris with Sun Studio compiler
  11. 2008-07-14 Adrian Chadd <adrian@creative.net.au>
  12. * Assorted .c and .h files: Use libevent for the communications backend
  13. 2008-04-11 Ted Bullock <tbullock@canada.com>
  14. * configure.ac, src/Makefile.am: Make automake compilation optional,
  15. use --enable-idleconn. This will require libevent.
  16. 2008-01-31 Ted Bullock <tbullock@canada.com>
  17. * src/idleconn.c: Complete rewrite to use libevent backend; slight
  18. performance improvement thanks to use of libevent notification system
  19. 2007-11-16 Ted Bullock <tbullock@canada.com>
  20. * configure.ac: Enable libevent dependancy
  21. * src/httperf.c: Print libevent version event notification mechanism
  22. 2007-11-15 Ted Bullock <tbullock@canada.com>
  23. * autogen.sh: Remove in lieu of autoreconf -i
  24. 2007-09-23 Ted Bullock <tbullock@canada.com>
  25. * httperf.c: Add a check to return value of timer_schedule
  26. * timer.c: Fix a crash associated with rescheduling a timer
  27. * lib/list.c: NEW Generic linked list data structure implementation
  28. * lib/list.h: NEW Generic linked list data structure API
  29. 2007-09-18 Ted Bullock <tbullock@canada.com>
  30. * timer.c: Remove the last of the old timer logic code and replace it
  31. with simpler functionality
  32. 2007-09-11 Ted Bullock <tbullock@canada.com>
  33. * timer.c and timer.h: Use new heap and queue data
  34. structures to re-implement timers to use memory caching and
  35. try to fix memory leak associated with timers not being freed
  36. 2007-09-11 Ted Bullock <tbullock@canada.com>
  37. * lib/heap.c, lib/heap.h: New generic priority queue data structure
  38. 2007-07-15 Ted Bullock <tbullock@canada.com>
  39. * lib/queue.c, lib/queue.h: New generic queue data structure
  40. 2007-07-15 Ted Bullock <tbullock@canada.com>
  41. * lib/generic_types.h: New File - Migrate various generic types
  42. out of httperf.h in preparation for a generic queue data structure
  43. * httperf.h: Removed unneccessary #include commands to minimize
  44. header inclusion blocks and duplicates
  45. * *.c: Added #include statements to use new generic_types.h
  46. 2007-07-15 Ted Bullock <tbullock@canada.com>
  47. * timer.c, timer.h, httperf.c: Fixed memory leak associated with timers not being
  48. freed
  49. 2007-06-03 Ted Bullock <tbullock@canada.com>
  50. * event.c and event.h: Moved to localevent.c and localevent.h for integration with
  51. libevent (which has a default header of event.h)
  52. 2007-06-03 Ted Bullock <tbullock@canada.com>
  53. * configure.ac: Add configuration to use libevent
  54. 2007-06-03 Ted Bullock <tbullock@canada.com>
  55. * configure.ac: Remove unnecessary configuration cruft and configure httperf
  56. to be built in c99 mode
  57. 2007-05-27 Ted Bullock <tbullock@canada.com>
  58. * man/httperf.1: Fixed man page typo for --wset option (needed --uri, not --wset)
  59. 2007-05-27 Andrew Hateley <andrew.hateley@gmail.com>
  60. * man/httperf.1: New documentation regarding the variable periodic rates
  61. * src/httperf.c: New functionality for variable periodic rates
  62. * src/httperf.h: ditto
  63. * src/timer.c: ditto
  64. 2007-03-31 Ted Bullock <tbullock@canada.com>
  65. * *.c and *.h: Adjusted license to explicitly list HP copyright as
  66. Copyright 2000-2007 Hewlett-Packard Company
  67. 2007-02-07 Ted Bullock <tbullock@canada.com>
  68. * AUTHORS: wsseslog crash fix was actually written by David Mosberger
  69. 2007-02-07 Ted Bullock <tbullock@canada.com>
  70. * AUTHORS: Removed Durval Menezes from AUTHORS file since his fix
  71. has been re-written by Theodore Bullock
  72. 2007-02-07 Ted Bullock <tbullock@canada.com>
  73. * *.c and *.h: Slightly adjusted license to explicitly point out AUTHORS file
  74. as official list of authors
  75. 2007-02-07 Ted Bullock <tbullock@canada.com>
  76. * httperf.1: Added correction to man page to include a missing
  77. --wsess identification
  78. 2007-01-26 Ted Bullock <tbullock@canada.com>
  79. * getopt.c and getopt1.c: Re-Added the to the build process
  80. httperf now compiles on Linux, OpenBSD, FreeBSD, Solaris, HP-UX 11i
  81. with cc and gcc and (with cc and gcc)
  82. 2007-01-26 Ted Bullock <tbullock@canada.com>
  83. * Makefile.am: Revised Makefile.am for src directories to explicitly include the
  84. .h files to allow make distcheck to pass
  85. 2007-01-26 Ted Bullock <tbullock@canada.com>
  86. * getopt.c and getopt1.c: Removed from build process
  87. * httperf.c: Wrapped call to getopt.h in pre-processor checks
  88. 2007-01-25 Ted Bullock <tbullock@canada.com>
  89. * wsesslog.c: changed a sprintf call to the more secure snprintf
  90. * getopt.c: changed a sprintf call to the more secure snprintf
  91. 2007-01-20 Ted Bullock <tbullock@canada.com>
  92. * autogen.sh: Included the shell script autogen.sh to compile the necessary
  93. autotool components.
  94. * autogen.sh: Removed redundant configuration files from CVS, regenerate these
  95. with the autogen.sh script (recommend autoconf 2.60 and above)
  96. * ttest.c: Removed the ttest.c file from CVS
  97. 2007-01-16 Ted Bullock <tbullock@canada.com>
  98. * Build System: Updated build system to a more typical directory
  99. layout and wrote missing makefile.am files for automake
  100. * idleconn: Now installed along with the httperf executable
  101. * ttest: Remove program from build
  102. 2007-01-02 Ted Bullock <tbullock@canada.com>
  103. *License: Included openssl linking exception
  104. 2006-12-08 Ted Bullock <tbullock@canada.com>
  105. * Bug Fixes: Added a number of fixes from the mailing lists
  106. over the last 6 years.
  107. * compiler warnings: Compiler warnings in core.c and wsesslog.c
  108. * configuration: Fixes a problem with the "configure" setup
  109. where the "--prefix=" option wasn't being obeyed
  110. * zero length: Fixes bug in http.c (parse_header)with zero
  111. length content
  112. * Host Header: Identify machine by FQD rather than hostname
  113. * Persistent Connections: Added Persistent connections to HTTP 1.0
  114. requests
  115. * Robust alloca.h: Robust way to handle the header file that
  116. defines the alloca function <alloca.h> for linux and stdlib.h for
  117. BSD and others
  118. * Time Discrepancy: Fixed a discrepancy between the data produced
  119. by httperf and the documentation in regards to timing.
  120. * wsesslog Crash: Fixed a problem with the wsesslog crashing
  121. httperf due to an unhandled session failure from a burdened server
  122. 2000-10-31 David Mosberger <davidm@hpl.hp.com>
  123. * Version 0.8 released.
  124. * core.c (do_recv) [!HAVE_SSL]: Avoid referncing param.use_ssl.
  125. (do_send): Ditto.
  126. * core.c (core_ssl_connect): Print error message if SSL connect
  127. fails. ERR_print_errors_fp() may not print anything if there
  128. error is due to, e.g., trying to connect to a non-existent port.
  129. * httperf.c (main): Initialize port to -1. Once parameters have
  130. been processed, port defaults to 443 if SSL is in use, 80
  131. otherwise.
  132. 2000-10-30 David Mosberger <davidm@hpl.hp.com>
  133. * httperf.man: Update man-page with new options (based on Martin's
  134. descriptions.
  135. * httperf.c (usage): Mention --port.
  136. 2000-10-27 David Mosberger <davidm@hpl.hp.com>
  137. * httperf.man: Mention request summary in description of
  138. --print-request.
  139. * stat/print_reply.c (print_request): Print request header/content
  140. summary line.
  141. * httperf.c (usage): Bring in sync with implemented options
  142. (Martin's patch).
  143. (longopts): Order in alphabetical order (Martin's patch).
  144. 2000-10-25 David Mosberger <davidm@hpl.hp.com>
  145. * stat/print_reply.c (flush_print_buf): New.
  146. (Call_Private_Data): New.
  147. (CALL_PRIVATE_DATA): New.
  148. (call_private_data_offset): New.
  149. (print_buf): Rewrite to support line-buffering and new output
  150. format.
  151. (call_destroyed): New.
  152. (print_reply_hdr): New (based on Martin's original version).
  153. (send_raw_data): Ditto.
  154. (recv_raw_data): Ditto.
  155. (recv_stop): Print reply summary (based on Martin's version).
  156. (init): Update to support the new print options.
  157. * httperf.c: Replace --print-replies/--print-request with more
  158. general versions of these options.
  159. * httperf.man: Add info on new --print-reply and --print-request
  160. options.
  161. 2000-10-24 David Mosberger <davidm@hpl.hp.com>
  162. * httperf.c (main): Initialize ssl_ctx.
  163. (main): Use SSLv3_client_method() instead of SSLv23_client_method().
  164. The latter doesn't work.
  165. * httperf.h (ssl_ctx): New global variable.
  166. * conn.h [HAVE_SSL]: Drop unnecessary includes of <openssl/rsa.h>,
  167. <openssl/crypto.h>, <openssl/x509.h>, and <openssl/pem.h>. Drop
  168. per-connect "ctx" member (it's global now).
  169. * conn.c (conn_init): Create SSL connection info and set cipher
  170. list (if necessary).
  171. * core.c (core_ssl_connect): Don't create SSL connection info
  172. here (done in conn.c now). Always tell SSL about the
  173. file descriptor of the socket.
  174. * sess.c (sess_deinit) [HAVE_SSL]: Free SSL info if it exists.
  175. * gen/session.c (create_conn): If param.ssl_reuse is in effect,
  176. re-use SSL session if we have one or update session info with
  177. newly created SSL session.
  178. * httperf.c [HAVE_SSL]: Include <openssl/rand.h>.
  179. (main): Call RAND_seed() with a zero buffer.
  180. 2000-10-23 David Mosberger <davidm@hpl.hp.com>
  181. * conn.c (conn_init): Don't initialize conn->ssl to zero---that
  182. has been done by object_new() already.
  183. * gen/session.c (create_conn): If reusing SSL session ids, create
  184. SSL structure and save SSL info in session structure.
  185. * sess.c (sess_deinit) [HAVE_SSL]: Free SSL session if it's
  186. non-NULL.
  187. * httperf.h: Declare "use_ssl" only if HAVE_SSL is defined.
  188. Add ssl_no_reuse and ssl_cipher_list.
  189. * httperf.c (struct longopts): Add --ssl-no-reuse and ssl-ciphers.
  190. (main): Handle --ssl-cipher_list and --ssl-no-reuse options.
  191. 2000-10-19 David Mosberger <davidm@hpl.hp.com>
  192. * core.c (core_ssl_connect): Bring debug messages in sync with
  193. rest of httperf. If s->ssl exists already, skip right to
  194. SSL_connect(). If SSL_connect() returns SSL_ERROR_WANT_READ or
  195. SSL_ERROR_WANT_WRITE, mark the appropriate fd set as active and
  196. return immediately to wait for more data. Use
  197. ERR_print_errors_fp() to print SSL-related errors.
  198. (core_loop): Check for S_CONNECTING state before doing anything
  199. else.
  200. * README: Document configuration option "--enable-debug".
  201. * configure.in: Add support for --enable-debug.
  202. 2000-10-16 David Mosberger <davidm@hpl.hp.com>
  203. * configure.in: Add AC_TYPE_LONG_LONG check (defines u_wide as
  204. "unsigned long long" if the compiler can grok it, "unsigned long"
  205. otherwise).
  206. * aclocal.m4: New file.
  207. * stat/basic.c: Include "config.h".
  208. (struct basic): Change type of hdr_bytes_received,
  209. reply_bytes_received, and footer_bytes_received from
  210. size_t to u_wide.
  211. (dump): Change type of total_size to u_wide.
  212. 2000-10-11 David Mosberger <davidm@hpl.hp.com>
  213. * httperf.h (VERSION): Change to 0.8beta.
  214. * configure.in: New file.
  215. * Makefile.in: Ditto.
  216. * stat/Makefile.in: Ditto.
  217. * gen/Makefile.in: Ditto.
  218. * lib/Makefile.in: Ditto.
  219. 2000-08-29 David Mosberger <davidm@hpl.hp.com>
  220. * httperf.c (main): Call core_exit() on a SIGINT.
  221. 2000-08-21 David Mosberger <davidm@hpl.hp.com>
  222. * core.c (core_init): Bound maximum number of open files to
  223. FD_SETSIZE.
  224. 2000-04-25 David Mosberger <davidm@hpl.hp.com>
  225. * httperf.c (main): Add a call to fpsetmask(0) to get non-finite
  226. IEEE arithmetic to work on older versions of FreeBSD.
  227. 1998-12-21 David Mosberger <davidm@hpl.hp.com>
  228. * Version 0.7 released.
  229. * Makefile (install): New make target.
  230. * httperf.h (VERSION): Define as "0.7".
  231. * gen/wsesslog.c (parse_config): Remove blank in sscanf() format
  232. since this caused problems on FreeBSD and NetBSD. This bug was
  233. reported by Stephane Eranian.
  234. 1998-12-08 David Mosberger <david_mosberger@hp.com>
  235. * httperf.c (struct longopts): Add option "method".
  236. (usage): Document option --method.
  237. (main): Handle --method.
  238. * httperf.h (struct Cmdline_Params): New member "method".
  239. * gen/misc.c: Renamed from add_header.c. This file now implements
  240. both --add-header and --method.
  241. 1998-11-23 David Mosberger <david_mosberger@hp.com>
  242. * httperf.c (longopts): New option "add-header".
  243. (main): Handle --add-header.
  244. * httperf.h (struct Cmdline_Params): New member
  245. "additional_header".
  246. * gen/add_header.c: New file.
  247. 1998-09-18 David Mosberger <davidm@hpl.hp.com>
  248. * gen/session.c (call_done):
  249. (conn_failed): Call create_conn() instead of sess_failure() in
  250. case param.retry_on_failure is set and the connection has not been
  251. successful (received at least one good response)
  252. * gen/wsess.c (call_destroyed): Call sess_dec_ref() only if
  253. session didn't fail.
  254. 1998-09-14 David Mosberger <davidm@hpl.hp.com>
  255. * README: Replace "session" with "connection" and "call" with
  256. "request" to reflect current terminology (reported by Christian
  257. Petit). Also fixed various other typos and grammatical problems.
  258. 1998-09-11 David Mosberger <davidm@hpl.hp.com>
  259. * gen/session.c (call_done): When param.retry_on_failure is set,
  260. re-issue call instead of causing session to fail.
  261. * httperf.c (usage): Add --retry-on-failure option.
  262. (struct longopts): Ditto.
  263. * httperf.man: Document --retry-on-failure option.
  264. 1998-07-23 David Mosberger <davidm@hpl.hp.com>
  265. * stat/sess_stat.c: Use sess->failed instead of maintaining
  266. private session-failure flag.
  267. 1998-07-21 David Mosberger <davidm@hpl.hp.com>
  268. * sess.c (sess_failure): Don't signal EV_SESS_FAILED more than
  269. once per session.
  270. * core.c (do_send): Clear c->recvq_next. This is necessary now
  271. because the same call may be issued multiple times (due to
  272. connection failures). Hence there is no longer a guarantee that
  273. c->recvq_next has been cleared by object_new().
  274. (do_send): Rename s to conn and c to call.
  275. 1998-07-20 David Mosberger-Tang <David.Mosberger@acm.org>
  276. * core.c (do_recv): Set s->state to S_REPLY_DONE when done with an
  277. HTTP/1.0 response (mirrors code in http_process_reply_bytes()).
  278. (do_recv): No need to check for nread == 0.
  279. * stat/basic.c (init): Print basic.conn_lifetime_min only if
  280. basic.num_lifetimes > 0.
  281. * core.c (core_close): Fix typo (call -> all).
  282. 1998-07-08 David Mosberger <davidm@hpl.hp.com>
  283. * core.c (do_send): Set s->state to S_REPLY_STATUS only if this is
  284. the first send---we don't want to interfere with the parsing of an
  285. in-progress reply.
  286. 1998-06-19 David Mosberger <davidm@hpl.hp.com>
  287. * Version 0.6 released.
  288. * gen/wsesslog.c (issue_calls): Limit `to_create' by the number
  289. of calls that the session can queue.
  290. * gen/session.c (session_max_qlen): New function.
  291. (session_current_qlen): Ditto.
  292. (max_qlen): New variable.
  293. * httperf.man: Fix typos.
  294. 1998-06-18 David Mosberger <davidm@hpl.hp.com>
  295. * gen/session.c (MAX_CONN): Up MAX_CONN to 16.
  296. * object.c (object_new): panic() instead of assert(0) when
  297. encountering an unknown object type.
  298. * gen/wsesslog.c (user_think_time_expired): Remove stale comment.
  299. * gen/sess_cookie.c (struct Call_Private_Data): New member cookie.
  300. (call_recv_hdr): Remove padding bogosity.
  301. (call_issue): Copy cookie from session to call object.
  302. 1998-06-17 David Mosberger <davidm@hpl.hp.com>
  303. * timer.c (timer_cancel): Instead of an assertion failure, print a
  304. message on stderr when timer_cancel(t) is called from within a
  305. timeout handler t.
  306. * Feedback from Dick Carter:
  307. * gen/wsesslog.c (parse_config): Remove stale comment.
  308. * httperf.h: Fix typo in comment for min_iat.
  309. * httperf.c (usage): Fix typo in --period args.
  310. * call.c (call_append_request_header): Fix typo in debug message.
  311. 1998-06-09 David Mosberger <davidm@hpl.hp.com>
  312. * stat/print_reply.c: New file.
  313. * stat/sess_stat.c: Ditto.
  314. * stat/wsess_stat.c: Remove.
  315. * stat/basic.c: Move stats macros into stats.h.
  316. (RATE_INTERVAL): Remove.
  317. (interval_start): Ditto.
  318. (perf_sample): Rename from sample_rate().
  319. (conn_fail): Count EPIPE as a `connection reset' error.
  320. (init): Register perf_sample as handler for EV_PERF_SAMPLE.
  321. Remove scheduling of performance sampling timer.
  322. (dump): Print connection lifetime histogram only if verbose > 1.
  323. Print average connection length in number of replies/connection.
  324. * stat/stats.h: New file.
  325. * stat/basic.c: Add copyright message.
  326. * stat/Makefile (libstat.a): Mention sess_stat.o and
  327. print_reply.o.
  328. * object.c: New file.
  329. * object.h: Ditto.
  330. * sess.c: Ditto.
  331. * sess.h: Ditto.
  332. * httperf.h (VERSION): Up version number to 0.6.
  333. (object_is_conn): Remove (now in object.h).
  334. (object_is_call): Ditto.
  335. (enum Object_Type): Ditto.
  336. (struct Object): Ditto.
  337. (object_type_size): Ditto.
  338. (struct Cmdline_Params): New mebers max_piped, max_conns,
  339. print_replies, and session_cookies.
  340. * httperf.c (perf_sample_start): New variable to keep track of
  341. when latest sample interval started.
  342. (struct longopts): Add entries for max-connections,
  343. max-piped-calls, print-replies, and session-cookies.
  344. (usage): Update usage() message.
  345. (perf_sample): New function.
  346. (main): Remove uri_wsesslog generator. Add sess_stat stats
  347. collector. Handle --max-connections, --max-piped, --print-replies
  348. and --session-cookies. Start performance sampling timer.
  349. * http.c (get_line): Use sizeof (s->line_buf) instead of
  350. s->line_buf_size.
  351. (parse_status_line): Do strcmp() to find out whether call
  352. was a HEAD request. Ignore `100 Continue' replies.
  353. * gen/wsesslog.h: Remove.
  354. * gen/wsess.c: Modify to take advantage of session manager
  355. (gen/session.c).
  356. * gen/wsesslog.c: Modify to take advantage of session manager
  357. and merge with uri_wsesslog.c.
  358. * gen/uri_wlog.c (set_uri): Use call_set_uri().
  359. * gen/uri_wset.c (set_uri): Ditto.
  360. * gen/uri_fixed.c (uri_len): New variable.
  361. (set_uri): Use call_set_uri().
  362. (init): Initialize uri_len.
  363. * gen/session.c: New file.
  364. * gen/session.h: Ditto.
  365. * gen/sess_cookie.c: New file (based on wsess.c).
  366. * gen/conn_rate.c: File renamed from sess_rate.c.
  367. * gen/call_seq.c: Modify to take advantage of reference counting.
  368. * gen/Makefile (libgen.a): Remove uri_wsesslog (it's part of
  369. wsesslog now).
  370. * gen/uri_wsesslog.c: Remove.
  371. * gen/uri_wsesslog.h: Ditto.
  372. * event.h (Event_Type): New member EV_PERF_SAMPLE for performance
  373. sampling (invoked once every 5 seconds). Rename EV_USER_NEW to
  374. EV_SESS_NEW and EV_USER_DESTROYED to EV_SESS_DESTROYED. New
  375. member EV_SESS_FAILED that is signalled when a session fails.
  376. * core.c (do_send): Remove left-over assert()ion.
  377. (do_send): Preserve io vector element that is being sent in
  378. iov_saved. Call call_dec_ref() when the connection is closing.
  379. (recv_done): Rename `c' to `call' and invoke call_dec_ref().
  380. (do_recv): Call conn_failure() only if errno != EAGAIN (for Linux).
  381. (core_send): Add `conn' argument. Fill in req.iov[IE_HOST] and
  382. req.iov[IE_PROTL] only (rest has been filled in by call_set_* macros).
  383. Call call_inc_ref() once the call is ready.
  384. (core_close): Rename `s' to `conn'. Destroy pending calls calls
  385. on the sendq and recvq by calling call_dec_ref(). Call conn_dec_ref()
  386. at the end.
  387. (core_loop): Obtain a reference to the connection object for the
  388. duration of read & write processing.
  389. * conn.h: Include <object.h>.
  390. (MAX_HDR_LINE_LEN): New macro.
  391. (struct Conn): Remove member first_owned and line_size. Replace
  392. line_buf pointer with line_buf array.
  393. (conn_init): Declare.
  394. (conn_deinit): Ditto.
  395. (conn_new): New macro.
  396. (conn_inc_ref): Ditto.
  397. (conn_dec_ref): Ditto.
  398. * conn.c: Remove include of <errno.h> and <event.h>.
  399. (conn_new): Remove.
  400. (conn_destroy): Ditto.
  401. (conn_init): New function.
  402. (conn_deinit): Ditto.
  403. * call.h: (enum HTTP_Method): Remove.
  404. Include <object.h>.
  405. (struct Call): Remove members loc_len, loc, uri_len, uri,
  406. orig_host, extra_hdrs, contents_len, contents. New member:
  407. iov_saved.
  408. (call_init): Declare.
  409. (call_deinit): Ditto.
  410. (call_new): New macro.
  411. (call_inc_ref): Ditto.
  412. (call_dec_ref): Ditto.
  413. (call_set_method): Ditto.
  414. (call_set_location): Ditto.
  415. (call_set_uri): Ditto.
  416. (call_set_contents): Ditto.
  417. * call.c (call_method_name): Remove.
  418. (free_call_list): Remove.
  419. (call_new): Remove.
  420. (call_init): New function.
  421. (call_deinit): Ditto.
  422. (call_append_request_header): Fill req.iov[IE_FIRST_HEADER +
  423. num_hdrs] instead of req.extra_hdrs[num_hdrs].
  424. * Makefile (HTTPERF): Mention object and sess.
  425. 1998-05-29 David Mosberger <davidm@hpl.hp.com>
  426. * Version 0.5 released.
  427. * core.c (core_send): Fix setup of IE_METHOD and insert blank
  428. character in IE_BLANK.
  429. * call.h (enum IOV_Element): Add IE_BLANK.
  430. 1998-05-27 David Mosberger <davidm@hpl.hp.com>
  431. * timer.c: Rename t_next to t_curr.
  432. (timer_tick): Set t_next _after_ invoking the callback. This
  433. allows the callback to cancel all other timers (except itself).
  434. (timer_cancel): Add assertion to ensure that timer_cancel() is
  435. not called from within the handler of a given timer.
  436. * httperf.h (enum Dist_Type): New type.
  437. (struct Rate_Info): Ditto.
  438. (struct Cmdline_Params): Change type of RATE member from Time to
  439. Rate_Info. New member WSESSLOG.
  440. (panic): Declare.
  441. * httperf.h (VERSION): Up version number to 0.5.
  442. * httperf.c: Include <ctype.h> and <stdarg.h>. New options:
  443. close-with-reset, period, wsesslog.
  444. (usage): Add usage message for new options.
  445. (panic): New function.
  446. (main): Declare wsesslog, uri_wsesslog, and wsesslog_stat.
  447. Initialize param.rate.dist with DETERMINISTIC. Handle --period
  448. and --wsesslog options. Fix typo: user think time is 3rd, not 4th
  449. parameter in wsess parameter list.
  450. (main): Call timer_tick() after initializating the statistic
  451. collectors and workload generators so our notion of the current
  452. time is reasonably accurate.
  453. * gen/wsess.c (req_create): Use call_append_request_header().
  454. (start): Initialize rg_sess.rate with &param.rate.
  455. * gen/uri_wsesslog.h: New file (by Dick Carter).
  456. * gen/uri_wsesslog.c: Ditto.
  457. * gen/wsesslog.h: Ditto.
  458. * gen/wsesslog.c: Ditto.
  459. * gen/uri_wlog.c: Drop inclusion of <stdarg.h>.
  460. Move panic() from here to httperf.c.
  461. * gen/sess_rate.c (start): Initialize rg.rate with &param.rate.
  462. * gen/rate.h: New member next_interarrival_time. New member
  463. xsubi. Replace PERIOD member with RATE member.
  464. (rate_generator_stop): Drop second argument (RATE).
  465. * gen/rate.c: Include <math.h>, <stdio.h>, and <stdlib.h>.
  466. (next_arrival_time_det): New function.
  467. (next_arrival_time_uniform): Ditto.
  468. (next_arrival_time_exp): Ditto.
  469. (tick): Invoke (*next_arrival_time)() to determine next delay.
  470. (rate_generator_start): Initialize rg->xsubi based on
  471. param.client.id. Initialize rg->next_interarrival_time based on
  472. desired distribution.
  473. * gen/Makefile (libgen.a): Mention wsesslog.o and uri_wsesslog.o
  474. * core.c (core_connect): Don't rely on realloc(0, SIZE) doing the
  475. right thing.
  476. (core_connect): Clear newly allocated sd_to_conn elements after
  477. allocating them.
  478. (core_send): Use call_method_name. Copy in defined
  479. c->req.extra_hdrs[i] iovecs. Copy in IE_CONTENT iovec.
  480. * call.h: New value HM_LEN.
  481. (MAX_EXTRA_HEADERS): New macro. Replace IE_HEADERS with
  482. IE_FIRST_HEADER and IE_LAST_HEADER. Make extra_hdrs an array of
  483. `struct iovec'. New member num_extra_hdrs.
  484. (call_append_request_header): Declare new function.
  485. * call.c: New array.
  486. (call_append_request_header): New function.
  487. 1998-05-26 David Mosberger <davidm@hpl.hp.com>
  488. * COPYRIGHT: Add 1998 as copyright year.
  489. * stat/basic.c (dump): If no connections have been created, print
  490. 0.0 for minimm connection lifetime. This avoids a core-dump under
  491. FreeBSD, which seems to have a problem printing IEEE infinity.
  492. 1998-05-22 David Mosberger <davidm@hpl.hp.com>
  493. * call.c (method_name): New variable.
  494. 1998-04-27 David Mosberger <davidm@hpl.hp.com>
  495. * core.c (do_recv): Ignore EAGAIN errors---Linux 2.0.32 sometimes
  496. returns EAGAIN on a read() if a previous write() resulted in
  497. EAGAIN.
  498. * AUTHORS: New file.
  499. 1998-03-24 David Mosberger <davidm@hpl.hp.com>
  500. * gen/wsess.c (call_done): Also fall back to non-persistent
  501. session if c->req.version < HTTP/1.1.
  502. 1998-03-18 David Mosberger <davidm@hpl.hp.com>
  503. * httperf.c (usage): Fix typo: --recv-buffer -> --send-buffer.
  504. * gen/wsess.c (dump): Rename "Sess" to "Session" in statistics
  505. output.
  506. * core.c (core_connect): Turn on closing with RESET only when
  507. param.close_with_reset is set.
  508. 1998-03-17 David Mosberger <davidm@hpl.hp.com>
  509. * stat/basic.c (dump): In "Total" line, rename "call" to "req".
  510. * Version 0.41 released.
  511. * core.c: Include <sys/resource.h> after <sys/types.h> to get it
  512. to compile under FreeBSD (which seems to have a broken libc).
  513. * stat/basic.c (dump): Complete renaming of "session" to "call".
  514. Rename "Call" to "Request".
  515. 1998-03-16 David Mosberger <davidm@hpl.hp.com>
  516. * Version 0.4 released.
  517. * httperf.h (VERSION): Change version number to 0.4.
  518. * httperf.c: (longopts): Add --http-version.
  519. (main): Initialize param.http_version to HTTP/1. Support parsing
  520. of --http-version option. Echo --http-version option if version
  521. other than 1.1 is selected.
  522. * httperf.h (struct Cmdline_Params): New member HTTP_VERSION.
  523. * core.c (core_send): Support generation of HTTP/1.0 requests.
  524. * Patches by Stephane Eranian:
  525. * httperf.man: Mention --wlog parameter.
  526. * Makefile (clean): Use $(MAKE) instead of make.
  527. 1998-03-12 David Mosberger <davidm@hpl.hp.com>
  528. * httperf.c: Renamed Session to Conn to avoid confusion between
  529. user sessions and TCP connections.
  530. 1998-03-02 David Mosberger <davidm@hpl.hp.com>
  531. * gen/wsess.c (user_destroy): Signal EV_USER_DESTROYED.
  532. (user_create): Signal EV_USER_NEW.
  533. (start): Register rate-generator with event EV_USER_DESTROYED
  534. instead of EV_SESSION_DESTROYED.
  535. * event.h: New events EV_USER_NEW and EV_USER_DESTROYED.
  536. * event.c: Ditto.
  537. 1998-02-27 David Mosberger <davidm@hpl.hp.com>
  538. * session.h: Remove unused first_call member.
  539. 1998-02-26 David Mosberger <davidm@hpl.hp.com>
  540. * gen/wsess.c (call_recv_hdr): Always check for Connection: and
  541. Set-Cookie: headers (not just for first call).
  542. (req_create): Modify to support bursts.
  543. (user_connect): Ditto.
  544. (sess_destroyed): Ditto.
  545. (call_destroyed): Ditto.
  546. 1998-02-25 David Mosberger <davidm@hpl.hp.com>
  547. * core.c (lffs): Fix lffs() so it returns 0 when no bits at all
  548. are set in a 64 bit long.
  549. (set_active): Set recvq timeout if timeout==0.0 (the old code failed
  550. to timeout connections that were waiting for replies).
  551. 1998-02-23 David Mosberger <davidm@hpl.hp.com>
  552. * Version 0.3 released.
  553. * timer.c (timer_now_forced): New function.
  554. * httperf.h (Cmdline_params): New member burst_len.
  555. * httperf.c: New option --burst-length. At present, only
  556. gen/call_seq.c supports this (gen/wsess does not).
  557. * gen/wsess.c (struct User): New members: found_close_hdr,
  558. conn_start, call_start, and cookie.
  559. (req_create): Insert cookie as extra header if there is one.
  560. (call_recv_hdr): New function. Looks for "Connection: close" and
  561. "Set-Cookie:" headers.
  562. * gen/call_seq.c (Sess_Private_Data): New member "num_finished".
  563. (issue_calls): Add support for --burst-len parameter.
  564. (call_destroyed): Ditto.
  565. * core.c (SYSCALL): Call timer_now_forced() instead of timer_now().
  566. (core_connect): Keep track of longest back-to-back burst.
  567. (core_connect): Set SO_LINGER option so that TCP RST is sent when
  568. closing the socket. This avoids the client melting down on
  569. HP-UX 10.20 due to a large number of TCP connections in TIME_WAIT
  570. state (HP-UX is broken as far as bind()/connect() is concerned when
  571. there are many TCP control blocks).
  572. (core_exit): Print maximum connect burst length.
  573. * core.c (max_burst_len): New variable to keep track of longest
  574. back-to-back burst generated (large bursts are usually a sign of
  575. the client being overloaded).
  576. 1998-02-13 David Mosberger <davidm@hpl.hp.com>
  577. * stat/basic.c (sess_fail): Print one unexpected error number per
  578. execution, independent of DBG.
  579. 1998-02-06 David Mosberger <davidm@hpl.hp.com>
  580. * core.c (do_send): Maintain sendq_tail & recvq_tail.
  581. (core_send): Ditto.
  582. (recv_done): Ditto.
  583. * session.h (Session): New members SENDQ_TAIL and RECVQ_TAIL.
  584. * core.c (set_active): Set watchdog timer to the minimum of the
  585. timeout of the request being sent and that being received (if such
  586. requests exist).
  587. (do_send): Set c->timeout.
  588. (core_connect): Ditto.
  589. (core_send): Ditto.
  590. * call.h: Replace (unused) WATCHDOG member with TIMEOUT.
  591. * timer.c (timer_schedule): Handle negative delays gracefully.
  592. 1998-01-28 David Mosberger <davidm@hpl.hp.com>
  593. * Version 0.2 released to SixFlags team.
  594. 1998-01-26 David Mosberger <davidm@hpl.hp.com>
  595. * gen/call_seq.c (sess_closed): New function.
  596. (init): Register sess_closed() so we notice when session closes
  597. prematurely.
  598. 1998-01-21 David Mosberger <davidm@hpl.hp.com>
  599. * httperf.c (main): Don't quit after printing version
  600. information---it's useful to run a test and have this info as
  601. well.
  602. 1998-01-14 David Mosberger <davidm@hpl.hp.com>
  603. * stat/basic.c (dump): Add num_sock_reset to total error count.
  604. 1998-01-12 David Mosberger <davidm@hpl.hp.com>
  605. * stat/basic.c (struct basic): New member num_sock_reset.
  606. (sess_fail): Increment num_sock_reset for ECONNRESET.
  607. (dump): Print num_sock_reset.
  608. * core.c (do_recv): Call session_failure() when reading < 0 bytes.
  609. * stat/basic.c (sess_fail): Print error number when getting an
  610. unexpected errno and DBG > 0.
  611. 1998-01-09 David Mosberger <davidm@hpl.hp.com>
  612. * httperf.c (main): Print only one newline (second newline is
  613. printed by stat collectors).
  614. * stat/basic.c (dump): Print session lifetime histogram first
  615. (so it goes right after the rate output).
  616. 1998-01-08 David Mosberger <davidm@hpl.hp.com>
  617. * core.c (port_get): Recode so port numbers are returned in
  618. strictly increasing order (until a wraparound after 65535 occurs).
  619. This avoids problems with NT 4.0 which disallows reusing the port
  620. pair of a properly shut down TCP connection (which creates
  621. problems when testing an NT server with clients running on HP-UX
  622. or similar platforms).
  623. 1998-01-07 David Mosberger <davidm@hpl.hp.com>
  624. * gen/sess_rate.c: Adapt to use rate.c.
  625. * timer.c (timer_schedule): Adjust "delay" if realtime has grown
  626. bigger than next_tick (meaning that "spoke" is behind).
  627. * call.c (call_destroy): prev wasn't updated in the search loop.
  628. 1998-01-06 David Mosberger <davidm@hpl.hp.com>
  629. * stat/basic.c (dump): Print minmum rate as zero if there are no
  630. rate samples.
  631. 1997-12-23 David Mosberger <davidm@hpl.hp.com>
  632. * stat/basic.c (struct basic): Add members num_reply_rates,
  633. reply_rate_sum, reply_rate_sum2, reply_rate_min, and
  634. reply_rate_max.
  635. (interval_start, num_replies): New vars.
  636. (sample_rate): New function to sample reply rate.
  637. (init): Schedule rate sampler.
  638. (dump): Print min, avg, max, and stddev of sampled reply rate.
  639. * httperf.c: Add --client and --think-timeout options.
  640. 1997-12-17 David Mosberger <davidm@hpl.hp.com>
  641. * http.c (parse_data): Return TRUE to indicate that all bytes
  642. (of present chunk) have been received (instead of setting
  643. state to S_REPLY_DONE).
  644. * httperf.h (ALIGN): Fix macro (need AND with _complement_...).
  645. * http.c (xfer_chunked): Fix typo: check for content_bytes >=
  646. content_length (not vice versa).
  647. * uri_wset.c (set_uri): Fix uri_len computation.
  648. * sess_rate.c (destroyed): Fix typo: test for param.rate <= 0 (not
  649. <0).