⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testpoll.c

📁 linux subdivision ying gai ke yi le ba
💻 C
📖 第 1 页 / 共 2 页
字号:
    recv_msg(s, LARGE_NUM_SOCKETS - 1, p, tc);    rv = apr_poll(pollarray_large, LARGE_NUM_SOCKETS, &lrv,                   2 * APR_USEC_PER_SEC);    CuAssertIntEquals(tc, 1, APR_STATUS_IS_TIMEUP(rv));    for (i = 0; i < LARGE_NUM_SOCKETS; i++) {        check_sockets(pollarray_large, s, i, 0, tc);    }}static void setup_pollset(CuTest *tc){    apr_status_t rv;    rv = apr_pollset_create(&pollset, LARGE_NUM_SOCKETS, p, 0);    CuAssertIntEquals(tc, APR_SUCCESS, rv);}static void add_sockets_pollset(CuTest *tc){    apr_status_t rv;    int i;    for (i = 0; i < LARGE_NUM_SOCKETS;i++){        apr_pollfd_t socket_pollfd;        CuAssertPtrNotNull(tc, s[i]);        socket_pollfd.desc_type = APR_POLL_SOCKET;        socket_pollfd.reqevents = APR_POLLIN;        socket_pollfd.desc.s = s[i];        socket_pollfd.client_data = s[i];        rv = apr_pollset_add(pollset, &socket_pollfd);        CuAssertIntEquals(tc, APR_SUCCESS, rv);    }}static void nomessage_pollset(CuTest *tc){    apr_status_t rv;    int lrv;    const apr_pollfd_t *descs = NULL;    rv = apr_pollset_poll(pollset, 0, &lrv, &descs);    CuAssertIntEquals(tc, 1, APR_STATUS_IS_TIMEUP(rv));    CuAssertIntEquals(tc, 0, lrv);    CuAssertPtrEquals(tc, NULL, descs);}static void send0_pollset(CuTest *tc){    apr_status_t rv;    const apr_pollfd_t *descs = NULL;    int num;        send_msg(s, sa, 0, tc);    rv = apr_pollset_poll(pollset, 0, &num, &descs);    CuAssertIntEquals(tc, APR_SUCCESS, rv);    CuAssertIntEquals(tc, 1, num);    CuAssertPtrNotNull(tc, descs);    CuAssertPtrEquals(tc, s[0], descs[0].desc.s);    CuAssertPtrEquals(tc, s[0],  descs[0].client_data);}static void recv0_pollset(CuTest *tc){    apr_status_t rv;    int lrv;    const apr_pollfd_t *descs = NULL;    recv_msg(s, 0, p, tc);    rv = apr_pollset_poll(pollset, 0, &lrv, &descs);    CuAssertIntEquals(tc, 1, APR_STATUS_IS_TIMEUP(rv));    CuAssertIntEquals(tc, 0, lrv);    CuAssertPtrEquals(tc, NULL, descs);}static void send_middle_pollset(CuTest *tc){    apr_status_t rv;    const apr_pollfd_t *descs = NULL;    int num;        send_msg(s, sa, 2, tc);    send_msg(s, sa, 5, tc);    rv = apr_pollset_poll(pollset, 0, &num, &descs);    CuAssertIntEquals(tc, APR_SUCCESS, rv);    CuAssertIntEquals(tc, 2, num);    CuAssertPtrNotNull(tc, descs);    CuAssert(tc, "Incorrect socket in result set",            ((descs[0].desc.s == s[2]) && (descs[1].desc.s == s[5])) ||            ((descs[0].desc.s == s[5]) && (descs[1].desc.s == s[2])));}static void clear_middle_pollset(CuTest *tc){    apr_status_t rv;    int lrv;    const apr_pollfd_t *descs = NULL;    recv_msg(s, 2, p, tc);    recv_msg(s, 5, p, tc);    rv = apr_pollset_poll(pollset, 0, &lrv, &descs);    CuAssertIntEquals(tc, 1, APR_STATUS_IS_TIMEUP(rv));    CuAssertIntEquals(tc, 0, lrv);    CuAssertPtrEquals(tc, NULL, descs);}static void send_last_pollset(CuTest *tc){    apr_status_t rv;    const apr_pollfd_t *descs = NULL;    int num;        send_msg(s, sa, LARGE_NUM_SOCKETS - 1, tc);    rv = apr_pollset_poll(pollset, 0, &num, &descs);    CuAssertIntEquals(tc, APR_SUCCESS, rv);    CuAssertIntEquals(tc, 1, num);    CuAssertPtrNotNull(tc, descs);    CuAssertPtrEquals(tc, s[LARGE_NUM_SOCKETS - 1], descs[0].desc.s);    CuAssertPtrEquals(tc, s[LARGE_NUM_SOCKETS - 1],  descs[0].client_data);}static void clear_last_pollset(CuTest *tc){    apr_status_t rv;    int lrv;    const apr_pollfd_t *descs = NULL;    recv_msg(s, LARGE_NUM_SOCKETS - 1, p, tc);    rv = apr_pollset_poll(pollset, 0, &lrv, &descs);    CuAssertIntEquals(tc, 1, APR_STATUS_IS_TIMEUP(rv));    CuAssertIntEquals(tc, 0, lrv);    CuAssertPtrEquals(tc, NULL, descs);}static void close_all_sockets(CuTest *tc){    apr_status_t rv;    int i;    for (i = 0; i < LARGE_NUM_SOCKETS; i++){        rv = apr_socket_close(s[i]);        CuAssertIntEquals(tc, APR_SUCCESS, rv);    }}static void pollset_remove(CuTest *tc){    apr_status_t rv;    apr_pollset_t *pollset;    const apr_pollfd_t *hot_files;    apr_pollfd_t pfd;    apr_int32_t num;    rv = apr_pollset_create(&pollset, 5, p, 0);    CuAssertIntEquals(tc, APR_SUCCESS, rv);    pfd.p = p;    pfd.desc_type = APR_POLL_SOCKET;    pfd.reqevents = APR_POLLOUT;    pfd.desc.s = s[0];    pfd.client_data = (void *)1;    rv = apr_pollset_add(pollset, &pfd);    CuAssertIntEquals(tc, APR_SUCCESS, rv);    pfd.desc.s = s[1];    pfd.client_data = (void *)2;    rv = apr_pollset_add(pollset, &pfd);    CuAssertIntEquals(tc, APR_SUCCESS, rv);    pfd.desc.s = s[2];    pfd.client_data = (void *)3;    rv = apr_pollset_add(pollset, &pfd);    CuAssertIntEquals(tc, APR_SUCCESS, rv);    pfd.desc.s = s[1];    pfd.client_data = (void *)4;    rv = apr_pollset_add(pollset, &pfd);    CuAssertIntEquals(tc, APR_SUCCESS, rv);    pfd.desc.s = s[3];    pfd.client_data = (void *)5;    rv = apr_pollset_add(pollset, &pfd);    CuAssertIntEquals(tc, APR_SUCCESS, rv);    rv = apr_pollset_poll(pollset, 1000, &num, &hot_files);    CuAssertIntEquals(tc, APR_SUCCESS, rv);    CuAssertIntEquals(tc, 5, num);    /* now remove the pollset elements referring to desc s[1] */    pfd.desc.s = s[1];    pfd.client_data = (void *)999; /* not used on this call */    rv = apr_pollset_remove(pollset, &pfd);    CuAssertIntEquals(tc, APR_SUCCESS, rv);    /* this time only three should match */    rv = apr_pollset_poll(pollset, 1000, &num, &hot_files);    CuAssertIntEquals(tc, APR_SUCCESS, rv);    CuAssertIntEquals(tc, 3, num);    CuAssertPtrEquals(tc, (void *)1, hot_files[0].client_data);    CuAssertPtrEquals(tc, s[0], hot_files[0].desc.s);    CuAssertPtrEquals(tc, (void *)3, hot_files[1].client_data);    CuAssertPtrEquals(tc, s[2], hot_files[1].desc.s);    CuAssertPtrEquals(tc, (void *)5, hot_files[2].client_data);    CuAssertPtrEquals(tc, s[3], hot_files[2].desc.s);        /* now remove the pollset elements referring to desc s[2] */    pfd.desc.s = s[2];    pfd.client_data = (void *)999; /* not used on this call */    rv = apr_pollset_remove(pollset, &pfd);    CuAssertIntEquals(tc, APR_SUCCESS, rv);    /* this time only two should match */    rv = apr_pollset_poll(pollset, 1000, &num, &hot_files);    CuAssertIntEquals(tc, APR_SUCCESS, rv);    CuAssertIntEquals(tc, 2, num);    CuAssertPtrEquals(tc, (void *)1, hot_files[0].client_data);    CuAssertPtrEquals(tc, s[0], hot_files[0].desc.s);    CuAssertPtrEquals(tc, (void *)5, hot_files[1].client_data);    CuAssertPtrEquals(tc, s[3], hot_files[1].desc.s);}CuSuite *testpoll(void){    CuSuite *suite = CuSuiteNew("Poll");    SUITE_ADD_TEST(suite, create_all_sockets);    SUITE_ADD_TEST(suite, setup_small_poll);    SUITE_ADD_TEST(suite, setup_large_poll);    SUITE_ADD_TEST(suite, nomessage);    SUITE_ADD_TEST(suite, send_2);    SUITE_ADD_TEST(suite, recv_2_send_1);    SUITE_ADD_TEST(suite, send_2_signaled_1);    SUITE_ADD_TEST(suite, recv_1_send_0);    SUITE_ADD_TEST(suite, clear_all_signalled);    SUITE_ADD_TEST(suite, send_large_pollarray);    SUITE_ADD_TEST(suite, recv_large_pollarray);    SUITE_ADD_TEST(suite, setup_pollset);    SUITE_ADD_TEST(suite, add_sockets_pollset);    SUITE_ADD_TEST(suite, nomessage_pollset);    SUITE_ADD_TEST(suite, send0_pollset);    SUITE_ADD_TEST(suite, recv0_pollset);    SUITE_ADD_TEST(suite, send_middle_pollset);    SUITE_ADD_TEST(suite, clear_middle_pollset);    SUITE_ADD_TEST(suite, send_last_pollset);    SUITE_ADD_TEST(suite, clear_last_pollset);    SUITE_ADD_TEST(suite, pollset_remove);        SUITE_ADD_TEST(suite, close_all_sockets);    return suite;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -