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']
36 if not os.getenv("SELFTEST_VERBOSE"):
37 torture_options.append("--option=torture:progress=no")
38 torture_options.append("--format=subunit")
39 if os.getenv("SELFTEST_QUICK"):
40 torture_options.append("--option=torture:quick=yes")
41 smb4torture += " " + " ".join(torture_options)
43 sub = subprocess.Popen("%s --version 2> /dev/null" % smb4torture, stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)
45 smb4torture_possible = (sub.returncode == 0)
47 def plansmbtorturetestsuite(name, env, options, description=''):
48 modname = "samba3.%s %s" % (name, description)
49 cmdline = "%s $LISTOPT %s %s" % (valgrindify(smb4torture), options, name)
50 if smb4torture_possible:
51 plantestsuite_loadlist(modname, env, cmdline)
53 plantestsuite("samba3.blackbox.success", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_success.sh")])
54 plantestsuite("samba3.blackbox.failure", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_failure.sh")])
56 plantestsuite("samba3.local_s3", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_local_s3.sh")])
58 plantestsuite("samba3.blackbox.registry.upgrade", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_registry_upgrade.sh"), binpath('net'), binpath('dbwrap_tool')])
60 tests=[ "FDPASS", "LOCK1", "LOCK2", "LOCK3", "LOCK4", "LOCK5", "LOCK6", "LOCK7", "LOCK9",
61 "UNLINK", "BROWSE", "ATTR", "TRANS2", "TORTURE",
62 "OPLOCK1", "OPLOCK2", "OPLOCK4", "STREAMERROR",
63 "DIR", "DIR1", "DIR-CREATETIME", "TCON", "TCONDEV", "RW1", "RW2", "RW3", "RW-SIGNING",
64 "OPEN", "XCOPY", "RENAME", "DELETE", "DELETE-LN", "PROPERTIES", "W2K",
65 "TCON2", "IOCTL", "CHKPATH", "FDSESS", "CHAIN1", "CHAIN2",
67 "GETADDRINFO", "POSIX", "UID-REGRESSION-TEST", "SHORTNAME-TEST",
69 "CASE-INSENSITIVE-CREATE", "SMB2-BASIC", "NTTRANS-FSCTL", "SMB2-NEGPROT",
75 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"])
76 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"])
77 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"])
88 "LOCAL-string_to_sid",
89 "LOCAL-binary_to_sid",
91 "LOCAL-TEVENT-SELECT",
92 "LOCAL-CONVERT-STRING",
93 "LOCAL-CONV-AUTH-INFO",
94 "LOCAL-hex_encode_buf",
95 "LOCAL-sprintf_append"]
98 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"])
100 tests=["--ping", "--separator",
104 "--domain-info=BUILTIN",
105 "--domain-info=$DOMAIN",
107 "--online-status --domain=BUILTIN",
108 "--online-status --domain=$DOMAIN",
109 "--check-secret --domain=$DOMAIN",
110 "--change-secret --domain=$DOMAIN",
111 "--check-secret --domain=$DOMAIN",
112 "--online-status --domain=$DOMAIN",
113 #Didn't pass yet# "--domain-users",
115 "--name-to-sid=$DC_USERNAME",
116 "--name-to-sid=$DOMAIN\\\\$DC_USERNAME",
117 #Didn't pass yet# "--user-info=$USERNAME",
118 "--user-groups=$DOMAIN\\\\$DC_USERNAME",
122 for env in ["s3dc", "member", "s3member"]:
123 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])
126 plantestsuite("samba3.wbinfo_s3.(%s:local).%s" % (env, t), "%s:local" % env, [os.path.join(samba3srcdir, "script/tests/test_wbinfo_s3.sh"), t])
129 "samba3.wbinfo_sids2xids.(%s:local)" % env, "%s:local" % env,
130 [os.path.join(samba3srcdir, "script/tests/test_wbinfo_sids2xids.sh")])
133 "samba3.ntlm_auth.diagnostics(%s:local)" % env, "%s:local" % env,
134 [os.path.join(samba3srcdir, "script/tests/test_ntlm_auth_diagnostics.sh"), binpath('ntlm_auth3'), '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', configuration])
136 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])
138 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])
140 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])
143 for env in ["secserver"]:
144 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"])
146 for env in ["member", "s3member"]:
147 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])
149 for env in ["maptoguest", "secshare", "secserver"]:
150 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"])
153 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"])
157 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])
159 for env in ["member", "s3member"]:
160 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])
163 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"])
165 for env in ["member", "s3member"]:
166 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"])
170 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"])
172 #TODO encrypted against member, with member creds, and with DC creds
173 plantestsuite("samba3.blackbox.net.misc", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
174 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration])
175 plantestsuite("samba3.blackbox.net.local.registry", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
176 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration])
177 plantestsuite("samba3.blackbox.net.rpc.registry", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
178 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
180 plantestsuite("samba3.blackbox.net.local.registry.roundtrip", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
181 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration,])
182 plantestsuite("samba3.blackbox.net.rpc.registry.roundtrip", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
183 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
185 plantestsuite("samba3.blackbox.net.local.conf", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
186 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration,])
187 plantestsuite("samba3.blackbox.net.rpc.conf", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
188 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
191 plantestsuite("samba3.blackbox.testparm", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_testparm_s3.sh"),
195 "samba3.pthreadpool", "s3dc",
196 [os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
200 base = ["base.attr", "base.charset", "base.chkpath", "base.defer_open", "base.delaywrite", "base.delete",
201 "base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
202 "base.disconnect", "base.fdpass", "base.lock",
203 "base.mangle", "base.negnowait", "base.ntdeny1",
204 "base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
205 "base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
206 "base.xcopy", "base.samba3error"]
208 raw = ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
209 "raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock"
210 "raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
211 "raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
212 "raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename",
213 "raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
214 "raw.samba3rootdirfid", "raw.sfileinfo.end-of-file",
215 "raw.bench-oplock", "raw.bench-lock", "raw.bench-open", "raw.bench-tcon",
216 "raw.samba3checkfsp", "raw.samba3closeerr", "raw.samba3oplocklogoff"]
218 smb2 = ["smb2.lock", "smb2.read", "smb2.compound", "smb2.connect", "smb2.scan", "smb2.scanfind",
219 "smb2.bench-oplock", "smb2.rename"]
221 rpc = ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
222 "rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
223 "rpc.samba3.getaliasmembership-0",
224 "rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
225 "rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
226 "rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
227 "rpc.spoolss.driver",
228 "rpc.lsa", "rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
229 "rpc.lsa.privileges", "rpc.lsa.secrets",
230 "rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
231 "rpc.samr.passwords.pwdlastset", "rpc.samr.large-dc", "rpc.samr.machine.auth",
233 "rpc.netlogon.admin",
234 "rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.join", "rpc.bind"]
236 local = ["local.nss-wrapper", "local.ndr"]
238 winbind = ["winbind.struct", "winbind.wbclient"]
240 rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
242 unix = ["unix.info2", "unix.whoami"]
246 libsmbclient = ["libsmbclient"]
248 tests= base + raw + smb2 + rpc + unix + local + winbind + rap + nbt + libsmbclient
251 if t == "base.delaywrite":
252 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --maximum-runtime=900')
254 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
255 elif t == "unix.whoami":
256 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD')
257 elif t == "raw.samba3posixtimedlock":
258 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/s3dc/share')
259 elif t == "raw.chkpath":
260 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
262 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
265 test = 'rpc.lsa.lookupsids'
266 auth_options = ["", "ntlm", "spnego", "spnego,ntlm" ]
267 signseal_options = ["", ",connect", ",sign", ",seal"]
268 endianness_options = ["", ",bigendian"]
269 for s in signseal_options:
270 for e in endianness_options:
271 for a in auth_options:
272 binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
273 options = binding_string + " -U$USERNAME%$PASSWORD"
274 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_np with [%s%s%s] ' % (a, s, e))
275 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"),
276 "none", options, configuration])
278 # We should try more combinations in future, but this is all
279 # the pre-calculated credentials cache supports at the moment
282 binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
283 options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
284 plansmbtorturetestsuite(test, "ktest", options, 'krb5 with old ccache ncacn_np with [%s%s%s] ' % (a, s, e))
286 options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
287 plansmbtorturetestsuite(test, "ktest", options, 'krb5 ncacn_np with [%s%s%s] ' % (a, s, e))
289 auth_options2 = ["krb5", "spnego,krb5"]
290 for a in auth_options2:
291 binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
293 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"),
294 "$PREFIX/ktest/krb5_ccache-3", binding_string, "-k", configuration])
297 options_list = ["", "-e"]
298 for options in options_list:
299 plantestsuite("samba3.blackbox.smbclient_krb5 old ccache %s" % options, "ktest:local",
300 [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
301 "$PREFIX/ktest/krb5_ccache-2",
302 binpath('smbclient3'), "$SERVER", options, configuration])
304 plantestsuite("samba3.blackbox.smbclient_krb5 old ccache %s" % options, "ktest:local",
305 [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
306 "$PREFIX/ktest/krb5_ccache-2",
307 binpath('smbclient3'), "$SERVER", options, configuration])
309 plantestsuite("samba3.blackbox.smbclient_large_file %s" % options, "ktest:local",
310 [os.path.join(samba3srcdir, "script/tests/test_smbclient_posix_large.sh"),
311 "$PREFIX/ktest/krb5_ccache-3",
312 binpath('smbclient3'), "$SERVER", "$PREFIX", options, "-k " + configuration])
314 plantestsuite("samba3.blackbox.smbclient_posix_large %s krb5" % options, "ktest:local",
315 [os.path.join(samba3srcdir, "script/tests/test_smbclient_posix_large.sh"),
316 "$PREFIX/ktest/krb5_ccache-3",
317 binpath('smbclient3'), "$SERVER", "$PREFIX", options, "-k " + configuration])
319 plantestsuite("samba3.blackbox.smbclient_posix_large %s NTLM" % options, "s3dc:local",
320 [os.path.join(samba3srcdir, "script/tests/test_smbclient_posix_large.sh"),
322 binpath('smbclient3'), "$SERVER", "$PREFIX", options, "-U$USERNAME%$PASSWORD " + configuration])
324 for e in endianness_options:
325 for a in auth_options:
326 for s in signseal_options:
327 binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
328 options = binding_string + " -U$USERNAME%$PASSWORD"
329 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))
331 test = 'rpc.epmapper'
333 binding_string = 'ncalrpc:'
334 options = binding_string + " -U$USERNAME%$PASSWORD"
336 plansmbtorturetestsuite(test, env, options, 'over ncalrpc')