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])
124 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])
127 plantestsuite("samba3.wbinfo_s3.(%s:local).%s" % (env, t), "%s:local" % env, [os.path.join(samba3srcdir, "script/tests/test_wbinfo_s3.sh"), t])
130 "samba3.wbinfo_sids2xids.(%s:local)" % env, "%s:local" % env,
131 [os.path.join(samba3srcdir, "script/tests/test_wbinfo_sids2xids.sh")])
134 "samba3.ntlm_auth.diagnostics(%s:local)" % env, "%s:local" % env,
135 [os.path.join(samba3srcdir, "script/tests/test_ntlm_auth_diagnostics.sh"), binpath('ntlm_auth3'), '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', configuration])
137 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])
139 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])
141 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])
144 for env in ["secserver"]:
145 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"])
147 for env in ["maptoguest", "secshare", "secserver"]:
148 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"])
151 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"])
155 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])
157 for env in ["member", "s3member"]:
158 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])
161 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"])
163 for env in ["member", "s3member"]:
164 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"])
168 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"])
170 #TODO encrypted against member, with member creds, and with DC creds
171 plantestsuite("samba3.blackbox.net.misc", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
172 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration])
173 plantestsuite("samba3.blackbox.net.local.registry", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
174 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration])
175 plantestsuite("samba3.blackbox.net.rpc.registry", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
176 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
178 plantestsuite("samba3.blackbox.net.local.registry.roundtrip", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
179 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration,])
180 plantestsuite("samba3.blackbox.net.rpc.registry.roundtrip", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
181 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
183 plantestsuite("samba3.blackbox.net.local.conf", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
184 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration,])
185 plantestsuite("samba3.blackbox.net.rpc.conf", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
186 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
189 plantestsuite("samba3.blackbox.testparm", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_testparm_s3.sh"),
193 "samba3.pthreadpool", "s3dc",
194 [os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
198 base = ["base.attr", "base.charset", "base.chkpath", "base.defer_open", "base.delaywrite", "base.delete",
199 "base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
200 "base.disconnect", "base.fdpass", "base.lock",
201 "base.mangle", "base.negnowait", "base.ntdeny1",
202 "base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
203 "base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
204 "base.xcopy", "base.samba3error"]
206 raw = ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
207 "raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock"
208 "raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
209 "raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
210 "raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename",
211 "raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
212 "raw.samba3rootdirfid", "raw.sfileinfo.end-of-file",
213 "raw.bench-oplock", "raw.bench-lock", "raw.bench-open", "raw.bench-tcon",
214 "raw.samba3checkfsp", "raw.samba3closeerr", "raw.samba3oplocklogoff"]
216 smb2 = ["smb2.lock", "smb2.read", "smb2.compound", "smb2.connect", "smb2.scan", "smb2.scanfind",
217 "smb2.bench-oplock", "smb2.rename"]
219 rpc = ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
220 "rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
221 "rpc.samba3.getaliasmembership-0",
222 "rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
223 "rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
224 "rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
225 "rpc.spoolss.driver",
226 "rpc.lsa", "rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
227 "rpc.lsa.privileges", "rpc.lsa.secrets",
228 "rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
229 "rpc.samr.passwords.pwdlastset", "rpc.samr.large-dc", "rpc.samr.machine.auth",
231 "rpc.netlogon.admin",
232 "rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.join", "rpc.bind"]
234 local = ["local.nss-wrapper", "local.ndr"]
236 winbind = ["winbind.struct", "winbind.wbclient"]
238 rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
240 unix = ["unix.info2", "unix.whoami"]
244 libsmbclient = ["libsmbclient"]
246 tests= base + raw + smb2 + rpc + unix + local + winbind + rap + nbt + libsmbclient
249 if t == "base.delaywrite":
250 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --maximum-runtime=900')
252 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
253 elif t == "unix.whoami":
254 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD')
255 elif t == "raw.samba3posixtimedlock":
256 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/s3dc/share')
257 elif t == "raw.chkpath":
258 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
260 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
263 test = 'rpc.lsa.lookupsids'
264 auth_options = ["", "ntlm", "spnego", "spnego,ntlm" ]
265 signseal_options = ["", ",connect", ",sign", ",seal"]
266 endianness_options = ["", ",bigendian"]
267 for s in signseal_options:
268 for e in endianness_options:
269 for a in auth_options:
270 binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
271 options = binding_string + " -U$USERNAME%$PASSWORD"
272 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_np with [%s%s%s] ' % (a, s, e))
273 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"),
274 "none", options, configuration])
276 # We should try more combinations in future, but this is all
277 # the pre-calculated credentials cache supports at the moment
280 binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
281 options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
282 plansmbtorturetestsuite(test, "ktest", options, 'krb5 with old ccache ncacn_np with [%s%s%s] ' % (a, s, e))
284 options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
285 plansmbtorturetestsuite(test, "ktest", options, 'krb5 ncacn_np with [%s%s%s] ' % (a, s, e))
287 auth_options2 = ["krb5", "spnego,krb5"]
288 for a in auth_options2:
289 binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
291 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"),
292 "$PREFIX/ktest/krb5_ccache-3", binding_string, "-k", configuration])
295 options_list = ["", "-e"]
296 for options in options_list:
297 plantestsuite("samba3.blackbox.smbclient_krb5 old ccache %s" % options, "ktest:local",
298 [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
299 "$PREFIX/ktest/krb5_ccache-2",
300 binpath('smbclient3'), "$SERVER", options, configuration])
302 plantestsuite("samba3.blackbox.smbclient_krb5 old ccache %s" % options, "ktest:local",
303 [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
304 "$PREFIX/ktest/krb5_ccache-2",
305 binpath('smbclient3'), "$SERVER", options, configuration])
307 plantestsuite("samba3.blackbox.smbclient_large_file %s" % options, "ktest:local",
308 [os.path.join(samba3srcdir, "script/tests/test_smbclient_posix_large.sh"),
309 "$PREFIX/ktest/krb5_ccache-3",
310 binpath('smbclient3'), "$SERVER", "$PREFIX", options, "-k " + configuration])
312 plantestsuite("samba3.blackbox.smbclient_posix_large %s krb5" % options, "ktest:local",
313 [os.path.join(samba3srcdir, "script/tests/test_smbclient_posix_large.sh"),
314 "$PREFIX/ktest/krb5_ccache-3",
315 binpath('smbclient3'), "$SERVER", "$PREFIX", options, "-k " + configuration])
317 plantestsuite("samba3.blackbox.smbclient_posix_large %s NTLM" % options, "s3dc:local",
318 [os.path.join(samba3srcdir, "script/tests/test_smbclient_posix_large.sh"),
320 binpath('smbclient3'), "$SERVER", "$PREFIX", options, "-U$USERNAME%$PASSWORD " + configuration])
322 for e in endianness_options:
323 for a in auth_options:
324 for s in signseal_options:
325 binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
326 options = binding_string + " -U$USERNAME%$PASSWORD"
327 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))
329 test = 'rpc.epmapper'
331 binding_string = 'ncalrpc:'
332 options = binding_string + " -U$USERNAME%$PASSWORD"
334 plansmbtorturetestsuite(test, env, options, 'over ncalrpc')