From 6ba98a9f9f48e13738d9736cba9c45b5e94f42f2 Mon Sep 17 00:00:00 2001 From: Brian Cully Date: Mon, 14 Apr 2008 21:52:55 -0400 Subject: Initial import --- tests/.cvsignore | 14 ++++ tests/.pure | 0 tests/.svn/README.txt | 2 + tests/.svn/empty-file | 0 tests/.svn/entries | 121 +++++++++++++++++++++++++++ tests/.svn/format | 1 + tests/.svn/prop-base/.cvsignore.svn-base | 1 + tests/.svn/prop-base/.pure.svn-base | 1 + tests/.svn/prop-base/Makefile.svn-base | 1 + tests/.svn/prop-base/getass.c.svn-base | 1 + tests/.svn/prop-base/getnast.c.svn-base | 1 + tests/.svn/prop-base/killnast.c.svn-base | 1 + tests/.svn/prop-base/mtstressass.c.svn-base | 1 + tests/.svn/prop-base/mtstressnast.c.svn-base | 1 + tests/.svn/prop-base/randnast.c.svn-base | 1 + tests/.svn/prop-base/statnast.c.svn-base | 1 + tests/.svn/prop-base/stressnast.c.svn-base | 1 + tests/.svn/prop-base/updnast.c.svn-base | 1 + tests/.svn/props/.cvsignore.svn-work | 1 + tests/.svn/props/.pure.svn-work | 1 + tests/.svn/props/Makefile.svn-work | 1 + tests/.svn/props/getass.c.svn-work | 1 + tests/.svn/props/getnast.c.svn-work | 1 + tests/.svn/props/killnast.c.svn-work | 1 + tests/.svn/props/mtstressass.c.svn-work | 1 + tests/.svn/props/mtstressnast.c.svn-work | 1 + tests/.svn/props/randnast.c.svn-work | 1 + tests/.svn/props/statnast.c.svn-work | 1 + tests/.svn/props/stressnast.c.svn-work | 1 + tests/.svn/props/updnast.c.svn-work | 1 + tests/.svn/text-base/.cvsignore.svn-base | 14 ++++ tests/.svn/text-base/.pure.svn-base | 0 tests/.svn/text-base/Makefile.svn-base | 46 ++++++++++ tests/.svn/text-base/getass.c.svn-base | 59 +++++++++++++ tests/.svn/text-base/getnast.c.svn-base | 64 ++++++++++++++ tests/.svn/text-base/killnast.c.svn-base | 39 +++++++++ tests/.svn/text-base/mtstressass.c.svn-base | 95 +++++++++++++++++++++ tests/.svn/text-base/mtstressnast.c.svn-base | 77 +++++++++++++++++ tests/.svn/text-base/randnast.c.svn-base | 69 +++++++++++++++ tests/.svn/text-base/statnast.c.svn-base | 39 +++++++++ tests/.svn/text-base/stressnast.c.svn-base | 60 +++++++++++++ tests/.svn/text-base/updnast.c.svn-base | 80 ++++++++++++++++++ tests/Makefile | 46 ++++++++++ tests/getass.c | 59 +++++++++++++ tests/getnast.c | 64 ++++++++++++++ tests/killnast.c | 39 +++++++++ tests/mtstressass.c | 95 +++++++++++++++++++++ tests/mtstressnast.c | 77 +++++++++++++++++ tests/randnast.c | 69 +++++++++++++++ tests/statnast.c | 39 +++++++++ tests/stressnast.c | 60 +++++++++++++ tests/updnast.c | 80 ++++++++++++++++++ 52 files changed, 1432 insertions(+) create mode 100644 tests/.cvsignore create mode 100644 tests/.pure create mode 100644 tests/.svn/README.txt create mode 100644 tests/.svn/empty-file create mode 100644 tests/.svn/entries create mode 100644 tests/.svn/format create mode 100644 tests/.svn/prop-base/.cvsignore.svn-base create mode 100644 tests/.svn/prop-base/.pure.svn-base create mode 100644 tests/.svn/prop-base/Makefile.svn-base create mode 100644 tests/.svn/prop-base/getass.c.svn-base create mode 100644 tests/.svn/prop-base/getnast.c.svn-base create mode 100644 tests/.svn/prop-base/killnast.c.svn-base create mode 100644 tests/.svn/prop-base/mtstressass.c.svn-base create mode 100644 tests/.svn/prop-base/mtstressnast.c.svn-base create mode 100644 tests/.svn/prop-base/randnast.c.svn-base create mode 100644 tests/.svn/prop-base/statnast.c.svn-base create mode 100644 tests/.svn/prop-base/stressnast.c.svn-base create mode 100644 tests/.svn/prop-base/updnast.c.svn-base create mode 100644 tests/.svn/props/.cvsignore.svn-work create mode 100644 tests/.svn/props/.pure.svn-work create mode 100644 tests/.svn/props/Makefile.svn-work create mode 100644 tests/.svn/props/getass.c.svn-work create mode 100644 tests/.svn/props/getnast.c.svn-work create mode 100644 tests/.svn/props/killnast.c.svn-work create mode 100644 tests/.svn/props/mtstressass.c.svn-work create mode 100644 tests/.svn/props/mtstressnast.c.svn-work create mode 100644 tests/.svn/props/randnast.c.svn-work create mode 100644 tests/.svn/props/statnast.c.svn-work create mode 100644 tests/.svn/props/stressnast.c.svn-work create mode 100644 tests/.svn/props/updnast.c.svn-work create mode 100644 tests/.svn/text-base/.cvsignore.svn-base create mode 100644 tests/.svn/text-base/.pure.svn-base create mode 100644 tests/.svn/text-base/Makefile.svn-base create mode 100644 tests/.svn/text-base/getass.c.svn-base create mode 100644 tests/.svn/text-base/getnast.c.svn-base create mode 100644 tests/.svn/text-base/killnast.c.svn-base create mode 100644 tests/.svn/text-base/mtstressass.c.svn-base create mode 100644 tests/.svn/text-base/mtstressnast.c.svn-base create mode 100644 tests/.svn/text-base/randnast.c.svn-base create mode 100644 tests/.svn/text-base/statnast.c.svn-base create mode 100644 tests/.svn/text-base/stressnast.c.svn-base create mode 100644 tests/.svn/text-base/updnast.c.svn-base create mode 100644 tests/Makefile create mode 100644 tests/getass.c create mode 100644 tests/getnast.c create mode 100644 tests/killnast.c create mode 100644 tests/mtstressass.c create mode 100644 tests/mtstressnast.c create mode 100644 tests/randnast.c create mode 100644 tests/statnast.c create mode 100644 tests/stressnast.c create mode 100644 tests/updnast.c (limited to 'tests') diff --git a/tests/.cvsignore b/tests/.cvsignore new file mode 100644 index 0000000..0d898eb --- /dev/null +++ b/tests/.cvsignore @@ -0,0 +1,14 @@ +getnast +killnast +randnast +statnast +stressnast +mtstressnast +updnast +.pure +*.o +*.so +*.a +*.core +*.gmon +tags diff --git a/tests/.pure b/tests/.pure new file mode 100644 index 0000000..e69de29 diff --git a/tests/.svn/README.txt b/tests/.svn/README.txt new file mode 100644 index 0000000..271a8ce --- /dev/null +++ b/tests/.svn/README.txt @@ -0,0 +1,2 @@ +This is a Subversion working copy administrative directory. +Visit http://subversion.tigris.org/ for more information. diff --git a/tests/.svn/empty-file b/tests/.svn/empty-file new file mode 100644 index 0000000..e69de29 diff --git a/tests/.svn/entries b/tests/.svn/entries new file mode 100644 index 0000000..01b7881 --- /dev/null +++ b/tests/.svn/entries @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + diff --git a/tests/.svn/format b/tests/.svn/format new file mode 100644 index 0000000..b8626c4 --- /dev/null +++ b/tests/.svn/format @@ -0,0 +1 @@ +4 diff --git a/tests/.svn/prop-base/.cvsignore.svn-base b/tests/.svn/prop-base/.cvsignore.svn-base new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/prop-base/.cvsignore.svn-base @@ -0,0 +1 @@ +END diff --git a/tests/.svn/prop-base/.pure.svn-base b/tests/.svn/prop-base/.pure.svn-base new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/prop-base/.pure.svn-base @@ -0,0 +1 @@ +END diff --git a/tests/.svn/prop-base/Makefile.svn-base b/tests/.svn/prop-base/Makefile.svn-base new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/prop-base/Makefile.svn-base @@ -0,0 +1 @@ +END diff --git a/tests/.svn/prop-base/getass.c.svn-base b/tests/.svn/prop-base/getass.c.svn-base new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/prop-base/getass.c.svn-base @@ -0,0 +1 @@ +END diff --git a/tests/.svn/prop-base/getnast.c.svn-base b/tests/.svn/prop-base/getnast.c.svn-base new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/prop-base/getnast.c.svn-base @@ -0,0 +1 @@ +END diff --git a/tests/.svn/prop-base/killnast.c.svn-base b/tests/.svn/prop-base/killnast.c.svn-base new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/prop-base/killnast.c.svn-base @@ -0,0 +1 @@ +END diff --git a/tests/.svn/prop-base/mtstressass.c.svn-base b/tests/.svn/prop-base/mtstressass.c.svn-base new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/prop-base/mtstressass.c.svn-base @@ -0,0 +1 @@ +END diff --git a/tests/.svn/prop-base/mtstressnast.c.svn-base b/tests/.svn/prop-base/mtstressnast.c.svn-base new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/prop-base/mtstressnast.c.svn-base @@ -0,0 +1 @@ +END diff --git a/tests/.svn/prop-base/randnast.c.svn-base b/tests/.svn/prop-base/randnast.c.svn-base new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/prop-base/randnast.c.svn-base @@ -0,0 +1 @@ +END diff --git a/tests/.svn/prop-base/statnast.c.svn-base b/tests/.svn/prop-base/statnast.c.svn-base new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/prop-base/statnast.c.svn-base @@ -0,0 +1 @@ +END diff --git a/tests/.svn/prop-base/stressnast.c.svn-base b/tests/.svn/prop-base/stressnast.c.svn-base new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/prop-base/stressnast.c.svn-base @@ -0,0 +1 @@ +END diff --git a/tests/.svn/prop-base/updnast.c.svn-base b/tests/.svn/prop-base/updnast.c.svn-base new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/prop-base/updnast.c.svn-base @@ -0,0 +1 @@ +END diff --git a/tests/.svn/props/.cvsignore.svn-work b/tests/.svn/props/.cvsignore.svn-work new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/props/.cvsignore.svn-work @@ -0,0 +1 @@ +END diff --git a/tests/.svn/props/.pure.svn-work b/tests/.svn/props/.pure.svn-work new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/props/.pure.svn-work @@ -0,0 +1 @@ +END diff --git a/tests/.svn/props/Makefile.svn-work b/tests/.svn/props/Makefile.svn-work new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/props/Makefile.svn-work @@ -0,0 +1 @@ +END diff --git a/tests/.svn/props/getass.c.svn-work b/tests/.svn/props/getass.c.svn-work new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/props/getass.c.svn-work @@ -0,0 +1 @@ +END diff --git a/tests/.svn/props/getnast.c.svn-work b/tests/.svn/props/getnast.c.svn-work new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/props/getnast.c.svn-work @@ -0,0 +1 @@ +END diff --git a/tests/.svn/props/killnast.c.svn-work b/tests/.svn/props/killnast.c.svn-work new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/props/killnast.c.svn-work @@ -0,0 +1 @@ +END diff --git a/tests/.svn/props/mtstressass.c.svn-work b/tests/.svn/props/mtstressass.c.svn-work new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/props/mtstressass.c.svn-work @@ -0,0 +1 @@ +END diff --git a/tests/.svn/props/mtstressnast.c.svn-work b/tests/.svn/props/mtstressnast.c.svn-work new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/props/mtstressnast.c.svn-work @@ -0,0 +1 @@ +END diff --git a/tests/.svn/props/randnast.c.svn-work b/tests/.svn/props/randnast.c.svn-work new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/props/randnast.c.svn-work @@ -0,0 +1 @@ +END diff --git a/tests/.svn/props/statnast.c.svn-work b/tests/.svn/props/statnast.c.svn-work new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/props/statnast.c.svn-work @@ -0,0 +1 @@ +END diff --git a/tests/.svn/props/stressnast.c.svn-work b/tests/.svn/props/stressnast.c.svn-work new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/props/stressnast.c.svn-work @@ -0,0 +1 @@ +END diff --git a/tests/.svn/props/updnast.c.svn-work b/tests/.svn/props/updnast.c.svn-work new file mode 100644 index 0000000..dce2c1d --- /dev/null +++ b/tests/.svn/props/updnast.c.svn-work @@ -0,0 +1 @@ +END diff --git a/tests/.svn/text-base/.cvsignore.svn-base b/tests/.svn/text-base/.cvsignore.svn-base new file mode 100644 index 0000000..0d898eb --- /dev/null +++ b/tests/.svn/text-base/.cvsignore.svn-base @@ -0,0 +1,14 @@ +getnast +killnast +randnast +statnast +stressnast +mtstressnast +updnast +.pure +*.o +*.so +*.a +*.core +*.gmon +tags diff --git a/tests/.svn/text-base/.pure.svn-base b/tests/.svn/text-base/.pure.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/tests/.svn/text-base/Makefile.svn-base b/tests/.svn/text-base/Makefile.svn-base new file mode 100644 index 0000000..8c2cd69 --- /dev/null +++ b/tests/.svn/text-base/Makefile.svn-base @@ -0,0 +1,46 @@ +# $Id: Makefile,v 1.15 2000/12/27 06:51:51 shmit Exp $ + +LIBASS= ../client/libnast.a + +tclients: getnast statnast stressnast randnast mtstressnast updnast \ + killnast + +GETOBJS= getnast.o +getnast: ${GETOBJS} + ${PURIFY} ${CC} -o $@ ${GETOBJS} ${LIBASS} ${LIBS} + +STATOBJS= statnast.o +statnast: ${STATOBJS} + ${PURIFY} ${CC} -o $@ ${STATOBJS} ${LIBASS} ${LIBS} + +STRESSOBJS= stressnast.o +stressnast: ${STRESSOBJS} + ${PURIFY} ${CC} -o $@ ${STRESSOBJS} ${LIBASS} ${LIBS} + +RANDOBJS= randnast.o +randnast: ${RANDOBJS} + ${PURIFY} ${CC} -o $@ ${RANDOBJS} ${LIBASS} ${LIBS} + +MTSTRESSOBJS= mtstressnast.o +mtstressnast: ${MTSTRESSOBJS} + ${PURIFY} ${CC} -o $@ ${MTSTRESSOBJS} ${LIBASS} ${LIBS} + +UPDOBJS= updnast.o +updnast: ${UPDOBJS} + ${PURIFY} ${CC} -o $@ ${UPDOBJS} ${LIBASS} ${LIBS} + +KILLOBJS= killnast.o +killnast: ${KILLOBJS} + ${PURIFY} ${CC} -o $@ ${KILLOBJS} ${LIBASS} ${LIBS} + +# +# Dependencies +# +getnast.o: ../include/nastd.h +statnast.o: ../include/nastd.h +stressnast.o: ../include/nastd.h +randnast.o: ../include/nastd.h +mtstressnast.o: ../include/nastd.h + +MKDIR= ../Makefiles +include ${MKDIR}/build diff --git a/tests/.svn/text-base/getass.c.svn-base b/tests/.svn/text-base/getass.c.svn-base new file mode 100644 index 0000000..7f81bf8 --- /dev/null +++ b/tests/.svn/text-base/getass.c.svn-base @@ -0,0 +1,59 @@ +#include + +#include +#include + +int +main(int argc, char *argv[]) +{ + assh *asshole; + ass_array *aa; + ass_options opts; + int i, rc; + + if (argc != 2) { + printf("Usage: %s query\n", argv[0]); + return 1; + } + + asshole = ass_sphincter_new(); + if (asshole == NULL) { + fprintf(stderr, "ERROR: Couldn't connect to asshole.\n"); + return 2; + } + + /* Get the default options. */ + rc = ass_options_get(asshole, &opts); + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't get options: %s.\n", + ass_errmsg(asshole)); + ass_sphincter_close(asshole); + return 2; + } + + /* Add more fallthrough threads. */ + opts.fallthrough_threads = 5; + rc = ass_options_set(asshole, &opts); + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't set options: %s.\n", + ass_errmsg(asshole)); + ass_sphincter_close(asshole); + return 2; + } + + rc = ass_get(asshole, argv[1]); + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't perform query: %s.\n", + ass_errmsg(asshole)); + ass_sphincter_close(asshole); + return 2; + } + + aa = ass_get_result(asshole); + for (i = 0; i < aa->nitems; i++) + printf("Result[%d]: `%s'\n", i, aa->items[i]->strdata); + ass_free_result(aa); + + ass_sphincter_close(asshole); + return 0; +} diff --git a/tests/.svn/text-base/getnast.c.svn-base b/tests/.svn/text-base/getnast.c.svn-base new file mode 100644 index 0000000..904c01f --- /dev/null +++ b/tests/.svn/text-base/getnast.c.svn-base @@ -0,0 +1,64 @@ +#include + +#include +#include +#include + +char *progname; + +void +usage() +{ + fprintf(stderr, "Usage: %s [-s socket] query\n", progname); + exit(1); +} + +int +main(int argc, char *argv[]) +{ + char *sock_n; + nasth *nasthole; + nast_array *aa; + char ch; + int i, rc; + + progname = strrchr(argv[0], '/'); + if (!progname) + progname = argv[0]; + else + progname++; + + sock_n = NULL; + while ((ch = getopt(argc, argv, "s:")) != -1) { + switch (ch) { + case 's': + sock_n = optarg; + break; + default: + usage(); + /* NOTREACHED */ + } + } + + nasthole = nast_sphincter_new(sock_n); + if (nasthole == NULL) { + fprintf(stderr, "ERROR: Couldn't connect to nasthole.\n"); + return 2; + } + + rc = nast_get(nasthole, argv[argc-1]); + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't perform query: %s.\n", + nast_errmsg(nasthole)); + nast_sphincter_close(nasthole); + return 2; + } + + aa = nast_get_result(nasthole); + for (i = 0; i < aa->nitems; i++) + printf("Result[%d]: `%s'\n", i, aa->items[i]->strdata); + nast_free_result(aa); + + nast_sphincter_close(nasthole); + return 0; +} diff --git a/tests/.svn/text-base/killnast.c.svn-base b/tests/.svn/text-base/killnast.c.svn-base new file mode 100644 index 0000000..7c06dee --- /dev/null +++ b/tests/.svn/text-base/killnast.c.svn-base @@ -0,0 +1,39 @@ +#include + +#include +#include + +int +main(int argc, char *argv[]) +{ + nasth *nasthole; + nast_array *aa; + int i, rc; + + if (argc != 1) { + printf("Usage: %s\n", argv[0]); + return 1; + } + + nasthole = nast_sphincter_new(NULL); + if (nasthole == NULL) { + fprintf(stderr, "ERROR: Couldn't connect to nasthole.\n"); + return 2; + } + + rc = nast_stats(nasthole); + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't get stats: %s.\n", + nast_errmsg(nasthole)); + nast_sphincter_close(nasthole); + return 2; + } + + aa = nast_get_result(nasthole); + for (i = 0; i < aa->nitems; i++) + printf("%s\n", aa->items[i]->strdata); + nast_free_result(aa); + + nast_sphincter_close(nasthole); + return 0; +} diff --git a/tests/.svn/text-base/mtstressass.c.svn-base b/tests/.svn/text-base/mtstressass.c.svn-base new file mode 100644 index 0000000..1a4c2e1 --- /dev/null +++ b/tests/.svn/text-base/mtstressass.c.svn-base @@ -0,0 +1,95 @@ +#include + +#include +#include +#include +#include +#include +#include +#include + +#define NTHREADS 10 + +assh *asshole; +char *username; + +void * +io_looper(void *arg) +{ + struct timeval before, after; + ass_options opts; + int i, rc; + + for (;;) { + /* Get the default options. */ + rc = ass_options_get(asshole, &opts); + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't get options: %s.\n", + ass_errmsg(asshole)); + return NULL; + } + + /* Add more fallthrough threads. */ + opts.fallthrough_threads = 5; + rc = ass_options_set(asshole, &opts); + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't set options: %s.\n", + ass_errmsg(asshole)); + return NULL; + } + + for (i = 0; i < 10; i++) { + gettimeofday(&before, NULL); + rc = ass_get(asshole, username); + gettimeofday(&after, NULL); + if (rc == -1) { + if (ass_geterr(asshole) == ASS_TIMEDOUT) { + fprintf(stderr, + "ERROR: response timed out.\n"); + continue; + } + fprintf(stderr, + "ERROR: Couldn't perform query: %s.\n", + ass_errmsg(asshole)); + return NULL; + } + + after.tv_sec -= before.tv_sec; + after.tv_usec -= before.tv_usec; + if (after.tv_usec < 0) { + after.tv_sec--; + after.tv_usec += 1000000; + } + fprintf(stderr, "Request time: %2ld.%06ld seconds.\n", + after.tv_sec, after.tv_usec); + } + } +} + +int +main(int argc, char *argv[]) +{ + pthread_t tids[NTHREADS]; + int i; + + if (argc != 2) { + printf("Usage: %s query\n", argv[0]); + return 1; + } + username = argv[1]; + + asshole = ass_sphincter_new(); + if (asshole == NULL) { + fprintf(stderr, "ERROR: Couldn't connect to asshole.\n"); + return 2; + } + + for (i = 0; i < NTHREADS; i++) + pthread_create(&tids[i], NULL, io_looper, NULL); + + for (i = 0; i < NTHREADS; i++) + pthread_join(tids[i], NULL); + + ass_sphincter_close(asshole); + return 0; +} diff --git a/tests/.svn/text-base/mtstressnast.c.svn-base b/tests/.svn/text-base/mtstressnast.c.svn-base new file mode 100644 index 0000000..913312e --- /dev/null +++ b/tests/.svn/text-base/mtstressnast.c.svn-base @@ -0,0 +1,77 @@ +#include + +#include +#include +#include +#include +#include +#include +#include + +#define NTHREADS 10 + +nasth *nasthole; +char *username; + +void * +io_looper(void *arg) +{ + struct timeval before, after; + int i, rc; + + for (;;) { + for (i = 0; i < 10; i++) { + gettimeofday(&before, NULL); + rc = nast_get(nasthole, username); + gettimeofday(&after, NULL); + if (rc == -1) { + if (nast_geterr(nasthole) == NAST_TIMEDOUT) { + fprintf(stderr, + "ERROR: response timed out.\n"); + continue; + } + fprintf(stderr, + "ERROR: Couldn't perform query: %s.\n", + nast_errmsg(nasthole)); + return NULL; + } + + after.tv_sec -= before.tv_sec; + after.tv_usec -= before.tv_usec; + if (after.tv_usec < 0) { + after.tv_sec--; + after.tv_usec += 1000000; + } + fprintf(stderr, "Request time: %2ld.%06ld seconds.\n", + after.tv_sec, after.tv_usec); + } + } +} + +int +main(int argc, char *argv[]) +{ + pthread_t tids[NTHREADS]; + int i; + + if (argc != 2) { + printf("Usage: %s query\n", argv[0]); + return 1; + } + username = argv[1]; + + nasthole = nast_sphincter_new(NULL); + if (nasthole == NULL) { + fprintf(stderr, "ERROR: Couldn't connect to nasthole.\n"); + return 2; + } + + for (i = 0; i < NTHREADS; i++) + pthread_create(&tids[i], NULL, io_looper, NULL); + + for (i = 0; i < NTHREADS; i++) + pthread_join(tids[i], NULL); + + nast_sphincter_close(nasthole); + return 0; +} diff --git a/tests/.svn/text-base/randnast.c.svn-base b/tests/.svn/text-base/randnast.c.svn-base new file mode 100644 index 0000000..dd39fc6 --- /dev/null +++ b/tests/.svn/text-base/randnast.c.svn-base @@ -0,0 +1,69 @@ +#include + +#include +#include +#include +#include +#include + +char letters[] = "abcdefghijklmnopqrstuvwxyz0123456789-_."; + +int +main(int argc, char *argv[]) +{ + nasth *nasthole; + struct timeval before, after; + nast_options opts; + int i, rc; + + nasthole = nast_sphincter_new(NULL); + if (nasthole == NULL) { + fprintf(stderr, "ERROR: Couldn't connect to nasthole.\n"); + return 2; + } + + srand(time(NULL)); + + for (;;) { + /* Get the default options. */ + rc = nast_options_get(nasthole, &opts); + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't get options: %s.\n", + nast_errmsg(nasthole)); + nast_sphincter_close(nasthole); + return 2; + } + + for (i = 0; i < 10; i++) { + char uname[32]; + int i, maxlen; + + maxlen = rand() % sizeof(uname); + for (i = 0; i < maxlen-1; i++) + uname[i] = letters[rand() % sizeof(letters)]; + uname[maxlen] = '\0'; + + gettimeofday(&before, NULL); + rc = nast_get(nasthole, uname); + gettimeofday(&after, NULL); + if (rc == -1) { + fprintf(stderr, + "ERROR: Couldn't perform query: %s.\n", + nast_errmsg(nasthole)); + nast_sphincter_close(nasthole); + return 2; + } + + after.tv_sec -= before.tv_sec; + after.tv_usec -= before.tv_usec; + if (after.tv_usec < 0) { + after.tv_sec--; + after.tv_usec += 1000000; + } + fprintf(stderr, "Request time: %2ld.%06ld seconds.\n", + after.tv_sec, after.tv_usec); + } + } + nast_sphincter_close(nasthole); + return 0; +} diff --git a/tests/.svn/text-base/statnast.c.svn-base b/tests/.svn/text-base/statnast.c.svn-base new file mode 100644 index 0000000..7c06dee --- /dev/null +++ b/tests/.svn/text-base/statnast.c.svn-base @@ -0,0 +1,39 @@ +#include + +#include +#include + +int +main(int argc, char *argv[]) +{ + nasth *nasthole; + nast_array *aa; + int i, rc; + + if (argc != 1) { + printf("Usage: %s\n", argv[0]); + return 1; + } + + nasthole = nast_sphincter_new(NULL); + if (nasthole == NULL) { + fprintf(stderr, "ERROR: Couldn't connect to nasthole.\n"); + return 2; + } + + rc = nast_stats(nasthole); + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't get stats: %s.\n", + nast_errmsg(nasthole)); + nast_sphincter_close(nasthole); + return 2; + } + + aa = nast_get_result(nasthole); + for (i = 0; i < aa->nitems; i++) + printf("%s\n", aa->items[i]->strdata); + nast_free_result(aa); + + nast_sphincter_close(nasthole); + return 0; +} diff --git a/tests/.svn/text-base/stressnast.c.svn-base b/tests/.svn/text-base/stressnast.c.svn-base new file mode 100644 index 0000000..ad17a51 --- /dev/null +++ b/tests/.svn/text-base/stressnast.c.svn-base @@ -0,0 +1,60 @@ +#include + +#include +#include +#include + +int +main(int argc, char *argv[]) +{ + nasth *nasthole; + struct timeval before, after; + nast_options opts; + int i, rc; + + if (argc != 2) { + printf("Usage: %s query\n", argv[0]); + return 1; + } + + nasthole = nast_sphincter_new(NULL); + if (nasthole == NULL) { + fprintf(stderr, "ERROR: Couldn't connect to nasthole.\n"); + return 2; + } + + for (;;) { + /* Get the default options. */ + rc = nast_options_get(nasthole, &opts); + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't get options: %s.\n", + nast_errmsg(nasthole)); + nast_sphincter_close(nasthole); + return 2; + } + + for (i = 0; i < 10; i++) { + gettimeofday(&before, NULL); + rc = nast_get(nasthole, argv[1]); + gettimeofday(&after, NULL); + if (rc == -1) { + fprintf(stderr, + "ERROR: Couldn't perform query: %s.\n", + nast_errmsg(nasthole)); + nast_sphincter_close(nasthole); + return 2; + } + + after.tv_sec -= before.tv_sec; + after.tv_usec -= before.tv_usec; + if (after.tv_usec < 0) { + after.tv_sec--; + after.tv_usec += 1000000; + } + fprintf(stderr, "Request time: %2ld.%06ld seconds.\n", + after.tv_sec, after.tv_usec); + } + } + nast_sphincter_close(nasthole); + return 0; +} diff --git a/tests/.svn/text-base/updnast.c.svn-base b/tests/.svn/text-base/updnast.c.svn-base new file mode 100644 index 0000000..9acef66 --- /dev/null +++ b/tests/.svn/text-base/updnast.c.svn-base @@ -0,0 +1,80 @@ +#include + +#include +#include +#include + +char *progname; + +void +usage() +{ + fprintf(stderr, "Usage: %s [-s socket] query\n", progname); + exit(1); +} + +int +main(int argc, char *argv[]) +{ + char *sock_n; + nasth *nasthole; + nast_array *aa; + char ch; + int i, rc; + + progname = strrchr(argv[0], '/'); + if (!progname) + progname = argv[0]; + else + progname++; + + sock_n = NULL; + while ((ch = getopt(argc, argv, "s:")) != -1) { + switch (ch) { + case 's': + sock_n = optarg; + break; + default: + usage(); + /* NOTREACHED */ + } + } + + nasthole = nast_sphincter_new(sock_n); + if (nasthole == NULL) { + fprintf(stderr, "ERROR: Couldn't connect to nasthole.\n"); + return 2; + } + + aa = nast_array_new(); + if (aa == NULL) { + fprintf(stderr, "ERROR: Couldn't create array.\n"); + return 3; + } + + for (i = optind+1; i < argc; i++) + nast_array_add(aa, strlen(argv[i]), argv[i]); + + rc = nast_upd(nasthole, argv[optind], aa); + nast_array_delete(aa); + + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't perform update: %s.\n", + nast_errmsg(nasthole)); + nast_sphincter_close(nasthole); + return 2; + } + + aa = nast_get_result(nasthole); + if (aa->nitems == 0 || (aa->nitems == 1 && + aa->items[0]->strlen == 0)) + printf("Update for %s succeeded.\n", argv[optind]); + else { + for (i = 0; i < aa->nitems; i++) + printf("Result[%d]: `%s'\n", i, aa->items[i]->strdata); + } + nast_free_result(aa); + + nast_sphincter_close(nasthole); + return 0; +} diff --git a/tests/Makefile b/tests/Makefile new file mode 100644 index 0000000..8c2cd69 --- /dev/null +++ b/tests/Makefile @@ -0,0 +1,46 @@ +# $Id: Makefile,v 1.15 2000/12/27 06:51:51 shmit Exp $ + +LIBASS= ../client/libnast.a + +tclients: getnast statnast stressnast randnast mtstressnast updnast \ + killnast + +GETOBJS= getnast.o +getnast: ${GETOBJS} + ${PURIFY} ${CC} -o $@ ${GETOBJS} ${LIBASS} ${LIBS} + +STATOBJS= statnast.o +statnast: ${STATOBJS} + ${PURIFY} ${CC} -o $@ ${STATOBJS} ${LIBASS} ${LIBS} + +STRESSOBJS= stressnast.o +stressnast: ${STRESSOBJS} + ${PURIFY} ${CC} -o $@ ${STRESSOBJS} ${LIBASS} ${LIBS} + +RANDOBJS= randnast.o +randnast: ${RANDOBJS} + ${PURIFY} ${CC} -o $@ ${RANDOBJS} ${LIBASS} ${LIBS} + +MTSTRESSOBJS= mtstressnast.o +mtstressnast: ${MTSTRESSOBJS} + ${PURIFY} ${CC} -o $@ ${MTSTRESSOBJS} ${LIBASS} ${LIBS} + +UPDOBJS= updnast.o +updnast: ${UPDOBJS} + ${PURIFY} ${CC} -o $@ ${UPDOBJS} ${LIBASS} ${LIBS} + +KILLOBJS= killnast.o +killnast: ${KILLOBJS} + ${PURIFY} ${CC} -o $@ ${KILLOBJS} ${LIBASS} ${LIBS} + +# +# Dependencies +# +getnast.o: ../include/nastd.h +statnast.o: ../include/nastd.h +stressnast.o: ../include/nastd.h +randnast.o: ../include/nastd.h +mtstressnast.o: ../include/nastd.h + +MKDIR= ../Makefiles +include ${MKDIR}/build diff --git a/tests/getass.c b/tests/getass.c new file mode 100644 index 0000000..7f81bf8 --- /dev/null +++ b/tests/getass.c @@ -0,0 +1,59 @@ +#include + +#include +#include + +int +main(int argc, char *argv[]) +{ + assh *asshole; + ass_array *aa; + ass_options opts; + int i, rc; + + if (argc != 2) { + printf("Usage: %s query\n", argv[0]); + return 1; + } + + asshole = ass_sphincter_new(); + if (asshole == NULL) { + fprintf(stderr, "ERROR: Couldn't connect to asshole.\n"); + return 2; + } + + /* Get the default options. */ + rc = ass_options_get(asshole, &opts); + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't get options: %s.\n", + ass_errmsg(asshole)); + ass_sphincter_close(asshole); + return 2; + } + + /* Add more fallthrough threads. */ + opts.fallthrough_threads = 5; + rc = ass_options_set(asshole, &opts); + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't set options: %s.\n", + ass_errmsg(asshole)); + ass_sphincter_close(asshole); + return 2; + } + + rc = ass_get(asshole, argv[1]); + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't perform query: %s.\n", + ass_errmsg(asshole)); + ass_sphincter_close(asshole); + return 2; + } + + aa = ass_get_result(asshole); + for (i = 0; i < aa->nitems; i++) + printf("Result[%d]: `%s'\n", i, aa->items[i]->strdata); + ass_free_result(aa); + + ass_sphincter_close(asshole); + return 0; +} diff --git a/tests/getnast.c b/tests/getnast.c new file mode 100644 index 0000000..904c01f --- /dev/null +++ b/tests/getnast.c @@ -0,0 +1,64 @@ +#include + +#include +#include +#include + +char *progname; + +void +usage() +{ + fprintf(stderr, "Usage: %s [-s socket] query\n", progname); + exit(1); +} + +int +main(int argc, char *argv[]) +{ + char *sock_n; + nasth *nasthole; + nast_array *aa; + char ch; + int i, rc; + + progname = strrchr(argv[0], '/'); + if (!progname) + progname = argv[0]; + else + progname++; + + sock_n = NULL; + while ((ch = getopt(argc, argv, "s:")) != -1) { + switch (ch) { + case 's': + sock_n = optarg; + break; + default: + usage(); + /* NOTREACHED */ + } + } + + nasthole = nast_sphincter_new(sock_n); + if (nasthole == NULL) { + fprintf(stderr, "ERROR: Couldn't connect to nasthole.\n"); + return 2; + } + + rc = nast_get(nasthole, argv[argc-1]); + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't perform query: %s.\n", + nast_errmsg(nasthole)); + nast_sphincter_close(nasthole); + return 2; + } + + aa = nast_get_result(nasthole); + for (i = 0; i < aa->nitems; i++) + printf("Result[%d]: `%s'\n", i, aa->items[i]->strdata); + nast_free_result(aa); + + nast_sphincter_close(nasthole); + return 0; +} diff --git a/tests/killnast.c b/tests/killnast.c new file mode 100644 index 0000000..7c06dee --- /dev/null +++ b/tests/killnast.c @@ -0,0 +1,39 @@ +#include + +#include +#include + +int +main(int argc, char *argv[]) +{ + nasth *nasthole; + nast_array *aa; + int i, rc; + + if (argc != 1) { + printf("Usage: %s\n", argv[0]); + return 1; + } + + nasthole = nast_sphincter_new(NULL); + if (nasthole == NULL) { + fprintf(stderr, "ERROR: Couldn't connect to nasthole.\n"); + return 2; + } + + rc = nast_stats(nasthole); + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't get stats: %s.\n", + nast_errmsg(nasthole)); + nast_sphincter_close(nasthole); + return 2; + } + + aa = nast_get_result(nasthole); + for (i = 0; i < aa->nitems; i++) + printf("%s\n", aa->items[i]->strdata); + nast_free_result(aa); + + nast_sphincter_close(nasthole); + return 0; +} diff --git a/tests/mtstressass.c b/tests/mtstressass.c new file mode 100644 index 0000000..1a4c2e1 --- /dev/null +++ b/tests/mtstressass.c @@ -0,0 +1,95 @@ +#include + +#include +#include +#include +#include +#include +#include +#include + +#define NTHREADS 10 + +assh *asshole; +char *username; + +void * +io_looper(void *arg) +{ + struct timeval before, after; + ass_options opts; + int i, rc; + + for (;;) { + /* Get the default options. */ + rc = ass_options_get(asshole, &opts); + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't get options: %s.\n", + ass_errmsg(asshole)); + return NULL; + } + + /* Add more fallthrough threads. */ + opts.fallthrough_threads = 5; + rc = ass_options_set(asshole, &opts); + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't set options: %s.\n", + ass_errmsg(asshole)); + return NULL; + } + + for (i = 0; i < 10; i++) { + gettimeofday(&before, NULL); + rc = ass_get(asshole, username); + gettimeofday(&after, NULL); + if (rc == -1) { + if (ass_geterr(asshole) == ASS_TIMEDOUT) { + fprintf(stderr, + "ERROR: response timed out.\n"); + continue; + } + fprintf(stderr, + "ERROR: Couldn't perform query: %s.\n", + ass_errmsg(asshole)); + return NULL; + } + + after.tv_sec -= before.tv_sec; + after.tv_usec -= before.tv_usec; + if (after.tv_usec < 0) { + after.tv_sec--; + after.tv_usec += 1000000; + } + fprintf(stderr, "Request time: %2ld.%06ld seconds.\n", + after.tv_sec, after.tv_usec); + } + } +} + +int +main(int argc, char *argv[]) +{ + pthread_t tids[NTHREADS]; + int i; + + if (argc != 2) { + printf("Usage: %s query\n", argv[0]); + return 1; + } + username = argv[1]; + + asshole = ass_sphincter_new(); + if (asshole == NULL) { + fprintf(stderr, "ERROR: Couldn't connect to asshole.\n"); + return 2; + } + + for (i = 0; i < NTHREADS; i++) + pthread_create(&tids[i], NULL, io_looper, NULL); + + for (i = 0; i < NTHREADS; i++) + pthread_join(tids[i], NULL); + + ass_sphincter_close(asshole); + return 0; +} diff --git a/tests/mtstressnast.c b/tests/mtstressnast.c new file mode 100644 index 0000000..913312e --- /dev/null +++ b/tests/mtstressnast.c @@ -0,0 +1,77 @@ +#include + +#include +#include +#include +#include +#include +#include +#include + +#define NTHREADS 10 + +nasth *nasthole; +char *username; + +void * +io_looper(void *arg) +{ + struct timeval before, after; + int i, rc; + + for (;;) { + for (i = 0; i < 10; i++) { + gettimeofday(&before, NULL); + rc = nast_get(nasthole, username); + gettimeofday(&after, NULL); + if (rc == -1) { + if (nast_geterr(nasthole) == NAST_TIMEDOUT) { + fprintf(stderr, + "ERROR: response timed out.\n"); + continue; + } + fprintf(stderr, + "ERROR: Couldn't perform query: %s.\n", + nast_errmsg(nasthole)); + return NULL; + } + + after.tv_sec -= before.tv_sec; + after.tv_usec -= before.tv_usec; + if (after.tv_usec < 0) { + after.tv_sec--; + after.tv_usec += 1000000; + } + fprintf(stderr, "Request time: %2ld.%06ld seconds.\n", + after.tv_sec, after.tv_usec); + } + } +} + +int +main(int argc, char *argv[]) +{ + pthread_t tids[NTHREADS]; + int i; + + if (argc != 2) { + printf("Usage: %s query\n", argv[0]); + return 1; + } + username = argv[1]; + + nasthole = nast_sphincter_new(NULL); + if (nasthole == NULL) { + fprintf(stderr, "ERROR: Couldn't connect to nasthole.\n"); + return 2; + } + + for (i = 0; i < NTHREADS; i++) + pthread_create(&tids[i], NULL, io_looper, NULL); + + for (i = 0; i < NTHREADS; i++) + pthread_join(tids[i], NULL); + + nast_sphincter_close(nasthole); + return 0; +} diff --git a/tests/randnast.c b/tests/randnast.c new file mode 100644 index 0000000..dd39fc6 --- /dev/null +++ b/tests/randnast.c @@ -0,0 +1,69 @@ +#include + +#include +#include +#include +#include +#include + +char letters[] = "abcdefghijklmnopqrstuvwxyz0123456789-_."; + +int +main(int argc, char *argv[]) +{ + nasth *nasthole; + struct timeval before, after; + nast_options opts; + int i, rc; + + nasthole = nast_sphincter_new(NULL); + if (nasthole == NULL) { + fprintf(stderr, "ERROR: Couldn't connect to nasthole.\n"); + return 2; + } + + srand(time(NULL)); + + for (;;) { + /* Get the default options. */ + rc = nast_options_get(nasthole, &opts); + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't get options: %s.\n", + nast_errmsg(nasthole)); + nast_sphincter_close(nasthole); + return 2; + } + + for (i = 0; i < 10; i++) { + char uname[32]; + int i, maxlen; + + maxlen = rand() % sizeof(uname); + for (i = 0; i < maxlen-1; i++) + uname[i] = letters[rand() % sizeof(letters)]; + uname[maxlen] = '\0'; + + gettimeofday(&before, NULL); + rc = nast_get(nasthole, uname); + gettimeofday(&after, NULL); + if (rc == -1) { + fprintf(stderr, + "ERROR: Couldn't perform query: %s.\n", + nast_errmsg(nasthole)); + nast_sphincter_close(nasthole); + return 2; + } + + after.tv_sec -= before.tv_sec; + after.tv_usec -= before.tv_usec; + if (after.tv_usec < 0) { + after.tv_sec--; + after.tv_usec += 1000000; + } + fprintf(stderr, "Request time: %2ld.%06ld seconds.\n", + after.tv_sec, after.tv_usec); + } + } + nast_sphincter_close(nasthole); + return 0; +} diff --git a/tests/statnast.c b/tests/statnast.c new file mode 100644 index 0000000..7c06dee --- /dev/null +++ b/tests/statnast.c @@ -0,0 +1,39 @@ +#include + +#include +#include + +int +main(int argc, char *argv[]) +{ + nasth *nasthole; + nast_array *aa; + int i, rc; + + if (argc != 1) { + printf("Usage: %s\n", argv[0]); + return 1; + } + + nasthole = nast_sphincter_new(NULL); + if (nasthole == NULL) { + fprintf(stderr, "ERROR: Couldn't connect to nasthole.\n"); + return 2; + } + + rc = nast_stats(nasthole); + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't get stats: %s.\n", + nast_errmsg(nasthole)); + nast_sphincter_close(nasthole); + return 2; + } + + aa = nast_get_result(nasthole); + for (i = 0; i < aa->nitems; i++) + printf("%s\n", aa->items[i]->strdata); + nast_free_result(aa); + + nast_sphincter_close(nasthole); + return 0; +} diff --git a/tests/stressnast.c b/tests/stressnast.c new file mode 100644 index 0000000..ad17a51 --- /dev/null +++ b/tests/stressnast.c @@ -0,0 +1,60 @@ +#include + +#include +#include +#include + +int +main(int argc, char *argv[]) +{ + nasth *nasthole; + struct timeval before, after; + nast_options opts; + int i, rc; + + if (argc != 2) { + printf("Usage: %s query\n", argv[0]); + return 1; + } + + nasthole = nast_sphincter_new(NULL); + if (nasthole == NULL) { + fprintf(stderr, "ERROR: Couldn't connect to nasthole.\n"); + return 2; + } + + for (;;) { + /* Get the default options. */ + rc = nast_options_get(nasthole, &opts); + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't get options: %s.\n", + nast_errmsg(nasthole)); + nast_sphincter_close(nasthole); + return 2; + } + + for (i = 0; i < 10; i++) { + gettimeofday(&before, NULL); + rc = nast_get(nasthole, argv[1]); + gettimeofday(&after, NULL); + if (rc == -1) { + fprintf(stderr, + "ERROR: Couldn't perform query: %s.\n", + nast_errmsg(nasthole)); + nast_sphincter_close(nasthole); + return 2; + } + + after.tv_sec -= before.tv_sec; + after.tv_usec -= before.tv_usec; + if (after.tv_usec < 0) { + after.tv_sec--; + after.tv_usec += 1000000; + } + fprintf(stderr, "Request time: %2ld.%06ld seconds.\n", + after.tv_sec, after.tv_usec); + } + } + nast_sphincter_close(nasthole); + return 0; +} diff --git a/tests/updnast.c b/tests/updnast.c new file mode 100644 index 0000000..9acef66 --- /dev/null +++ b/tests/updnast.c @@ -0,0 +1,80 @@ +#include + +#include +#include +#include + +char *progname; + +void +usage() +{ + fprintf(stderr, "Usage: %s [-s socket] query\n", progname); + exit(1); +} + +int +main(int argc, char *argv[]) +{ + char *sock_n; + nasth *nasthole; + nast_array *aa; + char ch; + int i, rc; + + progname = strrchr(argv[0], '/'); + if (!progname) + progname = argv[0]; + else + progname++; + + sock_n = NULL; + while ((ch = getopt(argc, argv, "s:")) != -1) { + switch (ch) { + case 's': + sock_n = optarg; + break; + default: + usage(); + /* NOTREACHED */ + } + } + + nasthole = nast_sphincter_new(sock_n); + if (nasthole == NULL) { + fprintf(stderr, "ERROR: Couldn't connect to nasthole.\n"); + return 2; + } + + aa = nast_array_new(); + if (aa == NULL) { + fprintf(stderr, "ERROR: Couldn't create array.\n"); + return 3; + } + + for (i = optind+1; i < argc; i++) + nast_array_add(aa, strlen(argv[i]), argv[i]); + + rc = nast_upd(nasthole, argv[optind], aa); + nast_array_delete(aa); + + if (rc == -1) { + fprintf(stderr, "ERROR: Couldn't perform update: %s.\n", + nast_errmsg(nasthole)); + nast_sphincter_close(nasthole); + return 2; + } + + aa = nast_get_result(nasthole); + if (aa->nitems == 0 || (aa->nitems == 1 && + aa->items[0]->strlen == 0)) + printf("Update for %s succeeded.\n", argv[optind]); + else { + for (i = 0; i < aa->nitems; i++) + printf("Result[%d]: `%s'\n", i, aa->items[i]->strdata); + } + nast_free_result(aa); + + nast_sphincter_close(nasthole); + return 0; +} -- cgit v1.2.3