The httperf - HTTP load generator with post-quantum support from BoringSSL
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 

961 строка
31 KiB

  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).