+
+ /* 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; i<number; i++)
+ // yaz_log(level, "%s", arg);
+ print_option_error();
+ break;
+ default:
+ print_option_error();
+ }
+ }
+
+ //printf("zoom-benchmark\n");
+ //printf(" host: %s \n", p_parameters->host);
+ //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();
+