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