From: Ralph Boehme Date: Tue, 8 Jul 2014 03:39:49 +0000 (+0200) Subject: s4:torture: add wrapper functions X-Git-Url: http://git.samba.org/?a=commitdiff_plain;h=4a0ae592f5561179ac3c8170189cb1d54a212ce8;p=obnox%2Fsamba%2Fsamba-obnox.git s4:torture: add wrapper functions Add wrapper functions that connect two trees with sharenames taken from passed option. Signed-off-by: Ralph Boehme Reviewed-by: Jeremy Allison Reviewed-by: Volker Lendecke --- diff --git a/source4/torture/vfs/vfs.c b/source4/torture/vfs/vfs.c index 7341fbaad39..965c7c9620d 100644 --- a/source4/torture/vfs/vfs.c +++ b/source4/torture/vfs/vfs.c @@ -18,9 +18,86 @@ */ #include "includes.h" +#include "system/filesys.h" +#include "libcli/libcli.h" +#include "../lib/util/dlinklist.h" +#include "libcli/smb2/smb2.h" +#include "libcli/smb2/smb2_calls.h" +#include "lib/cmdline/popt_common.h" +#include "param/param.h" +#include "libcli/resolve/resolve.h" + +#include "torture/util.h" #include "torture/smbtorture.h" #include "torture/vfs/proto.h" +#include "torture/smb2/proto.h" + +static bool wrap_2ns_smb2_test(struct torture_context *torture_ctx, + struct torture_tcase *tcase, + struct torture_test *test) +{ + bool (*fn) (struct torture_context *, struct smb2_tree *, struct smb2_tree *); + bool ret = false; + + struct smb2_tree *tree1; + struct smb2_tree *tree2; + TALLOC_CTX *mem_ctx = talloc_new(torture_ctx); + + if (!torture_smb2_con_sopt(torture_ctx, "share1", &tree1)) { + torture_fail(torture_ctx, + "Establishing SMB2 connection failed\n"); + goto done; + } + + talloc_steal(mem_ctx, tree1); + + if (!torture_smb2_con_sopt(torture_ctx, "share2", &tree2)) { + torture_fail(torture_ctx, + "Establishing SMB2 connection failed\n"); + goto done; + } + + talloc_steal(mem_ctx, tree2); + + fn = test->fn; + + ret = fn(torture_ctx, tree1, tree2); + +done: + /* the test may already have closed some of the connections */ + talloc_free(mem_ctx); + + return ret; +} + +/* + * Run a test with 2 connected trees, Share names to connect are taken + * from option strings "torture:share1" and "torture:share2" + */ +struct torture_test *torture_suite_add_2ns_smb2_test(struct torture_suite *suite, + const char *name, + bool (*run)(struct torture_context *, + struct smb2_tree *, + struct smb2_tree *)) +{ + struct torture_test *test; + struct torture_tcase *tcase; + + tcase = torture_suite_add_tcase(suite, name); + + test = talloc(tcase, struct torture_test); + + test->name = talloc_strdup(test, name); + test->description = NULL; + test->run = wrap_2ns_smb2_test; + test->fn = run; + test->dangerous = false; + + DLIST_ADD_END(tcase->tests, test, struct torture_test *); + + return test; +} NTSTATUS torture_vfs_init(void) {