benchmark: track max time for URLs
authorFlorian Dold <florian.dold@gmail.com>
Wed, 26 Sep 2018 13:18:47 +0000 (15:18 +0200)
committerFlorian Dold <florian.dold@gmail.com>
Wed, 26 Sep 2018 13:18:55 +0000 (15:18 +0200)
src/curl/curl.c
src/util/benchmark.c

index 07f31970a97ce1dd5a2d0a20e5c57f93f1b5572f..ec65986cb08addb9e3e20801e92b2dce84fc2878 100644 (file)
@@ -505,15 +505,18 @@ GNUNET_CURL_perform (struct GNUNET_CURL_Context *ctx)
 #if ENABLE_BENCHMARK
   {
     char *url = NULL;
-    double total = 0;
+    double total_as_double = 0;
+    struct GNUNET_TIME_Relative total;
     struct UrlRequestData *urd;
     CURLcode res;
-    res = curl_easy_getinfo (cmsg->easy_handle, CURLINFO_TOTAL_TIME, &total);
+    res = curl_easy_getinfo (cmsg->easy_handle, CURLINFO_TOTAL_TIME, &total_as_double);
     GNUNET_break (CURLE_OK == res);
     curl_easy_getinfo (cmsg->easy_handle, CURLINFO_EFFECTIVE_URL, &url);
+    total.rel_value_us = total_as_double * 1000 * 1000;
     urd = get_url_benchmark_data (url, (unsigned int) response_code);
     urd->count++;
-    urd->time.rel_value_us += total * 1000 * 1000;
+    urd->time = GNUNET_TIME_relative_add (urd->time, total);
+    urd->time_max = GNUNET_TIME_relative_max (total, urd->time_max);
   }
 #endif
     job->jcc (job->jcc_cls,
index 108e016599a49c66037e4e5a6239912272405ec4..b5fc2752c8a0cfa42f027629116c19a00bdf0430 100644 (file)
@@ -135,11 +135,12 @@ write_benchmark_data (struct BenchmarkData *bd)
   for (unsigned int i = 0; i < bd->urd_len; i++)
   {
     struct UrlRequestData *urd = &bd->urd[i];
-    GNUNET_asprintf (&s, "url %s status %u count %llu time_us %llu\n",
+    GNUNET_asprintf (&s, "url %s status %u count %llu time_us %llu time_us_max %llu\n",
                      urd->request_url,
                      urd->status,
                      (unsigned long long) urd->count,
-                     (unsigned long long) urd->time.rel_value_us);
+                     (unsigned long long) urd->time.rel_value_us,
+                     (unsigned long long) urd->time_max.rel_value_us);
     GNUNET_assert (GNUNET_SYSERR != GNUNET_DISK_file_write_blocking (fh, s, strlen (s)));
     GNUNET_free (s);
   }