svn commit: samba r15456 - in branches/SAMBA_4_0/source/torture: .
rpc
mimir at samba.org
mimir at samba.org
Fri May 5 09:52:13 GMT 2006
Author: mimir
Date: 2006-05-05 09:52:12 +0000 (Fri, 05 May 2006)
New Revision: 15456
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=15456
Log:
Inspired by a short discussion with abartlet on IRC.
- create "async" parameter for smbtorture to categorise async tests
potentially hard for windows servers
- create "num-async" parameter to specify the number of simultaneous
async requests to be made
- move RPC-ASYNCBIND test from "dangerous" to "async" (I should probably
do the same for many others async tests...)
It's an interesting way to determine resources availability on windows
servers...
rafal
Modified:
branches/SAMBA_4_0/source/torture/rpc/async_bind.c
branches/SAMBA_4_0/source/torture/smbtorture.c
branches/SAMBA_4_0/source/torture/torture.c
branches/SAMBA_4_0/source/torture/torture.h
Changeset:
Modified: branches/SAMBA_4_0/source/torture/rpc/async_bind.c
===================================================================
--- branches/SAMBA_4_0/source/torture/rpc/async_bind.c 2006-05-05 08:26:34 UTC (rev 15455)
+++ branches/SAMBA_4_0/source/torture/rpc/async_bind.c 2006-05-05 09:52:12 UTC (rev 15456)
@@ -24,6 +24,7 @@
#include "includes.h"
#include "torture/torture.h"
#include "lib/events/events.h"
+#include "libcli/composite/composite.h"
#include "librpc/gen_ndr/ndr_lsa.h"
#include "lib/cmdline/popt_common.h"
#include "librpc/rpc/dcerpc.h"
@@ -43,23 +44,30 @@
int i;
const char *binding_string;
struct cli_credentials *creds;
+ extern int torture_numasync;
-#define ASYNC_COUNT 100
- struct composite_context *bind_req[ASYNC_COUNT];
- struct dcerpc_pipe *pipe[ASYNC_COUNT];
- struct dcerpc_interface_table *table[ASYNC_COUNT];
+ struct composite_context **bind_req;
+ struct dcerpc_pipe **pipe;
+ const struct dcerpc_interface_table **table;
- if (!lp_parm_bool(-1, "torture", "dangerous", False)) {
+ if (!lp_parm_bool(-1, "torture", "async", False)) {
printf("async bind test disabled - enable dangerous tests to use\n");
return True;
}
-
+
binding_string = lp_parm_string(-1, "torture", "binding");
/* talloc context */
mem_ctx = talloc_init("torture_async_bind");
if (mem_ctx == NULL) return False;
+ bind_req = talloc_array(torture, struct composite_context*, torture_numasync);
+ if (bind_req == NULL) return False;
+ pipe = talloc_array(torture, struct dcerpc_pipe*, torture_numasync);
+ if (pipe == NULL) return False;
+ table = talloc_array(torture, const struct dcerpc_interface_table*, torture_numasync);
+ if (table == NULL) return False;
+
/* event context */
evt_ctx = event_context_init(mem_ctx);
if (evt_ctx == NULL) return False;
@@ -67,15 +75,20 @@
/* credentials */
creds = cmdline_credentials;
- for (i = 0; i < ASYNC_COUNT; i++) {
+ /* send bind requests */
+ for (i = 0; i < torture_numasync; i++) {
table[i] = &dcerpc_table_lsarpc;
bind_req[i] = dcerpc_pipe_connect_send(mem_ctx, &pipe[i], binding_string,
table[i], creds, evt_ctx);
}
- for (i = 0; i < ASYNC_COUNT; i++) {
+ /* recv bind requests */
+ for (i = 0; i < torture_numasync; i++) {
status = dcerpc_pipe_connect_recv(bind_req[i], mem_ctx, &pipe[i]);
- if (!NT_STATUS_IS_OK(status)) return False;
+ if (!NT_STATUS_IS_OK(status)) {
+ printf("async rpc connection failed: %s\n", nt_errstr(status));
+ return False;
+ }
}
talloc_free(mem_ctx);
Modified: branches/SAMBA_4_0/source/torture/smbtorture.c
===================================================================
--- branches/SAMBA_4_0/source/torture/smbtorture.c 2006-05-05 08:26:34 UTC (rev 15455)
+++ branches/SAMBA_4_0/source/torture/smbtorture.c 2006-05-05 09:52:12 UTC (rev 15456)
@@ -265,7 +265,7 @@
char **argv_new;
poptContext pc;
enum {OPT_LOADFILE=1000,OPT_UNCLIST,OPT_TIMELIMIT,OPT_DNS,
- OPT_DANGEROUS,OPT_SMB_PORTS};
+ OPT_DANGEROUS,OPT_SMB_PORTS,OPT_ASYNC};
struct poptOption long_options[] = {
POPT_AUTOHELP
@@ -281,7 +281,12 @@
{"timelimit", 't', POPT_ARG_STRING, NULL, OPT_TIMELIMIT, "timelimit", NULL},
{"failures", 'f', POPT_ARG_INT, &torture_failures, 0, "failures", NULL},
{"parse-dns", 'D', POPT_ARG_STRING, NULL, OPT_DNS, "parse-dns", NULL},
- {"dangerous", 'X', POPT_ARG_NONE, NULL, OPT_DANGEROUS, "dangerous", NULL},
+ {"dangerous", 'X', POPT_ARG_NONE, NULL, OPT_DANGEROUS,
+ "run dangerous tests (eg. wiping out password database)", NULL},
+ {"async", 'a', POPT_ARG_NONE, NULL, OPT_ASYNC,
+ "run async tests", NULL},
+ {"num-async", 0, POPT_ARG_INT, &torture_numasync, 0,
+ "number of simultaneous async requests", NULL},
{"maximum-runtime", 0, POPT_ARG_INT, &max_runtime, 0,
"set maximum time for smbtorture to live", "seconds"},
POPT_COMMON_SAMBA
@@ -320,6 +325,9 @@
case OPT_DANGEROUS:
lp_set_cmdline("torture:dangerous", "Yes");
break;
+ case OPT_ASYNC:
+ lp_set_cmdline("torture:async", "Yes");
+ break;
case OPT_SMB_PORTS:
lp_set_cmdline("smb ports", poptGetOptArg(pc));
break;
Modified: branches/SAMBA_4_0/source/torture/torture.c
===================================================================
--- branches/SAMBA_4_0/source/torture/torture.c 2006-05-05 08:26:34 UTC (rev 15455)
+++ branches/SAMBA_4_0/source/torture/torture.c 2006-05-05 09:52:12 UTC (rev 15456)
@@ -55,6 +55,7 @@
_PUBLIC_ int torture_entries=1000;
_PUBLIC_ int torture_failures=1;
_PUBLIC_ int torture_seed=0;
+_PUBLIC_ int torture_numasync=100;
_PUBLIC_ BOOL use_oplocks;
static int procnum; /* records process count number when forking */
static struct smbcli_state *current_cli;
Modified: branches/SAMBA_4_0/source/torture/torture.h
===================================================================
--- branches/SAMBA_4_0/source/torture/torture.h 2006-05-05 08:26:34 UTC (rev 15455)
+++ branches/SAMBA_4_0/source/torture/torture.h 2006-05-05 09:52:12 UTC (rev 15456)
@@ -40,6 +40,7 @@
extern int torture_seed;
extern int torture_numops;
extern int torture_failures;
+extern int torture_numasync;
extern BOOL use_level_II_oplocks;
struct torture_test;
More information about the samba-cvs
mailing list