]> err.no Git - varnish/commitdiff
Add signal handling and statistics.
authordes <des@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Wed, 5 Jul 2006 08:13:01 +0000 (08:13 +0000)
committerdes <des@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Wed, 5 Jul 2006 08:13:01 +0000 (08:13 +0000)
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@310 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-tools/fetcher/fetcher.c

index 87c040b3763250bc511bdf6102422bd90aff58ce..f471053b9edf43b4e84a2b55f2c4fcc6993c96c8 100644 (file)
@@ -4,6 +4,7 @@
 
 #include <sys/param.h>
 #include <sys/socket.h>
+#include <sys/time.h>
 
 #include <err.h>
 #include <netdb.h>
@@ -113,6 +114,14 @@ receive_response(FILE *f, const char *method)
        }
 }
 
+static volatile sig_atomic_t got_sig;
+
+static void
+handler(int sig)
+{
+       got_sig = sig;
+}
+
 static void
 usage(void)
 {
@@ -125,6 +134,8 @@ usage(void)
 int
 main(int argc, char *argv[])
 {
+       struct timeval start, stop;
+       double elapsed;
        char url[PATH_MAX];
        int i, opt, sd;
        FILE *f;
@@ -159,14 +170,22 @@ main(int argc, char *argv[])
        if ((f = fdopen(sd, "w+")) == NULL)
                err(1, "fdopen()");
 
-       for (i = 0; i < ctr; ++i) {
-               if (i % 163 == 0)
-                       fprintf(stderr, "\r%d ", i);
+       got_sig = 0;
+       signal(SIGINT, handler);
+       signal(SIGTERM, handler);
+       gettimeofday(&start, NULL);
+       for (i = 0; i < ctr && !got_sig; ++i) {
                snprintf(url, sizeof url, url_pattern, i % MAX_CTR);
                send_request(f, method, host, url);
                receive_response(f, method);
        }
+       gettimeofday(&stop, NULL);
        fclose(f);
 
+       elapsed = (stop.tv_sec * 1000000.0 + stop.tv_usec) -
+           (start.tv_sec * 1000000.0 + start.tv_usec);
+       fprintf(stderr, "%d requests in %.3f seconds (%d rps)\n",
+           i, elapsed / 1000000, (int)(i / (elapsed / 1000000)));
+
        exit(0);
 }