summaryrefslogtreecommitdiffstats
path: root/tests/.svn/text-base/mtstressass.c.svn-base
diff options
context:
space:
mode:
Diffstat (limited to 'tests/.svn/text-base/mtstressass.c.svn-base')
-rw-r--r--tests/.svn/text-base/mtstressass.c.svn-base95
1 files changed, 95 insertions, 0 deletions
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 <assd.h>
+
+#include <pthread.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#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;
+}