mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-08 11:53:00 -04:00
Enable the edge-triggered test again
svn:r1092
This commit is contained in:
parent
8d3a10f8f1
commit
2e3f0f682a
@ -41,14 +41,13 @@ extern struct testcase_t signal_testcases[];
|
||||
extern struct testcase_t http_testcases[];
|
||||
extern struct testcase_t dns_testcases[];
|
||||
extern struct testcase_t rpc_testcases[];
|
||||
extern struct testcase_t edgetriggered_testcases[];
|
||||
|
||||
int legacy_main(void);
|
||||
|
||||
void regress_pthread(void);
|
||||
void regress_zlib(void);
|
||||
|
||||
void test_edgetriggered(void);
|
||||
|
||||
/* Helpers to wrap old testcases */
|
||||
extern int pair[2];
|
||||
extern int test_ok;
|
||||
|
@ -54,19 +54,18 @@ read_cb(int fd, short event, void *arg)
|
||||
#define LOCAL_SOCKETPAIR_AF AF_UNIX
|
||||
#endif
|
||||
|
||||
void
|
||||
test_edgetriggered(void)
|
||||
static void
|
||||
test_edgetriggered(void *et)
|
||||
{
|
||||
struct event *ev;
|
||||
struct event_base *base;
|
||||
struct event *ev = NULL;
|
||||
struct event_base *base = NULL;
|
||||
const char *test = "test string";
|
||||
evutil_socket_t pair[2];
|
||||
evutil_socket_t pair[2] = {-1,-1};
|
||||
int supports_et;
|
||||
int success;
|
||||
|
||||
if (evutil_socketpair(LOCAL_SOCKETPAIR_AF, SOCK_STREAM, 0, pair) == -1) {
|
||||
perror("socketpair");
|
||||
exit(1);
|
||||
tt_fail_perror("socketpair");
|
||||
}
|
||||
|
||||
called = was_et = 0;
|
||||
@ -83,8 +82,9 @@ test_edgetriggered(void)
|
||||
else
|
||||
supports_et = 0;
|
||||
|
||||
printf("Testing edge-triggered events with %sedge-triggered method %s: ",
|
||||
supports_et ? "" : "non-", event_base_get_method(base));
|
||||
TT_BLATHER(("Checking for edge-triggered events with %s, which should %s"
|
||||
"support edge-triggering", event_base_get_method(base),
|
||||
supports_et?"":"not "));
|
||||
|
||||
/* Initalize one event */
|
||||
ev = event_new(base, pair[1], EV_READ|EV_ET|EV_PERSIST, read_cb, &ev);
|
||||
@ -101,23 +101,28 @@ test_edgetriggered(void)
|
||||
event_base_loop(base,EVLOOP_NONBLOCK|EVLOOP_ONCE);
|
||||
event_base_loop(base,EVLOOP_NONBLOCK|EVLOOP_ONCE);
|
||||
|
||||
/* Clean up... */
|
||||
event_del(ev);
|
||||
event_free(ev);
|
||||
event_base_free(base);
|
||||
if (supports_et) {
|
||||
tt_int_op(called, ==, 1);
|
||||
tt_assert(was_et);
|
||||
} else {
|
||||
tt_int_op(called, ==, 2);
|
||||
tt_assert(!was_et);
|
||||
success = (called == 2) && !was_et;
|
||||
|
||||
}
|
||||
|
||||
end:
|
||||
if (ev) {
|
||||
event_del(ev);
|
||||
event_free(ev);
|
||||
}
|
||||
if (base)
|
||||
event_base_free(base);
|
||||
EVUTIL_CLOSESOCKET(pair[0]);
|
||||
EVUTIL_CLOSESOCKET(pair[1]);
|
||||
|
||||
if (supports_et) {
|
||||
success = (called == 1) && was_et;
|
||||
} else {
|
||||
success = (called == 2) && !was_et;
|
||||
}
|
||||
|
||||
if (success) {
|
||||
puts("OK");
|
||||
} else {
|
||||
printf("FAILED (called=%d, was_et=%d)\n", called, was_et);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
struct testcase_t edgetriggered_testcases[] = {
|
||||
{ "et", test_edgetriggered, TT_FORK, NULL, NULL },
|
||||
END_OF_TESTCASES
|
||||
};
|
||||
|
@ -185,6 +185,7 @@ const struct testcase_setup_t legacy_setup = {
|
||||
|
||||
struct testgroup_t testgroups[] = {
|
||||
{ "main/", legacy_testcases },
|
||||
{ "et/", edgetriggered_testcases },
|
||||
{ "evbuffer/", evbuffer_testcases },
|
||||
{ "signal/", signal_testcases },
|
||||
{ "util/", util_testcases },
|
||||
|
Loading…
x
Reference in New Issue
Block a user