]> granicus.if.org Git - check/commitdiff
* Calculation of duration for test runs now use clock_gettime() instead of
authorhugo303 <hugo303@64e312b2-a51f-0410-8e61-82d0ca0eb02a>
Wed, 14 Nov 2012 09:13:46 +0000 (09:13 +0000)
committerhugo303 <hugo303@64e312b2-a51f-0410-8e61-82d0ca0eb02a>
Wed, 14 Nov 2012 09:13:46 +0000 (09:13 +0000)
  gettimeofday(). Definition of DIFF_IN_USEC() moved to check_impl.h.

git-svn-id: svn+ssh://svn.code.sf.net/p/check/code/trunk@675 64e312b2-a51f-0410-8e61-82d0ca0eb02a

src/check_impl.h
src/check_log.c
src/check_run.c

index 371772a31e7c24e0f19e0f7e1ee8584e5e5f09cb..01f0f567103edb2ecb863bd171be6746d67281bc 100644 (file)
    Include stdio.h & list.h before this header
 */
 
+/** calculate the difference in useconds out of two "struct timespec"s */
+#define DIFF_IN_USEC(begin, end) \
+  ( (((end).tv_sec - (begin).tv_sec) * 1000000) + \
+    ((end).tv_nsec/1000) - ((begin).tv_nsec/1000) )
+
 typedef struct TF {
   TFun fn;
   int loop_start;
index 2bfee88256f5039f71adffaae49d06c513fdfa32..f1e2b4bd4767697af866081e0d16df997931dc3f 100644 (file)
@@ -231,13 +231,15 @@ void xml_lfun (SRunner *sr CK_ATTRIBUTE_UNUSED, FILE *file, enum print_output pr
 {
   TestResult *tr;
   Suite *s;
-  static struct timeval inittv;
+  static struct timespec ts_start;
   static char t[sizeof "yyyy-mm-dd hh:mm:ss"] = {0};
 
   if (t[0] == 0)
   {
+    struct timeval inittv;
     struct tm now;
     gettimeofday(&inittv, NULL);
+    clock_gettime(CLOCK_MONOTONIC, &ts_start);
     localtime_r(&(inittv.tv_sec), &now);
     strftime(t, sizeof("yyyy-mm-dd hh:mm:ss"), "%Y-%m-%d %H:%M:%S", &now);
   }
@@ -251,14 +253,14 @@ void xml_lfun (SRunner *sr CK_ATTRIBUTE_UNUSED, FILE *file, enum print_output pr
     break;
   case CLENDLOG_SR:
     {
-      struct timeval now;
+      struct timespec ts_end;
+      unsigned int duration;
 
       /* calculate time the test were running */
-      gettimeofday(&now, NULL);
-      timersub(&now, &inittv, &now);
-
-      fprintf(file, "  <duration>%lu.%06lu</duration>\n",
-              now.tv_sec, now.tv_usec);
+      clock_gettime(CLOCK_MONOTONIC, &ts_end);
+      duration = DIFF_IN_USEC(ts_start, ts_end);
+      fprintf(file, "  <duration>%u.%06u</duration>\n",
+          duration / 1000000, duration % 1000000);
       fprintf(file, "</testsuites>\n");
     }
     break;
index 968e7845d547a5e5d54e3d08414d5d625527f725..d5d341f20c02a4be554ece98215b34bde2c4e50d 100644 (file)
@@ -51,11 +51,6 @@ enum tf_type {
 };
 
 
-/** calculate the difference in useconds out of two "struct timeval"s */
-#define DIFF_IN_USEC(begin, end) \
-  ( (((end).tv_sec - (begin).tv_sec) * 1000000) + \
-    ((end).tv_nsec/1000) - ((begin).tv_nsec/1000) )
-
 /* all functions are defined in the same order they are declared.
    functions that depend on forking are gathered all together.
    non-static functions are at the end of the file. */