1329 Commits

Author SHA1 Message Date
Azat Khuzhin
f41e1b016f test: http/non_lingering_close: cover ~EVHTTP_SERVER_LINGERING_CLOSE 2016-03-09 18:52:52 +03:00
Azat Khuzhin
addf2b90ae test: http/*: update expected HTTP codes for body exceeds max_body_size 2016-03-09 18:52:52 +03:00
Azat Khuzhin
d38a723974 test: http/data_length_constrains: set EVHTTP_CON_READ_ON_WRITE_ERROR 2016-03-09 18:52:52 +03:00
Azat Khuzhin
0792e1e7a7 test: increase buffer size for http/data_length_constraints to trigger EPIPE
With greater buffer it can't be written with one writev(2), and hence we can
trigger more tricky cases, like calling writecb/readcb more then once.

Refs: #321
2016-03-09 01:12:50 +03:00
Azat Khuzhin
f062bbe3f9 test/tinytest_demo: include <windows.h> for win32 to fix tdm-gcc
From: @gvanem
Fixes: #325
2016-02-24 14:12:55 +03:00
Trond Norbye
73d0360e83 test/regress_ssl: Fix compile problems for win32
Windows doesn't have unistd.h, but have the required
functionality in io.h.

azat: use ev_ssize_t instead of ssize_t
2016-02-15 23:29:10 +03:00
Nick Mathewson
4f778ab6d7 Add missing return statement to del_wait_thread so libevent can build. 2016-01-22 11:16:05 -05:00
Azat Khuzhin
5b58b709b2 test/regress: cover event_del() waiting mechanism
Since we have some issues (see refs) for changing waiting order in event_del()
I wrote this simple test, so maybe this test can explain something or at least
cover what we have before and show it will be broken.

P.S. we really need avoid such stuff like lets-test-with-sleep/usleep.

Refs: #225
Refs: #226
Refs: #236
2016-01-03 00:46:47 +03:00
Azat Khuzhin
ceddc607ca test/regress: cover existing signal callbacks and fork() + event_reinit()
Regression-for: 88640aa ("event_reinit: make signals works after fork() without
evsig_add()")
2015-12-27 09:30:10 +03:00
Azat Khuzhin
b075b81cd3 test/regress: cover signals after fork() + event_reinit()
Regression-for: ad0c237 ("event_reinit: always re-init signal's socketpair")
2015-12-27 09:29:57 +03:00
Azat Khuzhin
088d8b39f9 test/regress: main/fork: rewrite assertions by just removing event in callback
Instead of assigning some variable value (got_child), and schedule exit from
loop from that callback, just remove event for that signal, and event loop will
exit automatically when there will be no events.
2015-12-27 09:28:07 +03:00
Mark Ellzey
a264da8671 Revert "The Windows socket type is defined as SOCKET." 2015-12-20 00:57:50 -08:00
billsegall
ded8086656 Provide a mechanism for building the library on Windows with different compiler flags. Add a batch file that builds it for the M[DT][d] options and performs a hunt and gather of the different output libraries. 2015-12-17 21:27:37 +10:00
Azat Khuzhin
0b9d43249b test/dns: check exit code of evdns_getaddrinfo()
By some reason all autotools builds failed:
CI: https://travis-ci.org/libevent/libevent/builds/93125954
2015-11-25 17:30:31 +03:00
Azat Khuzhin
4ad348310c test/dns: cover evdns_getaddrinfo() and evdns_base_free() with @fail_requests 2015-11-25 13:09:02 +03:00
Azat Khuzhin
d6c6fb4200 test/dns: cover @fail_requests for evdns_base_free() 2015-11-25 13:09:02 +03:00
Azat Khuzhin
123d372864 test/dns: more graceful coverage of @fail_requests
In case when evdns_base_free() called with @fail_requests, we can potentially
have leaks, but we can avoid them if we will run event loop once again to
trigger defer cbs, so let's do this, instead of magical decrements (and also
this will give an example how to avoid leaks for evdns).
2015-11-25 13:09:01 +03:00
Azat Khuzhin
da0ea7ae77 test/ssl: cover busy-loop (i.e. {read,write}-blocked-on-{write,read} stuff)
This covers SSL_ERROR_WANT_READ/SSL_ERROR_WANT_WRITE error codes from ssl,
under which we must block read/write to avoid busy looping, and hence extra CPU
usage.
This test introduces custom BIO that will count read/write and validates
counters, with patches for be_openssl that drops handling
SSL/SSL_ERROR_WANT_READ there are more then 43K reads, so 100 is pretty ok.
2015-11-18 15:40:47 +03:00
Azat Khuzhin
23c77b6054 test/http: write_during_read for https 2015-11-18 15:40:47 +03:00
Azat Khuzhin
7ea26f71b8 test/http: connection_fail for https 2015-11-18 15:40:47 +03:00
Azat Khuzhin
ac04968311 test/http: stream_out for https 2015-11-18 15:40:47 +03:00
Azat Khuzhin
a71ffb9d1b test/http: chunk_out for https 2015-11-18 15:39:08 +03:00
Azat Khuzhin
3160716f26 test/regress: fix ssl-less builds (need to make this prettier)
CI: https://travis-ci.org/libevent/libevent/jobs/89590839
2015-11-06 10:21:04 +03:00
Azat Khuzhin
1ede3262cc test/http: allow dirty shutdown for ssl to fix https_incomplete 2015-11-06 09:43:25 +03:00
Azat Khuzhin
59714b46bc test/http: https basic 2015-11-06 09:43:25 +03:00
Azat Khuzhin
615490d048 test/http: incomplete{,_timeout} for https 2015-11-06 09:42:44 +03:00
Azat Khuzhin
93b19dc569 test/http: add simplest test for http/https/https_dirty_shutdown
There is "basic" before, but it uses bufferevent's for creating requests for
http layer, while this test uses http layer for client requests too.
2015-11-06 09:42:43 +03:00
Azat Khuzhin
7c2d24ae6b test/http: https: retry coverage 2015-11-06 09:42:43 +03:00
Azat Khuzhin
a7088ad095 test/http: https server support (plus some helpers)
TODO:
- check BEV_OPT_DEFER_CALLBACKS separately
2015-11-06 09:42:28 +03:00
Azat Khuzhin
a27c53c531 test/http: more sanity checks 2015-11-06 09:29:31 +03:00
Azat Khuzhin
0c4c387c15 test/ssl: export getkey()/getcert()/get_ssl_ctx()/init_ssl() for https 2015-11-05 11:00:06 +03:00
Azat Khuzhin
ad52602ffd test/regress_be: basic coverage bufferevent_flush() for pair/sock layers
Refs #266
2015-10-30 18:55:34 +03:00
Azat Khuzhin
f8081afc5e test/regress_be: socket_filter_inactive: check bufferevent after creation
Fixes:
../test/regress_bufferevent.c: In function ‘test_bufferevent_socket_filter_inactive’:
../test/regress_bufferevent.c:1180:1: warning: label ‘end’ defined but not used [-Wunused-label]
 end:
2015-10-30 18:38:09 +03:00
Azat Khuzhin
337684b8e8 test/regress_be: cover finalizers from inactive to active queue
Right now this will fail with the next assertion:
$ regress --no-fork --verbose bufferevent/bufferevent_socket_filter_inactive
bufferevent/bufferevent_socket_filter_inactive: [err] ../event.c:862: Assertion TAILQ_EMPTY(&base->activequeues[i]) failed in event_base_free_
Aborted
2015-10-30 14:45:20 +03:00
Azat Khuzhin
d8fd4c0742 test/regress_buffer: fix clang compilation warnings
../test/regress_buffer.c:201:12: warning: logical not is only applied to the left hand side of this comparison [-Wlogical-not-parentheses]
          tt_assert(!memcmp((char*)EVBUFFER_DATA(evb), "1/hello", 7) != 0);
2015-10-09 01:55:54 +03:00
Azat Khuzhin
cd422e0927 test/regress_http: fix compilation warnings (-Wmissing-field-initializers) 2015-10-09 01:50:05 +03:00
Azat Khuzhin
f55db9856e test/regress_dns: fix compilation warnings (-Wmissing-field-initializers/for)
I don't have an error for loop because gcc5 have --std=gnu11 by default.
We need some options-consistency for all versions/compilers and build systems
to avoid such patches.

Fixes: https://travis-ci.org/libevent/libevent/jobs/84403473
Fixes: https://travis-ci.org/libevent/libevent/builds/84403463
2015-10-09 01:47:44 +03:00
Azat Khuzhin
1e8bfbc6bc tests/regress_dns: cover that randomize-case works case-insensitive
Regression-for: #288
2015-10-09 01:12:12 +03:00
Thomas Bernard
9f02a44513 make test/regress_ssl.c compile without warnings 2015-10-05 12:37:41 +02:00
Azat Khuzhin
8240379a3c test/regress_be: drop debug __asm__(int3) to fix arm build
Closes #284
2015-10-04 03:19:12 +03:00
Azat Khuzhin
3f749e93db test: fix bufferevent/bufferevent_pair_release_lock in debug mode
After this test had been fixed for freebsd the debug build was broken because
we can't call evthread_set_lock_callbacks() when something already initialized,
and we can't call event_base_free() (in kqueue case) when it is initialized,
because of "held_by", but this only playing role during freeing lock profiler
so reset lock callbacks there before and this will fix both.

Fixes: 79f9ace4ae8a259a5cf1b4ff3869078b60ff16a1 ("test: fix
bufferevent/bufferevent_pair_release_lock for freebsd")

P.S. after this patch 'make verify' finishes without errors on freebsd.
2015-09-10 13:44:07 +03:00
Azat Khuzhin
79f9ace4ae test: fix bufferevent/bufferevent_pair_release_lock for freebsd
On FreeBSD with kqueue there is a call to evthread_debug_lock_mark_unlocked()
during event_base_free(), that will fail with an assert because of unmatched
"held_by", fix this by reseting lock callbacks to NULL before
event_base_free().

Trace:
  bufferevent/bufferevent_pair_release_lock: [warn] Trying to disable lock functions after they have been set up will probaby not work.
  [warn] Trying to disable lock functions after they have been set up will probaby not work.

    FAIL libevent/test/regress_bufferevent.c:259: lock: lock error[err] libevent/evthread.c:277: Assertion lock->held_by == me failed in evthread_debug_lock_mark_unlocked
  [New Thread 802006400 (LWP 100070/regress)]

  Program received signal SIGABRT, Aborted.
  [Switching to Thread 802006400 (LWP 100070/regress)]
  0x000000080167d6ca in thr_kill () from /lib/libc.so.7
  (gdb) bt
  #0  0x000000080167d6ca in thr_kill () from /lib/libc.so.7
  #1  0x0000000801752149 in abort () from /lib/libc.so.7
  #2  0x00000000004dff44 in event_exit (errcode=-559030611) at libevent/log.c:105
  #3  0x00000000004e053c in event_errx (eval=-559030611, fmt=0x5182cc "%s:%d: Assertion %s failed in %s") at libevent/log.c:162
  #4  0x00000000004d9954 in evthread_debug_lock_mark_unlocked (mode=0, lock=0x802017060) at libevent/evthread.c:277
  #5  0x00000000004d909a in debug_lock_unlock (mode=0, lock_=0x802017060) at libevent/evthread.c:290
  #6  0x00000000004e132c in evsig_dealloc_ (base=0x80201e300) at libevent/signal.c:434
  #7  0x00000000004e36c1 in kq_dealloc (base=0x80201e300) at libevent/kqueue.c:435
  #8  0x00000000004c9a44 in event_base_free_ (base=0x80201e300, run_finalizers=1) at libevent/event.c:855
  #9  0x00000000004c931a in event_base_free (base=0x0) at libevent/event.c:887
  #10 0x0000000000452657 in lock_unlock_free_thread_cbs () at libevent/test/regress_bufferevent.c:279
  #11 0x0000000000452621 in free_lock_unlock_profiler (data=0x8020170a0) at libevent/test/regress_bufferevent.c:317
  #12 0x000000000044bc8f in test_bufferevent_pair_release_lock (arg=0x8020170a0) at libevent/test/regress_bufferevent.c:334
  #13 0x00000000004b2288 in testcase_run_bare_ (testcase=0x737660) at libevent/test/tinytest.c:105
  #14 0x00000000004b1e72 in testcase_run_one (group=0x738c90, testcase=0x737660) at libevent/test/tinytest.c:252
  #15 0x00000000004b2930 in tinytest_main (c=3, v=0x7fffffffead0, groups=0x738c20) at libevent/test/tinytest.c:434
  #16 0x00000000004982fe in main (argc=3, argv=0x7fffffffead0) at libevent/test/regress_main.c:459
  (gdb) f 4
  #4  0x00000000004d9954 in evthread_debug_lock_mark_unlocked (mode=0, lock=0x802017060) at libevent/evthread.c:277
  277                     EVUTIL_ASSERT(lock->held_by == me);
  Current language:  auto; currently minimal
  (gdb) p lock
  $1 = (struct debug_lock *) 0x802017060
  (gdb) p lock->held_by
  $2 = 0
  (gdb) p me
  $3 = 34393318400
2015-09-10 12:39:20 +03:00
Azat Khuzhin
a0f308da99 test/regress_be: bufferevent_enable() shouldn't call eventcb by it's own
It must enter the event loop regardless BEV_OPT_DEFER_CALLBACKS, to avoid
potential errors with subsequent connect(), you will find more info in #43,
since this is a regression for it.
2015-09-10 11:19:08 +03:00
Azat Khuzhin
37dc9e0eca test/regress_be: introduce fake_listener_create() 2015-09-10 11:18:34 +03:00
Azat Khuzhin
6f6fa0d28a test/regress_http: cover evhttp_request_own() 2015-09-09 19:15:18 +03:00
Azat Khuzhin
3d15aeb4fd test/regress_http: cover write during read
This is the regression for evhttp_write_buffer() where we reset readcb to avoid
illegal state:
http/write_during_read: [err] evhttp_read_cb: illegal connection state 7

If you will comment that this test will fail.
2015-09-09 18:06:37 +03:00
Azat Khuzhin
4be6c70bb0 test/regress_http: verify that closecb will be called without multiple write
And now this works incorrect, i.e. http layer will not detect EOF until another
write.

Reported-in: #78
2015-09-08 16:43:05 +03:00
Azat Khuzhin
cf2cf2a01a test: run regress with EVENT_DEBUG_MODE=1 and without
This could show some bugs like "event_assign called on an already added event",
and some others that debugging mode could track.
2015-09-02 19:38:30 +03:00
Azat Khuzhin
6ea66554df test/regress: fix bufferevent_pair_release_lock with EVENT_DEBUG_MODE
Before this patch you will see next error:
$ EVENT_DEBUG_MODE= regress --no-fork bufferevent/bufferevent_pair_release_lock
bufferevent/bufferevent_pair_release_lock: [err] evthread initialization must be called BEFORE anything else!
2015-09-02 19:37:00 +03:00
Azat Khuzhin
cdafdf017e test/regress_ssl: check events fd/pending after timeout triggered
In this case client can't connect to server, and this bring to the front some
bugs with assigning on already added events (because of ```fd_is_set``` stuff),
for more info see #258, since this is the reproducible for it.
2015-09-02 19:15:27 +03:00