Added context state to output of RWHO command.
[citadel.git] / citadel / utils / loadtest.c
index 5a8d2f3a2d1c44552efda06500606bc2011ba63f..8d4e41b2f6e26708edabeffa7a3c4f65bf6055ae 100644 (file)
@@ -208,6 +208,8 @@ char *random_rooms[] = {
 int nrooms = sizeof(random_rooms) / sizeof(char *);
 char *test_user = "Load Test User";
 char test_pass[16];
+time_t time_started;
+volatile int ops_completed;
 
 
 // These are our randomized load test operations: an even mix of changing rooms, posting messages, and deleting messages.
@@ -270,7 +272,6 @@ void perform_random_thing(int serv_sock) {
                        serv_gets(serv_sock, buf);
                } while ( (buf[0] != '2') && (total_msgs > 0));
        }
-
 }
 
 #define ROW_OFFSET 8
@@ -311,6 +312,10 @@ void *loadtest(void *pointer_to_thread_id) {
        while(1) {
                perform_random_thing(serv_sock);
                printf("\033[%d;%dH\033[32m%8ld\033[0m", row, col, ++ops);
+               ++ops_completed;                // this is declared "volatile" so we don't need to lock it
+               if (thread_id == 0) {
+                       printf("\033[2;55H\033[44m\033[33m\033[1m%ld ops/sec \033[0m", (ops_completed / (time(NULL) - time_started)));
+               }
                fflush(stdout);
        }
 }
@@ -345,7 +350,7 @@ void setup_accounts(int serv_sock) {
 // Main loop.  Do things and have fun.
 int main(int argc, char **argv) {
        int i;
-       int nthreads = 3;
+       int nthreads = 10;
        int row, col;
 
        fprintf(stderr, "\033[2J\033[H\033[44m\033[1m"
@@ -409,6 +414,9 @@ int main(int argc, char **argv) {
                threadId[i] = i;
        }
 
+       time_started = time(NULL);
+       ops_completed = 0;
+
        for (i=1; i<nthreads; ++i) {
 
                pthread_t thread;