Fix include paths to new location of libutil.
[tprouty/samba.git] / source4 / torture / smbtorture.c
index 4eeea73003c329d4cd05c39d7b587c2703de8e53..302fefcc88510f83683244dfa62515958f8362b9 100644 (file)
@@ -2,7 +2,7 @@
    Unix SMB/CIFS implementation.
    SMB torture tester
    Copyright (C) Andrew Tridgell 1997-2003
-   Copyright (C) Jelmer Vernooij 2006
+   Copyright (C) Jelmer Vernooij 2006-2008
    
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 #include "libcli/libcli.h"
 #include "lib/ldb/include/ldb.h"
 #include "lib/events/events.h"
-#include "dynconfig.h"
+#include "dynconfig/dynconfig.h"
 
-#include "torture/torture.h"
-#include "build.h"
-#include "lib/util/dlinklist.h"
+#include "torture/smbtorture.h"
+#include "../lib/util/dlinklist.h"
 #include "librpc/rpc/dcerpc.h"
 #include "param/param.h"
 
+#include "auth/credentials/credentials.h"
+
 static bool run_matching(struct torture_context *torture,
                                                 const char *prefix, 
                                                 const char *expr,
@@ -374,11 +375,24 @@ static void subunit_suite_start(struct torture_context *ctx,
 {
 }
 
+static void subunit_print_testname(struct torture_context *ctx, 
+                                  struct torture_tcase *tcase,
+                                  struct torture_test *test)
+{
+       if (!strcmp(tcase->name, test->name)) {
+               printf("%s", test->name);
+       } else {
+               printf("%s.%s", tcase->name, test->name);
+       }
+}
+
 static void subunit_test_start(struct torture_context *ctx, 
                               struct torture_tcase *tcase,
                               struct torture_test *test)
 {
-       printf("test: %s\n", test->name);
+       printf("test: ");
+       subunit_print_testname(ctx, tcase, test);       
+       printf("\n");
 }
 
 static void subunit_test_result(struct torture_context *context, 
@@ -386,18 +400,20 @@ static void subunit_test_result(struct torture_context *context,
 {
        switch (res) {
        case TORTURE_OK:
-               printf("success: %s", context->active_test->name);
+               printf("success: ");
                break;
        case TORTURE_FAIL:
-               printf("failure: %s", context->active_test->name);
+               printf("failure: ");
                break;
        case TORTURE_ERROR:
-               printf("error: %s", context->active_test->name);
+               printf("error: ");
                break;
        case TORTURE_SKIP:
-               printf("skip: %s", context->active_test->name);
+               printf("skip: ");
                break;
        }
+       subunit_print_testname(context, context->active_tcase, context->active_test);   
+
        if (reason)
                printf(" [\n%s\n]", reason);
        printf("\n");
@@ -524,8 +540,9 @@ int main(int argc,char *argv[])
        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_DANGEROUS,OPT_SMB_PORTS,OPT_ASYNC,OPT_NUMPROGS,OPT_EXTRA_USER};
        
        struct poptOption long_options[] = {
                POPT_AUTOHELP
@@ -553,6 +570,8 @@ int main(int argc,char *argv[])
                 "number of simultaneous async requests", NULL},
                {"maximum-runtime", 0, POPT_ARG_INT, &max_runtime, 0, 
                 "set maximum time for smbtorture to live", "seconds"},
+               {"extra-user",   0, POPT_ARG_STRING, NULL, OPT_EXTRA_USER,
+                "extra user credentials", NULL},
                POPT_COMMON_SAMBA
                POPT_COMMON_CONNECTION
                POPT_COMMON_CREDENTIALS
@@ -596,6 +615,15 @@ int main(int argc,char *argv[])
                case OPT_SMB_PORTS:
                        lp_set_cmdline(cmdline_lp_ctx, "smb ports", poptGetOptArg(pc));
                        break;
+               case OPT_EXTRA_USER:
+                       {
+                               char *option = talloc_asprintf(NULL, "torture:extra_user%u",
+                                                              ++num_extra_users);
+                               char *value = poptGetOptArg(pc);
+                               lp_set_cmdline(cmdline_lp_ctx, option, value);
+                               talloc_free(option);
+                       }
+                       break;
                }
        }
 
@@ -673,7 +701,7 @@ int main(int argc,char *argv[])
                exit(1);
        }
 
-       torture = torture_context_init(talloc_autofree_context(), ui_ops);
+       torture = torture_context_init(s4_event_context_init(NULL), ui_ops);
        if (basedir != NULL) {
                if (basedir[0] != '/') {
                        fprintf(stderr, "Please specify an absolute path to --basedir\n");