summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpquerna <pquerna@13f79535-47bb-0310-9956-ffa450edef68>2006-03-31 05:35:52 +0000
committerpquerna <pquerna@13f79535-47bb-0310-9956-ffa450edef68>2006-03-31 05:35:52 +0000
commit78b143cc38cda268ccfc3808540b3919cb9157d0 (patch)
tree0ed1a1647b968bb1e3ca0c2a3f54cdf3be625f76
parentcf86f9bbe44fbf0eb1f4fd6801adc568c8043ac4 (diff)
downloadlibapr-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.c28
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;