r3148: make --failures work for the BASE-DENY1 and BASE-DENY2 tests
authorAndrew Tridgell <tridge@samba.org>
Sun, 24 Oct 2004 09:08:17 +0000 (09:08 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:02:25 +0000 (13:02 -0500)
(This used to be commit 6e87feb89c57ca900ef4125e48f5de5ff80ff7b9)

source4/torture/basic/denytest.c

index 97aa9ce162d7aaece4bfffbef8f8ffe7d9dfd448..8c0339dfedc44e8d096208dab7a8c66e11ca6bc6 100644 (file)
@@ -21,6 +21,9 @@
 #include "includes.h"
 
 extern BOOL torture_showall;
+extern int torture_failures;
+
+#define CHECK_MAX_FAILURES(label) do { if (++failures >= torture_failures) goto label; } while (0)
 
 enum deny_result {A_0=0, A_X=1, A_R=2, A_W=3, A_RW=5};
 
@@ -1411,6 +1414,7 @@ BOOL torture_denytest1(int dummy)
        BOOL correct = True;
        struct timeval tv, tv_start;
        const char *fnames[2] = {"\\denytest1.dat", "\\denytest1.exe"};
+       int failures=0;
 
        if (!torture_open_connection(&cli1)) {
                return False;
@@ -1459,10 +1463,6 @@ BOOL torture_denytest1(int dummy)
                        }
                }
 
-               if (res != denytable1[i].result) {
-                       correct = False;
-               }
-
                if (torture_showall || res != denytable1[i].result) {
                        int64_t tdif;
                        GetTimeOfDay(&tv);
@@ -1479,10 +1479,16 @@ BOOL torture_denytest1(int dummy)
                               resultstr(denytable1[i].result));
                }
 
+               if (res != denytable1[i].result) {
+                       correct = False;
+                       CHECK_MAX_FAILURES(failed);
+               }
+
                smbcli_close(cli1->tree, fnum1);
                smbcli_close(cli1->tree, fnum2);
        }
 
+failed:
        for (i=0;i<2;i++) {
                smbcli_unlink(cli1->tree, fnames[i]);
        }
@@ -1491,7 +1497,7 @@ BOOL torture_denytest1(int dummy)
                correct = False;
        }
        
-       printf("finshed denytest1\n");
+       printf("finshed denytest1 (%d failures)\n", failures);
        return correct;
 }
 
@@ -1507,6 +1513,7 @@ BOOL torture_denytest2(int dummy)
        BOOL correct = True;
        const char *fnames[2] = {"\\denytest2.dat", "\\denytest2.exe"};
        struct timeval tv, tv_start;
+       int failures=0;
 
        if (!torture_open_connection(&cli1) || !torture_open_connection(&cli2)) {
                return False;
@@ -1553,10 +1560,6 @@ BOOL torture_denytest2(int dummy)
                        }
                }
 
-               if (res != denytable2[i].result) {
-                       correct = False;
-               }
-
                if (torture_showall || res != denytable2[i].result) {
                        int64_t tdif;
                        GetTimeOfDay(&tv);
@@ -1573,10 +1576,16 @@ BOOL torture_denytest2(int dummy)
                               resultstr(denytable2[i].result));
                }
 
+               if (res != denytable2[i].result) {
+                       correct = False;
+                       CHECK_MAX_FAILURES(failed);
+               }
+
                smbcli_close(cli1->tree, fnum1);
                smbcli_close(cli2->tree, fnum2);
        }
-               
+
+failed:                
        for (i=0;i<2;i++) {
                smbcli_unlink(cli1->tree, fnames[i]);
        }
@@ -1588,7 +1597,7 @@ BOOL torture_denytest2(int dummy)
                correct = False;
        }
        
-       printf("finshed denytest2\n");
+       printf("finshed denytest2 (%d failures)\n", failures);
        return correct;
 }