/**************************************************************************** main program ****************************************************************************/ int main(int argc,char *argv[]) { char *share1, *share2, *nfspath1, *nfspath2; extern char *optarg; extern int optind; int opt; char *p; int seed; setlinebuf(stdout); dbf = x_stderr; if (argc < 5 || argv[1][0] == '-') { usage(); exit(1); } share1 = argv[1]; share2 = argv[2]; nfspath1 = argv[3]; nfspath2 = argv[4]; all_string_sub(share1,"/","\\",0); all_string_sub(share2,"/","\\",0); setup_logging(argv[0], DEBUG_STDOUT); argc -= 4; argv += 4; lp_load(); if (getenv("USER")) { fstrcpy(username,getenv("USER")); } seed = time(NULL); while ((opt = getopt(argc, argv, "U:s:ho:aAW:O")) != EOF) { switch (opt) { case 'U': fstrcpy(username,optarg); p = strchr_m(username,'%'); if (p) { *p = 0; fstrcpy(password, p+1); got_pass = 1; } break; case 's': seed = atoi(optarg); break; case 'u': hide_unlock_fails = True; break; case 'o': numops = atoi(optarg); break; case 'O': use_oplocks = True; break; case 'a': showall = True; break; case 'A': analyze = True; break; case 'h': usage(); exit(1); default: printf("Unknown option %c (%d)\n", (char)opt, opt); exit(1); } } argc -= optind; argv += optind; DEBUG(0,("seed=%u\n", seed)); srandom(seed); locking_init(1); test_locks(share1, share2, nfspath1, nfspath2); return(0); }
/**************************************************************************** main program ****************************************************************************/ int main(int argc,char *argv[]) { char *share[NSERVERS]; int opt; int seed, server; int username_count=0; struct tevent_context *ev; struct loadparm_context *lp_ctx; poptContext pc; int argc_new, i; char **argv_new; enum {OPT_UNCLIST=1000}; struct poptOption long_options[] = { POPT_AUTOHELP {"seed", 0, POPT_ARG_INT, &seed, 0, "Seed to use for randomizer", NULL}, {"num-ops", 0, POPT_ARG_INT, &numops, 0, "num ops", NULL}, {"lockrange", 0, POPT_ARG_INT, &lock_range,0, "locking range", NULL}, {"lockbase", 0, POPT_ARG_INT, &lock_base, 0, "locking base", NULL}, {"minlength", 0, POPT_ARG_INT, &min_length,0, "min lock length", NULL}, {"hidefails", 0, POPT_ARG_NONE, &hide_unlock_fails,0,"hide unlock fails", NULL}, {"oplocks", 0, POPT_ARG_NONE, &use_oplocks,0, "use oplocks", NULL}, {"showall", 0, POPT_ARG_NONE, &showall, 0, "display all operations", NULL}, {"analyse", 0, POPT_ARG_NONE, &analyze, 0, "do backtrack analysis", NULL}, {"zerozero", 0, POPT_ARG_NONE, &zero_zero, 0, "do zero/zero lock", NULL}, {"exacterrors", 0, POPT_ARG_NONE, &exact_error_codes,0,"use exact error codes", NULL}, {"unclist", 0, POPT_ARG_STRING, NULL, OPT_UNCLIST, "unclist", NULL}, { "user", 'U', POPT_ARG_STRING, NULL, 'U', "Set the network username", "[DOMAIN/]USERNAME[%PASSWORD]" }, POPT_COMMON_SAMBA POPT_COMMON_CONNECTION POPT_COMMON_CREDENTIALS POPT_COMMON_VERSION { NULL } }; setlinebuf(stdout); seed = time(NULL); pc = poptGetContext("locktest", argc, (const char **) argv, long_options, POPT_CONTEXT_KEEP_FIRST); poptSetOtherOptionHelp(pc, "<unc1> <unc2>"); lp_ctx = cmdline_lp_ctx; servers[0] = cli_credentials_init(talloc_autofree_context()); servers[1] = cli_credentials_init(talloc_autofree_context()); cli_credentials_guess(servers[0], lp_ctx); cli_credentials_guess(servers[1], lp_ctx); while((opt = poptGetNextOpt(pc)) != -1) { switch (opt) { case OPT_UNCLIST: lp_set_cmdline(cmdline_lp_ctx, "torture:unclist", poptGetOptArg(pc)); break; case 'U': if (username_count == 2) { usage(pc); exit(1); } cli_credentials_parse_string(servers[username_count], poptGetOptArg(pc), CRED_SPECIFIED); username_count++; break; } } argv_new = discard_const_p(char *, poptGetArgs(pc)); argc_new = argc; for (i=0; i<argc; i++) { if (argv_new[i] == NULL) { argc_new = i; break; } } if (!(argc_new >= 3)) { usage(pc); exit(1); } setup_logging("locktest", DEBUG_STDOUT); for (server=0;server<NSERVERS;server++) { share[server] = argv_new[1+server]; all_string_sub(share[server],"/","\\",0); } lp_ctx = cmdline_lp_ctx; if (username_count == 0) { usage(pc); return -1; } if (username_count == 1) { servers[1] = servers[0]; } ev = s4_event_context_init(talloc_autofree_context()); gensec_init(lp_ctx); DEBUG(0,("seed=%u base=%d range=%d min_length=%d\n", seed, lock_base, lock_range, min_length)); srandom(seed); return test_locks(ev, lp_ctx, NULL, share); }
/**************************************************************************** main program ****************************************************************************/ int main(int argc,char *argv[]) { char *share[NSERVERS]; int opt; char *p; int seed, server; setlinebuf(stdout); load_case_tables(); if (argc < 3 || argv[1][0] == '-') { usage(); exit(1); } setup_logging(argv[0], DEBUG_STDOUT); for (server=0;server<NSERVERS;server++) { share[server] = argv[1+server]; all_string_sub(share[server],"/","\\",0); } argc -= NSERVERS; argv += NSERVERS; lp_load_global(get_dyn_CONFIGFILE()); load_interfaces(); if (getenv("USER")) { fstrcpy(username[0],getenv("USER")); fstrcpy(username[1],getenv("USER")); } seed = time(NULL); while ((opt = getopt(argc, argv, "U:s:ho:aAW:OkR:B:M:EZ")) != EOF) { switch (opt) { case 'k': #ifdef HAVE_KRB5 use_kerberos = True; #else d_printf("No kerberos support compiled in\n"); exit(1); #endif break; case 'U': got_user = 1; if (got_pass == 2) { d_printf("Max of 2 usernames\n"); exit(1); } fstrcpy(username[got_pass],optarg); p = strchr_m(username[got_pass],'%'); if (p) { *p = 0; fstrcpy(password[got_pass], p+1); got_pass++; } break; case 'R': lock_range = strtol(optarg, NULL, 0); break; case 'B': lock_base = strtol(optarg, NULL, 0); break; case 'M': min_length = strtol(optarg, NULL, 0); break; case 's': seed = atoi(optarg); break; case 'u': hide_unlock_fails = True; break; case 'o': numops = atoi(optarg); break; case 'O': use_oplocks = True; break; case 'a': showall = True; break; case 'A': analyze = True; break; case 'Z': zero_zero = True; break; case 'E': exact_error_codes = True; break; case 'h': usage(); exit(1); default: printf("Unknown option %c (%d)\n", (char)opt, opt); exit(1); } } if(use_kerberos && !got_user) got_pass = True; argc -= optind; argv += optind; DEBUG(0,("seed=%u\n", seed)); srandom(seed); test_locks(share); return(0); }