tests: break busy loops in tests 502, 555, and 573
This commit is contained in:
Родитель
5a45dc4a29
Коммит
3445fa2e3f
|
@ -73,6 +73,10 @@ int test(char *URL)
|
||||||
mp_start = tutil_tvnow();
|
mp_start = tutil_tvnow();
|
||||||
|
|
||||||
while (running) {
|
while (running) {
|
||||||
|
static struct timeval timeout = /* 100 ms */ { 0, 100000L };
|
||||||
|
fd_set fdread, fdwrite, fdexcep;
|
||||||
|
int maxfd = -1;
|
||||||
|
|
||||||
res = (int)curl_multi_perform(m, &running);
|
res = (int)curl_multi_perform(m, &running);
|
||||||
if (tutil_tvdiff(tutil_tvnow(), mp_start) >
|
if (tutil_tvdiff(tutil_tvnow(), mp_start) >
|
||||||
MULTI_PERFORM_HANG_TIMEOUT) {
|
MULTI_PERFORM_HANG_TIMEOUT) {
|
||||||
|
@ -83,11 +87,26 @@ int test(char *URL)
|
||||||
fprintf(stderr, "nothing left running.\n");
|
fprintf(stderr, "nothing left running.\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FD_ZERO(&fdread);
|
||||||
|
FD_ZERO(&fdwrite);
|
||||||
|
FD_ZERO(&fdexcep);
|
||||||
|
curl_multi_fdset(m, &fdread, &fdwrite, &fdexcep, &maxfd);
|
||||||
|
|
||||||
|
/* In a real-world program you OF COURSE check the return code of the
|
||||||
|
function calls. On success, the value of maxfd is guaranteed to be
|
||||||
|
greater or equal than -1. We call select(maxfd + 1, ...), specially in
|
||||||
|
case of (maxfd == -1), we call select(0, ...), which is basically equal
|
||||||
|
to sleep. */
|
||||||
|
|
||||||
|
if (select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout) == -1) {
|
||||||
|
res = ~CURLM_OK;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mp_timedout) {
|
if (mp_timedout) {
|
||||||
if (mp_timedout) fprintf(stderr, "mp_timedout\n");
|
fprintf(stderr, "mp_timedout\nABORTING TEST, since it seems "
|
||||||
fprintf(stderr, "ABORTING TEST, since it seems "
|
|
||||||
"that it would have run forever.\n");
|
"that it would have run forever.\n");
|
||||||
res = TEST_ERR_RUNS_FOREVER;
|
res = TEST_ERR_RUNS_FOREVER;
|
||||||
}
|
}
|
||||||
|
|
|
@ -135,6 +135,10 @@ int test(char *URL)
|
||||||
mp_start = tutil_tvnow();
|
mp_start = tutil_tvnow();
|
||||||
|
|
||||||
while (running) {
|
while (running) {
|
||||||
|
static struct timeval timeout = /* 100 ms */ { 0, 100000L };
|
||||||
|
fd_set fdread, fdwrite, fdexcep;
|
||||||
|
int maxfd = -1;
|
||||||
|
|
||||||
res = (int)curl_multi_perform(m, &running);
|
res = (int)curl_multi_perform(m, &running);
|
||||||
if (tutil_tvdiff(tutil_tvnow(), mp_start) >
|
if (tutil_tvdiff(tutil_tvnow(), mp_start) >
|
||||||
MULTI_PERFORM_HANG_TIMEOUT) {
|
MULTI_PERFORM_HANG_TIMEOUT) {
|
||||||
|
@ -148,11 +152,26 @@ int test(char *URL)
|
||||||
fprintf(stderr, "nothing left running.\n");
|
fprintf(stderr, "nothing left running.\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FD_ZERO(&fdread);
|
||||||
|
FD_ZERO(&fdwrite);
|
||||||
|
FD_ZERO(&fdexcep);
|
||||||
|
curl_multi_fdset(m, &fdread, &fdwrite, &fdexcep, &maxfd);
|
||||||
|
|
||||||
|
/* In a real-world program you OF COURSE check the return code of the
|
||||||
|
function calls. On success, the value of maxfd is guaranteed to be
|
||||||
|
greater or equal than -1. We call select(maxfd + 1, ...), specially in
|
||||||
|
case of (maxfd == -1), we call select(0, ...), which is basically equal
|
||||||
|
to sleep. */
|
||||||
|
|
||||||
|
if (select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout) == -1) {
|
||||||
|
res = ~CURLM_OK;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mp_timedout) {
|
if (mp_timedout) {
|
||||||
if (mp_timedout) fprintf(stderr, "mp_timedout\n");
|
fprintf(stderr, "mp_timedout\nABORTING TEST, since it seems "
|
||||||
fprintf(stderr, "ABORTING TEST, since it seems "
|
|
||||||
"that it would have run forever.\n");
|
"that it would have run forever.\n");
|
||||||
res = TEST_ERR_RUNS_FOREVER;
|
res = TEST_ERR_RUNS_FOREVER;
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,6 +76,10 @@ int test(char *URL)
|
||||||
mp_start = tutil_tvnow();
|
mp_start = tutil_tvnow();
|
||||||
|
|
||||||
while (running) {
|
while (running) {
|
||||||
|
static struct timeval timeout = /* 100 ms */ { 0, 100000L };
|
||||||
|
fd_set fdread, fdwrite, fdexcep;
|
||||||
|
int maxfd = -1;
|
||||||
|
|
||||||
res = (int)curl_multi_perform(m, &running);
|
res = (int)curl_multi_perform(m, &running);
|
||||||
if (tutil_tvdiff(tutil_tvnow(), mp_start) >
|
if (tutil_tvdiff(tutil_tvnow(), mp_start) >
|
||||||
MULTI_PERFORM_HANG_TIMEOUT) {
|
MULTI_PERFORM_HANG_TIMEOUT) {
|
||||||
|
@ -86,11 +90,26 @@ int test(char *URL)
|
||||||
fprintf(stderr, "nothing left running.\n");
|
fprintf(stderr, "nothing left running.\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FD_ZERO(&fdread);
|
||||||
|
FD_ZERO(&fdwrite);
|
||||||
|
FD_ZERO(&fdexcep);
|
||||||
|
curl_multi_fdset(m, &fdread, &fdwrite, &fdexcep, &maxfd);
|
||||||
|
|
||||||
|
/* In a real-world program you OF COURSE check the return code of the
|
||||||
|
function calls. On success, the value of maxfd is guaranteed to be
|
||||||
|
greater or equal than -1. We call select(maxfd + 1, ...), specially in
|
||||||
|
case of (maxfd == -1), we call select(0, ...), which is basically equal
|
||||||
|
to sleep. */
|
||||||
|
|
||||||
|
if (select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout) == -1) {
|
||||||
|
res = ~CURLM_OK;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mp_timedout) {
|
if (mp_timedout) {
|
||||||
if (mp_timedout) fprintf(stderr, "mp_timedout\n");
|
fprintf(stderr, "mp_timedout\nABORTING TEST, since it seems "
|
||||||
fprintf(stderr, "ABORTING TEST, since it seems "
|
|
||||||
"that it would have run forever.\n");
|
"that it would have run forever.\n");
|
||||||
res = TEST_ERR_RUNS_FOREVER;
|
res = TEST_ERR_RUNS_FOREVER;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче