X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=zoom%2Fzoom-benchmark.c;h=73d079ea90185922a8e458dddb61dbd683ac0519;hp=722c4f287fcfc41d61b3c38dd58098b4989f540b;hb=70ce06b6fcbe3a53e94111ecedf0312848647c1b;hpb=6d4f7e865f11d0fbcadd0820078a707f5588256c diff --git a/zoom/zoom-benchmark.c b/zoom/zoom-benchmark.c index 722c4f2..73d079e 100644 --- a/zoom/zoom-benchmark.c +++ b/zoom/zoom-benchmark.c @@ -1,28 +1,28 @@ -/* - * $Id: zoom-benchmark.c,v 1.13 2005-10-22 13:28:03 adam Exp $ - * - * Asynchronous multi-target client doing search and piggyback retrieval +/* This file is part of the YAZ toolkit. + * Copyright (C) Index Data + * See the file LICENSE for details. */ +#if HAVE_CONFIG_H +#include +#endif #include #include #include -#include #include #include #include #include - /* naming events */ -static char* zoom_events[10]; +static char* zoom_events[ZOOM_EVENT_MAX+1]; /* re-sorting event numbers to progress numbers */ -static int zoom_progress[10]; +static int zoom_progress[ZOOM_EVENT_MAX+1]; /* commando line parameters */ -static struct parameters_t { +static struct parameters_t { char host[1024]; char query[1024]; int progress[4096]; @@ -34,7 +34,7 @@ static struct parameters_t { int gnuplot; } parameters; -struct event_line_t +struct event_line_t { int connection; long time_sec; @@ -50,9 +50,9 @@ struct event_line_t void print_event_line(struct event_line_t *pel) { printf ("%d\t%ld.%06ld\t%d\t%d\t%s\t%d\t%s\n", - pel->connection, pel->time_sec, pel->time_usec, + pel->connection, pel->time_sec, pel->time_usec, pel->progress, - pel->event, pel->zoom_event, + pel->event, pel->zoom_event, pel->error, pel->errmsg); } @@ -75,14 +75,19 @@ void update_events(int *elc, struct event_line_t *els, els[iels].time_usec = usec; els[iels].progress = prog; els[iels].event = event; - strcpy(els[iels].zoom_event, eventmsg); + + if (eventmsg) + strcpy(els[iels].zoom_event, eventmsg); + else + strcpy(els[iels].zoom_event, "---"); + els[iels].error = error; strcpy(els[iels].errmsg, errmsg); /* print_event_line(&els[iels]); */ elc[ielc] += 1; } -void print_events(int *elc, struct event_line_t *els, +void print_events(int *elc, struct event_line_t *els, int connections){ int i; int j; @@ -105,7 +110,7 @@ void print_events(int *elc, struct event_line_t *els, -void init_statics() +void init_statics(void) { int i; char nullstring[1] = ""; @@ -121,18 +126,20 @@ void init_statics() zoom_events[ZOOM_EVENT_RECV_APDU] = "ZOOM_EVENT_RECV_APDU"; zoom_events[ZOOM_EVENT_RECV_RECORD] = "ZOOM_EVENT_RECV_RECORD"; zoom_events[ZOOM_EVENT_RECV_SEARCH] = "ZOOM_EVENT_RECV_SEARCH"; + zoom_events[ZOOM_EVENT_END] = "ZOOM_EVENT_END"; /* 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; zoom_progress[ZOOM_EVENT_RECV_DATA] = 4; - zoom_progress[ZOOM_EVENT_TIMEOUT] = 8; - zoom_progress[ZOOM_EVENT_UNKNOWN] = 9; + zoom_progress[ZOOM_EVENT_TIMEOUT] = 9; + zoom_progress[ZOOM_EVENT_UNKNOWN] = 10; zoom_progress[ZOOM_EVENT_SEND_APDU] = 2; zoom_progress[ZOOM_EVENT_RECV_APDU] = 5; zoom_progress[ZOOM_EVENT_RECV_RECORD] = 7; zoom_progress[ZOOM_EVENT_RECV_SEARCH] = 6; + zoom_progress[ZOOM_EVENT_END] = 8; /* parameters */ parameters.concurrent = 1; @@ -146,10 +153,10 @@ void init_statics() for (i = 0; i < 4096; i++){ parameters.progress[i] = 0; } - + } - -struct time_type + +struct time_type { struct timeval now; struct timeval then; @@ -186,7 +193,7 @@ long time_usec(struct time_type *ptime) return ptime->usec; } -void print_option_error() +void print_option_error(void) { fprintf(stderr, "zoom-benchmark: Call error\n"); fprintf(stderr, "zoom-benchmark -h host:port -q pqf-query " @@ -200,7 +207,7 @@ void print_option_error() } -void read_params(int argc, char **argv, struct parameters_t *p_parameters){ +void read_params(int argc, char **argv, struct parameters_t *p_parameters){ char *arg; int ret; while ((ret = options("h:q:c:t:p:bgn:", argv, argc, &arg)) != -2) @@ -240,7 +247,7 @@ void read_params(int argc, char **argv, struct parameters_t *p_parameters){ print_option_error(); } } - + if(0){ printf("zoom-benchmark\n"); printf(" host: %s \n", p_parameters->host); @@ -269,7 +276,7 @@ void read_params(int argc, char **argv, struct parameters_t *p_parameters){ print_option_error(); } -void print_table_header() +void print_table_header(void) { if (parameters.gnuplot) printf("#"); @@ -293,11 +300,11 @@ int main(int argc, char **argv) read_params(argc, argv, ¶meters); - z = xmalloc(sizeof(*z) * parameters.concurrent); - r = xmalloc(sizeof(*r) * parameters.concurrent); - elc = xmalloc(sizeof(*elc) * parameters.concurrent * parameters.repeat); - els = xmalloc(sizeof(*els) - * parameters.concurrent * parameters.repeat * 10); + z = (ZOOM_connection *) xmalloc(sizeof(*z) * parameters.concurrent); + r = (ZOOM_resultset *) xmalloc(sizeof(*r) * parameters.concurrent); + elc = (int *) xmalloc(sizeof(*elc) * parameters.concurrent * parameters.repeat); + els = (struct event_line_t *) xmalloc( + sizeof(*els) * parameters.concurrent * parameters.repeat * 10); o = ZOOM_options_create(); /* async mode */ @@ -317,7 +324,7 @@ int main(int argc, char **argv) ZOOM_options_set (o, "preferredRecordSyntax", "usmarc"); ZOOM_options_set (o, "elementSetName", "F"); } - + time_init(&time); /* repeat loop */ for (k = 0; k < parameters.repeat; k++){ @@ -334,7 +341,7 @@ int main(int argc, char **argv) /* create connection - pass options (they are the same for all) */ z[i] = ZOOM_connection_create(o); - + /* connect and init */ ZOOM_connection_connect(z[i], parameters.host, 0); } @@ -343,13 +350,13 @@ int main(int argc, char **argv) r[i] = ZOOM_connection_search_pqf (z[i], parameters.query); /* network I/O. pass number of connections and array of connections */ - while ((i = ZOOM_event (parameters.concurrent, z))){ + while ((i = ZOOM_event (parameters.concurrent, z))){ int event = ZOOM_connection_last_event(z[i-1]); const char *errmsg; const char *addinfo; int error = 0; - int progress = zoom_progress[event]; - + //int progress = zoom_progress[event]; + if (event == ZOOM_EVENT_SEND_DATA || event == ZOOM_EVENT_RECV_DATA) continue; @@ -358,15 +365,19 @@ int main(int argc, char **argv) /* updating events and event list */ error = ZOOM_connection_error(z[i-1] , &errmsg, &addinfo); if (error) - parameters.progress[i] = -progress; + parameters.progress[i] = zoom_progress[ZOOM_EVENT_UNKNOWN]; + //parameters.progress[i] = zoom_progress[ZOOM_EVENT_NONE]; + else if (event == ZOOM_EVENT_CONNECT) + parameters.progress[i] = zoom_progress[event]; else + //parameters.progress[i] = zoom_progress[event]; parameters.progress[i] += 1; - + update_events(elc, els, - k, i-1, - time_sec(&time), time_usec(&time), + k, i-1, + time_sec(&time), time_usec(&time), parameters.progress[i], - event, zoom_events[event], + event, zoom_events[event], error, errmsg); } @@ -398,10 +409,10 @@ int main(int argc, char **argv) printf("\n"); printf("\n"); } - - print_table_header(); + + print_table_header(); print_events(elc, els, parameters.concurrent); - + if (parameters.gnuplot){ printf("end\n"); printf("pause -1 \"Hit ENTER to return\"\n"); @@ -418,6 +429,7 @@ int main(int argc, char **argv) /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab