mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-10 13:04:23 -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 http_testcases[];
|
||||||
extern struct testcase_t dns_testcases[];
|
extern struct testcase_t dns_testcases[];
|
||||||
extern struct testcase_t rpc_testcases[];
|
extern struct testcase_t rpc_testcases[];
|
||||||
|
extern struct testcase_t edgetriggered_testcases[];
|
||||||
|
|
||||||
int legacy_main(void);
|
int legacy_main(void);
|
||||||
|
|
||||||
void regress_pthread(void);
|
void regress_pthread(void);
|
||||||
void regress_zlib(void);
|
void regress_zlib(void);
|
||||||
|
|
||||||
void test_edgetriggered(void);
|
|
||||||
|
|
||||||
/* Helpers to wrap old testcases */
|
/* Helpers to wrap old testcases */
|
||||||
extern int pair[2];
|
extern int pair[2];
|
||||||
extern int test_ok;
|
extern int test_ok;
|
||||||
|
@ -54,19 +54,18 @@ read_cb(int fd, short event, void *arg)
|
|||||||
#define LOCAL_SOCKETPAIR_AF AF_UNIX
|
#define LOCAL_SOCKETPAIR_AF AF_UNIX
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void
|
static void
|
||||||
test_edgetriggered(void)
|
test_edgetriggered(void *et)
|
||||||
{
|
{
|
||||||
struct event *ev;
|
struct event *ev = NULL;
|
||||||
struct event_base *base;
|
struct event_base *base = NULL;
|
||||||
const char *test = "test string";
|
const char *test = "test string";
|
||||||
evutil_socket_t pair[2];
|
evutil_socket_t pair[2] = {-1,-1};
|
||||||
int supports_et;
|
int supports_et;
|
||||||
int success;
|
int success;
|
||||||
|
|
||||||
if (evutil_socketpair(LOCAL_SOCKETPAIR_AF, SOCK_STREAM, 0, pair) == -1) {
|
if (evutil_socketpair(LOCAL_SOCKETPAIR_AF, SOCK_STREAM, 0, pair) == -1) {
|
||||||
perror("socketpair");
|
tt_fail_perror("socketpair");
|
||||||
exit(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
called = was_et = 0;
|
called = was_et = 0;
|
||||||
@ -83,8 +82,9 @@ test_edgetriggered(void)
|
|||||||
else
|
else
|
||||||
supports_et = 0;
|
supports_et = 0;
|
||||||
|
|
||||||
printf("Testing edge-triggered events with %sedge-triggered method %s: ",
|
TT_BLATHER(("Checking for edge-triggered events with %s, which should %s"
|
||||||
supports_et ? "" : "non-", event_base_get_method(base));
|
"support edge-triggering", event_base_get_method(base),
|
||||||
|
supports_et?"":"not "));
|
||||||
|
|
||||||
/* Initalize one event */
|
/* Initalize one event */
|
||||||
ev = event_new(base, pair[1], EV_READ|EV_ET|EV_PERSIST, read_cb, &ev);
|
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);
|
||||||
event_base_loop(base,EVLOOP_NONBLOCK|EVLOOP_ONCE);
|
event_base_loop(base,EVLOOP_NONBLOCK|EVLOOP_ONCE);
|
||||||
|
|
||||||
/* Clean up... */
|
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_del(ev);
|
||||||
event_free(ev);
|
event_free(ev);
|
||||||
|
}
|
||||||
|
if (base)
|
||||||
event_base_free(base);
|
event_base_free(base);
|
||||||
EVUTIL_CLOSESOCKET(pair[0]);
|
EVUTIL_CLOSESOCKET(pair[0]);
|
||||||
EVUTIL_CLOSESOCKET(pair[1]);
|
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[] = {
|
struct testgroup_t testgroups[] = {
|
||||||
{ "main/", legacy_testcases },
|
{ "main/", legacy_testcases },
|
||||||
|
{ "et/", edgetriggered_testcases },
|
||||||
{ "evbuffer/", evbuffer_testcases },
|
{ "evbuffer/", evbuffer_testcases },
|
||||||
{ "signal/", signal_testcases },
|
{ "signal/", signal_testcases },
|
||||||
{ "util/", util_testcases },
|
{ "util/", util_testcases },
|
||||||
|
Loading…
x
Reference in New Issue
Block a user