test/regress.c


Log

Author Commit Date CI Message
Nick Mathewson d84d8385 2009-11-27T15:24:32 Fix two use-after-free bugs in unit tests spoted by lock debugging
Nick Mathewson 9bf124bf 2009-11-18T21:16:47 Build correctly with mm replacement turned off. svn:r1547
Nick Mathewson b2fe4aed 2009-11-09T18:36:34 Unit tests for got_break and got_exit. svn:r1521
Nick Mathewson 693c24ef 2009-11-09T17:16:30 Implement queued timeouts for case where many timeouts are the same. Libevent's current timeout code is relatively optimized for the randomly scattered timeout case, where events are added with their timeouts in no particular order. We add and remove timeouts with O(lg n) behavior. Frequently, however, an application will want to have many timeouts of the same value. For example, we might have 1000 bufferevents, each with a 2 second timeout on reading or writing. If we knew this were always the case, we could just put timeouts in a queue and get O(1) add and remove behavior. Of course, a queue would give O(n) performance for a scattered timeout pattern, so we don't want to just switch the implementation. This patch gives the user the ability to explicitly tag certain timeout values as being "very common". These timeout values have a cookie encoded in the high bits of their tv_usec field to indicate which queue they belong on. The queues themselves are each triggered by an entry in the minheap. See the regress_main.c code for an example use. svn:r1517
Nick Mathewson 784b8773 2009-11-06T21:46:57 We do not work any more without an event-config.h; stop pretending that it is meaningful to check for HAVE_CONFIG_H svn:r1516
Nick Mathewson 0fd0255f 2009-11-03T19:54:56 Remove compat/sys/_time.h I've gone through everything that it declared to see where it was used, and it seems that we probably don't need it anywhere. Here's what it declared, and why I think we're okay dropping it. o struct timeval {} (Used all over, and we can't really get away with declaring it ourselves; we need the same definition the system uses. If we can't find struct timeval, we're pretty much sunk.) o struct timespec {} (Used in event.c, evdns.c, kqueue.c, evport.c. Of these, kqueue.c and event.c include sys/_time.h. event.c conditions its use on _EVENT_HAVE_CLOCK_GETTIME, and kqueue() only works if timespec is defined.) o TIMEVAL_TO_TIMESPEC (Used in kqueue.c, but every place with kqueue has sys/time.h) o struct timezone {} (event2/util.h has a forward declaration; only evutil.c references it and doesn't look at its contents.) o timerclear, timerisset, timercmp, timeradd, timersub (Everything now uses the evutil_timer* variants.) o ITIMER_REAL, ITIMER_VIRTUAL, ITIMER_PROF, struct itemerval (These are only used in test/regress.c, which does not include _time.h) o CLOCK_REALTIME (Only used in evdns.c, which does not include _time.h) o TIMESPEC_TO_TIMEVAL o DST_* o timespecclear, timespecisset, timespeccmp, timespecadd, timespecsub o struct clockinfo {} o CLOCK_VIRTUAL, CLOCK_PROF o TIMER_RELTIME, TIMER_ABSTIME (unused) svn:r1494
Nick Mathewson 96c6956e 2009-10-30T22:43:30 Add a "many events" regression test. This is a glass-box test to get more coverage on the event loop backends. We've run into bugs here before with fencepost errors, and it turns out that none of our unit tests had enough events to exercise the resize code. Most of the backends have some kind of logic that resizes an array when: - The highest fd is too high - The number of events added since the last iteration of the loop is too high - The number of active events is too high. This test hits all 3 cases, and increases coverage in select.c by 7%, in poll by 1%, and in kqueue by 9%. svn:r1482
Nick Mathewson 5b3fb5bf 2009-10-29T16:35:20 More documentation and unit tests for event_tagging. svn:r1476
Nick Mathewson 904b5721 2009-10-27T06:47:25 Avoid calling exit() during event_base_new*() Previously, each of the three make-an-event-base functions would exit under different, weird circumstances, but return NULL on others. - All three would exit on OOM sometimes. - event_base_new() and event_init() would die if all backends were disabled. - None of them would die if the socketpair() call failed. Now, only event_init() exits on failure, and it exits on every kind of failure. event_base_new() and event_base_new_with_config() never do. svn:r1472
Nick Mathewson e9ee1057 2009-10-27T04:25:45 Give event_assign a return value, and make it less inclined to exit(). We also refactor event_assign so that it is the core function, and event_set() is only the wrapper. svn:r1469
Nick Mathewson ba8a1771 2009-10-02T03:03:58 Do not notify the main thread more than needed. Basically, we suppress the notification when an event is added or deleted and: - The event has no fd, or there is no change in whether we are reading/writing on the event's fd. - The event has no timeout, or adding the event did not make the earliest timeout become earlier. This should be a big efficiency win in applications with multiple threads and lots of timeouts. svn:r1439
Nick Mathewson 8cc68835 2009-07-25T03:35:32 Fix the main/methods unit test to pass from "make verify". The problem was introduced when we changed the semantics of get_supported_methods() to reflect all the methods that exist. Previously, it had not returned methods disabled from the environment, but the test didn't know that. svn:r1379
Nick Mathewson 49de08ef 2009-07-21T19:20:44 Push coverage of event.c a little higher svn:r1373
Nick Mathewson f4775918 2009-07-20T14:55:51 Refactor evtag tests into their own suite. svn:r1366
Nick Mathewson e8400a43 2009-07-20T14:55:35 Rename encode_int(64) to avoid polluting the global namespace. They're now called evtag_encode_int(64). The old names are available as macros in event2/tag_compat.h. Also, add unit tests for encode/decode_int64. svn:r1365
Nick Mathewson 5d71b25b 2009-07-17T18:38:38 Remove all trailing whitespace from end-of-line. svn:r1350
Nick Mathewson d4e3671f 2009-07-17T18:38:21 Add a test to free_active_base to free a base with an active event. svn:r1349
Nick Mathewson e224321c 2009-07-14T18:49:42 Convert and expand free_active_base/event_base_new tests to avoid dbl-free. Patch from Zack Weinberg svn:r1342
Nick Mathewson b45cead7 2009-04-30T18:05:33 Make environment-variable tests work on win32, which has only one method and lacks (un)setenv. svn:r1253
Nick Mathewson 586aa468 2009-04-28T19:08:27 Unit test for disabling events with EVENT_NO*, and for EVENT_BASE_FLAG_IGNORE_ENV. svn:r1247
Nick Mathewson d70b0804 2009-04-23T18:08:42 Make main/methods test pass on systems where only one backend exists. svn:r1235
Nick Mathewson 0068c98a 2009-04-23T00:01:14 Make version test ignore the bottom byte of the version number. svn:r1225
Nick Mathewson b21be245 2009-04-23T00:00:55 Somehow free_active_base was using the socketpair, but not saying it needed it. How did this ever work? svn:r1223
Nick Mathewson 1f9c9e51 2009-04-22T15:38:50 Add a missing "static". svn:r1219
Nick Mathewson 133a015d 2009-04-21T18:48:05 Make sure the test case for mem_functions hits strdup too. svn:r1218
Nick Mathewson 7f1855d0 2009-04-21T18:47:35 Add a basic test for set_mem_functions svn:r1216
Nick Mathewson 386279d0 2009-04-21T18:47:02 Add a test for event_pending; especially the timeout part. svn:r1214
Nick Mathewson ff1f4295 2009-04-21T18:46:43 Unit tests for event_base_once. svn:r1213
Nick Mathewson ea664bf2 2009-04-21T18:46:30 Refactor test wrappers to divide legacy items from useful stuff. svn:r1212
Nick Mathewson 122e934e 2009-04-21T18:46:11 Add unit tests for version methods and feature-based backend selection svn:r1211
Nick Mathewson 7cf8a7b0 2009-04-21T18:45:59 Call the main testcases "main", not "legacy". svn:r1210
Nick Mathewson a8f6d961 2009-04-17T06:56:09 Actually stop using EVBUFFER_LENGTH/DATA, and move them to buffer_compat.h svn:r1183
Nick Mathewson 68d0139f 2009-04-07T04:49:25 Refactor the zlib and pthreads tests to appear in the regular tinytest tree structure. svn:r1141
Nick Mathewson 71604d85 2009-02-10T19:38:25 Remove some needless includes svn:r1104
Nick Mathewson f9e4e0f9 2009-02-03T18:28:53 Move bufferevent tests to regress_bufferevent.c file. svn:r1101
Nick Mathewson ea4b8724 2009-02-02T19:22:13 checkpoint work on big bufferevent refactoring svn:r1095
Nick Mathewson a30c9eb1 2009-02-01T01:07:12 Move evbuffer tests into their own file. svn:r1087
Nick Mathewson 12e8db5b 2009-01-31T18:36:47 Convert evtag test. svn:r1085
Nick Mathewson 5831d11a 2009-01-31T18:36:37 Move rpc_test to regress_rpc. svn:r1084
Nick Mathewson fa6ae169 2009-01-31T18:36:24 Convert RPC suite. There are still some places it can exit(1), but those always run forked, so no big deal. svn:r1083
Nick Mathewson eac75f91 2009-01-31T07:32:14 Port DNS tests. svn:r1081
Nick Mathewson 153093ec 2009-01-30T17:44:13 Port the HTTP unit tests. Most are still legacy (since they use test_ok so much), but at least they no longer exit(1) on failure svn:r1076
Nick Mathewson 241690b2 2009-01-30T17:43:59 Move util tests to regress_util.c svn:r1075
Nick Mathewson 4e9470b4 2009-01-30T17:43:48 Convert test_evutil_strtoll to new framework. svn:r1074
Nick Mathewson a8203b34 2009-01-29T23:19:57 Refactor unit tests using my spiffy new "tinytest" framework. The big win here is that we can get process-level isolation. This has been tested to work okay on at least Linux and Win32. Only the tests in regress.c have been converted wrapped in the new wrapper functions; the others are still on the old system. svn:r1073
Nick Mathewson cc7a53c1 2009-01-29T18:15:36 fix signed/unsigned warning in unit tests. can we just use "char*" on all new APIs? this void/unsigned char*/char* business is awful. svn:r1071
Nick Mathewson 7dd362b1 2009-01-29T15:09:24 Have util-internal.h define socklen_t if we need it, and include it appropriately. This fixes win32 compilation. svn:r1070
Niels Provos 66b2a7ff 2009-01-29T03:20:40 test evbuffer_add_reference svn:r1068
Nick Mathewson b85b710c 2009-01-27T22:34:36 Update copyright statements to reflect the facts that: a) this is 2009 b) niels and nick have been comaintainers for a while c) saying "all rights reserved" when you then go on to explicitly disclaim some rights is sheer cargo-cultism. svn:r1065
Nick Mathewson 8889a770 2009-01-27T22:30:46 Replace all use of config.h with event-config.h. svn:r1064
Nick Mathewson 9993137c 2009-01-27T21:10:31 Remove all trailing whitespace in all the source files. svn:r1063
Niels Provos 30653899 2009-01-27T16:35:28 make it so that test_persistent_timeout can call loopexit only once; reported by Alexander Drozdov svn:r1062
Nick Mathewson f20902a2 2009-01-22T17:56:15 Remove evperiodic_assign and its related parts: its functionality is subsumed by EV_PERSIST timeouts. svn:r1040
Nick Mathewson dc1526e0 2009-01-22T17:48:16 Fix warnings on compile: make static functions static. svn:r1037
Niels Provos fe72c885 2009-01-22T06:23:14 fix signal processing for non-kqueue backends; when a signal callback delivers a signal; from Alexander Drozdov svn:r1035
Niels Provos a077fb8c 2009-01-22T02:47:35 rename sys/signal.h to signal.h; configure m4 macro dir; this assist with compilation on Haiku svn:r1033
Niels Provos 56ea4687 2009-01-22T02:33:38 Change the semantics of timeouts in conjunction with EV_PERSIST; timeouts in that case will now repeat until deleted. svn:r1032
Nick Mathewson 169321c9 2009-01-13T20:26:37 Rename four internal headers to follow the -internal.h convention. svn:r1000
Nick Mathewson 0d9d5cfe 2009-01-02T20:46:12 New functions in evutil to clone inet_pton and inet_ntop, with tests. Adapted from Tor code. svn:r983
Niels Provos eed23451 2008-12-25T16:20:45 forgot to re-enable dns tests svn:r978
Niels Provos d776f846 2008-12-23T22:23:37 deprecate the usage of signal_{add,del,set} and name it evsignal_{add,del,set} instead; move the old definitions to compat svn:r973
Niels Provos 02b2b4d1 2008-12-23T16:37:01 Restructure the event backends so that they do not need to keep track of events themselves, as a side effect multiple events can use the same fd or signal. svn:r972
Niels Provos ebcf5efc 2008-12-19T22:42:51 fix memory leaks in the regression tools; add another close detection test that validates that there are no dangling connections on the server svn:r969
Niels Provos 3b24f4ee 2008-07-25T00:48:30 another fix; we also need to remove the signal event from the queue svn:r918
Niels Provos a4e2f52a 2008-07-20T23:31:28 add a signal and free the base for reinit test svn:r915
Niels Provos f7e61870 2008-07-11T15:49:04 support multiple events listening on the same signal; make signals regular events that go on the same event queue svn:r901
Niels Provos 5512be01 2008-07-11T15:15:04 fix a bug where deleting signals with kqueue would delete subsequent adds svn:r899
Niels Provos 2f8708db 2008-06-24T18:04:41 ifdef out a whole bunch of sections; gettimeofday to evutil_gettimeofday svn:r862
Niels Provos 99a1063e 2008-06-21T02:21:25 support 64-bit integers in rpc structs svn:r856
Niels Provos 9586a1cb 2008-06-01T16:21:24 fix an evbuffer corruption when adding an empty evbuffer; from Scott Lamb svn:r845
Nick Mathewson 39400e68 2008-05-30T16:56:34 Patch from Valery Kholodkov: support for edge-triggered events with epoll and kqueue. Changed from original patch: made test into a regression test, with explicit success/failure for edge-triggered and non-edge-triggered cases. Closes SF request 1968284. svn:r840
Niels Provos 2deb3ce0 2008-05-29T01:39:43 simplify handling of environment variables for disabling backends; make event_get_supported_methods obey environment variables; this fixes make verify; problem reported by Scott Lamb. svn:r838
Niels Provos 134344b7 2008-05-16T01:55:40 Fix use of freed memory in event_reinit; pointed out by Peter Postma svn:r834
Nick Mathewson 7be8f13b 2008-05-14T15:56:17 r19736@catbus: nickm | 2008-05-14 11:50:49 -0400 Add casts to make some printf formats in regress.c happier. svn:r821
Nick Mathewson 0cafdeb6 2008-05-12T17:16:47 Tweaks to make unit tests fail less badly on mingw on trunk. svn:r814
Nick Mathewson c6da86ff 2008-05-12T16:44:24 r19709@catbus: nickm | 2008-05-12 12:42:48 -0400 Possible fix for [1960723] snprintf and vsnprintf return values are wrong on win32 svn:r813
Nick Mathewson 8acb80b4 2008-05-08T22:51:39 r15551@tombo: nickm | 2008-05-08 14:49:20 -0400 Use _get_ convention for new accessor functions. (These are all new ones as of 2.0, I believe). svn:r799
Niels Provos 3f56e364 2008-05-08T05:56:20 event_base_new_with_config() and related methods svn:r789
Niels Provos 3b2022ef 2008-05-08T05:33:15 provide an api for retrieving the supported event mechanisms svn:r788
Nick Mathewson caa368e1 2008-05-05T19:19:47 r19610@catbus: nickm | 2008-05-05 15:18:52 -0400 Switch strcmp() tests in test_evbuffer() to use memcmp instead. Previously they broke on my Linux box. svn:r779
Nick Mathewson 4e8a339e 2008-05-05T15:46:00 r19602@catbus: nickm | 2008-05-05 11:45:18 -0400 Make most of the tests use the new headers. svn:r776
Niels Provos 1d30750b 2008-05-03T22:10:09 support for periodic timeouts svn:r762
Niels Provos f04497e4 2008-05-03T03:05:28 introduce evbuffer_reserve_space() and evbuffer_commit_space() to make processing in filters more efficient svn:r757
Niels Provos ccb70f1b 2008-04-30T04:31:10 provide example bufferevent filters doing compression and decompression as additional regression test svn:r751
Niels Provos c58a01a2 2008-04-30T00:50:20 fix regression test; oops svn:r749
Niels Provos 682adc44 2008-04-30T00:09:16 support input/output filters for bufferevents svn:r748
Niels Provos 3a17aeed 2008-04-26T01:00:44 fix a bug in buffrevent read water marks and add a test for them svn:r731
Niels Provos 89f63b20 2008-04-25T02:44:46 add bufferevent_read_buffer function svn:r728
Niels Provos 193c06a7 2008-03-31T02:04:34 fix a bug in which evbuffer_add_vfprintf would loop forever; avoid fragmentation in evbuffer_expand by increasing the size of the last buffer in the chain; as a result with have to keep track of the previous_to_last chain; provide a evbuffer_validate() function in the regression test to make sure that all evbuffer are internally consistent. svn:r699
Niels Provos 558de9b3 2008-03-02T21:18:33 Provide OpenSSL style support for multiple threads accessing the same event_base svn:r684
Nick Mathewson 0e7cbe65 2008-02-28T17:38:52 r18482@catbus: nickm | 2008-02-28 12:38:40 -0500 Fix GCC 4.2 warnings; fix includes in subdirs. svn:r675
Niels Provos 5c70ea4c 2008-02-28T02:47:43 improved code for evbuffer; avoids memcpy svn:r674
Niels Provos bd31d00f 2008-02-26T04:54:19 move signal callbacks closer to test code svn:r670
Niels Provos 67bf29ad 2008-02-23T06:02:04 simplify evbuffer by removing orig_buffer svn:r654
Nick Mathewson 11230f7e 2008-02-18T20:04:01 r18145@catbus: nickm | 2008-02-18 15:02:20 -0500 Stop using deprecated autoconf code to set integer types; detect actual files to include more thoroughly. This should make us work on solaris 9 again. This should be a backport candidate, if it works. Also, make all libevent code use ev_uint32_t etc, rather than uint_32_t. svn:r649
Nick Mathewson 807ab182 2008-02-16T20:49:47 r14211@tombo: nickm | 2008-02-16 15:28:54 -0500 Add new evutil_strtoll() function so we can apply 64-bit content-length patch from Scott Lamb in a portable way. svn:r640
Niels Provos 8c66d4e2 2008-01-26T07:29:57 remove pending timeouts on event_base_free svn:r627
Niels Provos 7e3a7af7 2007-12-24T23:59:41 support string arrays in event_rpcgen svn:r613
Niels Provos 68725dc8 2007-12-23T07:38:11 support integer arrays in rpc structures; this involved some refactoring of the event_rpcgen code, so that other types should be able to get arrays fairly easily svn:r609
Nick Mathewson a5176a65 2007-12-20T22:45:30 Fix a win32 warning in regress.c svn:r608