From e14420c3af30fb25e3bdd2cdca80d94819c4538d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Milo=C5=A1=20Mula=C4=8D?= Date: Fri, 2 Jun 2006 12:13:02 +0000 Subject: [PATCH] first version of perftest_jobreg --- org.glite.lb.client/Makefile | 9 +- org.glite.lb.client/src/perftest_jobreg.c | 183 ++++++++++++++++++++++++++++++ 2 files changed, 190 insertions(+), 2 deletions(-) create mode 100644 org.glite.lb.client/src/perftest_jobreg.c diff --git a/org.glite.lb.client/Makefile b/org.glite.lb.client/Makefile index 01861ee..0e176c6 100644 --- a/org.glite.lb.client/Makefile +++ b/org.glite.lb.client/Makefile @@ -19,6 +19,8 @@ expat_prefix=/opt/expat CC:=gcc CXX:=g++ +LB_PERF=yes + -include Makefile.inc -include ../project/version.properties @@ -72,8 +74,8 @@ ifdef LB_STANDALONE endif ifdef LB_PERF - LB_PERF_FLAGS:=-DLB_PERF -DLB_PERF_DROP - LB_PERF_TOOLS:=perftest_logjobs + LB_PERF_FLAGS:=-DLB_PERF + LB_PERF_TOOLS:=perftest_logjobs perftest_jobreg endif COMMON_LIB:=-lglite_lb_common_${nothrflavour} COMMON_LIB_THR:=-lglite_lb_common_${thrflavour} @@ -226,6 +228,9 @@ ${MAN_GZ}: ${MAN} gzip $(notdir $?) +perftest_logjobs.o: perftest_logjobs.c + ${CC} ${CFLAGS} -DLB_PERF_DROP ${GLOBUSINC} -c $< + # catches $TOOLS and logevent compilation %.o: %.c ${CC} ${CFLAGS} ${GLOBUSINC} -c $< diff --git a/org.glite.lb.client/src/perftest_jobreg.c b/org.glite.lb.client/src/perftest_jobreg.c new file mode 100644 index 0000000..816ff8f --- /dev/null +++ b/org.glite.lb.client/src/perftest_jobreg.c @@ -0,0 +1,183 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "glite/wmsutils/jobid/cjobid.h" +#include "glite/lb/producer.h" +#include "glite/lb/events.h" + +#define PROXY_SERVER "localhost:9000" + +#define tv_sub(a,b) {\ + (a).tv_usec -= (b).tv_usec;\ + (a).tv_sec -= (b).tv_sec;\ + if ((a).tv_usec < 0) {\ + (a).tv_sec--;\ + (a).tv_usec += 1000000;\ + }\ +} + + + +extern char *optarg; +extern int opterr,optind; + +static void usage(char *me) +{ + fprintf(stderr,"usage: %s [-m bkserver] [-x] [-n num_subjobs [-S]] [-l jdl_file] [-N num_repeat]\n" + " -m address:port of bkserver\n" + " -x use LBProxy\n" + " -n number of subjobs of DAG\n" + " -S register subjobs\n" + " -l file with JDL\n" + " -N repeat whole registration N-times\n", + me); +} + +int main(int argc, char *argv[]) +{ + char *server = NULL,*jdl = NULL; + int lbproxy = 0, N = 1; + int done = 0,num_subjobs = 0,reg_subjobs = 0, i, j; + edg_wll_Context ctx; + edg_wlc_JobId *jobids,*subjobs; + struct timeval start, stop; + + + edg_wll_InitContext(&ctx); + opterr = 0; + + do { + switch (getopt(argc,argv,"xm:n:Sl:N:")) { + case 'x': lbproxy = 1; break; + case 'm': server = strdup(optarg); break; + case 'n': num_subjobs = atoi(optarg); break; + case 'S': if (num_subjobs>0) { reg_subjobs = 1; break; } + case 'l': jdl = (char *) strdup(optarg); break; + case 'N': N = atoi(optarg); break; + case '?': usage(argv[0]); exit(EINVAL); + case -1: done = 1; break; + } + } while (!done); + + if (!server && !lbproxy) { + fprintf(stderr,"%s: either -m server or -x has to be specified\n",argv[0]); + exit(1); + } + + /* prepare set of N jobid before starting timer */ + jobids = (edg_wlc_JobId *) malloc(N * sizeof(edg_wlc_JobId)); + printf("generating jobids..."); + { + char *name=server?server:strdup(PROXY_SERVER); + char *p = strchr(name,':'); + int port; + + if (p) { *p=0; port = atoi(p+1); } + else port = 0; + for (i=0; i 0; p += c); + if (c<0) { + perror("read()"); + exit (1); + } + jdl[p] = 0; + } + + edg_wll_SetParam(ctx,EDG_WLL_PARAM_SOURCE,edg_wll_StringToSource("Application")); + + /* start measurement */ + gettimeofday(&start, NULL); + + for (i=0; i