2 # This script generates a list of testsuites that should be run as part of
3 # the Samba 3 test suite.
5 # The output of this script is parsed by selftest.pl, which then decides
6 # which of the tests to actually run. It will, for example, skip all tests
7 # listed in selftest/skip or only run a subset during "make quicktest".
9 # The idea is that this script outputs all of the tests of Samba 3, not
10 # just those that are known to pass, and list those that should be skipped
11 # or are known to fail in selftest/skip or selftest/samba4-knownfail. This makes it
12 # very easy to see what functionality is still missing in Samba 3 and makes
13 # it possible to run the testsuite against other servers, such as Samba 4 or
14 # Windows that have a different set of features.
16 # The syntax for a testsuite is "-- TEST --" on a single line, followed
17 # by the name of the test, the environment it needs and the command to run, all
18 # three separated by newlines. All other lines in the output are considered
22 sys.path.insert(0, os.path.normpath(os.path.join(os.path.dirname(__file__), "../../selftest")))
23 from selftesthelpers import *
25 smb4torture = binpath("smbtorture4")
26 samba3srcdir = srcdir() + "/source3"
27 configuration = "--configfile=$SMB_CONF_PATH"
28 scriptdir=os.path.join(samba3srcdir, "../script/tests")
30 torture_options = [configuration, "--maximum-runtime=$SELFTEST_MAXTIME",
31 "--target=samba3", "--basedir=$SELFTEST_TMPDIR",
32 '--option="torture:winbindd_netbios_name=$SERVER"',
33 '--option="torture:winbindd_netbios_domain=$DOMAIN"',
34 '--option=torture:sharedelay=100000',
35 '--option=torture:writetimeupdatedelay=500000' ]
37 if not os.getenv("SELFTEST_VERBOSE"):
38 torture_options.append("--option=torture:progress=no")
39 torture_options.append("--format=subunit")
40 if os.getenv("SELFTEST_QUICK"):
41 torture_options.append("--option=torture:quick=yes")
43 smb4torture_testsuite_list = subprocess.Popen([smb4torture, "--list-suites"], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate("")[0].splitlines()
45 smb4torture += " " + " ".join(torture_options)
47 sub = subprocess.Popen("%s --version 2> /dev/null" % smb4torture, stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)
49 smb4torture_possible = (sub.returncode == 0)
52 def smb4torture_testsuites(prefix):
53 return filter(lambda x: x.startswith(prefix), smb4torture_testsuite_list)
55 def plansmbtorturetestsuite(name, env, options, description=''):
56 modname = "samba3.%s %s" % (name, description)
57 cmdline = "%s $LISTOPT %s %s" % (valgrindify(smb4torture), options, name)
58 if smb4torture_possible:
59 plantestsuite_loadlist(modname, env, cmdline)
62 plantestsuite("samba3.blackbox.success", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_success.sh")])
63 plantestsuite("samba3.blackbox.failure", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_failure.sh")])
65 plantestsuite("samba3.local_s3", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_local_s3.sh")])
67 plantestsuite("samba3.blackbox.registry.upgrade", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_registry_upgrade.sh"), binpath('net'), binpath('dbwrap_tool')])
69 tests=[ "FDPASS", "LOCK1", "LOCK2", "LOCK3", "LOCK4", "LOCK5", "LOCK6", "LOCK7", "LOCK9",
70 "UNLINK", "BROWSE", "ATTR", "TRANS2", "TORTURE",
71 "OPLOCK1", "OPLOCK2", "OPLOCK4", "STREAMERROR",
72 "DIR", "DIR1", "DIR-CREATETIME", "TCON", "TCONDEV", "RW1", "RW2", "RW3", "RW-SIGNING",
73 "OPEN", "XCOPY", "RENAME", "DELETE", "DELETE-LN", "PROPERTIES", "W2K",
74 "TCON2", "IOCTL", "CHKPATH", "FDSESS", "CHAIN1", "CHAIN2",
76 "GETADDRINFO", "POSIX", "UID-REGRESSION-TEST", "SHORTNAME-TEST",
78 "CASE-INSENSITIVE-CREATE", "SMB2-BASIC", "NTTRANS-FSCTL", "SMB2-NEGPROT",
84 plantestsuite("samba3.smbtorture_s3.plain(s3dc).%s" % t, "s3dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', binpath('smbtorture3'), "", "-l $LOCAL_PATH"])
85 plantestsuite("samba3.smbtorture_s3.crypt(s3dc).%s" % t, "s3dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', binpath('smbtorture3'), "-e", "-l $LOCAL_PATH"])
86 plantestsuite("samba3.smbtorture_s3.plain(dc).%s" % t, "dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', binpath('smbtorture3'), "", "-l $LOCAL_PATH"])
97 "LOCAL-string_to_sid",
98 "LOCAL-binary_to_sid",
100 "LOCAL-TEVENT-SELECT",
101 "LOCAL-CONVERT-STRING",
102 "LOCAL-CONV-AUTH-INFO",
103 "LOCAL-hex_encode_buf",
104 "LOCAL-sprintf_append"]
106 for t in local_tests:
107 plantestsuite("samba3.smbtorture_s3.%s" % t, "s3dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', binpath('smbtorture3'), "-e"])
109 tests=["--ping", "--separator",
113 "--domain-info=BUILTIN",
114 "--domain-info=$DOMAIN",
116 "--online-status --domain=BUILTIN",
117 "--online-status --domain=$DOMAIN",
118 "--check-secret --domain=$DOMAIN",
119 "--change-secret --domain=$DOMAIN",
120 "--check-secret --domain=$DOMAIN",
121 "--online-status --domain=$DOMAIN",
122 #Didn't pass yet# "--domain-users",
124 "--name-to-sid=$DC_USERNAME",
125 "--name-to-sid=$DOMAIN\\\\$DC_USERNAME",
126 #Didn't pass yet# "--user-info=$USERNAME",
127 "--user-groups=$DOMAIN\\\\$DC_USERNAME",
128 "--authenticate=$DOMAIN\\\\$DC_USERNAME%$DC_PASSWORD",
132 for options in ["--option=clientusespnego=no", " --option=clientntlmv2auth=no --option=clientlanmanauth=yes --max-protocol=LANMAN2", ""]:
134 plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) %s" % (env, options), env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', binpath('smbclient3'), configuration, options])
136 for env in ["s3dc", "member", "s3member"]:
137 plantestsuite("samba3.blackbox.smbclient_auth.plain (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', binpath('smbclient3'), configuration])
138 plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) member creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$SERVER\\\\$USERNAME', '$PASSWORD', binpath('smbclient3'), configuration])
141 plantestsuite("samba3.wbinfo_s3.(%s:local).%s" % (env, t), "%s:local" % env, [os.path.join(samba3srcdir, "script/tests/test_wbinfo_s3.sh"), t])
144 "samba3.wbinfo_sids2xids.(%s:local)" % env, "%s:local" % env,
145 [os.path.join(samba3srcdir, "script/tests/test_wbinfo_sids2xids.sh")])
148 "samba3.ntlm_auth.diagnostics(%s:local)" % env, "%s:local" % env,
149 [os.path.join(samba3srcdir, "script/tests/test_ntlm_auth_diagnostics.sh"), binpath('ntlm_auth3'), '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', configuration])
151 plantestsuite("samba3.ntlm_auth.(%s:local)" % env, "%s:local" % env, [os.path.join(samba3srcdir, "script/tests/test_ntlm_auth_s3.sh"), valgrindify(python), samba3srcdir, binpath('ntlm_auth3'), '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', configuration])
154 t = "--krb5auth=$DOMAIN\\\\$DC_USERNAME%$DC_PASSWORD"
155 plantestsuite("samba3.wbinfo_s3.(%s:local).%s" % (env, t), "%s:local" % env, [os.path.join(samba3srcdir, "script/tests/test_wbinfo_s3.sh"), t])
157 plantestsuite("samba3.ntlm_auth.krb5(ktest:local) old ccache", "ktest:local", [os.path.join(samba3srcdir, "script/tests/test_ntlm_auth_krb5.sh"), valgrindify(python), samba3srcdir, binpath('ntlm_auth3'), '$PREFIX/ktest/krb5_ccache-2', '$SERVER', configuration])
159 plantestsuite("samba3.ntlm_auth.krb5(ktest:local)", "ktest:local", [os.path.join(samba3srcdir, "script/tests/test_ntlm_auth_krb5.sh"), valgrindify(python), samba3srcdir, binpath('ntlm_auth3'), '$PREFIX/ktest/krb5_ccache-3', '$SERVER', configuration])
162 for env in ["secserver"]:
163 plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) domain creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN\\\\$DC_USERNAME', '$DC_PASSWORD', binpath('smbclient3'), configuration + " --option=clientntlmv2auth=no"])
165 for env in ["maptoguest", "secshare", "secserver"]:
166 plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) local creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', binpath('smbclient3'), configuration + " --option=clientntlmv2auth=no --option=clientlanmanauth=yes"])
169 plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) bad username" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', 'notmy$USERNAME', '$PASSWORD', binpath('smbclient3'), configuration + " --option=clientntlmv2auth=no --option=clientlanmanauth=yes"])
173 plantestsuite("samba3.blackbox.smbclient_s3.plain (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', binpath('smbclient3'), binpath('wbinfo'), configuration])
175 for env in ["member", "s3member"]:
176 plantestsuite("samba3.blackbox.smbclient_s3.plain (%s) member creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$SERVER', '$SERVER\\\\$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', binpath('smbclient3'), binpath('wbinfo'), configuration])
179 plantestsuite("samba3.blackbox.smbclient_s3.sign (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', binpath('smbclient3'), binpath('wbinfo'), configuration, "--signing=required"])
181 for env in ["member", "s3member"]:
182 plantestsuite("samba3.blackbox.smbclient_s3.sign (%s) member creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$SERVER', '$SERVER\\\\$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', binpath('smbclient3'), binpath('wbinfo'), configuration, "--signing=required"])
186 plantestsuite("samba3.blackbox.smbclient_s3.crypt (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', binpath('smbclient3'), binpath('wbinfo'), configuration, "-e"])
188 #TODO encrypted against member, with member creds, and with DC creds
189 plantestsuite("samba3.blackbox.net.misc", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
190 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration])
191 plantestsuite("samba3.blackbox.net.local.registry", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
192 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration])
193 plantestsuite("samba3.blackbox.net.rpc.registry", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
194 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
196 plantestsuite("samba3.blackbox.net.local.registry.roundtrip", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
197 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration,])
198 plantestsuite("samba3.blackbox.net.rpc.registry.roundtrip", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
199 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
201 plantestsuite("samba3.blackbox.net.local.conf", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
202 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration,])
203 plantestsuite("samba3.blackbox.net.rpc.conf", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
204 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
207 plantestsuite("samba3.blackbox.testparm", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_testparm_s3.sh"),
211 "samba3.pthreadpool", "s3dc",
212 [os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
216 base = ["base.attr", "base.charset", "base.chkpath", "base.defer_open", "base.delaywrite", "base.delete",
217 "base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
218 "base.disconnect", "base.fdpass", "base.lock",
219 "base.mangle", "base.negnowait", "base.ntdeny1",
220 "base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
221 "base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
222 "base.xcopy", "base.samba3error"]
224 raw = ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
225 "raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock"
226 "raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
227 "raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
228 "raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename",
229 "raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
230 "raw.samba3rootdirfid", "raw.sfileinfo.end-of-file",
231 "raw.bench-oplock", "raw.bench-lock", "raw.bench-open", "raw.bench-tcon",
232 "raw.samba3checkfsp", "raw.samba3closeerr", "raw.samba3oplocklogoff"]
234 smb2 = smb4torture_testsuites("smb2.")
236 rpc = ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
237 "rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
238 "rpc.samba3.getaliasmembership-0",
239 "rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
240 "rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
241 "rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
242 "rpc.spoolss.driver",
243 "rpc.lsa", "rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
244 "rpc.lsa.privileges", "rpc.lsa.secrets",
245 "rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
246 "rpc.samr.passwords.pwdlastset", "rpc.samr.large-dc", "rpc.samr.machine.auth",
248 "rpc.netlogon.admin",
249 "rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.join", "rpc.bind"]
251 local = ["local.nss-wrapper", "local.ndr"]
253 winbind = ["winbind.struct", "winbind.wbclient"]
255 rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
257 unix = ["unix.info2", "unix.whoami"]
261 libsmbclient = ["libsmbclient"]
263 tests= base + raw + smb2 + rpc + unix + local + winbind + rap + nbt + libsmbclient
266 if t == "base.delaywrite":
267 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --maximum-runtime=900')
269 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
270 elif t == "unix.whoami":
271 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD')
272 elif t == "raw.samba3posixtimedlock":
273 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/s3dc/share')
274 elif t == "raw.chkpath":
275 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
277 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
280 test = 'rpc.lsa.lookupsids'
281 auth_options = ["", "ntlm", "spnego", "spnego,ntlm" ]
282 signseal_options = ["", ",connect", ",sign", ",seal"]
283 endianness_options = ["", ",bigendian"]
284 for s in signseal_options:
285 for e in endianness_options:
286 for a in auth_options:
287 binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
288 options = binding_string + " -U$USERNAME%$PASSWORD"
289 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_np with [%s%s%s] ' % (a, s, e))
290 plantestsuite("samba3.blackbox.rpcclient over ncacn_np with [%s%s%s] " % (a, s, e), "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_rpcclient.sh"),
291 "none", options, configuration])
293 # We should try more combinations in future, but this is all
294 # the pre-calculated credentials cache supports at the moment
297 binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
298 options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
299 plansmbtorturetestsuite(test, "ktest", options, 'krb5 with old ccache ncacn_np with [%s%s%s] ' % (a, s, e))
301 options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
302 plansmbtorturetestsuite(test, "ktest", options, 'krb5 ncacn_np with [%s%s%s] ' % (a, s, e))
304 auth_options2 = ["krb5", "spnego,krb5"]
305 for a in auth_options2:
306 binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
308 plantestsuite("samba3.blackbox.rpcclient krb5 ncacn_np with [%s%s%s] " % (a, s, e), "ktest:local", [os.path.join(samba3srcdir, "script/tests/test_rpcclient.sh"),
309 "$PREFIX/ktest/krb5_ccache-3", binding_string, "-k", configuration])
312 options_list = ["", "-e"]
313 for options in options_list:
314 plantestsuite("samba3.blackbox.smbclient_krb5 old ccache %s" % options, "ktest:local",
315 [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
316 "$PREFIX/ktest/krb5_ccache-2",
317 binpath('smbclient3'), "$SERVER", options, configuration])
319 plantestsuite("samba3.blackbox.smbclient_krb5 old ccache %s" % options, "ktest:local",
320 [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
321 "$PREFIX/ktest/krb5_ccache-2",
322 binpath('smbclient3'), "$SERVER", options, configuration])
324 plantestsuite("samba3.blackbox.smbclient_large_file %s" % options, "ktest:local",
325 [os.path.join(samba3srcdir, "script/tests/test_smbclient_posix_large.sh"),
326 "$PREFIX/ktest/krb5_ccache-3",
327 binpath('smbclient3'), "$SERVER", "$PREFIX", options, "-k " + configuration])
329 plantestsuite("samba3.blackbox.smbclient_posix_large %s krb5" % options, "ktest:local",
330 [os.path.join(samba3srcdir, "script/tests/test_smbclient_posix_large.sh"),
331 "$PREFIX/ktest/krb5_ccache-3",
332 binpath('smbclient3'), "$SERVER", "$PREFIX", options, "-k " + configuration])
334 plantestsuite("samba3.blackbox.smbclient_posix_large %s NTLM" % options, "s3dc:local",
335 [os.path.join(samba3srcdir, "script/tests/test_smbclient_posix_large.sh"),
337 binpath('smbclient3'), "$SERVER", "$PREFIX", options, "-U$USERNAME%$PASSWORD " + configuration])
339 for e in endianness_options:
340 for a in auth_options:
341 for s in signseal_options:
342 binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
343 options = binding_string + " -U$USERNAME%$PASSWORD"
344 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))
346 test = 'rpc.epmapper'
348 binding_string = 'ncalrpc:'
349 options = binding_string + " -U$USERNAME%$PASSWORD"
351 plansmbtorturetestsuite(test, env, options, 'over ncalrpc')