From: Marc Cromme Date: Fri, 9 Sep 2005 13:51:43 +0000 (+0000) Subject: pretty formatting with tabs for gnuplot reading X-Git-Tag: YAZ.2.1.10~73 X-Git-Url: http://jsfdemo.indexdata.com/?a=commitdiff_plain;h=1908df105a83e97f3e404020fd9f4e2007654afd;p=yaz-moved-to-github.git pretty formatting with tabs for gnuplot reading --- diff --git a/zoom/zoom-benchmark.c b/zoom/zoom-benchmark.c index 19e83e8..e298129 100644 --- a/zoom/zoom-benchmark.c +++ b/zoom/zoom-benchmark.c @@ -1,5 +1,5 @@ /* - * $Id: zoom-benchmark.c,v 1.1 2005-09-07 13:45:15 marc Exp $ + * $Id: zoom-benchmark.c,v 1.2 2005-09-09 13:51:43 marc Exp $ * * Asynchronous multi-target client doing search and piggyback retrieval */ @@ -11,56 +11,28 @@ #include #include +#include #include +/* naming events */ +static char* zoom_events[10]; +/* re-sorting event numbers to progress numbers */ +static int zoom_progress[10]; -int main(int argc, char **argv) -{ +/* commando line parameters */ +static struct parameters_t { + char host[1024]; + char query[1024]; + int concurrent; + int timeout; +} parameters; - struct timeval now; - struct timeval then; - long sec=0, usec=0; - - int i; - int same_target = 0; - int no = argc-2; - ZOOM_connection z[1024]; /* allow at most 1024 connections */ - ZOOM_resultset r[1024]; /* and result sets .. */ - ZOOM_options o = ZOOM_options_create (); - - if (argc < 3) - { - fprintf (stderr, "usage:\n%s target1 target2 ... targetN query\n", - *argv); - exit (1); - } - if (argc == 4 && isdigit(argv[1][0]) && !strchr(argv[1],'.')) - { - no = atoi(argv[1]); - same_target = 1; - } - - if (no > 500) - no = 500; +void init_statics() +{ /* naming events */ - - //typedef enum { - // ZOOM_EVENT_NONE = 0, - // ZOOM_EVENT_CONNECT = 1, - // ZOOM_EVENT_SEND_DATA = 2, - // ZOOM_EVENT_RECV_DATA = 3, - // ZOOM_EVENT_TIMEOUT = 4, - // ZOOM_EVENT_UNKNOWN = 5, - // ZOOM_EVENT_SEND_APDU = 6, - // ZOOM_EVENT_RECV_APDU = 7, - // ZOOM_EVENT_RECV_RECORD = 8, - // ZOOM_EVENT_RECV_SEARCH = 9 - //} ZOOM_events; - - char* zoom_events[10]; zoom_events[ZOOM_EVENT_NONE] = "ZOOM_EVENT_NONE"; zoom_events[ZOOM_EVENT_CONNECT] = "ZOOM_EVENT_CONNECT"; zoom_events[ZOOM_EVENT_SEND_DATA] = "ZOOM_EVENT_SEND_DATA"; @@ -72,7 +44,7 @@ int main(int argc, char **argv) zoom_events[ZOOM_EVENT_RECV_RECORD] = "ZOOM_EVENT_RECV_RECORD"; zoom_events[ZOOM_EVENT_RECV_SEARCH] = "ZOOM_EVENT_RECV_SEARCH"; - int zoom_progress[10]; + /* re-sorting event numbers to progress numbers */ zoom_progress[ZOOM_EVENT_NONE] = 0; zoom_progress[ZOOM_EVENT_CONNECT] = 1; zoom_progress[ZOOM_EVENT_SEND_DATA] = 3; @@ -83,41 +55,151 @@ int main(int argc, char **argv) zoom_progress[ZOOM_EVENT_RECV_APDU] = 5; zoom_progress[ZOOM_EVENT_RECV_RECORD] = 7; zoom_progress[ZOOM_EVENT_RECV_SEARCH] = 6; - + + /* parameters */ + //parameters.host = ""; + //parameters.query = ""; + parameters.concurrent = 1; + parameters.timeout = 0; +} + +struct time_type +{ + struct timeval now; + struct timeval then; + long sec; + long usec; +}; + +void time_init(struct time_type *ptime) +{ + gettimeofday(&(ptime->now), 0); + gettimeofday(&(ptime->then), 0); + ptime->sec = 0; + ptime->usec = 0; +} + +void time_stamp(struct time_type *ptime) +{ + gettimeofday(&(ptime->now), 0); + ptime->sec = ptime->now.tv_sec - ptime->then.tv_sec; + ptime->usec = ptime->now.tv_usec - ptime->then.tv_usec; + if (ptime->usec < 0){ + ptime->sec--; + ptime->usec += 1000000; + } +} + +long time_sec(struct time_type *ptime) +{ + return ptime->sec; +} + +long time_usec(struct time_type *ptime) +{ + return ptime->usec; +} + +void print_option_error() +{ + fprintf(stderr, "zoom-benchmark: Call error\n"); + fprintf(stderr, "zoom-benchmark -h host:port -q pqf-query " + "[-c no_concurrent] " + "[-t timeout] \n"); + exit(1); +} + + +void read_params(int argc, char **argv, struct parameters_t *p_parameters){ + char *arg; + int ret; + while ((ret = options("h:q:c:t:", argv, argc, &arg)) != -2) + { + switch (ret) + { + case 'h': + strcpy(p_parameters->host, arg); + break; + case 'q': + strcpy(p_parameters->query, arg); + break; + case 'c': + p_parameters->concurrent = atoi(arg); + break; + case 't': + p_parameters->timeout = atoi(arg); + break; + case 0: + //for (i = 0; ihost); + //printf(" query: %s \n", p_parameters->query); + //printf(" concurrent: %d \n", p_parameters->concurrent); + //printf(" timeout: %d \n\n", p_parameters->timeout); + + if (! strlen(p_parameters->host)) + print_option_error(); + if (! strlen(p_parameters->query)) + print_option_error(); + if (! (p_parameters->concurrent > 0)) + print_option_error(); + if (! (p_parameters->timeout >= 0)) + print_option_error(); +} + + + +int main(int argc, char **argv) +{ + init_statics(); + + struct time_type time; + + read_params(argc, argv, ¶meters); + + ZOOM_connection z[parameters.concurrent]; + ZOOM_resultset r[parameters.concurrent]; + ZOOM_options o = ZOOM_options_create(); + /* async mode */ ZOOM_options_set (o, "async", "1"); - /* get first 10 records of result set (using piggyback) */ + /* get first record of result set (using piggyback) */ ZOOM_options_set (o, "count", "1"); /* preferred record syntax */ //ZOOM_options_set (o, "preferredRecordSyntax", "usmarc"); //ZOOM_options_set (o, "elementSetName", "F"); - /* connect to all */ - for (i = 0; i