From be5cc378c8f49c135ab7cc0d7378dc8b035a20be Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 23 Nov 2004 09:50:16 +0000 Subject: introducing the client/precheck concept to allow test 518 to *only* run when it actually can run and test the FD_SETSIZE stuff it is meant to test --- tests/libtest/lib518.c | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) (limited to 'tests/libtest') diff --git a/tests/libtest/lib518.c b/tests/libtest/lib518.c index 86ee23ad7..4be7b7f85 100644 --- a/tests/libtest/lib518.c +++ b/tests/libtest/lib518.c @@ -39,24 +39,20 @@ #endif #if defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT) -int test(char *URL) + +static int rlimit(void) { struct rlimit rl; - int fd[NUM_OPEN]; - int i; - CURLcode res; - CURL *curl; - /* get open file limits */ if (getrlimit(RLIMIT_NOFILE, &rl) == -1) { fprintf(stderr, "warning: getrlimit: failed to get RLIMIT_NOFILE\n"); - goto skip_open; + return -1; } /* check that hard limit is high enough */ if (rl.rlim_max < NUM_NEEDED) { fprintf(stderr, "warning: RLIMIT_NOFILE hard limit is too low\n"); - goto skip_open; + return -1; } /* increase soft limit if needed */ @@ -64,10 +60,32 @@ int test(char *URL) rl.rlim_cur = NUM_NEEDED; if (setrlimit(RLIMIT_NOFILE, &rl) == -1) { fprintf(stderr, "warning: setrlimit: failed to set RLIMIT_NOFILE\n"); - goto skip_open; + return -1; + } + } + return 0; +} + +int test(char *URL) +{ + int fd[NUM_OPEN]; + int i; + CURLcode res; + CURL *curl; + + if(!strcmp(URL, "check")) { + /* used by the test script to ask if we can run this test or not */ + if(rlimit()) { + printf("rlimit problems\n"); + return 1; } + return 0; /* sure, run this! */ } + if(rlimit()) + /* failure */ + return 100; + /* open a dummy descriptor */ fd[0] = open(DEV_NULL, O_RDONLY); if (fd[0] == -1) { @@ -86,8 +104,6 @@ int test(char *URL) } } -skip_open: - curl = curl_easy_init(); curl_easy_setopt(curl, CURLOPT_URL, URL); curl_easy_setopt(curl, CURLOPT_HEADER, TRUE); @@ -104,7 +120,7 @@ skip_open: int test(char *URL) { (void)URL; - fprintf(stderr, "system lacks necessary system function(s)"); + printf("system lacks necessary system function(s)"); return 1; } #endif -- cgit v1.2.3