From mboxrd@z Thu Jan 1 00:00:00 1970 From: pcaulfield@sourceware.org Date: 9 Jan 2007 14:17:37 -0000 Subject: [Cluster-devel] cluster/dlm/tests/usertest Makefile flood.c Message-ID: <20070109141737.17378.qmail@sourceware.org> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit CVSROOT: /cvs/cluster Module name: cluster Changes by: pcaulfield at sourceware.org 2007-01-09 14:17:37 Modified files: dlm/tests/usertest: Makefile Added files: dlm/tests/usertest: flood.c Log message: Add flood program back. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/dlm/tests/usertest/flood.c.diff?cvsroot=cluster&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/dlm/tests/usertest/Makefile.diff?cvsroot=cluster&r1=1.6&r2=1.7 --- cluster/dlm/tests/usertest/flood.c 2005/12/13 11:20:23 1.1 +++ cluster/dlm/tests/usertest/flood.c 2007/01/09 14:17:37 1.2 @@ -0,0 +1,163 @@ +/* Flood the DLM ! + but not too much... +*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "libdlm.h" + +static pthread_cond_t cond; +static pthread_mutex_t mutex; + +static int count = 0; + +static void usage(char *prog, FILE *file) +{ + fprintf(file, "Usage:\n"); + fprintf(file, "%s [mcnpquhV] \n", prog); + fprintf(file, "\n"); + fprintf(file, " -V Show version of %s\n", prog); + fprintf(file, " -h Show this help information\n"); + fprintf(file, " -m Maximum number of locks to hold (default MAX_INT)\n"); + fprintf(file, " -i Show progress in increments (default 1000)\n"); + fprintf(file, " -n Number of resources (default 10)\n"); + fprintf(file, " -q Quit\n"); + + + fprintf(file, "\n"); + +} + +static void ast_routine(void *arg) +{ + struct dlm_lksb *lksb = arg; + + if (lksb->sb_status == 0) { + dlm_unlock(lksb->sb_lkid, 0, lksb, lksb); + return; + } + + if (lksb->sb_status == EUNLOCK) { + count--; + free(lksb); + } + +} + +int main(int argc, char *argv[]) +{ + int flags = 0; + int lockops = 0; + int maxlocks = INT_MAX; + int rescount = 10; + int increment = 1000; + int quiet = 0; + int status; + int i; + int mode = LKM_CRMODE; + signed char opt; + char **resources; + + /* Deal with command-line arguments */ + opterr = 0; + optind = 0; + while ((opt=getopt(argc,argv,"?m:i:qn:vV")) != EOF) + { + switch(opt) + { + case 'h': + usage(argv[0], stdout); + exit(0); + + case '?': + usage(argv[0], stderr); + exit(0); + + case 'm': + maxlocks = atoi(optarg); + break; + + case 'i': + increment = atoi(optarg); + break; + + case 'n': + rescount = atoi(optarg); + break; + + case 'q': + quiet = 1; + break; + + case 'V': + printf("\nflood version 0.2\n\n"); + exit(1); + break; + } + } + + resources = malloc(sizeof(char*) * rescount); + for (i=0; i < rescount; i++) { + char resname[256]; + sprintf(resname, "TESTLOCK%d", i); + resources[i] = strdup(resname); + } + + pthread_cond_init(&cond, NULL); + pthread_mutex_init(&mutex, NULL); + pthread_mutex_lock(&mutex); + + dlm_pthread_init(); + + while (1) { + char *resource = resources[rand() % rescount]; + struct dlm_lksb *lksb = malloc(sizeof(struct dlm_lksb)); + if (!lksb) + exit(1); + + status = dlm_lock(mode, + lksb, + flags, + resource, + strlen(resource), + 0, // Parent, + ast_routine, + lksb, + NULL, // bast_routine, + NULL); // Range + if (status == -1) + { + perror("lock failed"); + return -1; + } + + count++; + lockops++; + if ((lockops % increment) == 0 && !quiet) + fprintf(stderr, "%d lockops, %d locks\n", lockops, count); + + while (count > maxlocks) { + sleep(1); + } + + } + + return 0; +} + --- cluster/dlm/tests/usertest/Makefile 2006/12/07 19:50:49 1.6 +++ cluster/dlm/tests/usertest/Makefile 2007/01/09 14:17:37 1.7 @@ -12,7 +12,7 @@ top_srcdir = ../../.. UNINSTALL=${top_srcdir}/scripts/uninstall.pl -BINARIES=dlmtest asttest lstest pingtest lvb dlmtest2 +BINARIES=dlmtest asttest lstest pingtest lvb dlmtest2 flood all: $(BINARIES) @@ -32,6 +32,9 @@ dlmtest2: dlmtest2.c $(CC) $(CFLAGS) -o $@ $< -ldlm -lpthread +flood: flood.c + $(CC) $(CFLAGS) -o $@ $< -ldlm -lpthread + asttest: asttest.c $(CC) $(CFLAGS) -o $@ $< -ldlm -lpthread