709 Commits

Author SHA1 Message Date
Azat Khuzhin
2f656ffb23
test/buffer: write >GETPIPE_SZ via events over pair to avoid stall
[ Upstream commit 0aad01436af27c5807d48701028020bb51cba387 ]
2019-01-20 22:47:33 +03:00
Isidor Kouvelas
70a39d458b
Cover ET with multiple events for same fd
[ Upstream commit 77c0e510581b88242d7d7bcff4954cedc5613554 ]

Refs: #636
2019-01-20 19:53:45 +03:00
Nick Mathewson
4d73149fa1
Remove integer-overflow unit tests
[ Upstream commit e5302ac7 ]
[ Fixes clang builds -- https://travis-ci.org/azat/libevent/jobs/446053765 ]

There's not much point checking undefined behavior.
2018-10-25 20:32:45 +03:00
Nick Mathewson
3384582443
Correctly skip ipv6 http test on systems without ipv6
[ Upstream commit 6a1c4d50 ]
2018-10-25 20:32:45 +03:00
Nick Mathewson
b52e95f525
Skip http/ipv6_for_domain test when we have no ipv6 support
[ Upstream commit 21477e40 ]
2018-10-25 20:32:45 +03:00
Azat Khuzhin
6f18f88ee7
Remove for loop initial declaration and fix conflicting type in it (gcc 4.8)
From [1]:
  regress_buffer.c:742:3: error: ‘for’ loop initial declarations are only allowed in C99 mode
     for (int i = 0; i < 1 << 16; ++i) {
     ^
  regress_buffer.c:742:3: note: use option -std=c99 or -std=gnu99 to compile your code
  regress_buffer.c:787:23: error: conflicting types for ‘bufread’
    for (int n = toread, bufread = toread;
                         ^
  regress_buffer.c:717:51: note: previous definition of ‘bufread’ was here
    size_t datalen = strlen(data), toread = datalen, bufread = 0;
                                                     ^
  regress_buffer.c:787:2: error: ‘for’ loop initial declarations are only allowed in C99 mode
    for (int n = toread, bufread = toread;
    ^

[1]: https://travis-ci.org/azat/libevent/jobs/445501665
2018-10-25 20:32:45 +03:00
Azat Khuzhin
b2beaad668
Skip all dns tests that hit the network
But since this version of tinytest do not have TT_OFF_BY_DEFAULT use
TT_SKIP instead.

[ Upstream commit f2cea873bb8c4e1e89cc282470a11556e4bd9730 ]
2018-10-24 01:25:07 +03:00
Azat Khuzhin
9e6f650302
Simplify bufferevent timeout tests to reduce CPU usage in between start/compare
[ Upstream commit 6ac8e775 ]
[ Fixes: #262 ]

Between start (setting "started_at") and comparing the time when
timeouts triggered with the start (test_timeval_diff_eq), there is too
much various things that can introduce extra delays and eventually could
fail the test on machine with shortage of CPU.

And this is exactly what happend on:
- travis-ci
- #262

Here is a simple reproducer that I came up with for this issue:
  docker run --cpus=0.01 -e LD_LIBRARY_PATH=$PWD/lib -e PATH=/usr/bin:/bin:$PWD/bin -v $PWD:$PWD --rm -it debian:testing regress --no-fork --verbose bufferevent/bufferevent_timeout

Under limited CPU (see reproducer) the test almost always has problems
with that "write_timeout_at" exceed default timeval diff tolerance
(test_timeval_diff_eq() has 50 tolerance), i.e.:
  FAIL ../test/regress_bufferevent.c:1040: assert(labs(timeval_msec_diff(((&started_at)), ((&res1.write_timeout_at))) - (100)) <= 50): 101 vs 50

But under some setup write timeout can even not triggered, and the
reason for this is that we write to the bufferevent 1024*1024 bytes, and
hence if evbuffer_write_iovec() will has some delay after writev() and
not send more then one vector at a time [1], it is pretty simple to
trigger, i.e.:
  FAIL ../test/regress_bufferevent.c:1040: assert(labs(timeval_msec_diff(((&started_at)), ((&res1.write_timeout_at))) - (100)) <= 50): 1540155888478 vs 50

  [1]: https://gist.github.com/azat/b72773dfe7549fed865d439e03de05c1

So this patch just send static small payload for all cases (plus a few
more asserts added).

The outcome of this patch is that all regression tests passed on
travis-ci for linux box [2]. While before it fails almost always [3].
Also reproducer with CPU limiting via docker also survive some
iterations (and strictly speaking it should has less CPU then travis-ci
workers I guess).

  [2]: https://travis-ci.org/azat/libevent/builds/444391481
  [3]: https://travis-ci.org/libevent/libevent/builds/444336505
2018-10-24 01:07:09 +03:00
Azat Khuzhin
dd3e841c75 Cover evbuffer_add_file() with offset 2017-12-18 02:21:47 +03:00
Marcus Sundberg
0091da360a test/regress: add tests for evbuffer_add() breakage on empty last chain
The evbuffer/add* tests currenly break on 2.0.21, 2.0.22 and 2.1 HEAD
due to issue #335. The evbuffer/reference2 test breaks on 2.0.21 and
2.0.22 due to commit b18c04dd not being applied.
2016-03-26 20:48:01 +01:00
Azat Khuzhin
066a4f6fd1 Add regress test ipv6_for_domain.
Written for commit 71e709c7829275a594f767b27468b1b52e8b5bb9.
Fix ipv6 support for http. When URL contain domain, not IP address.

backporting to 2.0: fix conflicts with the name of the main function --
_http_connection_test().
2015-10-08 11:48:02 +03:00
Maks Naumov
79800df7c7 regress_buffer: fix 'memcmp' compare size 2014-09-18 11:33:20 -04:00
Greg Hazel
b618204216 fix #73 and fix http_connection_fail_test to catch it 2013-02-14 09:54:56 -08:00
Nick Mathewson
a55514eeed Avoid using top_srcdir in TESTS-new automakes do not like this 2013-02-08 22:08:18 -05:00
Nick Mathewson
f38e078868 Make ssl version check in unit tests work 2012-11-18 01:36:03 -05:00
Nick Mathewson
f3009e48c7 Make rpcgen_wrapper.sh work on systems without a "python2" binary 2012-11-16 10:28:19 -05:00
Nick Mathewson
ac009f9245 Warn when openssl version in unit test mismatches compiled version. 2012-11-15 11:43:45 -05:00
Nick Mathewson
c2f30863e2 Fix renegotiation test to work around openssl 1.0.1 bug
There's a bug in openssl 1.0.1 where TLS1.1 and TLS1.2 can't
renegotiate with themselves.  When testing renegotiation with OpenSSL
>=1.0.1 and <1.0.1d, disable those protocols.
2012-11-15 11:43:45 -05:00
Nick Mathewson
94866c2763 Compile without warnings on mingw64
This is mostly a matter of catching cases where we were still
assuming that evutil_socket_t could be used as an int.
2012-11-01 17:56:06 -04:00
Nick Mathewson
a2006c0087 Move assignment outside tt_assert in ssl unit tests. Appeases coverity. 2012-07-26 10:37:47 -04:00
Nick Mathewson
b9e7329751 Add checks to various return values in unit tests. Found by coverity 2012-07-26 10:37:13 -04:00
Nick Mathewson
6355b2a4ca Remove unused variable; spotted by coverity 2012-07-26 10:16:47 -04:00
Nick Mathewson
3cde5bf57a Avoid more crashes/bad calls in unit tests; found by coverity 2012-07-26 10:04:43 -04:00
Nick Mathewson
f021c3d762 Add some missing null checks to unit tests; found by coverity 2012-07-26 09:59:47 -04:00
Nick Mathewson
270f279fb5 Fix resource leaks in the unit tests; found by coverity 2012-07-26 09:53:20 -04:00
Nick Mathewson
4f3732d75e Fix various check-after-dereference issues in unit tests: found by coverity 2012-07-26 09:35:43 -04:00
Nick Mathewson
f1ce15d936 Set umask before calling mkstemp in unit tests. Found by coverity 2012-07-25 16:18:33 -04:00
Nick Mathewson
2259777cc8 Fix possible uninitialized read in dns regression tests. Found by coverity. 2012-07-25 16:05:36 -04:00
Nick Mathewson
555334670a Remove deadcode in http regression tests. Found by coverity. 2012-07-25 15:59:50 -04:00
Ross Lagerwall
3b2529acf2 Fix a couple of memory leaks (found with Valgrind). 2012-06-06 21:57:12 +02:00
Nick Mathewson
e06206ebd8 Oops; fix the *right* windows compile issue 2012-05-03 12:15:11 -04:00
Nick Mathewson
be7a0be816 Fix win32 build issues: sleep, pid_t 2012-05-03 12:05:52 -04:00
Nick Mathewson
30f0671526 Merge remote-tracking branch 'github/20_active_prio_inv' into patches-2.0 2012-04-30 21:45:43 -04:00
Nick Mathewson
b3887cdf3b Work-around a stupid gcov-breaking bug in OSX 10.6
This only affects the unit tests.

Fix found at http://rachelbythebay.com/w/2011/07/12/forkcrash/

(Backport from 2.1)
2012-04-30 21:17:26 -04:00
Nick Mathewson
2bfda4012c If a higher-priority event becomes active, don't continue running events of the current priority.
Bug found by Ralph Castain.
2012-04-30 17:30:48 -04:00
Nick Mathewson
dfd808cbad If time has jumped so we'd reschedule a periodic event in the past, schedule it for the future instead
Fixes an issue reported on libevent-users in the thread "a dead
looping bug when changing system time backward". Previously, if time
jumped forward 1 hour[*] and we had a one-second periodic timer event,
that event would get invoked 3600 times.  That's almost certainly not
what anybody wants.

In a future version of Libevent, we should expose the amount of time
that the callbac kwould have been invoked somehow.

[*] Forward time jumps can happen with nonmonotonic clocks, or with
clocks that jump on suspend/resume.  It can also happen from
Libevent's point of view if the user exits from event_base_loop() and
doesn't call it again for a while.
2012-04-19 18:25:59 -04:00
Mark Ellzey
2d67b63853 Changed OPENSSL_LDFLAGS to OPENSSL_LIBADD 2012-02-14 15:37:58 -05:00
Mark Ellzey
9278196847 Added OPENSSL_LDFLAGS env variable which is appended to SSL checks.
If openssl is not installed system-wide or not compiled as a shared library,
some systems require various link flags (e.g., -ld).
2012-02-14 15:01:02 -05:00
Nick Mathewson
e49e289129 Update copyright notices to 2012 2012-02-10 17:29:53 -05:00
Nick Mathewson
9f9e259fda Better workaround for Linux 3.2 edge-triggered epoll bug
On further investigation, it appears that this problem is limited to
AF_UNIX sockets, so let's just do the test on AF_INET sockets.
2012-01-26 15:04:24 -05:00
Nick Mathewson
5408ff3b89 Oops:remove an accidentally committed "sleep(1)" in a unit test 2012-01-24 11:16:26 -05:00
Nick Mathewson
dab91877bc Workaround in the unit tests for an apparent epoll bug in Linux 3.2 2012-01-24 11:04:19 -05:00
Nick Mathewson
3312b02036 Check event_base correctness at end of each unit test 2012-01-23 17:43:35 -05:00
Nick Mathewson
27737d55ae Add function to check referential integrity of an event_base 2012-01-21 12:55:15 -05:00
Nick Mathewson
cba48c7d46 Fix a race condition in the dns/bufferevent_connect_hostname test.
As originally written, the test would only pass if the accept()
callbacks for the evconnlistener were all invoked before the last of
the CONNECTED/ERROR callbacks for the connecting/resolving bufferevent
had its call to event_base_loopexit() complete.  But this was only
accidentally true in 2.0, and might not be true at all in 2.1 where
we schedule event_base_once() callbacks more aggressively.

Found by Sebastian Hahn.
2012-01-09 16:44:53 -05:00
Zack Weinberg
c986f2321d Fix behavior of evbuffer_peek(buf,-1,NULL,NULL,0)
(Patch altered by nickm to not affect the behavior of
evbuffer_peek(buf,-1,NULL,vec,n_vec).)
2011-12-08 14:31:09 -05:00
Colin Watt
19277763b2 Fix a silly compilation error with the sun compiler
Apparently, other compilers were allowing "return free(x)" in a
function returning void.
2011-12-06 13:35:54 -05:00
Nick Mathewson
b17b0eec02 Fix DNS memleak checks when running with malloc-replacement/debugging disabled 2011-11-15 17:11:42 -05:00
Greg Hazel
7eb52eb85e improve test to remove at least one buffer from src 2011-11-02 22:47:02 -04:00
Greg Hazel
90bd620fa3 unit test for remove_buffer bug 2011-11-02 13:40:16 -04:00