From: Charlie Root Date: Sat, 2 Sep 2023 02:27:08 +0000 (-0400) Subject: loadtest: run with a warning instead of exiting when not all threads connect. X-Git-Tag: v992~5 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=1dd2b94383e7837f2d484071b70d7fac3450fbb2 loadtest: run with a warning instead of exiting when not all threads connect. --- diff --git a/citadel/GNUmakefile b/citadel/GNUmakefile index f3e058be3..de1c34b66 100644 --- a/citadel/GNUmakefile +++ b/citadel/GNUmakefile @@ -32,11 +32,11 @@ citserver: $(SERVER_OBJECTS) $(BACKEND_OBJECTS) ${CC} ${CFLAGS} \ $(SERVER_OBJECTS) $(BACKEND_OBJECTS) \ ${LDFLAGS} \ - -lresolv -lcitadel -lpthread -lz -lical -lldap -lcrypt -lexpat -lcurl ${BACKEND_LDFLAGS} \ + -lcitadel -lpthread -lz -lical -lldap -lcrypt -lexpat -lcurl ${BACKEND_LDFLAGS} \ -o citserver setup: utils/setup.c server/citadel_dirs.c utils/*.h server/*.h - ${CC} ${CFLAGS} ${LDFLAGS} utils/setup.c -lcitadel -o setup + ${CC} ${CFLAGS} ${LDFLAGS} utils/setup.c -lcitadel -lintl -o setup ctdlmigrate: utils/ctdlmigrate.c server/citadel_dirs.c utils/*.h server/*.h ${CC} ${CFLAGS} ${LDFLAGS} utils/ctdlmigrate.c -lcitadel -lreadline -o ctdlmigrate diff --git a/citadel/utils/loadtest.c b/citadel/utils/loadtest.c index 8a71fe077..4fb091dca 100644 --- a/citadel/utils/loadtest.c +++ b/citadel/utils/loadtest.c @@ -127,17 +127,15 @@ int uds_connectsock(char *sockpath) { s = socket(AF_UNIX, SOCK_STREAM, 0); if (s < 0) { - fprintf(stderr, "loadtest: Can't create socket: %s\n", strerror(errno)); - exit(3); + return(-1); } if (connect(s, (struct sockaddr *) &addr, sizeof(addr)) < 0) { - fprintf(stderr, "loadtest: can't connect: %s\n", strerror(errno)); close(s); - exit(3); + return(-1); } - return s; + return(s); } @@ -275,9 +273,19 @@ void perform_random_thing(int serv_sock) { } -void do_stuff(int serv_sock) { +void *loadtest(void *blah) { char buf[SIZ]; + int serv_sock; + + serv_sock = uds_connectsock(file_citadel_socket); + + if (serv_sock < 0) { + printf("\033[8;0H\033[31mWarning: some threads failed to connect to Citadel Server.\033[0m"); + fflush(stdout); + pthread_exit(NULL); + } + serv_gets(serv_sock, buf); snprintf(buf, sizeof buf, "USER %s", test_user); serv_puts(serv_sock, buf); serv_gets(serv_sock, buf); @@ -326,16 +334,6 @@ void setup_accounts(int serv_sock) { } } -void *loadtest(void *blah) { - char buf[SIZ]; - int serv_sock; - - serv_sock = uds_connectsock(file_citadel_socket); - serv_gets(serv_sock, buf); - do_stuff(serv_sock); - close(serv_sock); -} - // Main loop. Do things and have fun. int main(int argc, char **argv) { @@ -371,6 +369,11 @@ int main(int argc, char **argv) { } int serv_sock = uds_connectsock(file_citadel_admin_socket); + if (serv_sock < 0) { + fprintf(stderr, "loadtest: cannot connect to Citadel Server\n"); + exit(1); + } + char buf[SIZ]; serv_gets(serv_sock, buf); setup_accounts(serv_sock);