From 20389549f14fe6448a1116a04073489d2860c192 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 24 May 2006 14:19:34 +0000 Subject: r15862: add a LOCAL-EVENT torture test - it currently tests the standard events code - with epoll enabled and disabled metze (This used to be commit ce5fd2293d5ce1f6a54048bc5662706943c98eb5) --- source4/script/tests/test_local.sh | 5 +- source4/torture/local/config.mk | 3 +- source4/torture/local/event.c | 126 +++++++++++++++++++++++++++++++++++++ source4/torture/torture.c | 1 + 4 files changed, 133 insertions(+), 2 deletions(-) create mode 100644 source4/torture/local/event.c diff --git a/source4/script/tests/test_local.sh b/source4/script/tests/test_local.sh index 3d577152bc..d7081b6386 100755 --- a/source4/script/tests/test_local.sh +++ b/source4/script/tests/test_local.sh @@ -1,6 +1,9 @@ #!/bin/sh -local_tests="LOCAL-NTLMSSP LOCAL-TALLOC LOCAL-MESSAGING LOCAL-IRPC LOCAL-BINDING LOCAL-IDTREE LOCAL-SOCKET LOCAL-PAC LOCAL-STRLIST LOCAL-SDDL LOCAL-NDR" +local_tests="LOCAL-NTLMSSP LOCAL-TALLOC LOCAL-MESSAGING LOCAL-IRPC" +local_tests="$local_tests LOCAL-BINDING LOCAL-IDTREE LOCAL-SOCKET" +local_tests="$local_tests LOCAL-PAC LOCAL-STRLIST LOCAL-SDDL LOCAL-NDR" +local_tests="$local_tests LOCAL-EVENT" if [ $# -lt 0 ]; then cat < 5) { + printf("got more than fde 5 events - bug!\n"); + talloc_free(fde); + fde = NULL; + return; + } + + event_set_fd_flags(fde, 0); + fde_count++; +} + +static void timed_handler(struct event_context *ev_ctx, struct timed_event *te, + struct timeval tval, void *private) +{ + printf("timed_handler called[%d]\n", te_count); + if (te_count > 2) { + close(write_fd); + write_fd = -1; + } + if (te_count > 5) { + printf("remove fd event!\n"); + talloc_free(fde); + fde = NULL; + return; + } + te_count++; + event_add_timed(ev_ctx, ev_ctx, timeval_current_ofs(0,500), timed_handler, private); +} + + +static BOOL test_event_context(struct event_context *ev_ctx, const char *comment) +{ + int fd[2] = { -1, -1 }; + + printf("Testing '%s'\n", comment); + + /* reset globals */ + write_fd = -1; + read_fd = -1; + fde = NULL; + te_count = 0; + fde_count = 0; + ret = True; + + /* create a pipe */ + pipe(fd); + read_fd = fd[0]; + write_fd = fd[1]; + + fde = event_add_fd(ev_ctx, ev_ctx, read_fd, EVENT_FD_READ, fde_handler, &read_fd); + + event_add_timed(ev_ctx, ev_ctx, timeval_current_ofs(0,500), timed_handler, fde); + + event_loop_wait(ev_ctx); + + close(read_fd); + close(write_fd); + + return ret; +} + +BOOL torture_local_event(struct torture_context *torture) +{ + struct event_context *ev_ctx; + BOOL try_epoll; + BOOL retv = True; + + try_epoll = False; + ev_ctx = event_context_init_ops(NULL, event_standard_get_ops(), &try_epoll); + retv &= test_event_context(ev_ctx, "standard with select"); + talloc_free(ev_ctx); + + try_epoll = True; + ev_ctx = event_context_init_ops(NULL, event_standard_get_ops(), &try_epoll); + retv &= test_event_context(ev_ctx, "standard try epool (or select)"); + talloc_free(ev_ctx); + + return retv; +} diff --git a/source4/torture/torture.c b/source4/torture/torture.c index 706bb43e2a..b7cb74480c 100644 --- a/source4/torture/torture.c +++ b/source4/torture/torture.c @@ -652,6 +652,7 @@ static struct { {"LOCAL-RESOLVE", torture_local_resolve, 0}, {"LOCAL-SDDL", torture_local_sddl, 0}, {"LOCAL-NDR", torture_local_ndr, 0}, + {"LOCAL-EVENT", torture_local_event, 0}, /* ldap testers */ {"LDAP-BASIC", torture_ldap_basic, 0}, -- cgit