test/regress.c


Log

Author Commit Date CI Message
Nick Mathewson 22f4af65 2010-12-09T11:43:12 Remove end-of-line whitespace
Nick Mathewson 7bcace2d 2010-11-22T21:02:34 Fix some irix compilation warnings spotted by Kevin Bowling
Nick Mathewson aed7e029 2010-11-22T14:10:01 Make unit tests for epoll-with-changelist pass The only changes needed were to handle the fact that the methodname "epoll (with changelist)" matches the environment variable EVENT_NOEPOLL rather than the imaginary "EVENT_EPOLL (WITH CHANGELIST)".
Christopher Davis 34b84b97 2010-11-03T14:38:45 Fix more wn64 warnings.
Nick Mathewson 5d389dc0 2010-10-26T22:27:57 Fix some uses of int for socket in regress
Nick Mathewson c281aba3 2010-10-24T11:38:29 Fix a nasty bug related to use of dup() with epoll on Linux Current versions of the Linux kernel don't seem to remove the struct epitem for a given (file,fd) combo when the fd is closed unless the file itself is also completely closed. This means that if you do: fd = dup(fd_orig); add(fd); close(fd); dup2(fd_orig, fd); add(fd); you will get an EEXIST when you should have gotten a success. This could cause warnings and dropped events when using dup and epoll. The solution is pretty simple: when we get an EEXIST from EPOLL_CTL_ADD, we retry with EPOLL_CTL_MOD. Unit test included to demonstrate the bug. Found due to the patient efforts of Gilad Benjamini; diagnosed with help from Nicholas Marriott.
Nick Mathewson e5c214a4 2010-10-14T13:16:41 Fix -Wsigned-compare warnings in test/*
Nick Mathewson 4858b794 2010-09-15T01:54:51 Remove the now-useless evsig_caught and evsig_process
Nick Mathewson 720bd933 2010-09-15T01:08:39 Warn when using the error-prone EV_SIGNAL interface in an error-prone way. Also, fix a couple of race conditions in signal.c When using the signal.c signal backend, Libevent currently only allows one event_base to actually receive signals at a time. (This has been the behavior since at least 1.4 and probably much earlier.) Now, we detect and warn if you're likely to be racing about which signal goes to which thread. We also add a lock to control modifications of the evsig_base field, to avoid race conditions like those found by Jason Toffaletti. Also, more comments. Comments are good.
Nick Mathewson 25b6a74b 2010-09-08T14:53:57 Merge branch 'tests'
Nick Mathewson ce85280b 2010-09-08T13:29:06 Improve testing of when thread-notification occurs
Nick Mathewson 1115366e 2010-09-07T10:28:15 Fix a few memory leaks in the tests
Nick Mathewson ec347b92 2010-07-07T16:45:03 Move event-config.h to include/event2 This change means that all required include files are in event2, and all files not in event2/* are optional.
Nick Mathewson 42a8c711 2010-07-31T17:10:04 Build more cleanly with NetBSDs that dislike toupper(char) To be fair, when char can be signed, if toupper doesn't take negative characters, toupper(char) is a very bad idea. So let's just use the nice safe EVUTIL_TOUPPER instead. (It explicitly only upcases ASCII, but we only use it for identifiers that we know to be ASCII anyway).
Nick Mathewson 7510aac3 2010-06-21T12:23:32 Unit test for event_get_struct_event_size()
Nick Mathewson 44d57eee 2010-06-03T11:25:54 Add test for behavior on remote socket close On all the backends on this little mac laptop, that behavior is to report a remote socket close as both EV_READ and EV_WRITE. Historically, we had problem for some of these behaviors on some backends, so let's make sure that such behaviors don't come back.
Nick Mathewson 8bc1e3d6 2010-05-26T13:19:08 Remove all non-error prints from test/regress.c Now, running ./test/regress --quiet will indeed only inform you about errors. Previously, it would also spew extra output.
Nick Mathewson e73f1d79 2010-05-26T13:18:30 Remove the now-obsolete setup_test() and cleanup_test() functions
Nick Mathewson f37cd4c2 2010-04-21T12:25:29 Detect broken unsetenv at unit-test runtime If we have an unsetenv function that doesn't work, we can't run the main/base_environ unit test, so we should skip it.
Nick Mathewson c16e6844 2010-05-04T13:27:36 Rename current_base symbol to event_global_current_base_ The "current_base" symbol was never actually declared in an exported header; it's hideously deprecated, and it was the one remaining exported symbol (fwict) that was prefixed with neither ev nor bufferevent nor _ev nor _bufferevent. codesearch.google.com turns up no actual attempts to use our current_base from outside libevent.
Sebastian Sjöberg 899c1dcc 2010-04-14T15:42:57 Replace EVUTIL_CLOSESOCKET macro with a function The EVUTIL_CLOSESOCKET() macro required you to include unistd.h in your source for POSIX. We might as well turn it into a function: an extra function call is going to be cheap in comparison with the system call. We retain the EVUTIL_CLOSESOCKET() macro as an alias for the new evutil_closesocket() function. (commit message from email by Nick and Sebastian)
Nick Mathewson b557b175 2010-03-21T13:28:48 Detect and refuse reentrant event_base_loop() calls Calling event_base_loop on a base from inside a callback invoked by that same base, or from two threads at once, has long been a way to get exceedingly hard-to-diagnose errors. This patch adds code to detect such reentrant invocatinos, and exit quickly with a warning that should explain what went wrong.
Nick Mathewson 33874b05 2010-03-16T13:37:15 Make 'main/many_events' test 70 fds, not 64. This is mainly intended to ensure that we don't get hung up on the 64-handle limit that lots of O(n) Windows functions (but FWICT not select) like to enforce.
Nick Mathewson 68dc742b 2010-03-12T20:38:25 Fix a write of uninitialized RAM in regression tests Not actually harmful, but not something we should be doing. Found by valgrind.
Nick Mathewson c7cf6f00 2010-03-05T12:47:46 Replace users of "int fd" with "evutil_socket_t fd" in portable code Remeber, win32 has a socket type that's actually a handle, so if there's a chance that code is run on win32, we can't use "int" as the socket type. This isn't a blind search-and-replace: sometimes an fd is really in fact for a file, and not a socket at all.
Nick Mathewson 17efc1cd 2010-03-04T01:25:51 Update all our copyright notices to say "2010"
Nick Mathewson 7ffd3875 2010-02-24T13:40:06 Delete stack-alloced event in new unit test before returning.
Nick Mathewson 8fcb7a1b 2010-02-23T23:55:32 Add test for periodic timers that get activated for other reasons This was already independently verified by the new bufferevent timeout tests, but it's good to explicitly check that our code does what it should.
Nick Mathewson 4faeaea9 2010-02-19T03:39:50 Clean up formatting: function/keyword spacing consistency. - Keywords always have a space before a paren. Functions never do. - No more than 3 blank lines in a row.
Nick Mathewson e5bbd40a 2010-02-18T17:41:15 Clean up formatting: use tabs, not 8-spaces, to indent.
Nick Mathewson 918e9c5e 2010-01-23T16:38:36 Fix a number of warnings from gcc -pedantic
Nick Mathewson 7296971b 2009-12-29T16:38:03 Detect setenv/unsetenv; skip main/base_environ test if we can't fake them. Previously, we assumed that we would have setenv/unsetenv everywhere but WIN32, where we could fake them with putenv. This isn't so: some other non-windows systems lack setenv/unsetenv, and some of them lack putenv too. The first part of the solution, then, is to detect setenv/unsetenv/ putenv from configure.in, and to fake setenv/unsetenv with putenv whenever we have the latter but not one of the former. But what should we do when we don't even have putenv? We could do elaborate tricks to manipulate the environ pointer, but since we're only doing this for the unit tests, let's just skip the one test in question that uses setenv/unsetenv.
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