r24741: More use of the torture API.
authorJelmer Vernooij <jelmer@samba.org>
Tue, 28 Aug 2007 14:42:37 +0000 (14:42 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 20:03:02 +0000 (15:03 -0500)
(This used to be commit de05c3651a6e9e6611b296873526afd9292327c1)

source4/samba4-knownfail
source4/selftest/selftest.pl
source4/torture/raw/write.c
source4/torture/rpc/handles.c
source4/torture/rpc/initshutdown.c
source4/torture/rpc/rpc.c
source4/torture/rpc/srvsvc.c
source4/torture/rpc/winreg.c
source4/torture/smbtorture.c
source4/torture/ui.c
source4/torture/util.c

index 451428077a9c91c5db6c8a272a0f1d7d40e9ef6c..d4a5441043923c08192a719954796ccb02f2de4b 100644 (file)
@@ -8,3 +8,5 @@ RPC-WINREG
 LOCAL-REGISTRY/security # Not implemented yet
 RPC-WKSSVC.*NetWkstaGetInfo
 RPC-WKSSVC.*NetWkstaTransportEnum
+RPC-HANDLES.*/lsarpc-shared
+RPC-HANDLES.*/mixed-shared
index de7e5c4dbcec05d6038c1b65f0e8bfc00b5e57c2..3f8a74f7bcfd7e0e900e19a7c4852f866993af9f 100755 (executable)
@@ -504,6 +504,7 @@ push (@torture_options, "--configfile=$conffile");
 # ensure any one smbtorture call doesn't run too long
 push (@torture_options, "--maximum-runtime=$torture_maxtime");
 push (@torture_options, "--target=$opt_target");
+push (@torture_options, "--basedir=$prefix");
 push (@torture_options, "--option=torture:progress=no") if ($opt_format eq "buildfarm");
 push (@torture_options, "--format=subunit");
 push (@torture_options, "--option=torture:quick=yes") if ($opt_quick);
index 75d275fc3c54e21ad71dfe63b3e858e85652cc30..b704a19ed65c37b99672e25586611147478e6e8b 100644 (file)
@@ -237,9 +237,9 @@ static bool test_writex(struct torture_context *tctx,
        union smb_fileinfo finfo;
        int max_bits=63;
 
-       if (!lp_parm_bool(-1, "torture", "dangerous", False)) {
+       if (!torture_setting_bool(tctx, "dangerous", false)) {
                max_bits=33;
-               printf("dangerous not set - limiting range of test to 2^%d\n", max_bits);
+               torture_comment(tctx, "dangerous not set - limiting range of test to 2^%d\n", max_bits);
        }
 
        buf = talloc_zero_size(tctx, maxsize);
index 5b6082f7dd18e8706340c3ed20b9ca45affd247e..f35897b3df17ebd4d8a0c896f2cfb995aca7a006 100644 (file)
@@ -116,11 +116,6 @@ static bool test_handles_lsa_shared(struct torture_context *torture)
 
        torture_comment(torture, "RPC-HANDLE-LSARPC-SHARED\n");
 
-       if (torture_setting_bool(torture, "samba4", false)) {
-               torture_comment(torture, "LSA shared-policy-handle test against Samba4 - skipping\n");
-               return true;
-       }
-
        torture_comment(torture, "connect lsa pipe1\n");
        status = torture_rpc_connection(torture, &p1, &ndr_table_lsarpc);
        torture_assert_ntstatus_ok(torture, status, "opening lsa pipe1");
@@ -399,11 +394,6 @@ static bool test_handles_mixed_shared(struct torture_context *torture)
 
        torture_comment(torture, "RPC-HANDLE-MIXED-SHARED\n");
 
-       if (torture_setting_bool(torture, "samba4", false)) {
-               torture_comment(torture, "Mixed shared-policy-handle test against Samba4 - skipping\n");
-               return true;
-       }
-
        torture_comment(torture, "connect samr pipe1\n");
        status = torture_rpc_connection(torture, &p1, &ndr_table_samr);
        torture_assert_ntstatus_ok(torture, status, "opening samr pipe1");
index cb6bd4ad53b7f4a143d1c87f90dc7a2cc2ed4692..aa817928abd4418729dc3f4141933664e105e7ad 100644 (file)
@@ -129,7 +129,8 @@ BOOL torture_rpc_initshutdown(struct torture_context *torture)
        }
 
        if (!torture_setting_bool(torture, "dangerous", False)) {
-               printf("initshutdown tests disabled - enable dangerous tests to use\n");
+               torture_comment(torture, 
+                                               "initshutdown tests disabled - enable dangerous tests to use\n");
        } else {
                ret &= test_Init(p, mem_ctx, "spottyfood", 30);
                ret &= test_Abort(p, mem_ctx);
index fe6ffbd460195a48906b0135e03b263240739b29..21a85fbf0319c8126acf2a832a1b98afa3feb678 100644 (file)
 #include "librpc/ndr/ndr_table.h"
 #include "lib/util/dlinklist.h"
 
+struct torture_rpc_tcase {
+       struct torture_tcase tcase;
+       const struct ndr_interface_table *table;
+       struct dcerpc_pipe *pipe;
+};
+
 /* open a rpc connection to the chosen binding string */
 _PUBLIC_ NTSTATUS torture_rpc_connection(struct torture_context *tctx,
                                struct dcerpc_pipe **p, 
@@ -97,13 +103,15 @@ static bool torture_rpc_setup_anonymous(struct torture_context *tctx,
        struct cli_credentials *anon_credentials;
        NTSTATUS status;
        const char *binding = torture_setting_string(tctx, "binding", NULL);
+       struct torture_rpc_tcase *tcase = talloc_get_type(
+                                               tctx->active_tcase, struct torture_rpc_tcase);
 
        anon_credentials = cli_credentials_init_anon(tctx);
 
        status = dcerpc_pipe_connect(tctx, 
                                (struct dcerpc_pipe **)data, 
                                binding,
-                               (const struct ndr_interface_table *)tctx->active_tcase->data,
+                               tcase->table,
                                anon_credentials, NULL);
 
        torture_assert_ntstatus_ok(tctx, status, "Error connecting to server");
@@ -114,10 +122,12 @@ static bool torture_rpc_setup_anonymous(struct torture_context *tctx,
 static bool torture_rpc_setup (struct torture_context *tctx, void **data)
 {
        NTSTATUS status;
+       struct torture_rpc_tcase *tcase = talloc_get_type(
+                                               tctx->active_tcase, struct torture_rpc_tcase);
        
        status = torture_rpc_connection(tctx, 
                                (struct dcerpc_pipe **)data, 
-                               (const struct ndr_interface_table *)tctx->active_tcase->data);
+                               (const struct ndr_interface_table *)tcase->table);
 
        torture_assert_ntstatus_ok(tctx, status, "Error connecting to server");
 
@@ -130,29 +140,33 @@ static bool torture_rpc_teardown (struct torture_context *tcase, void *data)
        return true;
 }
 
-_PUBLIC_ struct torture_tcase *torture_suite_add_anon_rpc_iface_tcase(struct torture_suite *suite, 
+_PUBLIC_ struct torture_rpc_tcase *torture_suite_add_anon_rpc_iface_tcase(struct torture_suite *suite, 
                                                                const char *name,
                                                                const struct ndr_interface_table *table)
 {
-       struct torture_tcase *tcase = torture_suite_add_tcase(suite, name);
+       struct torture_rpc_tcase *tcase = talloc(suite, struct torture_rpc_tcase);
+
+       torture_suite_init_tcase(suite, (struct torture_tcase *)tcase, name);
 
-       tcase->setup = torture_rpc_setup_anonymous;
-       tcase->teardown = torture_rpc_teardown;
-       tcase->data = discard_const(table);
+       tcase->tcase.setup = torture_rpc_setup_anonymous;
+       tcase->tcase.teardown = torture_rpc_teardown;
+       tcase->table = table;
 
        return tcase;
 }
 
 
-_PUBLIC_ struct torture_tcase *torture_suite_add_rpc_iface_tcase(struct torture_suite *suite, 
+_PUBLIC_ struct torture_rpc_tcase *torture_suite_add_rpc_iface_tcase(struct torture_suite *suite, 
                                                                const char *name,
                                                                const struct ndr_interface_table *table)
 {
-       struct torture_tcase *tcase = torture_suite_add_tcase(suite, name);
+       struct torture_rpc_tcase *tcase = talloc(suite, struct torture_rpc_tcase);
+
+       torture_suite_init_tcase(suite, (struct torture_tcase *)tcase, name);
 
-       tcase->setup = torture_rpc_setup;
-       tcase->teardown = torture_rpc_teardown;
-       tcase->data = discard_const(table);
+       tcase->tcase.setup = torture_rpc_setup;
+       tcase->tcase.teardown = torture_rpc_teardown;
+       tcase->table = table;
 
        return tcase;
 }
@@ -180,7 +194,7 @@ static bool torture_rpc_wrap_test_ex(struct torture_context *tctx,
 }
 
 _PUBLIC_ struct torture_test *torture_rpc_tcase_add_test(
-                                       struct torture_tcase *tcase, 
+                                       struct torture_rpc_tcase *tcase, 
                                        const char *name, 
                                        bool (*fn) (struct torture_context *, struct dcerpc_pipe *))
 {
@@ -195,13 +209,13 @@ _PUBLIC_ struct torture_test *torture_rpc_tcase_add_test(
        test->data = NULL;
        test->fn = fn;
 
-       DLIST_ADD(tcase->tests, test);
+       DLIST_ADD(tcase->tcase.tests, test);
 
        return test;
 }
 
 _PUBLIC_ struct torture_test *torture_rpc_tcase_add_test_ex(
-                                       struct torture_tcase *tcase, 
+                                       struct torture_rpc_tcase *tcase, 
                                        const char *name, 
                                        bool (*fn) (struct torture_context *, struct dcerpc_pipe *,
                                                                void *),
@@ -218,7 +232,7 @@ _PUBLIC_ struct torture_test *torture_rpc_tcase_add_test_ex(
        test->data = userdata;
        test->fn = fn;
 
-       DLIST_ADD(tcase->tests, test);
+       DLIST_ADD(tcase->tcase.tests, test);
 
        return test;
 }
index b99570f81d180a7832b3336efdea804b73e0f7eb..15d8502867916af988035c198f8ac81303499c30 100644 (file)
@@ -538,10 +538,9 @@ static bool test_NetShareAddSetDel(struct torture_context *tctx,
        int i;
        BOOL ret = True;
 
-       if (!lp_parm_bool(-1, "torture", "dangerous", False)) {
-               d_printf("NetShareAddSetDel disabled - enable dangerous tests to use\n");
-               return True;
-       }
+       if (!torture_setting_bool(tctx, "dangerous", false))
+               torture_skip(tctx,
+                       "NetShareAddSetDel disabled - enable dangerous tests to use\n");
 
        a.in.server_unc = r.in.server_unc = q.in.server_unc = d.in.server_unc =
                talloc_asprintf(tctx, "\\\\%s", dcerpc_server_name(p));
index d433406c58170b13c82373fcbe28f7c74df7ba20..7559a4d8ac10303b01446dc0dffc5257e61767fe 100644 (file)
@@ -533,7 +533,6 @@ static bool test_InitiateSystemShutdown(struct torture_context *tctx,
                torture_skip(tctx, 
                   "winreg_InitiateShutdown disabled - enable dangerous tests to use");
 
-
        r.in.hostname = &hostname;
        r.in.message = talloc(tctx, struct initshutdown_String);
        init_initshutdown_String(tctx, r.in.message, "spottyfood");
index 43f6b67f1c77b72f959972b0c50e14d45d267c9e..c96d8a2e2bcd44d09f1fbc2958e4889b9ad46810 100644 (file)
@@ -479,15 +479,16 @@ int main(int argc,char *argv[])
        NTSTATUS status;
        int shell = False;
        static const char *ui_ops_name = "simple";
+       const char *basedir = NULL;
        static int list_tests = 0;
        enum {OPT_LOADFILE=1000,OPT_UNCLIST,OPT_TIMELIMIT,OPT_DNS, OPT_LIST,
-             OPT_DANGEROUS,OPT_SMB_PORTS,OPT_ASYNC,OPT_NUMPROGS, OPT_BASEDIR};
+             OPT_DANGEROUS,OPT_SMB_PORTS,OPT_ASYNC,OPT_NUMPROGS};
        
        struct poptOption long_options[] = {
                POPT_AUTOHELP
                {"format", 0, POPT_ARG_STRING, &ui_ops_name, 0, "Output format (one of: simple, subunit)", NULL },
                {"smb-ports",   'p', POPT_ARG_STRING, NULL,     OPT_SMB_PORTS,  "SMB ports",    NULL},
-               {"basedir",       0, POPT_ARG_STRING, NULL, OPT_BASEDIR, "base directory", "BSAEDIR" },
+               {"basedir",       0, POPT_ARG_STRING, &basedir, 0, "base directory", "BASEDIR" },
                {"seed",          0, POPT_ARG_INT,  &torture_seed,      0,      "seed",         NULL},
                {"num-progs",     0, POPT_ARG_INT,  NULL,       OPT_NUMPROGS,   "num progs",    NULL},
                {"num-ops",       0, POPT_ARG_INT,  &torture_numops,    0,      "num ops",      NULL},
@@ -539,9 +540,6 @@ int main(int argc,char *argv[])
                case OPT_NUMPROGS:
                        lp_set_cmdline("torture:nprocs", poptGetOptArg(pc));
                        break;
-               case OPT_BASEDIR:
-                       lp_set_cmdline("torture:basedir", poptGetOptArg(pc));
-                       break;
                case OPT_DNS:
                        parse_dns(poptGetOptArg(pc));
                        break;
@@ -635,6 +633,7 @@ int main(int argc,char *argv[])
        }
 
        torture = torture_context_init(talloc_autofree_context(), ui_ops);
+       torture->outputdir = basedir;
 
        if (argc_new == 0) {
                printf("You must specify a test to run, or 'ALL'\n");
index 23e761e5dc3bbbb66a6bbd6bfac5c7e084598d0a..92e03fff19c0d6bebbb16ed6c55b664788fdb85f 100644 (file)
@@ -120,11 +120,11 @@ struct torture_test *torture_tcase_add_test(struct torture_tcase *tcase,
        return test;
 }
 
-struct torture_tcase *torture_suite_add_tcase(struct torture_suite *suite, 
-                                                        const char *name)
-{
-       struct torture_tcase *tcase = talloc(suite, struct torture_tcase);
 
+bool torture_suite_init_tcase(struct torture_suite *suite,
+                                                                        struct torture_tcase *tcase,
+                                                                        const char *name)
+{
        tcase->name = talloc_strdup(tcase, name);
        tcase->description = NULL;
        tcase->setup = NULL;
@@ -134,6 +134,18 @@ struct torture_tcase *torture_suite_add_tcase(struct torture_suite *suite,
 
        DLIST_ADD_END(suite->testcases, tcase, struct torture_tcase *);
 
+       return true;
+}
+
+
+struct torture_tcase *torture_suite_add_tcase(struct torture_suite *suite, 
+                                                        const char *name)
+{
+       struct torture_tcase *tcase = talloc(suite, struct torture_tcase);
+
+       if (!torture_suite_init_tcase(suite, tcase, name))
+               return NULL;
+
        return tcase;
 }
 
@@ -372,7 +384,7 @@ struct torture_tcase *torture_suite_add_simple_tcase(
        test->run = wrap_test_with_simple_tcase;
        test->fn = run;
        test->data = data;
-       test->dangerous = False;
+       test->dangerous = false;
 
        DLIST_ADD_END(tcase->tests, test, struct torture_test *);
 
@@ -465,7 +477,7 @@ struct torture_test *torture_tcase_add_simple_test(
        test->run = wrap_test_with_simple_test;
        test->fn = run;
        test->data = NULL;
-       test->dangerous = False;
+       test->dangerous = false;
 
        DLIST_ADD_END(tcase->tests, test, struct torture_test *);
 
index 119a3c173075a7360aff65b918b13bbf63cd9908..f6287e34d6208d8952c4d90a5415c18a7b68b4da 100644 (file)
@@ -31,9 +31,7 @@ _PUBLIC_ NTSTATUS torture_temp_dir(struct torture_context *tctx,
                                                                   const char *prefix, 
                                                                   char **tempdir)
 {
-       const char *basedir = torture_setting_string(tctx, "basedir", ".");
-
-       *tempdir = talloc_asprintf(tctx, "%s/%s.XXXXXX", basedir, prefix);
+       *tempdir = talloc_asprintf(tctx, "%s/%s.XXXXXX", tctx->outputdir, prefix);
 
        if (mkdtemp(*tempdir) == NULL)
                return NT_STATUS_UNSUCCESSFUL;