made progres linearly increasing, and added gnuplot file
[yaz-moved-to-github.git] / zoom / zoom-benchmark.c
index 79b533e..ca6a5b4 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: zoom-benchmark.c,v 1.3 2005-09-11 13:32:39 adam Exp $
+ * $Id: zoom-benchmark.c,v 1.5 2005-09-15 10:38:03 marc Exp $
  *
  * Asynchronous multi-target client doing search and piggyback retrieval
  */
@@ -23,8 +23,9 @@ static int zoom_progress[10];
 
 /* commando line parameters */
 static struct parameters_t { 
-    char host[1024];
-    char query[1024];
+    char host[4096];
+    char query[4096];
+    char progress[4096];
     int concurrent;
     int timeout;
 } parameters;
@@ -61,6 +62,13 @@ void init_statics()
     //parameters.query = "";
     parameters.concurrent = 1;
     parameters.timeout = 0;
+
+    /* progress initializing */
+    int i;
+    for (i = 0; i < 4096; i++){
+        parameters.progress[i] = 0;
+    }
+    
 }
  
 struct time_type 
@@ -160,15 +168,18 @@ void read_params(int argc, char **argv, struct parameters_t *p_parameters){
 int main(int argc, char **argv)
 {
     struct time_type time;
+    ZOOM_connection *z;
+    ZOOM_resultset *r;
+    ZOOM_options o;
+    int i;
 
     init_statics();
 
     read_params(argc, argv, &parameters);
 
-    ZOOM_connection z[parameters.concurrent];
-    ZOOM_resultset r[parameters.concurrent];
-    ZOOM_options o = ZOOM_options_create();
-
+    z = xmalloc(sizeof(*z) * parameters.concurrent);
+    r = xmalloc(sizeof(*r) * parameters.concurrent);
+    o = ZOOM_options_create();
 
     /* async mode */
     ZOOM_options_set (o, "async", "1");
@@ -181,7 +192,6 @@ int main(int argc, char **argv)
     //ZOOM_options_set (o, "elementSetName", "F");
 
     /* connect to all concurrent connections*/
-    int i;
     for ( i = 0; i < parameters.concurrent; i++){
         /* create connection - pass options (they are the same for all) */
         z[i] = ZOOM_connection_create(o);
@@ -194,27 +204,33 @@ int main(int argc, char **argv)
         r[i] = ZOOM_connection_search_pqf (z[i], parameters.query);
 
     // print header of table
-    printf ("second.usec\ttarget\tprogress\tevent\teventname\terror\terrorname\n");
+    printf ("second.usec\ttarget\tprogress\tevent\teventname\t");
+    printf("error\terrorname\n");
     time_init(&time);
     /* network I/O. pass number of connections and array of connections */
     while ((i = ZOOM_event (parameters.concurrent, z)))
     { 
-        time_stamp(&time);
-
         int event = ZOOM_connection_last_event(z[i-1]);
         const char *errmsg;
         const char *addinfo;
         int error = 0;
         int progress = zoom_progress[event];
 
+        if (event == ZOOM_EVENT_SEND_DATA | event == ZOOM_EVENT_RECV_DATA)
+            continue;
+
+        time_stamp(&time);
  
         error = ZOOM_connection_error(z[i-1] , &errmsg, &addinfo);
         if (error)
-            progress = -progress;
-        
-        printf ("%i.%06i\t%d\t%d\t%d\t%s\t%d\t%s\n",
+            parameters.progress[i] = -progress;
+        else
+            parameters.progress[i] += 1;
+
+        printf ("%ld.%06ld\t%d\t%d\t%d\t%s\t%d\t%s\n",
                 time_sec(&time), time_usec(&time), 
-                i-1, progress,
+                i-1, parameters.progress[i],
                 event, zoom_events[event], 
                 error, errmsg);
 
@@ -261,6 +277,8 @@ int main(int argc, char **argv)
         ZOOM_resultset_destroy (r[i]);
         ZOOM_connection_destroy (z[i]);
     }
+    xfree(z);
+    xfree(r);
     ZOOM_options_destroy(o);
     exit (0);
 }