diff options
Diffstat (limited to 'source4')
-rw-r--r-- | source4/samba4-knownfail | 2 | ||||
-rwxr-xr-x | source4/selftest/selftest.pl | 1 | ||||
-rw-r--r-- | source4/torture/raw/write.c | 4 | ||||
-rw-r--r-- | source4/torture/rpc/handles.c | 10 | ||||
-rw-r--r-- | source4/torture/rpc/initshutdown.c | 3 | ||||
-rw-r--r-- | source4/torture/rpc/rpc.c | 46 | ||||
-rw-r--r-- | source4/torture/rpc/srvsvc.c | 7 | ||||
-rw-r--r-- | source4/torture/rpc/winreg.c | 1 | ||||
-rw-r--r-- | source4/torture/smbtorture.c | 9 | ||||
-rw-r--r-- | source4/torture/ui.c | 24 | ||||
-rw-r--r-- | source4/torture/util.c | 4 |
11 files changed, 63 insertions, 48 deletions
diff --git a/source4/samba4-knownfail b/source4/samba4-knownfail index 451428077a..d4a5441043 100644 --- a/source4/samba4-knownfail +++ b/source4/samba4-knownfail @@ -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 diff --git a/source4/selftest/selftest.pl b/source4/selftest/selftest.pl index de7e5c4dbc..3f8a74f7bc 100755 --- a/source4/selftest/selftest.pl +++ b/source4/selftest/selftest.pl @@ -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); diff --git a/source4/torture/raw/write.c b/source4/torture/raw/write.c index 75d275fc3c..b704a19ed6 100644 --- a/source4/torture/raw/write.c +++ b/source4/torture/raw/write.c @@ -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); diff --git a/source4/torture/rpc/handles.c b/source4/torture/rpc/handles.c index 5b6082f7dd..f35897b3df 100644 --- a/source4/torture/rpc/handles.c +++ b/source4/torture/rpc/handles.c @@ -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"); diff --git a/source4/torture/rpc/initshutdown.c b/source4/torture/rpc/initshutdown.c index cb6bd4ad53..aa817928ab 100644 --- a/source4/torture/rpc/initshutdown.c +++ b/source4/torture/rpc/initshutdown.c @@ -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); diff --git a/source4/torture/rpc/rpc.c b/source4/torture/rpc/rpc.c index fe6ffbd460..21a85fbf03 100644 --- a/source4/torture/rpc/rpc.c +++ b/source4/torture/rpc/rpc.c @@ -27,6 +27,12 @@ #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; } diff --git a/source4/torture/rpc/srvsvc.c b/source4/torture/rpc/srvsvc.c index b99570f81d..15d8502867 100644 --- a/source4/torture/rpc/srvsvc.c +++ b/source4/torture/rpc/srvsvc.c @@ -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)); diff --git a/source4/torture/rpc/winreg.c b/source4/torture/rpc/winreg.c index d433406c58..7559a4d8ac 100644 --- a/source4/torture/rpc/winreg.c +++ b/source4/torture/rpc/winreg.c @@ -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"); diff --git a/source4/torture/smbtorture.c b/source4/torture/smbtorture.c index 43f6b67f1c..c96d8a2e2b 100644 --- a/source4/torture/smbtorture.c +++ b/source4/torture/smbtorture.c @@ -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"); diff --git a/source4/torture/ui.c b/source4/torture/ui.c index 23e761e5dc..92e03fff19 100644 --- a/source4/torture/ui.c +++ b/source4/torture/ui.c @@ -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 *); diff --git a/source4/torture/util.c b/source4/torture/util.c index 119a3c1730..f6287e34d6 100644 --- a/source4/torture/util.c +++ b/source4/torture/util.c @@ -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; |