From: Stefan Eissing Date: Thu, 8 Aug 2024 11:26:10 +0000 (+0200) Subject: test579: improve robustness X-Git-Tag: curl-8_10_0~318 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=640febc7d012b3a23201455c94b85d64f8c3f767;p=thirdparty%2Fcurl.git test579: improve robustness Log progress only at start and end of transfer to give normalized output when upload data is only partially sent or temporarily blocked. Fixes test with CURL_DBG_SOCK_WBLOCK=90 set. Closes #14454 --- diff --git a/tests/data/test579 b/tests/data/test579 index 68fce50d4d..eaee6e3235 100644 --- a/tests/data/test579 +++ b/tests/data/test579 @@ -76,14 +76,10 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER %LOGDIR/ip%TESTNUMBER # Verify data after the test has been "shot" -Progress callback called with UL 0 out of 0 -Progress callback called with UL 5 out of 0 -Progress callback called with UL 0 out of 0 -Progress callback called with UL 8 out of 0 -Progress callback called with UL 16 out of 0 -Progress callback called with UL 26 out of 0 -Progress callback called with UL 61 out of 0 -Progress callback called with UL 66 out of 0 +Progress: start UL 0/0 +Progress: end UL 5/0 +Progress: start UL 0/0 +Progress: end UL 66/0 diff --git a/tests/libtest/lib579.c b/tests/libtest/lib579.c index 8b46e29d34..7e314c308c 100644 --- a/tests/libtest/lib579.c +++ b/tests/libtest/lib579.c @@ -38,31 +38,38 @@ struct WriteThis { int counter; }; +static bool started = FALSE; +static size_t last_ul = 0; +static size_t last_ul_total = 0; + +static void progress_final_report(void) +{ + FILE *moo = fopen(libtest_arg2, "ab"); + fprintf(moo, "Progress: end UL %zu/%zu\n", last_ul, last_ul_total); + started = FALSE; + fclose(moo); +} + static int progress_callback(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow) { - static int prev_ultotal = -1; - static int prev_ulnow = -1; (void)clientp; /* UNUSED */ (void)dltotal; /* UNUSED */ (void)dlnow; /* UNUSED */ - /* to avoid depending on timing, which will cause this progress function to - get called a different number of times depending on circumstances, we - only log these lines if the numbers are different from the previous - invoke */ - if((prev_ultotal != (int)ultotal) || - (prev_ulnow != (int)ulnow)) { + if(started && ulnow <= 0.0 && last_ul) { + progress_final_report(); + } + last_ul = (size_t)ulnow; + last_ul_total = (size_t)ultotal; + if(!started) { FILE *moo = fopen(libtest_arg2, "ab"); - if(moo) { - fprintf(moo, "Progress callback called with UL %d out of %d\n", - (int)ulnow, (int)ultotal); - fclose(moo); - } - prev_ulnow = (int) ulnow; - prev_ultotal = (int) ultotal; + fprintf(moo, "Progress: start UL %zu/%zu\n", last_ul, last_ul_total); + started = TRUE; + fclose(moo); } + return 0; } @@ -146,6 +153,8 @@ CURLcode test(char *URL) /* Perform the request, res will get the return code */ res = curl_easy_perform(curl); + progress_final_report(); + test_cleanup: /* clean up the headers list */