diff options
author | pquerna <pquerna@13f79535-47bb-0310-9956-ffa450edef68> | 2006-03-31 05:35:52 +0000 |
---|---|---|
committer | pquerna <pquerna@13f79535-47bb-0310-9956-ffa450edef68> | 2006-03-31 05:35:52 +0000 |
commit | 78b143cc38cda268ccfc3808540b3919cb9157d0 (patch) | |
tree | 0ed1a1647b968bb1e3ca0c2a3f54cdf3be625f76 | |
parent | cf86f9bbe44fbf0eb1f4fd6801adc568c8043ac4 (diff) | |
download | libapr-pollcb-dev.tar.gz |
Add a test for a timeout, but with a socket recently read from inside the pollcb.pollcb-dev
git-svn-id: http://svn.apache.org/repos/asf/apr/apr/branches/pollcb-dev@390332 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | test/testpoll.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/testpoll.c b/test/testpoll.c index 4b7315302..f0ef0297b 100644 --- a/test/testpoll.c +++ b/test/testpoll.c @@ -611,6 +611,33 @@ static void timeout_pollcb(abts_case *tc, void *data) ABTS_INT_EQUAL(tc, 0, pcb.count); } +static void timeout_pollin_pollcb(abts_case *tc, void *data) +{ + apr_status_t rv; + pollcb_baton_t pcb; + apr_pollfd_t socket_pollfd; + + recv_msg(s, 0, p, tc); + + ABTS_PTR_NOTNULL(tc, s[0]); + socket_pollfd.desc_type = APR_POLL_SOCKET; + socket_pollfd.reqevents = APR_POLLIN; + socket_pollfd.desc.s = s[0]; + socket_pollfd.client_data = s[0]; + rv = apr_pollcb_add(pollcb, &socket_pollfd); + ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); + + pcb.count = 0; + pcb.tc = tc; + + rv = apr_pollcb_poll(pollcb, 1, trigger_pollcb_cb, &pcb); + ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv)); + ABTS_INT_EQUAL(tc, 0, pcb.count); + + rv = apr_pollcb_remove(pollcb, &socket_pollfd); + ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); +} + abts_suite *testpoll(abts_suite *suite) { suite = ADD_SUITE(suite) @@ -649,6 +676,7 @@ abts_suite *testpoll(abts_suite *suite) abts_run_test(suite, setup_pollcb, NULL); abts_run_test(suite, trigger_pollcb, NULL); abts_run_test(suite, timeout_pollcb, NULL); + abts_run_test(suite, timeout_pollin_pollcb, NULL); abts_run_test(suite, close_all_sockets, NULL); return suite; |