test


Log

Author Commit Date CI Message
Nick Mathewson f3dfe462 2010-02-23T23:59:26 Use new timeval diff comparison function in bufferevent test
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 c02bfe12 2010-02-23T16:36:52 Add a test for timeouts on filtering bufferevents.
Nick Mathewson d3288293 2010-02-20T18:44:35 Provide consistent, tested semantics for bufferevent timeouts The different bufferevent implementations had different behavior for their timeouts. Some of them kept re-triggering the timeouts indefinitely; some disabled the event immediately the first time a timeout triggered. Some of them made the timeouts only count when the bufferevent was actively trying to read or write; some did not. The new behavior is modeled after old socket bufferevents, since they were here first and their behavior is relatively sane. Basically, each timeout disables the bufferevent's corresponding read or write operation when it fires. Timeouts are stopped whenever we suspend writing or reading, and reset whenever we unsuspend writing or reading. Calling bufferevent_enable resets a timeout, as does changing the timeout value.
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 8fdf09c0 2010-02-18T17:08:50 Clean up formatting: Disallow space-before-tab.
Nick Mathewson b72be50d 2010-02-18T13:52:04 Add some headers to fix freebsd compilation
Nick Mathewson 48a29b68 2010-02-18T01:43:37 Add a unit test for secure rng. Mostly, this is just to make sure our arc4random_buf() implementation isn't dumb.
Nick Mathewson ca46d25b 2010-02-17T23:02:28 Merge branch 'arc4random'
Niels Provos 2f782af3 2010-02-13T17:04:17 validate close cb on server when client connection closes
Niels Provos e8a9782c 2010-02-13T16:59:37 clean up terminate_chunked test
Nick Mathewson d4de062e 2010-02-10T17:19:18 Add an arc4random implementation for use by evdns Previously, evdns was at the mercy of the user for providing a good entropy source; without one, it would be vulnerable to various active attacks. This patch adds a port of OpenBSD's arc4random() calls to Libevent [port by Chris Davis], and wraps it up a little bit so we can use it more safely.
Nick Mathewson 1dd7e6dc 2010-02-05T01:16:23 Remove the 'flags' argument from evdns_base_set_option() The 'flags' argument made sense when passed to evdns_(base_)?parse_resolv_conf when it said which parts of the resolv.conf file to obey. But for evdns_set_option(), it was really silly, since you wouldn't be calling evdns_set_option() unless you actually wanted to set the option. Its meaning was basically, "set this to DNS_OPTIONS_ALL unless you want a funny surprise." evdns_base_set_option was new in 2.0.1-alpha, so we aren't committed to keeping it source-compatible.
Nick Mathewson a7a94310 2010-02-03T23:49:22 Fix some additional -DUNICODE issues on win32. Brodie's patch didn't catch the ones that were new since 1.4.
Nick Mathewson e2d15d81 2010-02-03T17:52:55 Merge remote branch 'niels/http_chunk'
Niels Provos 93d73691 2010-02-03T14:34:56 do not fail while sending on http connections the client closed. when sending chunked requests via multiple calls to evhttp_send_reply_chunk, the client may close the connection before the server is done sending. this used to cause a crash. we introduce a new function evhttp_request_get_connection() that allows the server to determine if the request is still associated with a connection. If it's not, evhttp_request_free() needs to be called explicitly or the user can call evhttp_send_reply_end() which just frees the request, too.
Nick Mathewson 60742d58 2010-02-03T17:01:45 Add the rest of the integer limits, and add a test for them.
Nick Mathewson 5c7a7bca 2010-01-23T20:07:05 Fix windows and msvc build
Nick Mathewson 918e9c5e 2010-01-23T16:38:36 Fix a number of warnings from gcc -pedantic
Nick Mathewson e2ca403f 2010-01-23T16:23:45 Make it compile under gcc --std=c89.
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 97a8c790 2010-01-22T00:34:21 Fix compilation of rate-limit code when threading support is disabled
Nick Mathewson 8d4aaf90 2010-01-20T12:56:54 Don't use a bind address for nameservers on loopback If the user sets a bind address to use for nameservers, and a nameserver happens to be on 127.0.0.1, the nameserver will generally fail. This patch alters this behavior so that the bind address is only applied when the nameserver is on a non-loopback address.
Niels Provos 78a50fe0 2010-01-14T17:39:54 forgot to add void to test function
Niels Provos 26714ca1 2010-01-14T17:05:00 add a test for evhttp_connection_base_new with a dns_base
Niels Provos b8226390 2010-01-14T16:53:25 move dns utility functions into a separate file so that we can use them for http testing
Nick Mathewson a334b31c 2010-01-14T14:46:16 More unit tests for getaddrinfo_async: v4timeout and cancel. One covers the case where the v4 request times out but the v6 request doesn't. The other makes sure that cancelling a request actually works.
Nick Mathewson 94131e92 2010-01-12T15:58:36 Fix test.sh on shells without echo -n Some systems have a version of /bin/sh whose builtin echo doesn't support the -n option used in test/test.sh. /bin/echo, however, usually does. This patch makes us use /bin/echo for echo -n whenever it is present. Also, our use of echo -n really only made sense when suppressing all test output. Since test output isn't suppressed when logging to a file, this pach makes us stop using echo -n when logging to a file.
Pavel Plesov 6cc79c6b 2010-01-11T19:04:11 Add unit-test for bad_request bug fixed in 1.4 recently. This is a partial forward-port from 4fd2dd9d83a000b6. There's no need to forward-port the bugfix, since the test passes with http.c as-is. I believe we fixed this while we were porting evhttp to bufferevent. --nickm
Nick Mathewson 72dd6667 2009-12-07T17:21:41 evdns_getaddrinfo() now supports the /etc/hosts file. The regular blocking evutil_getaddrinfo() already supported /etc/hosts by falling back to getaddrinfo() or gethostbyname(). But evdns_getaddrinfo() had no such facility. Now it does. The data structure here isn't very clever. I guess people with huge /etc/hosts files will either need to get out of the 1980s, or submit a patch to this code so that it uses a hashtable instead of a linked list. Includes basic unit tests.
Nick Mathewson ba2945f9 2010-01-06T17:59:44 Merge branch 'ratelimit' Conflicts: bufferevent_async.c
Nick Mathewson 165d30e3 2009-12-30T14:29:56 Fix compilation of rate-limiting code on win32.
Nick Mathewson 885b4273 2009-12-30T13:50:52 Fix test-ratelim compilation on Linux. I'd forgotten to include time.h, and to link against libm.
Nick Mathewson 0b151a9f 2009-12-29T18:11:52 Whitespace fixes in test.sh
Nick Mathewson 7dfbe94a 2009-12-29T18:07:51 Allow test.sh to be run as ./test/test.sh
Nick Mathewson c382de64 2009-12-29T17:59:55 Allow the user to redirect the verbose output of test/test.sh to a file By default, the test.sh script still suppresses the output of all the tests it invokes. Now, however, you can have that output written to a file specified in the TEST_OUTPUT_FILE shell variable.
Nick Mathewson 1e56a32d 2009-12-29T16:04:16 Make the initial nameserver probe timeout configurable. When we decide that a nameserver is down, we stop sending queries to it, except to periodically probe it to see if it has come back up. Our previous probe sechedule was an ad-hoc and hard-wired "10 seconds, one minute, 5 minues, 15 minutes, 1 hour, 1 hour, 1 hour...". There was nothing wrong with having it be ad-hoc, but making it hard-wired served no good purpose. Now the user can set the initial timeout via a new "initial-probe-timeout:" option; future timeouts back off by a factor of 3 on every failure to a maximum of 1 hour. As a side-benefit, this lets us cut the runtime of the dns/retry test from about 40 seconds to about 3 seconds. Faster unit tests are always a good thing.
Nick Mathewson f0c0124e 2009-12-23T07:54:13 Testing code for bufferevent rate-limiting. This is not part of the regression tests, since running it necessarily takes a while. There is a new test-ratelim test; run it with '-h' for an argument to see its options.
Nick Mathewson 4a5b5343 2009-12-23T07:48:43 Do not ignore bufferevent_enable(EV_READ) before bufferevent_connect(). Previously, we weren't remembering that we wanted to re-add the read event once the connect was finished. Now we are.
unknown c51bb3c3 2009-12-21T16:36:40 Fix a few locking issues on windows.
Sebastian Hahn 70cdfe49 2009-12-06T02:59:19 Fix compile on Snow Leopard with gcc warnings enabled
Nick Mathewson 7ae94450 2009-12-04T16:37:43 Fix a snow leopard compile warning in the unit tests. Reported by Sebastian Hahn.
unknown 31687b4d 2009-12-02T01:22:07 Fix regress_iocp.c usage of old lock allocation macros.
Nick Mathewson d84d8385 2009-11-27T15:24:32 Fix two use-after-free bugs in unit tests spoted by lock debugging
Nick Mathewson 347952ff 2009-11-27T15:20:43 Revise the locking API: deprecate the old locking callbacks and add trylock. Previously, there was no good way to request different kinds of lock (say, read/write vs writeonly or recursive vs nonrecursive), or for a lock function to signal failure (which would be important for a trylock mode). This patch revises the lock API to be a bit more useful. The older lock calls are still supported for now. We also add a debugging mode to catch common errors in using the locking APIs.
Niels Provos 986500de 2009-11-19T22:02:33 nick found a race condition in the pthreads test case svn:r1554
Nick Mathewson 7511b6a9 2009-11-19T00:21:38 Fix a spelling error and remove some dead code svn:r1551
Nick Mathewson 07ce7f99 2009-11-18T21:17:00 Make our failing-connection bufferevent test more tolerant. I thought we had a way to do connect() that would never fail immediately, but always wait for a moment before failing. It turns out that on FreeBSD it can fail immediately. This is not FreeBSD's fault, or even a real bug anywhere but in the unit test. svn:r1549
Nick Mathewson 9bf124bf 2009-11-18T21:16:47 Build correctly with mm replacement turned off. svn:r1547
Nick Mathewson d7d1f1da 2009-11-17T20:31:09 Move responsibility for IOCP callback into bufferevent_async. This patch from Chris Davis saves some callback depth, and adds proper ref-counting to bufferevents when there's a deferred evbuffer callback inflight. It could use a couple more comments to really nail down what its invariants are. svn:r1543
Nick Mathewson 625a261a 2009-11-17T02:40:14 OpenBSD demands that sys/types.h be included before sys/socket.h svn:r1539
Nick Mathewson 888007f9 2009-11-17T02:38:19 Windows *does* have getservbyname, no matter what autoconf says. TODO: figure out why autoconf is confused about this. svn:r1538
Nick Mathewson 86f57420 2009-11-16T22:25:46 Add two implementations of getaddrinfo: one blocking and one nonblocking. The entry points are evutil_getaddrinfo and evdns_getaddrinfo respectively. There are fairly extensive unit tests. I believe this code conforms to RFC3493 pretty closely, but there are probably more issues. It should get tested on more platforms. This code means we can dump the well-intentioned but weirdly-implemented bufferevent_evdns and evutil_resolve code. svn:r1537
Nick Mathewson 72bafc17 2009-11-16T22:23:55 Remove the stupid brokenness where DNS option names needed to end with a colon. svn:r1536
Nick Mathewson c79a45e0 2009-11-14T21:54:30 Fix a couple of event_debug calls. svn:r1527
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 ac633aeb 2009-11-05T21:22:23 Fix some build warnings on MSVC, mostly related to signed/unsigned comparisons. svn:r1510
Nick Mathewson 4ca9efea 2009-11-05T20:40:11 Add nmake files to build with MSVC. Right now, they just make static libraries and unit tests. They probably set lots of options wrong. svn:r1507
Nick Mathewson 25a5e681 2009-11-05T20:37:19 Build fixes for MSVC svn:r1506
Nick Mathewson 47bad8ab 2009-11-04T20:17:32 Implement size limits on HTTP header length and body length. Patch from Constantine Verutin, simplified a little. svn:r1500
Nick Mathewson 86db1c85 2009-11-04T05:19:26 Commit ConnectEx code to get connect working with async bufferevents. This is code by Chris Davis, with changes to get the unit tests failing less aggressively. The unit tests for this code do not completely pass yet; Chris is looking into that. If they aren't passing by the next release, I'll turn off this code. svn:r1499
Nick Mathewson 0b9eb1bf 2009-11-03T20:40:48 Add a bufferevent function to resolve a name then connect to it. This function, bufferevent_socket_connect_hostname() can either use evdns to do the resolve, or use a new function (evutil_resolve) that uses getaddrinfo or gethostbyname, like http.c does now. This function is meant to eventually replace the hostname resolution mess in http.c. svn:r1496
Nick Mathewson fcc7668c 2009-11-03T20:05:06 Fix one IOCP-callback signature I missed svn:r1495
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 0aa6f513 2009-11-02T20:59:13 Fix remaining AcceptEx issues. svn:r1492
Nick Mathewson e794d716 2009-11-02T20:20:40 Clean up acceptex code some more: add locking, single-threading, enable/disable. svn:r1491
Nick Mathewson 9a772148 2009-11-02T19:31:29 Compilation and correctness fixes for IOCP listener code. svn:r1489
Nick Mathewson 8283b2f0 2009-11-02T19:30:25 Fix a major parenthesis bug in EVUTIL_UPCAST. Fortunately, this didn't hurt anything previously, since we had no actual users of the macro where the offset of the base type wasn't 0. svn:r1488
Nick Mathewson 5f1d6e64 2009-11-02T17:42:16 Add more IOCP tests. They might not pass yet. svn:r1487
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 9976f1e7 2009-10-29T17:11:12 reformat weird indentation in dns tests svn:r1478
Nick Mathewson 3c2198cb 2009-10-29T17:10:36 Unit test for reverse ipv6 lookup svn:r1477
Nick Mathewson 5b3fb5bf 2009-10-29T16:35:20 More documentation and unit tests for event_tagging. svn:r1476
Nick Mathewson c70c2593 2009-10-29T16:35:09 Unit test for strlcpy svn:r1474
Nick Mathewson e9098203 2009-10-27T18:25:19 Fix from Chris Davis: get error-logging to be happy on win32. svn:r1473
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 ed0e91e0 2009-10-27T04:03:50 New test flag to suppress logging for one test. svn:r1466
Nick Mathewson a8267663 2009-10-26T19:59:51 API to replace all calls to exit() with a user-supplied fatal-error handler. Also, add unit tests for logging. svn:r1462
Nick Mathewson 38aec9ec 2009-10-23T22:38:35 Tweaks to IOCP interface. svn:r1461
Nick Mathewson 7b107249 2009-10-23T22:07:05 Fix my fix for the bufferevent_connect_fail() test. svn:r1460
Nick Mathewson 879420a7 2009-10-23T22:00:29 Expose a narrow window to the IOCP code. svn:r1459
Nick Mathewson fdd11c00 2009-10-21T19:21:05 Make the bufferevent_connect_fail test faster on OSX. It seems that connecting to a listener that is bound but not accepting or listening doesn't give a 'connection refused' error on OSX, but rather makes the connect() time out after 75 seconds. I couldn't find any way to make the timout shorter. Fortunately, closing the listener after a second or so makes the desired error occur after another second or so. svn:r1457
Nick Mathewson 4fbac2a5 2009-10-21T07:00:19 Test failing case of bufferevent_connect(). Code by Chris Davis. svn:r1455
Nick Mathewson 50825466 2009-10-21T02:14:16 Fix windows compilation warnings. svn:r1449
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
Niels Provos 8e8d94a3 2009-09-24T22:18:19 Do not drop data from evbuffer when out of memory; reported by Jacek Masiulaniec svn:r1436
Nick Mathewson d17c720c 2009-08-14T20:07:01 Remove an extraneous puts(). svn:r1415
Nick Mathewson 8a99083f 2009-08-07T17:16:52 Add an evbuffer_search_range() to search a bounded range of a buffer This can be handy when you have one search to find the end of a header section, and then you want to find a substring within the header section without looking at the body. svn:r1410
Nick Mathewson 0c09fe5a 2009-08-03T20:50:56 Add a couple more evdns tests. Libevent is now, for me, at 80.02% coverage. svn:r1409
Nick Mathewson 94e8f9b9 2009-08-03T20:15:45 Another DNS unit tests, to handle reissues. The evdns module is now up to ~72% coverage; Libevent is up to nearly 80%. svn:r1408
Nick Mathewson dc1f5b1e 2009-08-03T20:15:39 why say fprintf(stdout, X) when you can say printf? svn:r1407
Nick Mathewson 213dc2a2 2009-08-03T20:15:32 Fix an annoying evdns crash bug, and add more unit tests for evdns. svn:r1406
Nick Mathewson a5006d80 2009-08-03T16:15:57 Unit tests for DNS search. svn:r1405
Nick Mathewson 6dc488bd 2009-07-31T17:34:18 Improved coverage for evbuffer_readln() svn:r1402
Nick Mathewson 7c688dd9 2009-07-31T14:41:45 New function to expose bufferevent.enabled svn:r1401
Nick Mathewson cf54d74a 2009-07-30T20:41:41 More unit tests for Openssl, including initializing with no socket. Up to 75% coverage. svn:r1399