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 # see if we support ADS on the Samba3 side
32 config_h = os.environ["CONFIG_H"]
34 config_h = os.path.join(samba3srcdir, "include/autoconf/config.h")
36 torture_options = [configuration, "--maximum-runtime=$SELFTEST_MAXTIME",
37 "--target=samba3", "--basedir=$SELFTEST_TMPDIR",
38 '--option="torture:winbindd_netbios_name=$SERVER"',
39 '--option="torture:winbindd_netbios_domain=$DOMAIN"',
40 '--option=torture:sharedelay=100000']
42 if not os.getenv("SELFTEST_VERBOSE"):
43 torture_options.append("--option=torture:progress=no")
44 torture_options.append("--format=subunit")
45 if os.getenv("SELFTEST_QUICK"):
46 torture_options.append("--option=torture:quick=yes")
47 smb4torture += " " + " ".join(torture_options)
49 sub = subprocess.Popen("%s --version 2> /dev/null" % smb4torture, stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)
51 smb4torture_possible = (sub.returncode == 0)
53 def plansmbtorturetestsuite(name, env, options, description=''):
54 modname = "samba3.%s %s" % (name, description)
55 cmdline = "%s $LISTOPT %s %s" % (valgrindify(smb4torture), options, name)
56 if smb4torture_possible:
57 plantestsuite_loadlist(modname, env, cmdline)
59 plantestsuite("samba3.blackbox.success", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_success.sh")])
60 plantestsuite("samba3.blackbox.failure", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_failure.sh")])
62 plantestsuite("samba3.local_s3", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_local_s3.sh")])
64 plantestsuite("samba3.blackbox.registry.upgrade", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_registry_upgrade.sh"), binpath('net'), binpath('dbwrap_tool')])
66 tests=[ "FDPASS", "LOCK1", "LOCK2", "LOCK3", "LOCK4", "LOCK5", "LOCK6", "LOCK7", "LOCK9",
67 "UNLINK", "BROWSE", "ATTR", "TRANS2", "TORTURE",
68 "OPLOCK1", "OPLOCK2", "OPLOCK4", "STREAMERROR",
69 "DIR", "DIR1", "DIR-CREATETIME", "TCON", "TCONDEV", "RW1", "RW2", "RW3", "RW-SIGNING",
70 "OPEN", "XCOPY", "RENAME", "DELETE", "DELETE-LN", "PROPERTIES", "W2K",
71 "TCON2", "IOCTL", "CHKPATH", "FDSESS", "CHAIN1", "CHAIN2",
73 "GETADDRINFO", "POSIX", "UID-REGRESSION-TEST", "SHORTNAME-TEST",
75 "CASE-INSENSITIVE-CREATE", "SMB2-BASIC", "NTTRANS-FSCTL", "SMB2-NEGPROT",
81 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"])
82 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"])
93 "LOCAL-string_to_sid",
94 "LOCAL-binary_to_sid",
96 "LOCAL-TEVENT-SELECT",
97 "LOCAL-CONVERT-STRING",
98 "LOCAL-CONV-AUTH-INFO",
99 "LOCAL-hex_encode_buf",
100 "LOCAL-sprintf_append"]
102 for t in local_tests:
103 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"])
105 tests=["--ping", "--separator",
109 "--domain-info=BUILTIN",
110 "--domain-info=$DOMAIN",
112 "--online-status --domain=BUILTIN",
113 "--online-status --domain=$DOMAIN",
114 "--check-secret --domain=$DOMAIN",
115 "--change-secret --domain=$DOMAIN",
116 "--check-secret --domain=$DOMAIN",
117 "--online-status --domain=$DOMAIN",
118 #Didn't pass yet# "--domain-users",
120 "--name-to-sid=$DC_USERNAME",
121 "--name-to-sid=$DOMAIN\\\\$DC_USERNAME",
122 #Didn't pass yet# "--user-info=$USERNAME",
123 "--user-groups=$DOMAIN\\\\$DC_USERNAME",
127 for env in ["s3dc", "member", "s3member"]:
128 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])
131 plantestsuite("samba3.wbinfo_s3.(%s:local).%s" % (env, t), "%s:local" % env, [os.path.join(samba3srcdir, "script/tests/test_wbinfo_s3.sh"), t])
134 "samba3.wbinfo_sids2xids.(%s:local)" % env, "%s:local" % env,
135 [os.path.join(samba3srcdir, "script/tests/test_wbinfo_sids2xids.sh")])
138 "samba3.ntlm_auth.diagnostics(%s:local)" % env, "%s:local" % env,
139 [os.path.join(samba3srcdir, "script/tests/test_ntlm_auth_diagnostics.sh"), binpath('ntlm_auth3'), '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', configuration])
141 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])
143 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])
145 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])
148 for env in ["secserver"]:
149 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"])
151 for env in ["member", "s3member"]:
152 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])
154 for env in ["maptoguest", "secshare", "secserver"]:
155 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"])
158 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"])
162 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])
164 for env in ["member", "s3member"]:
165 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])
168 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"])
170 for env in ["member", "s3member"]:
171 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"])
175 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"])
177 #TODO encrypted against member, with member creds, and with DC creds
178 plantestsuite("samba3.blackbox.net.misc", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
179 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration])
180 plantestsuite("samba3.blackbox.net.local.registry", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
181 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration])
182 plantestsuite("samba3.blackbox.net.rpc.registry", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
183 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
185 plantestsuite("samba3.blackbox.net.local.registry.roundtrip", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
186 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration,])
187 plantestsuite("samba3.blackbox.net.rpc.registry.roundtrip", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
188 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
190 plantestsuite("samba3.blackbox.net.local.conf", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
191 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration,])
192 plantestsuite("samba3.blackbox.net.rpc.conf", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
193 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
196 plantestsuite("samba3.blackbox.testparm", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_testparm_s3.sh"),
200 "samba3.pthreadpool", "s3dc",
201 [os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
205 base = ["base.attr", "base.charset", "base.chkpath", "base.defer_open", "base.delaywrite", "base.delete",
206 "base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
207 "base.disconnect", "base.fdpass", "base.lock",
208 "base.mangle", "base.negnowait", "base.ntdeny1",
209 "base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
210 "base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
211 "base.xcopy", "base.samba3error"]
213 raw = ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
214 "raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock"
215 "raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
216 "raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
217 "raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename",
218 "raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
219 "raw.samba3rootdirfid", "raw.sfileinfo.end-of-file",
220 "raw.bench-oplock", "raw.bench-lock", "raw.bench-open", "raw.bench-tcon",
221 "raw.samba3checkfsp", "raw.samba3closeerr", "raw.samba3oplocklogoff"]
223 smb2 = ["smb2.lock", "smb2.read", "smb2.compound", "smb2.connect", "smb2.scan", "smb2.scanfind",
224 "smb2.bench-oplock", "smb2.rename"]
226 rpc = ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
227 "rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
228 "rpc.samba3.getaliasmembership-0",
229 "rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
230 "rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
231 "rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
232 "rpc.spoolss.driver",
233 "rpc.lsa", "rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
234 "rpc.lsa.privileges", "rpc.lsa.secrets",
235 "rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
236 "rpc.samr.passwords.pwdlastset", "rpc.samr.large-dc", "rpc.samr.machine.auth",
238 "rpc.netlogon.admin",
239 "rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.join", "rpc.bind"]
241 local = ["local.nss-wrapper", "local.ndr"]
243 winbind = ["winbind.struct", "winbind.wbclient"]
245 rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
247 unix = ["unix.info2", "unix.whoami"]
251 libsmbclient = ["libsmbclient"]
253 tests= base + raw + smb2 + rpc + unix + local + winbind + rap + nbt + libsmbclient
256 if t == "base.delaywrite":
257 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --maximum-runtime=900')
259 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
260 elif t == "unix.whoami":
261 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD')
262 elif t == "raw.samba3posixtimedlock":
263 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/s3dc/share')
264 elif t == "raw.chkpath":
265 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
267 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
270 test = 'rpc.lsa.lookupsids'
271 auth_options = ["", "ntlm", "spnego", "spnego,ntlm" ]
272 signseal_options = ["", ",connect", ",sign", ",seal"]
273 endianness_options = ["", ",bigendian"]
274 for s in signseal_options:
275 for e in endianness_options:
276 for a in auth_options:
277 binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
278 options = binding_string + " -U$USERNAME%$PASSWORD"
279 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_np with [%s%s%s] ' % (a, s, e))
280 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"),
281 "none", options, configuration])
283 # We should try more combinations in future, but this is all
284 # the pre-calculated credentials cache supports at the moment
287 binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
288 options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
289 plansmbtorturetestsuite(test, "ktest", options, 'krb5 with old ccache ncacn_np with [%s%s%s] ' % (a, s, e))
291 options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
292 plansmbtorturetestsuite(test, "ktest", options, 'krb5 ncacn_np with [%s%s%s] ' % (a, s, e))
294 auth_options2 = ["krb5", "spnego,krb5"]
295 for a in auth_options2:
296 binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
298 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"),
299 "$PREFIX/ktest/krb5_ccache-3", binding_string, "-k", configuration])
302 options_list = ["", "-e"]
303 for options in options_list:
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_krb5 old ccache %s" % options, "ktest:local",
310 [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
311 "$PREFIX/ktest/krb5_ccache-2",
312 binpath('smbclient3'), "$SERVER", options, configuration])
314 plantestsuite("samba3.blackbox.smbclient_large_file %s" % 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 krb5" % options, "ktest:local",
320 [os.path.join(samba3srcdir, "script/tests/test_smbclient_posix_large.sh"),
321 "$PREFIX/ktest/krb5_ccache-3",
322 binpath('smbclient3'), "$SERVER", "$PREFIX", options, "-k " + configuration])
324 plantestsuite("samba3.blackbox.smbclient_posix_large %s NTLM" % options, "s3dc:local",
325 [os.path.join(samba3srcdir, "script/tests/test_smbclient_posix_large.sh"),
327 binpath('smbclient3'), "$SERVER", "$PREFIX", options, "-U$USERNAME%$PASSWORD " + configuration])
329 for e in endianness_options:
330 for a in auth_options:
331 for s in signseal_options:
332 binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
333 options = binding_string + " -U$USERNAME%$PASSWORD"
334 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))
336 test = 'rpc.epmapper'
338 binding_string = 'ncalrpc:'
339 options = binding_string + " -U$USERNAME%$PASSWORD"
341 plansmbtorturetestsuite(test, env, options, 'over ncalrpc')