diff options
author | Ken Raeburn <raeburn@mit.edu> | 2004-12-12 22:55:55 +0000 |
---|---|---|
committer | Ken Raeburn <raeburn@mit.edu> | 2004-12-12 22:55:55 +0000 |
commit | 398f4520c2a9357d6ab5aff8be6dec89846674bf (patch) | |
tree | 4e754c4e494a952223d10544a328510db7eae653 /src/tests | |
parent | 61b07513ee6f0e85b33a705cec403651b2fe28e7 (diff) | |
download | krb5-398f4520c2a9357d6ab5aff8be6dec89846674bf.tar.gz krb5-398f4520c2a9357d6ab5aff8be6dec89846674bf.tar.xz krb5-398f4520c2a9357d6ab5aff8be6dec89846674bf.zip |
new test prog "prof1" for profile reloading
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16931 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/tests')
-rw-r--r-- | src/tests/threads/ChangeLog | 5 | ||||
-rw-r--r-- | src/tests/threads/Makefile.in | 5 | ||||
-rw-r--r-- | src/tests/threads/prof1.c | 79 |
3 files changed, 89 insertions, 0 deletions
diff --git a/src/tests/threads/ChangeLog b/src/tests/threads/ChangeLog index b4c90abb3..32fde2353 100644 --- a/src/tests/threads/ChangeLog +++ b/src/tests/threads/ChangeLog @@ -1,3 +1,8 @@ +2004-12-12 Ken Raeburn <raeburn@mit.edu> + + * prof1.c: New file. + * Makefile.in (prof1, prof1.o): New targets. + 2004-08-03 Ken Raeburn <raeburn@mit.edu> * Makefile.in, t_rcache.c: New files. diff --git a/src/tests/threads/Makefile.in b/src/tests/threads/Makefile.in index dfcc03127..c164717e7 100644 --- a/src/tests/threads/Makefile.in +++ b/src/tests/threads/Makefile.in @@ -24,6 +24,11 @@ syms: syms.o run-syms: syms $(RUN_SETUP) ./syms +prof1: prof1.o $(KRB5_BASE_DEPLIBS) + $(CC_LINK) -o prof1 prof1.o $(KRB5_BASE_LIBS) -lpthread + +prof1.o: prof1.c + check-unix:: run-t_rcache install:: diff --git a/src/tests/threads/prof1.c b/src/tests/threads/prof1.c new file mode 100644 index 000000000..766bfa3d0 --- /dev/null +++ b/src/tests/threads/prof1.c @@ -0,0 +1,79 @@ +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <pthread.h> +#include <assert.h> +#include <sys/types.h> +#include <time.h> +#include <sys/time.h> +#include <utime.h> +#include <com_err.h> +#include <profile.h> + +int nthreads = 10; +unsigned int delay = 3600; + +volatile int done = 0; /* XXX hack */ + +const char *path = "/tmp/foo1.conf:/tmp/foo.conf"; +const char *filename = "/tmp/foo.conf"; + +const char *prog; + +static void *worker(void *arg) +{ + profile_t p; + long err; + int i; + const char *const names[] = { + "one", "two", "three", 0 + }; + char **values; + const char *mypath = (random() & 1) ? path : filename; + + while (!done) { + err = profile_init_path(mypath, &p); + if (err) { + com_err(prog, err, "calling profile_init(\"%s\")", mypath); + exit(1); + } + for (i = 0; i < 10; i++) { + values = 0; + err = profile_get_values(p, names, &values); + if (err == 0 && values != 0) + profile_free_list(values); + } + profile_release(p); + } + return 0; +} + +static void *modifier(void *arg) +{ + struct timespec req; + while (!done) { + req.tv_sec = 0; + req.tv_nsec = random() & 499999999; + nanosleep(&req, 0); + utime(filename, 0); +/* printf("."), fflush(stdout); */ + } + return 0; +} + +int main(int argc, char *argv[]) +{ + int i; + pthread_t thr; + + prog = argv[0]; + for (i = 0; i < nthreads; i++) { + assert(0 == pthread_create(&thr, 0, worker, 0)); + } + sleep(1); + pthread_create(&thr, 0, modifier, 0); + sleep(delay); + done = 1; + sleep(2); + return 0; +} |