📄 changelog
字号:
on the sendq and recvq by calling call_dec_ref(). Call conn_dec_ref() at the end. (core_loop): Obtain a reference to the connection object for the duration of read & write processing. * conn.h: Include <object.h>. (MAX_HDR_LINE_LEN): New macro. (struct Conn): Remove member first_owned and line_size. Replace line_buf pointer with line_buf array. (conn_init): Declare. (conn_deinit): Ditto. (conn_new): New macro. (conn_inc_ref): Ditto. (conn_dec_ref): Ditto. * conn.c: Remove include of <errno.h> and <event.h>. (conn_new): Remove. (conn_destroy): Ditto. (conn_init): New function. (conn_deinit): Ditto. * call.h: (enum HTTP_Method): Remove. Include <object.h>. (struct Call): Remove members loc_len, loc, uri_len, uri, orig_host, extra_hdrs, contents_len, contents. New member: iov_saved. (call_init): Declare. (call_deinit): Ditto. (call_new): New macro. (call_inc_ref): Ditto. (call_dec_ref): Ditto. (call_set_method): Ditto. (call_set_location): Ditto. (call_set_uri): Ditto. (call_set_contents): Ditto. * call.c (call_method_name): Remove. (free_call_list): Remove. (call_new): Remove. (call_init): New function. (call_deinit): Ditto. (call_append_request_header): Fill req.iov[IE_FIRST_HEADER + num_hdrs] instead of req.extra_hdrs[num_hdrs]. * Makefile (HTTPERF): Mention object and sess.1998-05-29 David Mosberger <davidm@hpl.hp.com> * Version 0.5 released. * core.c (core_send): Fix setup of IE_METHOD and insert blank character in IE_BLANK. * call.h (enum IOV_Element): Add IE_BLANK.1998-05-27 David Mosberger <davidm@hpl.hp.com> * timer.c: Rename t_next to t_curr. (timer_tick): Set t_next _after_ invoking the callback. This allows the callback to cancel all other timers (except itself). (timer_cancel): Add assertion to ensure that timer_cancel() is not called from within the handler of a given timer. * httperf.h (enum Dist_Type): New type. (struct Rate_Info): Ditto. (struct Cmdline_Params): Change type of RATE member from Time to Rate_Info. New member WSESSLOG. (panic): Declare. * httperf.h (VERSION): Up version number to 0.5. * httperf.c: Include <ctype.h> and <stdarg.h>. New options: close-with-reset, period, wsesslog. (usage): Add usage message for new options. (panic): New function. (main): Declare wsesslog, uri_wsesslog, and wsesslog_stat. Initialize param.rate.dist with DETERMINISTIC. Handle --period and --wsesslog options. Fix typo: user think time is 3rd, not 4th parameter in wsess parameter list. (main): Call timer_tick() after initializating the statistic collectors and workload generators so our notion of the current time is reasonably accurate. * gen/wsess.c (req_create): Use call_append_request_header(). (start): Initialize rg_sess.rate with ¶m.rate. * gen/uri_wsesslog.h: New file (by Dick Carter). * gen/uri_wsesslog.c: Ditto. * gen/wsesslog.h: Ditto. * gen/wsesslog.c: Ditto. * gen/uri_wlog.c: Drop inclusion of <stdarg.h>. Move panic() from here to httperf.c. * gen/sess_rate.c (start): Initialize rg.rate with ¶m.rate. * gen/rate.h: New member next_interarrival_time. New member xsubi. Replace PERIOD member with RATE member. (rate_generator_stop): Drop second argument (RATE). * gen/rate.c: Include <math.h>, <stdio.h>, and <stdlib.h>. (next_arrival_time_det): New function. (next_arrival_time_uniform): Ditto. (next_arrival_time_exp): Ditto. (tick): Invoke (*next_arrival_time)() to determine next delay. (rate_generator_start): Initialize rg->xsubi based on param.client.id. Initialize rg->next_interarrival_time based on desired distribution. * gen/Makefile (libgen.a): Mention wsesslog.o and uri_wsesslog.o * core.c (core_connect): Don't rely on realloc(0, SIZE) doing the right thing. (core_connect): Clear newly allocated sd_to_conn elements after allocating them. (core_send): Use call_method_name. Copy in defined c->req.extra_hdrs[i] iovecs. Copy in IE_CONTENT iovec. * call.h: New value HM_LEN. (MAX_EXTRA_HEADERS): New macro. Replace IE_HEADERS with IE_FIRST_HEADER and IE_LAST_HEADER. Make extra_hdrs an array of `struct iovec'. New member num_extra_hdrs. (call_append_request_header): Declare new function. * call.c: New array. (call_append_request_header): New function.1998-05-26 David Mosberger <davidm@hpl.hp.com> * COPYRIGHT: Add 1998 as copyright year. * stat/basic.c (dump): If no connections have been created, print 0.0 for minimm connection lifetime. This avoids a core-dump under FreeBSD, which seems to have a problem printing IEEE infinity.1998-05-22 David Mosberger <davidm@hpl.hp.com> * call.c (method_name): New variable.1998-04-27 David Mosberger <davidm@hpl.hp.com> * core.c (do_recv): Ignore EAGAIN errors---Linux 2.0.32 sometimes returns EAGAIN on a read() if a previous write() resulted in EAGAIN. * AUTHORS: New file.1998-03-24 David Mosberger <davidm@hpl.hp.com> * gen/wsess.c (call_done): Also fall back to non-persistent session if c->req.version < HTTP/1.1.1998-03-18 David Mosberger <davidm@hpl.hp.com> * httperf.c (usage): Fix typo: --recv-buffer -> --send-buffer. * gen/wsess.c (dump): Rename "Sess" to "Session" in statistics output. * core.c (core_connect): Turn on closing with RESET only when param.close_with_reset is set.1998-03-17 David Mosberger <davidm@hpl.hp.com> * stat/basic.c (dump): In "Total" line, rename "call" to "req". * Version 0.41 released. * core.c: Include <sys/resource.h> after <sys/types.h> to get it to compile under FreeBSD (which seems to have a broken libc). * stat/basic.c (dump): Complete renaming of "session" to "call". Rename "Call" to "Request".1998-03-16 David Mosberger <davidm@hpl.hp.com> * Version 0.4 released. * httperf.h (VERSION): Change version number to 0.4. * httperf.c: (longopts): Add --http-version. (main): Initialize param.http_version to HTTP/1. Support parsing of --http-version option. Echo --http-version option if version other than 1.1 is selected. * httperf.h (struct Cmdline_Params): New member HTTP_VERSION. * core.c (core_send): Support generation of HTTP/1.0 requests. * Patches by Stephane Eranian: * httperf.man: Mention --wlog parameter. * Makefile (clean): Use $(MAKE) instead of make.1998-03-12 David Mosberger <davidm@hpl.hp.com> * httperf.c: Renamed Session to Conn to avoid confusion between user sessions and TCP connections.1998-03-02 David Mosberger <davidm@hpl.hp.com> * gen/wsess.c (user_destroy): Signal EV_USER_DESTROYED. (user_create): Signal EV_USER_NEW. (start): Register rate-generator with event EV_USER_DESTROYED instead of EV_SESSION_DESTROYED. * event.h: New events EV_USER_NEW and EV_USER_DESTROYED. * event.c: Ditto.1998-02-27 David Mosberger <davidm@hpl.hp.com> * session.h: Remove unused first_call member.1998-02-26 David Mosberger <davidm@hpl.hp.com> * gen/wsess.c (call_recv_hdr): Always check for Connection: and Set-Cookie: headers (not just for first call). (req_create): Modify to support bursts. (user_connect): Ditto. (sess_destroyed): Ditto. (call_destroyed): Ditto.1998-02-25 David Mosberger <davidm@hpl.hp.com> * core.c (lffs): Fix lffs() so it returns 0 when no bits at all are set in a 64 bit long. (set_active): Set recvq timeout if timeout==0.0 (the old code failed to timeout connections that were waiting for replies).1998-02-23 David Mosberger <davidm@hpl.hp.com> * Version 0.3 released. * timer.c (timer_now_forced): New function. * httperf.h (Cmdline_params): New member burst_len. * httperf.c: New option --burst-length. At present, only gen/call_seq.c supports this (gen/wsess does not). * gen/wsess.c (struct User): New members: found_close_hdr, conn_start, call_start, and cookie. (req_create): Insert cookie as extra header if there is one. (call_recv_hdr): New function. Looks for "Connection: close" and "Set-Cookie:" headers. * gen/call_seq.c (Sess_Private_Data): New member "num_finished". (issue_calls): Add support for --burst-len parameter. (call_destroyed): Ditto. * core.c (SYSCALL): Call timer_now_forced() instead of timer_now(). (core_connect): Keep track of longest back-to-back burst. (core_connect): Set SO_LINGER option so that TCP RST is sent when closing the socket. This avoids the client melting down on HP-UX 10.20 due to a large number of TCP connections in TIME_WAIT state (HP-UX is broken as far as bind()/connect() is concerned when there are many TCP control blocks). (core_exit): Print maximum connect burst length. * core.c (max_burst_len): New variable to keep track of longest back-to-back burst generated (large bursts are usually a sign of the client being overloaded).1998-02-13 David Mosberger <davidm@hpl.hp.com> * stat/basic.c (sess_fail): Print one unexpected error number per execution, independent of DBG.1998-02-06 David Mosberger <davidm@hpl.hp.com> * core.c (do_send): Maintain sendq_tail & recvq_tail. (core_send): Ditto. (recv_done): Ditto. * session.h (Session): New members SENDQ_TAIL and RECVQ_TAIL. * core.c (set_active): Set watchdog timer to the minimum of the timeout of the request being sent and that being received (if such requests exist). (do_send): Set c->timeout. (core_connect): Ditto. (core_send): Ditto. * call.h: Replace (unused) WATCHDOG member with TIMEOUT. * timer.c (timer_schedule): Handle negative delays gracefully.1998-01-28 David Mosberger <davidm@hpl.hp.com> * Version 0.2 released to SixFlags team.1998-01-26 David Mosberger <davidm@hpl.hp.com> * gen/call_seq.c (sess_closed): New function. (init): Register sess_closed() so we notice when session closes prematurely.1998-01-21 David Mosberger <davidm@hpl.hp.com> * httperf.c (main): Don't quit after printing version information---it's useful to run a test and have this info as well.1998-01-14 David Mosberger <davidm@hpl.hp.com> * stat/basic.c (dump): Add num_sock_reset to total error count.1998-01-12 David Mosberger <davidm@hpl.hp.com> * stat/basic.c (struct basic): New member num_sock_reset. (sess_fail): Increment num_sock_reset for ECONNRESET. (dump): Print num_sock_reset. * core.c (do_recv): Call session_failure() when reading < 0 bytes. * stat/basic.c (sess_fail): Print error number when getting an unexpected errno and DBG > 0.1998-01-09 David Mosberger <davidm@hpl.hp.com> * httperf.c (main): Print only one newline (second newline is printed by stat collectors). * stat/basic.c (dump): Print session lifetime histogram first (so it goes right after the rate output).1998-01-08 David Mosberger <davidm@hpl.hp.com> * core.c (port_get): Recode so port numbers are returned in strictly increasing order (until a wraparound after 65535 occurs). This avoids problems with NT 4.0 which disallows reusing the port pair of a properly shut down TCP connection (which creates problems when testing an NT server with clients running on HP-UX or similar platforms).1998-01-07 David Mosberger <davidm@hpl.hp.com> * gen/sess_rate.c: Adapt to use rate.c. * timer.c (timer_schedule): Adjust "delay" if realtime has grown bigger than next_tick (meaning that "spoke" is behind). * call.c (call_destroy): prev wasn't updated in the search loop.1998-01-06 David Mosberger <davidm@hpl.hp.com> * stat/basic.c (dump): Print minmum rate as zero if there are no rate samples.1997-12-23 David Mosberger <davidm@hpl.hp.com> * stat/basic.c (struct basic): Add members num_reply_rates, reply_rate_sum, reply_rate_sum2, reply_rate_min, and reply_rate_max. (interval_start, num_replies): New vars. (sample_rate): New function to sample reply rate. (init): Schedule rate sampler. (dump): Print min, avg, max, and stddev of sampled reply rate. * httperf.c: Add --client and --think-timeout options.1997-12-17 David Mosberger <davidm@hpl.hp.com> * http.c (parse_data): Return TRUE to indicate that all bytes (of present chunk) have been received (instead of setting state to S_REPLY_DONE). * httperf.h (ALIGN): Fix macro (need AND with _complement_...). * http.c (xfer_chunked): Fix typo: check for content_bytes >= content_length (not vice versa). * uri_wset.c (set_uri): Fix uri_len computation. * sess_rate.c (destroyed): Fix typo: test for param.rate <= 0 (not <0).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -