]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
tests/libtest: use `curltime` from curlx
authorViktor Szakats <commit@vsz.me>
Mon, 23 Jun 2025 07:01:02 +0000 (09:01 +0200)
committerViktor Szakats <commit@vsz.me>
Mon, 23 Jun 2025 09:29:41 +0000 (11:29 +0200)
Replacing the local implementation.

Closes #17716

tests/libtest/first.c
tests/libtest/lib1501.c
tests/libtest/lib1507.c
tests/libtest/lib1564.c
tests/libtest/lib530.c
tests/libtest/lib582.c
tests/libtest/test.h
tests/libtest/testtrace.c
tests/libtest/testutil.c
tests/libtest/testutil.h

index abc7c3401463557e680de0b94d0e4d5956ca5ae1..00ff37558b33aed3d3308152d770fb3fd4d9d38b 100644 (file)
@@ -59,7 +59,7 @@ int test_argc;
 char **test_argv;
 int testnum;
 
-struct timeval tv_test_start; /* for test timing */
+struct curltime tv_test_start; /* for test timing */
 
 int unitfail; /* for unittests */
 
index 3b44db4745f33a693c77dc79295d9ac6577ff593..7ad3c7c999f94b0a57bd922afe2a64c8ba3da1dc 100644 (file)
@@ -25,7 +25,6 @@
 
 #include <fcntl.h>
 
-#include "testutil.h"
 #include "memdebug.h"
 
 static CURLcode test_lib1501(char *URL)
@@ -63,9 +62,9 @@ static CURLcode test_lib1501(char *URL)
     fd_set fdwrite;
     fd_set fdexcep;
     int maxfd = -99;
-    struct timeval before;
-    struct timeval after;
-    long e;
+    struct curltime before;
+    struct curltime after;
+    timediff_t e;
 
     timeout.tv_sec = 0;
     timeout.tv_usec = 100000L; /* 100 ms */
@@ -83,15 +82,15 @@ static CURLcode test_lib1501(char *URL)
     abort_on_test_timeout_custom(HANG_TIMEOUT);
 
     curl_mfprintf(stderr, "ping\n");
-    before = tutil_tvnow();
+    before = curlx_now();
 
     multi_perform(mhandle, &still_running);
 
     abort_on_test_timeout_custom(HANG_TIMEOUT);
 
-    after = tutil_tvnow();
-    e = tutil_tvdiff(after, before);
-    curl_mfprintf(stderr, "pong = %ld\n", e);
+    after = curlx_now();
+    e = curlx_timediff(after, before);
+    curl_mfprintf(stderr, "pong = %ld\n", (long)e);
 
     if(e > MAX_BLOCKED_TIME_MS) {
       res = CURLE_TOO_LARGE;
index fb52b996b3be0c8b2ff966f556d687b06430fc4d..c18bd577ee01b28f921d90fe8fc9033c8da52b16 100644 (file)
@@ -23,7 +23,6 @@
  ***************************************************************************/
 #include "first.h"
 
-#include "testutil.h"
 #include "timediff.h"
 #include "memdebug.h"
 
@@ -52,7 +51,7 @@ static CURLcode test_lib1507(char *URL)
    CURL *curl = NULL;
    CURLM *mcurl = NULL;
    int still_running = 1;
-   struct timeval mp_start;
+   struct curltime mp_start;
    struct curl_slist *rcpt_list = NULL;
 
    curl_global_init(CURL_GLOBAL_DEFAULT);
@@ -78,7 +77,7 @@ static CURLcode test_lib1507(char *URL)
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
    multi_add_handle(mcurl, curl);
 
-   mp_start = tutil_tvnow();
+   mp_start = curlx_now();
 
   /* we start some action by calling perform right away */
   curl_multi_perform(mcurl, &still_running);
@@ -122,7 +121,7 @@ static CURLcode test_lib1507(char *URL)
 
     rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
 
-    if(tutil_tvdiff(tutil_tvnow(), mp_start) > MULTI_PERFORM_HANG_TIMEOUT) {
+    if(curlx_timediff(curlx_now(), mp_start) > MULTI_PERFORM_HANG_TIMEOUT) {
       curl_mfprintf(stderr, "ABORTING TEST, since it seems "
                     "that it would have run forever.\n");
       break;
index a95645f1396631fce8ecbf61160aaad470741844..fec8581e92a3b5c3ebeeac501ffd6e4354aa385c 100644 (file)
@@ -23,7 +23,6 @@
  ***************************************************************************/
 #include "first.h"
 
-#include "testutil.h"
 #include "memdebug.h"
 
 #define WAKEUP_NUM 10
@@ -34,7 +33,7 @@ static CURLcode test_lib1564(char *URL)
   int numfds;
   int i;
   CURLcode res = CURLE_OK;
-  struct timeval time_before_wait, time_after_wait;
+  struct curltime time_before_wait, time_after_wait;
 
   (void)URL;
 
@@ -46,11 +45,11 @@ static CURLcode test_lib1564(char *URL)
 
   /* no wakeup */
 
-  time_before_wait = tutil_tvnow();
+  time_before_wait = curlx_now();
   multi_poll(multi, NULL, 0, 1000, &numfds);
-  time_after_wait = tutil_tvnow();
+  time_after_wait = curlx_now();
 
-  if(tutil_tvdiff(time_after_wait, time_before_wait) < 500) {
+  if(curlx_timediff(time_after_wait, time_before_wait) < 500) {
     curl_mfprintf(stderr, "%s:%d curl_multi_poll returned too early\n",
                   __FILE__, __LINE__);
     res = TEST_ERR_MAJOR_BAD;
@@ -63,11 +62,11 @@ static CURLcode test_lib1564(char *URL)
 
   res_multi_wakeup(multi);
 
-  time_before_wait = tutil_tvnow();
+  time_before_wait = curlx_now();
   multi_poll(multi, NULL, 0, 1000, &numfds);
-  time_after_wait = tutil_tvnow();
+  time_after_wait = curlx_now();
 
-  if(tutil_tvdiff(time_after_wait, time_before_wait) > 500) {
+  if(curlx_timediff(time_after_wait, time_before_wait) > 500) {
     curl_mfprintf(stderr, "%s:%d curl_multi_poll returned too late\n",
                   __FILE__, __LINE__);
     res = TEST_ERR_MAJOR_BAD;
@@ -78,11 +77,11 @@ static CURLcode test_lib1564(char *URL)
 
   /* previous wakeup should not wake up this */
 
-  time_before_wait = tutil_tvnow();
+  time_before_wait = curlx_now();
   multi_poll(multi, NULL, 0, 1000, &numfds);
-  time_after_wait = tutil_tvnow();
+  time_after_wait = curlx_now();
 
-  if(tutil_tvdiff(time_after_wait, time_before_wait) < 500) {
+  if(curlx_timediff(time_after_wait, time_before_wait) < 500) {
     curl_mfprintf(stderr, "%s:%d curl_multi_poll returned too early\n",
                   __FILE__, __LINE__);
     res = TEST_ERR_MAJOR_BAD;
@@ -96,11 +95,11 @@ static CURLcode test_lib1564(char *URL)
   for(i = 0; i < WAKEUP_NUM; ++i)
     res_multi_wakeup(multi);
 
-  time_before_wait = tutil_tvnow();
+  time_before_wait = curlx_now();
   multi_poll(multi, NULL, 0, 1000, &numfds);
-  time_after_wait = tutil_tvnow();
+  time_after_wait = curlx_now();
 
-  if(tutil_tvdiff(time_after_wait, time_before_wait) > 500) {
+  if(curlx_timediff(time_after_wait, time_before_wait) > 500) {
     curl_mfprintf(stderr, "%s:%d curl_multi_poll returned too late\n",
                   __FILE__, __LINE__);
     res = TEST_ERR_MAJOR_BAD;
@@ -111,11 +110,11 @@ static CURLcode test_lib1564(char *URL)
 
   /* Even lots of previous wakeups should not wake up this. */
 
-  time_before_wait = tutil_tvnow();
+  time_before_wait = curlx_now();
   multi_poll(multi, NULL, 0, 1000, &numfds);
-  time_after_wait = tutil_tvnow();
+  time_after_wait = curlx_now();
 
-  if(tutil_tvdiff(time_after_wait, time_before_wait) < 500) {
+  if(curlx_timediff(time_after_wait, time_before_wait) < 500) {
     curl_mfprintf(stderr, "%s:%d curl_multi_poll returned too early\n",
                   __FILE__, __LINE__);
     res = TEST_ERR_MAJOR_BAD;
index 2c7dfdf5db3ad9de66aca8d0018387acd5dc6d95..46a8ccba25972b7ede04542e5990a834546d98ab 100644 (file)
@@ -32,7 +32,6 @@
 
 #include <fcntl.h>
 
-#include "testutil.h"
 #include "memdebug.h"
 
 struct t530_Sockets {
@@ -150,7 +149,7 @@ static int timer_calls = 0;
  */
 static int t530_curlTimerCallback(CURLM *multi, long timeout_ms, void *userp)
 {
-  struct timeval *timeout = userp;
+  struct curltime *timeout = userp;
 
   (void)multi; /* unused */
   curl_mfprintf(stderr, "CURLMOPT_TIMERFUNCTION called: %u\n", timer_calls++);
@@ -159,7 +158,7 @@ static int t530_curlTimerCallback(CURLM *multi, long timeout_ms, void *userp)
     return -1;
   }
   if(timeout_ms != -1) {
-    *timeout = tutil_tvnow();
+    *timeout = curlx_now();
     timeout->tv_usec += (int)timeout_ms * 1000;
   }
   else {
@@ -197,11 +196,11 @@ static int t530_checkForCompletion(CURLM *curl, int *success)
   return result;
 }
 
-static int t530_getMicroSecondTimeout(struct timeval *timeout)
+static int t530_getMicroSecondTimeout(struct curltime *timeout)
 {
-  struct timeval now;
+  struct curltime now;
   ssize_t result;
-  now = tutil_tvnow();
+  now = curlx_now();
   result = (ssize_t)((timeout->tv_sec - now.tv_sec) * 1000000 +
     timeout->tv_usec - now.tv_usec);
   if(result < 0)
@@ -268,7 +267,7 @@ static CURLcode testone(char *URL, int timercb, int socketcb)
   CURL *curl = NULL;  CURLM *m = NULL;
   struct t530_ReadWriteSockets sockets = {{NULL, 0, 0}, {NULL, 0, 0}};
   int success = 0;
-  struct timeval timeout = {0};
+  struct curltime timeout = {0};
   timeout.tv_sec = (time_t)-1;
 
   /* set the limits */
index c887559695ec23979448f3e83f4ac693fb672709..06216ff1612489abce85c6049a40246f855e6e4a 100644 (file)
@@ -25,7 +25,6 @@
 
 #include <fcntl.h>
 
-#include "testutil.h"
 #include "memdebug.h"
 
 struct t582_Sockets {
@@ -122,11 +121,11 @@ static int t582_curlSocketCallback(CURL *easy, curl_socket_t s, int action,
  */
 static int t582_curlTimerCallback(CURLM *multi, long timeout_ms, void *userp)
 {
-  struct timeval *timeout = userp;
+  struct curltime *timeout = userp;
 
   (void)multi; /* unused */
   if(timeout_ms != -1) {
-    *timeout = tutil_tvnow();
+    *timeout = curlx_now();
     timeout->tv_usec += (int)timeout_ms * 1000;
   }
   else {
@@ -164,11 +163,11 @@ static int t582_checkForCompletion(CURLM *curl, int *success)
   return result;
 }
 
-static int t582_getMicroSecondTimeout(struct timeval *timeout)
+static int t582_getMicroSecondTimeout(struct curltime *timeout)
 {
-  struct timeval now;
+  struct curltime now;
   ssize_t result;
-  now = tutil_tvnow();
+  now = curlx_now();
   result = (ssize_t)((timeout->tv_sec - now.tv_sec) * 1000000 +
     timeout->tv_usec - now.tv_usec);
   if(result < 0)
@@ -234,7 +233,7 @@ static CURLcode test_lib582(char *URL)
   CURLM *m = NULL;
   struct t582_ReadWriteSockets sockets = {{NULL, 0, 0}, {NULL, 0, 0}};
   int success = 0;
-  struct timeval timeout = {0};
+  struct curltime timeout = {0};
   timeout.tv_sec = (time_t)-1;
 
   assert(test_argc >= 5);
index fc536e56628d070b5da95d572e47d9a3dea24359..9d3935cc97c893a332a66ddb1b0f7498aeb39a9a 100644 (file)
@@ -32,6 +32,7 @@
 #include "curl_setup.h"
 
 #include <curl/curl.h>
+#include <curlx/timeval.h>
 
 #ifdef HAVE_SYS_SELECT_H
 /* since so many tests use select(), we can just as well include it here */
@@ -65,7 +66,7 @@ extern char *libtest_arg4; /* set by first.c to the argv[4] or NULL */
 extern int test_argc;
 extern char **test_argv;
 extern int testnum;
-extern struct timeval tv_test_start; /* for test timing */
+extern struct curltime tv_test_start; /* for test timing */
 
 extern int select_wrapper(int nfds, fd_set *rd, fd_set *wr, fd_set *exc,
                           struct timeval *tv);
@@ -434,17 +435,17 @@ extern int unitfail;
 /* ---------------------------------------------------------------- */
 
 #define start_test_timing() do { \
-  tv_test_start = tutil_tvnow(); \
+  tv_test_start = curlx_now(); \
 } while(0)
 
 #define TEST_HANG_TIMEOUT 60 * 1000  /* global default */
 
 #define exe_test_timedout(T,Y,Z) do {                                   \
-  long timediff = tutil_tvdiff(tutil_tvnow(), tv_test_start);           \
+  timediff_t timediff = curlx_timediff(curlx_now(), tv_test_start);     \
   if(timediff > (T)) {                                                  \
     curl_mfprintf(stderr, "%s:%d ABORTING TEST, since it seems "        \
                   "that it would have run forever (%ld ms > %ld ms)\n", \
-                  (Y), (Z), timediff, (long) (TEST_HANG_TIMEOUT));      \
+                  (Y), (Z), (long)timediff, (long)(TEST_HANG_TIMEOUT)); \
     res = TEST_ERR_RUNS_FOREVER;                                        \
   }                                                                     \
 } while(0)
index 0b49c32f398bd88acdc443c27fecfcd56e04c482..95e7e0d5ea494b6c73cb5b8887e27db008797230 100644 (file)
@@ -22,7 +22,8 @@
  *
  ***************************************************************************/
 #include "testtrace.h"
-#include "testutil.h"
+
+#include <curlx/timeval.h>
 
 #include "memdebug.h"
 
@@ -89,10 +90,8 @@ int libtest_debug_cb(CURL *handle, curl_infotype type,
 {
   struct libtest_trace_cfg *trace_cfg = userp;
   const char *text;
-  struct timeval tv;
   char timebuf[20];
   char *timestr;
-  time_t secs;
 
   (void)handle;
 
@@ -101,7 +100,9 @@ int libtest_debug_cb(CURL *handle, curl_infotype type,
 
   if(trace_cfg->tracetime) {
     struct tm *now;
-    tv = tutil_tvnow();
+    struct curltime tv;
+    time_t secs;
+    tv = curlx_now();
     if(!known_offset) {
       epoch_offset = time(NULL) - tv.tv_sec;
       known_offset = 1;
index 2bf171bf0071cee9d61c63eb4757db568993058a..269479c3cea6751269e999dea3ee8f41ab724078 100644 (file)
 
 #include "memdebug.h"
 
-#ifdef _WIN32
-
-struct timeval tutil_tvnow(void)
-{
-  /*
-  ** GetTickCount() is available on _all_ Windows versions from W95 up
-  ** to nowadays. Returns milliseconds elapsed since last system boot,
-  ** increases monotonically and wraps once 49.7 days have elapsed.
-  */
-  struct timeval now;
-  DWORD milliseconds = GetTickCount();
-  now.tv_sec = (long)(milliseconds / 1000);
-  now.tv_usec = (long)((milliseconds % 1000) * 1000);
-  return now;
-}
-
-#elif defined(HAVE_CLOCK_GETTIME_MONOTONIC)
-
-struct timeval tutil_tvnow(void)
-{
-  /*
-  ** clock_gettime() is granted to be increased monotonically when the
-  ** monotonic clock is queried. Time starting point is unspecified, it
-  ** could be the system start-up time, the Epoch, or something else,
-  ** in any case the time starting point does not change once that the
-  ** system has started up.
-  */
-  struct timeval now;
-  struct timespec tsnow;
-  if(0 == clock_gettime(CLOCK_MONOTONIC, &tsnow)) {
-    now.tv_sec = tsnow.tv_sec;
-    now.tv_usec = (int)(tsnow.tv_nsec / 1000);
-  }
-  /*
-  ** Even when the configure process has truly detected monotonic clock
-  ** availability, it might happen that it is not actually available at
-  ** run-time. When this occurs simply fallback to other time source.
-  */
-#ifdef HAVE_GETTIMEOFDAY
-  else
-    (void)gettimeofday(&now, NULL);
-#else
-  else {
-    now.tv_sec = time(NULL);
-    now.tv_usec = 0;
-  }
-#endif
-  return now;
-}
-
-#elif defined(HAVE_GETTIMEOFDAY)
-
-struct timeval tutil_tvnow(void)
-{
-  /*
-  ** gettimeofday() is not granted to be increased monotonically, due to
-  ** clock drifting and external source time synchronization it can jump
-  ** forward or backward in time.
-  */
-  struct timeval now;
-  (void)gettimeofday(&now, NULL);
-  return now;
-}
-
-#else
-
-struct timeval tutil_tvnow(void)
-{
-  /*
-  ** time() returns the value of time in seconds since the Epoch.
-  */
-  struct timeval now;
-  now.tv_sec = time(NULL);
-  now.tv_usec = 0;
-  return now;
-}
-
-#endif
-
-/*
- * Make sure that the first argument is the more recent time, as otherwise
- * we'll get a weird negative time-diff back...
- *
- * Returns: the time difference in number of milliseconds.
- */
-long tutil_tvdiff(struct timeval newer, struct timeval older)
-{
-  return (long)(newer.tv_sec-older.tv_sec)*1000+
-    (long)(newer.tv_usec-older.tv_usec)/1000;
-}
-
-/*
- * Same as tutil_tvdiff but with full usec resolution.
- *
- * Returns: the time difference in seconds with subsecond resolution.
- */
-double tutil_tvdiff_secs(struct timeval newer, struct timeval older)
-{
-  if(newer.tv_sec != older.tv_sec)
-    return (double)(newer.tv_sec-older.tv_sec)+
-      (double)(newer.tv_usec-older.tv_usec)/1000000.0;
-  return (double)(newer.tv_usec-older.tv_usec)/1000000.0;
-}
-
 /* build request url */
 char *tutil_suburl(const char *base, int i)
 {
index d77ffb6015fcee74c5935179134bf9c687dd8563..dd2a5a9d3bdbc5b635a680a4f32526e0c72a903f 100644 (file)
  ***************************************************************************/
 #include "test.h"
 
-struct timeval tutil_tvnow(void);
-
-/*
- * Make sure that the first argument (t1) is the more recent time and t2 is
- * the older time, as otherwise you get a weird negative time-diff back...
- *
- * Returns: the time difference in number of milliseconds.
- */
-long tutil_tvdiff(struct timeval t1, struct timeval t2);
-
-/*
- * Same as tutil_tvdiff but with full usec resolution.
- *
- * Returns: the time difference in seconds with subsecond resolution.
- */
-double tutil_tvdiff_secs(struct timeval t1, struct timeval t2);
-
 /* build request url */
 char *tutil_suburl(const char *base, int i);