forked from httperf/httperf
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
executable file
·960 lines (649 loc) · 30.6 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
2011-02-10 Ted Bullock <[email protected]>
* Replaced bundled version of getopt with flavour from openbsd
(smaller code and more liberal redistribution license)
2011-02-07 Ted Bullock <[email protected]>
* Adjusted help text
2009-12-16 Ted Bullock <[email protected]>
* Remove libevent: Remove libevent (for now) from HEAD due to stability
2008-10-03 Ted Bullock <[email protected]>
* src/timer.c: Fix build on opensolaris with Sun Studio compiler
* src/lib/heap.c: Fix build on opensolaris with Sun Studio compiler
2008-07-14 Adrian Chadd <[email protected]>
* Assorted .c and .h files: Use libevent for the communications backend
2008-04-11 Ted Bullock <[email protected]>
* configure.ac, src/Makefile.am: Make automake compilation optional,
use --enable-idleconn. This will require libevent.
2008-01-31 Ted Bullock <[email protected]>
* src/idleconn.c: Complete rewrite to use libevent backend; slight
performance improvement thanks to use of libevent notification system
2007-11-16 Ted Bullock <[email protected]>
* configure.ac: Enable libevent dependancy
* src/httperf.c: Print libevent version event notification mechanism
2007-11-15 Ted Bullock <[email protected]>
* autogen.sh: Remove in lieu of autoreconf -i
2007-09-23 Ted Bullock <[email protected]>
* httperf.c: Add a check to return value of timer_schedule
* timer.c: Fix a crash associated with rescheduling a timer
* lib/list.c: NEW Generic linked list data structure implementation
* lib/list.h: NEW Generic linked list data structure API
2007-09-18 Ted Bullock <[email protected]>
* timer.c: Remove the last of the old timer logic code and replace it
with simpler functionality
2007-09-11 Ted Bullock <[email protected]>
* timer.c and timer.h: Use new heap and queue data
structures to re-implement timers to use memory caching and
try to fix memory leak associated with timers not being freed
2007-09-11 Ted Bullock <[email protected]>
* lib/heap.c, lib/heap.h: New generic priority queue data structure
2007-07-15 Ted Bullock <[email protected]>
* lib/queue.c, lib/queue.h: New generic queue data structure
2007-07-15 Ted Bullock <[email protected]>
* lib/generic_types.h: New File - Migrate various generic types
out of httperf.h in preparation for a generic queue data structure
* httperf.h: Removed unneccessary #include commands to minimize
header inclusion blocks and duplicates
* *.c: Added #include statements to use new generic_types.h
2007-07-15 Ted Bullock <[email protected]>
* timer.c, timer.h, httperf.c: Fixed memory leak associated with timers not being
freed
2007-06-03 Ted Bullock <[email protected]>
* event.c and event.h: Moved to localevent.c and localevent.h for integration with
libevent (which has a default header of event.h)
2007-06-03 Ted Bullock <[email protected]>
* configure.ac: Add configuration to use libevent
2007-06-03 Ted Bullock <[email protected]>
* configure.ac: Remove unnecessary configuration cruft and configure httperf
to be built in c99 mode
2007-05-27 Ted Bullock <[email protected]>
* man/httperf.1: Fixed man page typo for --wset option (needed --uri, not --wset)
2007-05-27 Andrew Hateley <[email protected]>
* man/httperf.1: New documentation regarding the variable periodic rates
* src/httperf.c: New functionality for variable periodic rates
* src/httperf.h: ditto
* src/timer.c: ditto
2007-03-31 Ted Bullock <[email protected]>
* *.c and *.h: Adjusted license to explicitly list HP copyright as
Copyright 2000-2007 Hewlett-Packard Company
2007-02-07 Ted Bullock <[email protected]>
* AUTHORS: wsseslog crash fix was actually written by David Mosberger
2007-02-07 Ted Bullock <[email protected]>
* AUTHORS: Removed Durval Menezes from AUTHORS file since his fix
has been re-written by Theodore Bullock
2007-02-07 Ted Bullock <[email protected]>
* *.c and *.h: Slightly adjusted license to explicitly point out AUTHORS file
as official list of authors
2007-02-07 Ted Bullock <[email protected]>
* httperf.1: Added correction to man page to include a missing
--wsess identification
2007-01-26 Ted Bullock <[email protected]>
* getopt.c and getopt1.c: Re-Added the to the build process
httperf now compiles on Linux, OpenBSD, FreeBSD, Solaris, HP-UX 11i
with cc and gcc and (with cc and gcc)
2007-01-26 Ted Bullock <[email protected]>
* Makefile.am: Revised Makefile.am for src directories to explicitly include the
.h files to allow make distcheck to pass
2007-01-26 Ted Bullock <[email protected]>
* getopt.c and getopt1.c: Removed from build process
* httperf.c: Wrapped call to getopt.h in pre-processor checks
2007-01-25 Ted Bullock <[email protected]>
* wsesslog.c: changed a sprintf call to the more secure snprintf
* getopt.c: changed a sprintf call to the more secure snprintf
2007-01-20 Ted Bullock <[email protected]>
* autogen.sh: Included the shell script autogen.sh to compile the necessary
autotool components.
* autogen.sh: Removed redundant configuration files from CVS, regenerate these
with the autogen.sh script (recommend autoconf 2.60 and above)
* ttest.c: Removed the ttest.c file from CVS
2007-01-16 Ted Bullock <[email protected]>
* Build System: Updated build system to a more typical directory
layout and wrote missing makefile.am files for automake
* idleconn: Now installed along with the httperf executable
* ttest: Remove program from build
2007-01-02 Ted Bullock <[email protected]>
*License: Included openssl linking exception
2006-12-08 Ted Bullock <[email protected]>
* Bug Fixes: Added a number of fixes from the mailing lists
over the last 6 years.
* compiler warnings: Compiler warnings in core.c and wsesslog.c
* configuration: Fixes a problem with the "configure" setup
where the "--prefix=" option wasn't being obeyed
* zero length: Fixes bug in http.c (parse_header)with zero
length content
* Host Header: Identify machine by FQD rather than hostname
* Persistent Connections: Added Persistent connections to HTTP 1.0
requests
* Robust alloca.h: Robust way to handle the header file that
defines the alloca function <alloca.h> for linux and stdlib.h for
BSD and others
* Time Discrepancy: Fixed a discrepancy between the data produced
by httperf and the documentation in regards to timing.
* wsesslog Crash: Fixed a problem with the wsesslog crashing
httperf due to an unhandled session failure from a burdened server
2000-10-31 David Mosberger <[email protected]>
* Version 0.8 released.
* core.c (do_recv) [!HAVE_SSL]: Avoid referncing param.use_ssl.
(do_send): Ditto.
* core.c (core_ssl_connect): Print error message if SSL connect
fails. ERR_print_errors_fp() may not print anything if there
error is due to, e.g., trying to connect to a non-existent port.
* httperf.c (main): Initialize port to -1. Once parameters have
been processed, port defaults to 443 if SSL is in use, 80
otherwise.
2000-10-30 David Mosberger <[email protected]>
* httperf.man: Update man-page with new options (based on Martin's
descriptions.
* httperf.c (usage): Mention --port.
2000-10-27 David Mosberger <[email protected]>
* httperf.man: Mention request summary in description of
--print-request.
* stat/print_reply.c (print_request): Print request header/content
summary line.
* httperf.c (usage): Bring in sync with implemented options
(Martin's patch).
(longopts): Order in alphabetical order (Martin's patch).
2000-10-25 David Mosberger <[email protected]>
* stat/print_reply.c (flush_print_buf): New.
(Call_Private_Data): New.
(CALL_PRIVATE_DATA): New.
(call_private_data_offset): New.
(print_buf): Rewrite to support line-buffering and new output
format.
(call_destroyed): New.
(print_reply_hdr): New (based on Martin's original version).
(send_raw_data): Ditto.
(recv_raw_data): Ditto.
(recv_stop): Print reply summary (based on Martin's version).
(init): Update to support the new print options.
* httperf.c: Replace --print-replies/--print-request with more
general versions of these options.
* httperf.man: Add info on new --print-reply and --print-request
options.
2000-10-24 David Mosberger <[email protected]>
* httperf.c (main): Initialize ssl_ctx.
(main): Use SSLv3_client_method() instead of SSLv23_client_method().
The latter doesn't work.
* httperf.h (ssl_ctx): New global variable.
* conn.h [HAVE_SSL]: Drop unnecessary includes of <openssl/rsa.h>,
<openssl/crypto.h>, <openssl/x509.h>, and <openssl/pem.h>. Drop
per-connect "ctx" member (it's global now).
* conn.c (conn_init): Create SSL connection info and set cipher
list (if necessary).
* core.c (core_ssl_connect): Don't create SSL connection info
here (done in conn.c now). Always tell SSL about the
file descriptor of the socket.
* sess.c (sess_deinit) [HAVE_SSL]: Free SSL info if it exists.
* gen/session.c (create_conn): If param.ssl_reuse is in effect,
re-use SSL session if we have one or update session info with
newly created SSL session.
* httperf.c [HAVE_SSL]: Include <openssl/rand.h>.
(main): Call RAND_seed() with a zero buffer.
2000-10-23 David Mosberger <[email protected]>
* conn.c (conn_init): Don't initialize conn->ssl to zero---that
has been done by object_new() already.
* gen/session.c (create_conn): If reusing SSL session ids, create
SSL structure and save SSL info in session structure.
* sess.c (sess_deinit) [HAVE_SSL]: Free SSL session if it's
non-NULL.
* httperf.h: Declare "use_ssl" only if HAVE_SSL is defined.
Add ssl_no_reuse and ssl_cipher_list.
* httperf.c (struct longopts): Add --ssl-no-reuse and ssl-ciphers.
(main): Handle --ssl-cipher_list and --ssl-no-reuse options.
2000-10-19 David Mosberger <[email protected]>
* core.c (core_ssl_connect): Bring debug messages in sync with
rest of httperf. If s->ssl exists already, skip right to
SSL_connect(). If SSL_connect() returns SSL_ERROR_WANT_READ or
SSL_ERROR_WANT_WRITE, mark the appropriate fd set as active and
return immediately to wait for more data. Use
ERR_print_errors_fp() to print SSL-related errors.
(core_loop): Check for S_CONNECTING state before doing anything
else.
* README: Document configuration option "--enable-debug".
* configure.in: Add support for --enable-debug.
2000-10-16 David Mosberger <[email protected]>
* configure.in: Add AC_TYPE_LONG_LONG check (defines u_wide as
"unsigned long long" if the compiler can grok it, "unsigned long"
otherwise).
* aclocal.m4: New file.
* stat/basic.c: Include "config.h".
(struct basic): Change type of hdr_bytes_received,
reply_bytes_received, and footer_bytes_received from
size_t to u_wide.
(dump): Change type of total_size to u_wide.
2000-10-11 David Mosberger <[email protected]>
* httperf.h (VERSION): Change to 0.8beta.
* configure.in: New file.
* Makefile.in: Ditto.
* stat/Makefile.in: Ditto.
* gen/Makefile.in: Ditto.
* lib/Makefile.in: Ditto.
2000-08-29 David Mosberger <[email protected]>
* httperf.c (main): Call core_exit() on a SIGINT.
2000-08-21 David Mosberger <[email protected]>
* core.c (core_init): Bound maximum number of open files to
FD_SETSIZE.
2000-04-25 David Mosberger <[email protected]>
* httperf.c (main): Add a call to fpsetmask(0) to get non-finite
IEEE arithmetic to work on older versions of FreeBSD.
1998-12-21 David Mosberger <[email protected]>
* Version 0.7 released.
* Makefile (install): New make target.
* httperf.h (VERSION): Define as "0.7".
* gen/wsesslog.c (parse_config): Remove blank in sscanf() format
since this caused problems on FreeBSD and NetBSD. This bug was
reported by Stephane Eranian.
1998-12-08 David Mosberger <[email protected]>
* httperf.c (struct longopts): Add option "method".
(usage): Document option --method.
(main): Handle --method.
* httperf.h (struct Cmdline_Params): New member "method".
* gen/misc.c: Renamed from add_header.c. This file now implements
both --add-header and --method.
1998-11-23 David Mosberger <[email protected]>
* httperf.c (longopts): New option "add-header".
(main): Handle --add-header.
* httperf.h (struct Cmdline_Params): New member
"additional_header".
* gen/add_header.c: New file.
1998-09-18 David Mosberger <[email protected]>
* gen/session.c (call_done):
(conn_failed): Call create_conn() instead of sess_failure() in
case param.retry_on_failure is set and the connection has not been
successful (received at least one good response)
* gen/wsess.c (call_destroyed): Call sess_dec_ref() only if
session didn't fail.
1998-09-14 David Mosberger <[email protected]>
* README: Replace "session" with "connection" and "call" with
"request" to reflect current terminology (reported by Christian
Petit). Also fixed various other typos and grammatical problems.
1998-09-11 David Mosberger <[email protected]>
* gen/session.c (call_done): When param.retry_on_failure is set,
re-issue call instead of causing session to fail.
* httperf.c (usage): Add --retry-on-failure option.
(struct longopts): Ditto.
* httperf.man: Document --retry-on-failure option.
1998-07-23 David Mosberger <[email protected]>
* stat/sess_stat.c: Use sess->failed instead of maintaining
private session-failure flag.
1998-07-21 David Mosberger <[email protected]>
* sess.c (sess_failure): Don't signal EV_SESS_FAILED more than
once per session.
* core.c (do_send): Clear c->recvq_next. This is necessary now
because the same call may be issued multiple times (due to
connection failures). Hence there is no longer a guarantee that
c->recvq_next has been cleared by object_new().
(do_send): Rename s to conn and c to call.
1998-07-20 David Mosberger-Tang <[email protected]>
* core.c (do_recv): Set s->state to S_REPLY_DONE when done with an
HTTP/1.0 response (mirrors code in http_process_reply_bytes()).
(do_recv): No need to check for nread == 0.
* stat/basic.c (init): Print basic.conn_lifetime_min only if
basic.num_lifetimes > 0.
* core.c (core_close): Fix typo (call -> all).
1998-07-08 David Mosberger <[email protected]>
* core.c (do_send): Set s->state to S_REPLY_STATUS only if this is
the first send---we don't want to interfere with the parsing of an
in-progress reply.
1998-06-19 David Mosberger <[email protected]>
* Version 0.6 released.
* gen/wsesslog.c (issue_calls): Limit `to_create' by the number
of calls that the session can queue.
* gen/session.c (session_max_qlen): New function.
(session_current_qlen): Ditto.
(max_qlen): New variable.
* httperf.man: Fix typos.
1998-06-18 David Mosberger <[email protected]>
* gen/session.c (MAX_CONN): Up MAX_CONN to 16.
* object.c (object_new): panic() instead of assert(0) when
encountering an unknown object type.
* gen/wsesslog.c (user_think_time_expired): Remove stale comment.
* gen/sess_cookie.c (struct Call_Private_Data): New member cookie.
(call_recv_hdr): Remove padding bogosity.
(call_issue): Copy cookie from session to call object.
1998-06-17 David Mosberger <[email protected]>
* timer.c (timer_cancel): Instead of an assertion failure, print a
message on stderr when timer_cancel(t) is called from within a
timeout handler t.
* Feedback from Dick Carter:
* gen/wsesslog.c (parse_config): Remove stale comment.
* httperf.h: Fix typo in comment for min_iat.
* httperf.c (usage): Fix typo in --period args.
* call.c (call_append_request_header): Fix typo in debug message.
1998-06-09 David Mosberger <[email protected]>
* stat/print_reply.c: New file.
* stat/sess_stat.c: Ditto.
* stat/wsess_stat.c: Remove.
* stat/basic.c: Move stats macros into stats.h.
(RATE_INTERVAL): Remove.
(interval_start): Ditto.
(perf_sample): Rename from sample_rate().
(conn_fail): Count EPIPE as a `connection reset' error.
(init): Register perf_sample as handler for EV_PERF_SAMPLE.
Remove scheduling of performance sampling timer.
(dump): Print connection lifetime histogram only if verbose > 1.
Print average connection length in number of replies/connection.
* stat/stats.h: New file.
* stat/basic.c: Add copyright message.
* stat/Makefile (libstat.a): Mention sess_stat.o and
print_reply.o.
* object.c: New file.
* object.h: Ditto.
* sess.c: Ditto.
* sess.h: Ditto.
* httperf.h (VERSION): Up version number to 0.6.
(object_is_conn): Remove (now in object.h).
(object_is_call): Ditto.
(enum Object_Type): Ditto.
(struct Object): Ditto.
(object_type_size): Ditto.
(struct Cmdline_Params): New mebers max_piped, max_conns,
print_replies, and session_cookies.
* httperf.c (perf_sample_start): New variable to keep track of
when latest sample interval started.
(struct longopts): Add entries for max-connections,
max-piped-calls, print-replies, and session-cookies.
(usage): Update usage() message.
(perf_sample): New function.
(main): Remove uri_wsesslog generator. Add sess_stat stats
collector. Handle --max-connections, --max-piped, --print-replies
and --session-cookies. Start performance sampling timer.
* http.c (get_line): Use sizeof (s->line_buf) instead of
s->line_buf_size.
(parse_status_line): Do strcmp() to find out whether call
was a HEAD request. Ignore `100 Continue' replies.
* gen/wsesslog.h: Remove.
* gen/wsess.c: Modify to take advantage of session manager
(gen/session.c).
* gen/wsesslog.c: Modify to take advantage of session manager
and merge with uri_wsesslog.c.
* gen/uri_wlog.c (set_uri): Use call_set_uri().
* gen/uri_wset.c (set_uri): Ditto.
* gen/uri_fixed.c (uri_len): New variable.
(set_uri): Use call_set_uri().
(init): Initialize uri_len.
* gen/session.c: New file.
* gen/session.h: Ditto.
* gen/sess_cookie.c: New file (based on wsess.c).
* gen/conn_rate.c: File renamed from sess_rate.c.
* gen/call_seq.c: Modify to take advantage of reference counting.
* gen/Makefile (libgen.a): Remove uri_wsesslog (it's part of
wsesslog now).
* gen/uri_wsesslog.c: Remove.
* gen/uri_wsesslog.h: Ditto.
* event.h (Event_Type): New member EV_PERF_SAMPLE for performance
sampling (invoked once every 5 seconds). Rename EV_USER_NEW to
EV_SESS_NEW and EV_USER_DESTROYED to EV_SESS_DESTROYED. New
member EV_SESS_FAILED that is signalled when a session fails.
* core.c (do_send): Remove left-over assert()ion.
(do_send): Preserve io vector element that is being sent in
iov_saved. Call call_dec_ref() when the connection is closing.
(recv_done): Rename `c' to `call' and invoke call_dec_ref().
(do_recv): Call conn_failure() only if errno != EAGAIN (for Linux).
(core_send): Add `conn' argument. Fill in req.iov[IE_HOST] and
req.iov[IE_PROTL] only (rest has been filled in by call_set_* macros).
Call call_inc_ref() once the call is ready.
(core_close): Rename `s' to `conn'. Destroy pending calls calls
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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* call.c (method_name): New variable.
1998-04-27 David Mosberger <[email protected]>
* 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 <[email protected]>
* gen/wsess.c (call_done): Also fall back to non-persistent
session if c->req.version < HTTP/1.1.
1998-03-18 David Mosberger <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* httperf.c: Renamed Session to Conn to avoid confusion between
user sessions and TCP connections.
1998-03-02 David Mosberger <[email protected]>
* 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 <[email protected]>
* session.h: Remove unused first_call member.
1998-02-26 David Mosberger <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* stat/basic.c (sess_fail): Print one unexpected error number per
execution, independent of DBG.
1998-02-06 David Mosberger <[email protected]>
* 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 <[email protected]>
* Version 0.2 released to SixFlags team.
1998-01-26 David Mosberger <[email protected]>
* gen/call_seq.c (sess_closed): New function.
(init): Register sess_closed() so we notice when session closes
prematurely.
1998-01-21 David Mosberger <[email protected]>
* 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 <[email protected]>
* stat/basic.c (dump): Add num_sock_reset to total error count.
1998-01-12 David Mosberger <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* stat/basic.c (dump): Print minmum rate as zero if there are no
rate samples.
1997-12-23 David Mosberger <[email protected]>
* 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 <[email protected]>
* 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).