loadtest: run with a warning instead of exiting when not all threads connect.
authorCharlie Root <root@citadel.org>
Sat, 2 Sep 2023 02:27:08 +0000 (22:27 -0400)
committerCharlie Root <root@citadel.org>
Sat, 2 Sep 2023 02:27:08 +0000 (22:27 -0400)
citadel/GNUmakefile
citadel/utils/loadtest.c

index f3e058be3b5d32d62cf271ba9a49902f97e8a911..de1c34b66e2ea2c0e3d81e052ca73ed1ab557424 100644 (file)
@@ -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
index 8a71fe0770269e74ea53e34231ccde202d50c24d..4fb091dca5caee155ee5f2e04b1e18f5eb1438e3 100644 (file)
@@ -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);