nicer way of handling \clients
[samba.git] / source4 / torture / nbench / nbench.c
index 3da7dedae138044b26c6e2c80a8fb53c6ce633c3..e43772998051959725529d2abb3371d77ea64016 100644 (file)
@@ -22,6 +22,7 @@
 
 int nbench_line_count = 0;
 static int timelimit = 600;
+static int warmup;
 static char *loadfile;
 
 #define ival(s) strtol(s, NULL, 0)
@@ -37,7 +38,7 @@ static BOOL run_netbench(struct cli_state *cli, int client)
        const char *p;
        BOOL correct = True;
 
-       nb_setup(cli, client);
+       nb_setup(cli, client, warmup);
 
        asprintf(&cname, "client%d", client);
 
@@ -51,6 +52,13 @@ static BOOL run_netbench(struct cli_state *cli, int client)
 again:
        while (fgets(line, sizeof(line)-1, f)) {
                NTSTATUS status;
+               double t = end_timer();
+
+               if (warmup && t >= warmup) {
+                       warmup = 0;
+                       nb_warmup_done();
+                       start_timer();
+               }
 
                if (end_timer() >= timelimit) {
                        goto done;
@@ -98,6 +106,8 @@ again:
                        nb_deltree(params[1]);
                } else if (!strcmp(params[0],"Rmdir")) {
                        nb_rmdir(params[1], status);
+               } else if (!strcmp(params[0],"Mkdir")) {
+                       nb_mkdir(params[1], status);
                } else if (!strcmp(params[0],"QUERY_PATH_INFORMATION")) {
                        nb_qpathinfo(params[1], ival(params[2]), status);
                } else if (!strcmp(params[0],"QUERY_FILE_INFORMATION")) {
@@ -152,7 +162,6 @@ done:
 /* run a test that simulates an approximate netbench client load */
 BOOL torture_nbench(int dummy)
 {
-       double t;
        BOOL correct = True;
        extern int torture_nprocs;
        struct cli_state *cli;
@@ -163,6 +172,8 @@ BOOL torture_nbench(int dummy)
                timelimit = atoi(p);
        }
 
+       warmup = timelimit / 20;
+
        loadfile =  lp_parm_string(-1, "torture", "loadfile");
        if (!loadfile || !*loadfile) {
                loadfile = "client.txt";
@@ -172,19 +183,20 @@ BOOL torture_nbench(int dummy)
                return False;
        }
 
-       nb_setup(cli, -1);
+       nb_setup(cli, -1, warmup);
        nb_deltree("\\clients");
 
        nbio_shmem(torture_nprocs);
 
-       printf("Running for %d seconds with load '%s'\n", timelimit, loadfile);
+       printf("Running for %d seconds with load '%s' and warmup %d secs\n", 
+              timelimit, loadfile, warmup);
 
        signal(SIGALRM, SIGNAL_CAST nb_alarm);
        alarm(1);
-       t = torture_create_procs(run_netbench, &correct);
+       torture_create_procs(run_netbench, &correct);
        alarm(0);
 
        printf("\nThroughput %g MB/sec\n", 
-              1.0e-6 * nbio_total() / t);
+              1.0e-6 * nbio_total() / timelimit);
        return correct;
 }