123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434 |
- #define CURL_NO_OLDIES
- #include "curl_setup.h"
- #include <curl/curl.h>
- #ifdef HAVE_SYS_SELECT_H
- #include <sys/select.h>
- #endif
- #ifdef TPF
- # include "select.h"
- #endif
- #include "curl_printf.h"
- #define test_setopt(A,B,C) \
- if((res = curl_easy_setopt((A), (B), (C))) != CURLE_OK) goto test_cleanup
- #define test_multi_setopt(A,B,C) \
- if((res = curl_multi_setopt((A), (B), (C))) != CURLE_OK) goto test_cleanup
- extern char *libtest_arg2
- extern char *libtest_arg3
- extern int test_argc
- extern char **test_argv
- extern struct timeval tv_test_start
- extern int select_wrapper(int nfds, fd_set *rd, fd_set *wr, fd_set *exc,
- struct timeval *tv)
- extern void wait_ms(int ms)
- extern int test(char *URL)
- individual libXXX.c file */
- extern char *hexdump(const unsigned char *buffer, size_t len)
- #ifdef UNITTESTS
- extern int unitfail
- #endif
- #define TEST_ERR_MAJOR_BAD 126
- #define TEST_ERR_RUNS_FOREVER 125
- #define TEST_ERR_EASY_INIT 124
- #define TEST_ERR_MULTI_INIT 123
- #define TEST_ERR_NUM_HANDLES 122
- #define TEST_ERR_SELECT 121
- #define TEST_ERR_SUCCESS 120
- #define TEST_ERR_FAILURE 119
- #define TEST_ERR_USAGE 118
- #define TEST_ERR_FOPEN 117
- #define TEST_ERR_FSTAT 116
- #define TEST_ERR_BAD_TIMEOUT 115
- #define exe_easy_init(A,Y,Z) do { \
- if(((A) = curl_easy_init()) == NULL) { \
- fprintf(stderr, "%s:%d curl_easy_init() failed\n", (Y), (Z))
- res = TEST_ERR_EASY_INIT
- } \
- } WHILE_FALSE
- #define res_easy_init(A) \
- exe_easy_init((A), (__FILE__), (__LINE__))
- #define chk_easy_init(A,Y,Z) do { \
- exe_easy_init((A), (Y), (Z))
- if(res) \
- goto test_cleanup
- } WHILE_FALSE
- #define easy_init(A) \
- chk_easy_init((A), (__FILE__), (__LINE__))
- #define exe_multi_init(A,Y,Z) do { \
- if(((A) = curl_multi_init()) == NULL) { \
- fprintf(stderr, "%s:%d curl_multi_init() failed\n", (Y), (Z))
- res = TEST_ERR_MULTI_INIT
- } \
- } WHILE_FALSE
- #define res_multi_init(A) \
- exe_multi_init((A), (__FILE__), (__LINE__))
- #define chk_multi_init(A,Y,Z) do { \
- exe_multi_init((A), (Y), (Z))
- if(res) \
- goto test_cleanup
- } WHILE_FALSE
- #define multi_init(A) \
- chk_multi_init((A), (__FILE__), (__LINE__))
- #define exe_easy_setopt(A,B,C,Y,Z) do { \
- CURLcode ec
- if((ec = curl_easy_setopt((A), (B), (C))) != CURLE_OK) { \
- fprintf(stderr, "%s:%d curl_easy_setopt() failed, " \
- "with code %d (%s)\n", \
- (Y), (Z), (int)ec, curl_easy_strerror(ec))
- res = (int)ec
- } \
- } WHILE_FALSE
- #define res_easy_setopt(A, B, C) \
- exe_easy_setopt((A), (B), (C), (__FILE__), (__LINE__))
- #define chk_easy_setopt(A, B, C, Y, Z) do { \
- exe_easy_setopt((A), (B), (C), (Y), (Z))
- if(res) \
- goto test_cleanup
- } WHILE_FALSE
- #define easy_setopt(A, B, C) \
- chk_easy_setopt((A), (B), (C), (__FILE__), (__LINE__))
- #define exe_multi_setopt(A, B, C, Y, Z) do { \
- CURLMcode ec
- if((ec = curl_multi_setopt((A), (B), (C))) != CURLM_OK) { \
- fprintf(stderr, "%s:%d curl_multi_setopt() failed, " \
- "with code %d (%s)\n", \
- (Y), (Z), (int)ec, curl_multi_strerror(ec))
- res = (int)ec
- } \
- } WHILE_FALSE
- #define res_multi_setopt(A,B,C) \
- exe_multi_setopt((A), (B), (C), (__FILE__), (__LINE__))
- #define chk_multi_setopt(A,B,C,Y,Z) do { \
- exe_multi_setopt((A), (B), (C), (Y), (Z))
- if(res) \
- goto test_cleanup
- } WHILE_FALSE
- #define multi_setopt(A,B,C) \
- chk_multi_setopt((A), (B), (C), (__FILE__), (__LINE__))
- #define exe_multi_add_handle(A,B,Y,Z) do { \
- CURLMcode ec
- if((ec = curl_multi_add_handle((A), (B))) != CURLM_OK) { \
- fprintf(stderr, "%s:%d curl_multi_add_handle() failed, " \
- "with code %d (%s)\n", \
- (Y), (Z), (int)ec, curl_multi_strerror(ec))
- res = (int)ec
- } \
- } WHILE_FALSE
- #define res_multi_add_handle(A, B) \
- exe_multi_add_handle((A), (B), (__FILE__), (__LINE__))
- #define chk_multi_add_handle(A, B, Y, Z) do { \
- exe_multi_add_handle((A), (B), (Y), (Z))
- if(res) \
- goto test_cleanup
- } WHILE_FALSE
- #define multi_add_handle(A, B) \
- chk_multi_add_handle((A), (B), (__FILE__), (__LINE__))
- #define exe_multi_remove_handle(A,B,Y,Z) do { \
- CURLMcode ec
- if((ec = curl_multi_remove_handle((A), (B))) != CURLM_OK) { \
- fprintf(stderr, "%s:%d curl_multi_remove_handle() failed, " \
- "with code %d (%s)\n", \
- (Y), (Z), (int)ec, curl_multi_strerror(ec))
- res = (int)ec
- } \
- } WHILE_FALSE
- #define res_multi_remove_handle(A, B) \
- exe_multi_remove_handle((A), (B), (__FILE__), (__LINE__))
- #define chk_multi_remove_handle(A, B, Y, Z) do { \
- exe_multi_remove_handle((A), (B), (Y), (Z))
- if(res) \
- goto test_cleanup
- } WHILE_FALSE
- #define multi_remove_handle(A, B) \
- chk_multi_remove_handle((A), (B), (__FILE__), (__LINE__))
- #define exe_multi_perform(A,B,Y,Z) do { \
- CURLMcode ec
- if((ec = curl_multi_perform((A), (B))) != CURLM_OK) { \
- fprintf(stderr, "%s:%d curl_multi_perform() failed, " \
- "with code %d (%s)\n", \
- (Y), (Z), (int)ec, curl_multi_strerror(ec))
- res = (int)ec
- } \
- else if(*((B)) < 0) { \
- fprintf(stderr, "%s:%d curl_multi_perform() succeeded, " \
- "but returned invalid running_handles value (%d)\n", \
- (Y), (Z), (int)*((B)))
- res = TEST_ERR_NUM_HANDLES
- } \
- } WHILE_FALSE
- #define res_multi_perform(A, B) \
- exe_multi_perform((A), (B), (__FILE__), (__LINE__))
- #define chk_multi_perform(A, B, Y, Z) do { \
- exe_multi_perform((A), (B), (Y), (Z))
- if(res) \
- goto test_cleanup
- } WHILE_FALSE
- #define multi_perform(A,B) \
- chk_multi_perform((A), (B), (__FILE__), (__LINE__))
- #define exe_multi_fdset(A, B, C, D, E, Y, Z) do { \
- CURLMcode ec
- if((ec = curl_multi_fdset((A), (B), (C), (D), (E))) != CURLM_OK) { \
- fprintf(stderr, "%s:%d curl_multi_fdset() failed, " \
- "with code %d (%s)\n", \
- (Y), (Z), (int)ec, curl_multi_strerror(ec))
- res = (int)ec
- } \
- else if(*((E)) < -1) { \
- fprintf(stderr, "%s:%d curl_multi_fdset() succeeded, " \
- "but returned invalid max_fd value (%d)\n", \
- (Y), (Z), (int)*((E)))
- res = TEST_ERR_NUM_HANDLES
- } \
- } WHILE_FALSE
- #define res_multi_fdset(A, B, C, D, E) \
- exe_multi_fdset((A), (B), (C), (D), (E), (__FILE__), (__LINE__))
- #define chk_multi_fdset(A, B, C, D, E, Y, Z) do { \
- exe_multi_fdset((A), (B), (C), (D), (E), (Y), (Z))
- if(res) \
- goto test_cleanup
- } WHILE_FALSE
- #define multi_fdset(A, B, C, D, E) \
- chk_multi_fdset((A), (B), (C), (D), (E), (__FILE__), (__LINE__))
- #define exe_multi_timeout(A,B,Y,Z) do { \
- CURLMcode ec
- if((ec = curl_multi_timeout((A), (B))) != CURLM_OK) { \
- fprintf(stderr, "%s:%d curl_multi_timeout() failed, " \
- "with code %d (%s)\n", \
- (Y), (Z), (int)ec, curl_multi_strerror(ec))
- res = (int)ec
- } \
- else if(*((B)) < -1L) { \
- fprintf(stderr, "%s:%d curl_multi_timeout() succeeded, " \
- "but returned invalid timeout value (%ld)\n", \
- (Y), (Z), (long)*((B)))
- res = TEST_ERR_BAD_TIMEOUT
- } \
- } WHILE_FALSE
- #define res_multi_timeout(A, B) \
- exe_multi_timeout((A), (B), (__FILE__), (__LINE__))
- #define chk_multi_timeout(A, B, Y, Z) do { \
- exe_multi_timeout((A), (B), (Y), (Z))
- if(res) \
- goto test_cleanup
- } WHILE_FALSE
- #define multi_timeout(A, B) \
- chk_multi_timeout((A), (B), (__FILE__), (__LINE__))
- #define exe_select_test(A, B, C, D, E, Y, Z) do { \
- int ec
- if(select_wrapper((A), (B), (C), (D), (E)) == -1) { \
- ec = SOCKERRNO
- fprintf(stderr, "%s:%d select() failed, with " \
- "errno %d (%s)\n", \
- (Y), (Z), ec, strerror(ec))
- res = TEST_ERR_SELECT
- } \
- } WHILE_FALSE
- #define res_select_test(A, B, C, D, E) \
- exe_select_test((A), (B), (C), (D), (E), (__FILE__), (__LINE__))
- #define chk_select_test(A, B, C, D, E, Y, Z) do { \
- exe_select_test((A), (B), (C), (D), (E), (Y), (Z))
- if(res) \
- goto test_cleanup
- } WHILE_FALSE
- #define select_test(A, B, C, D, E) \
- chk_select_test((A), (B), (C), (D), (E), (__FILE__), (__LINE__))
- #define start_test_timing() do { \
- tv_test_start = tutil_tvnow()
- } WHILE_FALSE
- #define exe_test_timedout(Y,Z) do { \
- if(tutil_tvdiff(tutil_tvnow(), tv_test_start) > TEST_HANG_TIMEOUT) { \
- fprintf(stderr, "%s:%d ABORTING TEST, since it seems " \
- "that it would have run forever.\n", (Y), (Z))
- res = TEST_ERR_RUNS_FOREVER
- } \
- } WHILE_FALSE
- #define res_test_timedout() \
- exe_test_timedout((__FILE__), (__LINE__))
- #define chk_test_timedout(Y, Z) do { \
- exe_test_timedout(Y, Z)
- if(res) \
- goto test_cleanup
- } WHILE_FALSE
- #define abort_on_test_timeout() \
- chk_test_timedout((__FILE__), (__LINE__))
- #define exe_global_init(A,Y,Z) do { \
- CURLcode ec
- if((ec = curl_global_init((A))) != CURLE_OK) { \
- fprintf(stderr, "%s:%d curl_global_init() failed, " \
- "with code %d (%s)\n", \
- (Y), (Z), (int)ec, curl_easy_strerror(ec))
- res = (int)ec
- } \
- } WHILE_FALSE
- #define res_global_init(A) \
- exe_global_init((A), (__FILE__), (__LINE__))
- #define chk_global_init(A, Y, Z) do { \
- exe_global_init((A), (Y), (Z))
- if(res) \
- return res
- } WHILE_FALSE
- #define global_init(A) \
- chk_global_init((A), (__FILE__), (__LINE__))
|