s4/torture: Port SMBv1 Change Notify tests to SMBv2
[kai/samba-autobuild/.git] / source4 / torture / smbtorture.c
index 0c2c8c0f6bbcd4e463d96fa1a0d436ed4113ba3e..b9ed52111aee89055f9a4bd924568d30082be534 100644 (file)
 #include "system/readline.h"
 #include "lib/smbreadline/smbreadline.h"
 #include "libcli/libcli.h"
-#include "lib/ldb/include/ldb.h"
 #include "lib/events/events.h"
-#include "dynconfig/dynconfig.h"
 
 #include "torture/smbtorture.h"
-#include "../lib/util/dlinklist.h"
 #include "librpc/rpc/dcerpc.h"
 #include "auth/gensec/gensec.h"
 #include "param/param.h"
 
-#include "auth/credentials/credentials.h"
 
 static bool run_matching(struct torture_context *torture,
                                                 const char *prefix, 
@@ -49,7 +45,7 @@ static bool run_matching(struct torture_context *torture,
        if (suite == NULL) {
                struct torture_suite *o;
 
-               for (o = torture_root->children; o; o = o->next) {
+               for (o = (torture_root == NULL?NULL:torture_root->children); o; o = o->next) {
                        if (gen_fnmatch(expr, o->name) == 0) {
                                *matched = true;
                                reload_charcnv(torture->lp_ctx);
@@ -367,40 +363,6 @@ const static struct torture_ui_ops std_ui_ops = {
 };
 
 
-static void quiet_suite_start(struct torture_context *ctx,
-                             struct torture_suite *suite)
-{
-       int i;
-       ctx->results->quiet = true;
-       for (i = 1; i < ctx->level; i++) putchar('\t');
-       printf("%s: ", suite->name);
-       fflush(stdout);
-}
-
-static void quiet_suite_finish(struct torture_context *ctx,
-                              struct torture_suite *suite)
-{
-       putchar('\n');
-}
-
-static void quiet_test_result(struct torture_context *context, 
-                             enum torture_result res, const char *reason)
-{
-       fflush(stdout);
-       switch (res) {
-       case TORTURE_OK: putchar('.'); break;
-       case TORTURE_FAIL: putchar('F'); break;
-       case TORTURE_ERROR: putchar('E'); break;
-       case TORTURE_SKIP: putchar('I'); break;
-       }
-}
-
-const static struct torture_ui_ops quiet_ui_ops = {
-       .suite_start = quiet_suite_start,
-       .suite_finish = quiet_suite_finish,
-       .test_result = quiet_test_result
-};
-
 static void run_shell(struct torture_context *tctx)
 {
        char *cline;
@@ -464,14 +426,15 @@ int main(int argc,char *argv[])
        static const char *target = "other";
        NTSTATUS status;
        int shell = false;
-       static const char *ui_ops_name = "simple";
+       static const char *ui_ops_name = "subunit";
        const char *basedir = NULL;
        const char *extra_module = NULL;
        static int list_tests = 0;
        int num_extra_users = 0;
        enum {OPT_LOADFILE=1000,OPT_UNCLIST,OPT_TIMELIMIT,OPT_DNS, OPT_LIST,
-             OPT_DANGEROUS,OPT_SMB_PORTS,OPT_ASYNC,OPT_NUMPROGS,OPT_EXTRA_USER};
-       
+             OPT_DANGEROUS,OPT_SMB_PORTS,OPT_ASYNC,OPT_NUMPROGS,
+             OPT_EXTRA_USER,};
+
        struct poptOption long_options[] = {
                POPT_AUTOHELP
                {"format", 0, POPT_ARG_STRING, &ui_ops_name, 0, "Output format (one of: simple, subunit)", NULL },
@@ -547,11 +510,14 @@ int main(int argc,char *argv[])
                        {
                                char *option = talloc_asprintf(NULL, "torture:extra_user%u",
                                                               ++num_extra_users);
-                               char *value = poptGetOptArg(pc);
+                               const char *value = poptGetOptArg(pc);
                                lp_set_cmdline(cmdline_lp_ctx, option, value);
                                talloc_free(option);
                        }
                        break;
+               default:
+                       printf("bad command line option\n");
+                       exit(1);
                }
        }
 
@@ -559,6 +525,16 @@ int main(int argc,char *argv[])
                lp_set_cmdline(cmdline_lp_ctx, "torture:samba3", "true");
        } else if (strcmp(target, "samba4") == 0) {
                lp_set_cmdline(cmdline_lp_ctx, "torture:samba4", "true");
+       } else if (strcmp(target, "w2k8") == 0) {
+               lp_set_cmdline(cmdline_lp_ctx, "torture:w2k8", "true");
+               lp_set_cmdline(cmdline_lp_ctx,
+                   "torture:invalid_lock_range_support", "false");
+       } else if (strcmp(target, "win7") == 0) {
+               lp_set_cmdline(cmdline_lp_ctx, "torture:win7", "true");
+               lp_set_cmdline(cmdline_lp_ctx, "torture:cn_max_buffer_size",
+                    "0x00010000");
+       } else if (strcmp(target, "onefs") == 0) {
+               lp_set_cmdline(cmdline_lp_ctx, "torture:sacl_support", "false");
        }
 
        if (max_runtime) {
@@ -622,8 +598,6 @@ int main(int argc,char *argv[])
                ui_ops = &std_ui_ops;
        } else if (!strcmp(ui_ops_name, "subunit")) {
                ui_ops = &torture_subunit_ui_ops;
-       } else if (!strcmp(ui_ops_name, "quiet")) {
-               ui_ops = &quiet_ui_ops;
        } else {
                printf("Unknown output format '%s'\n", ui_ops_name);
                exit(1);