renamed DENY to DENY1
authorAndrew Tridgell <tridge@samba.org>
Sun, 16 Jan 2000 12:28:43 +0000 (12:28 +0000)
committerAndrew Tridgell <tridge@samba.org>
Sun, 16 Jan 2000 12:28:43 +0000 (12:28 +0000)
added DENY2 test that checks all 648 deny combinations for the case
of two opens on the same connection

source/utils/torture.c

index fb4367283c5e115d2f8599f1eb91dd1e04db90a9..ad14461ff5b52a3033949f3b0095ce66bd99d926 100644 (file)
@@ -869,12 +869,12 @@ static void run_locktest4(int dummy)
 /*
   this produces a matrix of deny mode behaviour
  */
-static void run_denytest(int dummy)
+static void run_denytest1(int dummy)
 {
        static struct cli_state cli1, cli2;
        int fnum1, fnum2;
        int f, d1, d2, o1, o2, x=0;
-       char *fnames[] = {"denytest.exe", "denytest.dat", NULL};
+       char *fnames[] = {"denytest1.exe", "denytest1.dat", NULL};
        struct {
                int v;
                char *name; 
@@ -901,7 +901,7 @@ static void run_denytest(int dummy)
        cli_sockopt(&cli1, sockops);
        cli_sockopt(&cli2, sockops);
 
-       printf("starting denytest\n");
+       printf("starting denytest1\n");
 
        for (f=0;fnames[f];f++) {
                cli_unlink(&cli1, fnames[f]);
@@ -952,7 +952,96 @@ static void run_denytest(int dummy)
        close_connection(&cli1);
        close_connection(&cli2);
        
-       printf("finshed denytest\n");
+       printf("finshed denytest1\n");
+}
+
+
+/*
+  this produces a matrix of deny mode behaviour for two opens on the
+  same connection
+ */
+static void run_denytest2(int dummy)
+{
+       static struct cli_state cli1;
+       int fnum1, fnum2;
+       int f, d1, d2, o1, o2, x=0;
+       char *fnames[] = {"denytest2.exe", "denytest2.dat", NULL};
+       struct {
+               int v;
+               char *name; 
+       } deny_modes[] = {
+               {DENY_DOS, "DENY_DOS"},
+               {DENY_ALL, "DENY_ALL"},
+               {DENY_WRITE, "DENY_WRITE"},
+               {DENY_READ, "DENY_READ"},
+               {DENY_NONE, "DENY_NONE"},
+               {DENY_FCB, "DENY_FCB"},
+               {-1, NULL}};
+       struct {
+               int v;
+               char *name; 
+       } open_modes[] = {
+               {O_RDWR, "O_RDWR"},
+               {O_RDONLY, "O_RDONLY"},
+               {O_WRONLY, "O_WRONLY"},
+               {-1, NULL}};
+
+       if (!open_connection(&cli1)) {
+               return;
+       }
+       cli_sockopt(&cli1, sockops);
+
+       printf("starting denytest2\n");
+
+       for (f=0;fnames[f];f++) {
+               cli_unlink(&cli1, fnames[f]);
+
+               fnum1 = cli_open(&cli1, fnames[f], O_RDWR|O_CREAT, DENY_NONE);
+               cli_write(&cli1, fnum1, 0, fnames[f], 0, strlen(fnames[f]));
+               cli_close(&cli1, fnum1);
+
+               for (d1=0;deny_modes[d1].name;d1++) 
+               for (o1=0;open_modes[o1].name;o1++) 
+               for (d2=0;deny_modes[d2].name;d2++) 
+               for (o2=0;open_modes[o2].name;o2++) {
+                       fnum1 = cli_open(&cli1, fnames[f], 
+                                        open_modes[o1].v, 
+                                        deny_modes[d1].v);
+                       fnum2 = cli_open(&cli1, fnames[f], 
+                                        open_modes[o2].v, 
+                                        deny_modes[d2].v);
+
+                       printf("%s %8s %10s    %8s %10s     ",
+                              fnames[f],
+                              open_modes[o1].name,
+                              deny_modes[d1].name,
+                              open_modes[o2].name,
+                              deny_modes[d2].name);
+
+                       if (fnum1 == -1) {
+                               printf("X");
+                       } else if (fnum2 == -1) {
+                               printf("-");
+                       } else {
+                               if (cli_read(&cli1, fnum2, (void *)&x, 0, 1) == 1) {
+                                       printf("R");
+                               }
+                               if (cli_write(&cli1, fnum2, 0, (void *)&x, 0, 1) == 1) {
+                                       printf("W");
+                               }
+                       }
+
+                       printf("\n");
+                       cli_close(&cli1, fnum1);
+                       cli_close(&cli1, fnum2);
+               }
+               
+               cli_unlink(&cli1, fnames[f]);
+       }
+
+       close_connection(&cli1);
+       
+       printf("finshed denytest2\n");
 }
 
 /*
@@ -1547,7 +1636,8 @@ static struct {
        {"NBWNT",  run_nbwnt, 0},
        {"OPLOCK",  run_oplock, 0},
        {"DIR",  run_dirtest, 0},
-       {"DENY",  run_denytest, 0},
+       {"DENY1",  run_denytest1, 0},
+       {"DENY2",  run_denytest2, 0},
        {NULL, NULL, 0}};