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 f = open(config_h, 'r')
38 have_ads_support = ("HAVE_LDAP 1" in f.read())
42 f = open(config_h, 'r')
44 have_ads_support &= ("HAVE_KRB5 1" in f.read())
48 torture_options = [configuration, "--maximum-runtime=$SELFTEST_MAXTIME",
49 "--target=samba3", "--basedir=$SELFTEST_TMPDIR",
50 '--option="torture:winbindd_netbios_name=$SERVER"',
51 '--option="torture:winbindd_netbios_domain=$DOMAIN"',
52 '--option=torture:sharedelay=100000']
54 if not os.getenv("SELFTEST_VERBOSE"):
55 torture_options.append("--option=torture:progress=no")
56 torture_options.append("--format=subunit")
57 if os.getenv("SELFTEST_QUICK"):
58 torture_options.append("--option=torture:quick=yes")
59 smb4torture += " " + " ".join(torture_options)
61 sub = subprocess.Popen("%s --version 2> /dev/null" % smb4torture, stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)
63 smb4torture_possible = (sub.returncode == 0)
65 def plansmbtorturetestsuite(name, env, options, description=''):
66 modname = "samba3.posix_s3.%s %s" % (name, description)
67 cmdline = "%s $LISTOPT %s %s" % (valgrindify(smb4torture), options, name)
68 if smb4torture_possible:
69 plantestsuite_loadlist(modname, env, cmdline)
71 plantestsuite("samba3.blackbox.success", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_success.sh")])
72 plantestsuite("samba3.blackbox.failure", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_failure.sh")])
74 plantestsuite("samba3.local_s3", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_local_s3.sh")])
76 plantestsuite("samba3.blackbox.registry.upgrade", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_registry_upgrade.sh"), binpath('net'), binpath('dbwrap_tool')])
78 tests=[ "FDPASS", "LOCK1", "LOCK2", "LOCK3", "LOCK4", "LOCK5", "LOCK6", "LOCK7", "LOCK9",
79 "UNLINK", "BROWSE", "ATTR", "TRANS2", "TORTURE",
80 "OPLOCK1", "OPLOCK2", "OPLOCK4", "STREAMERROR",
81 "DIR", "DIR1", "DIR-CREATETIME", "TCON", "TCONDEV", "RW1", "RW2", "RW3", "RW-SIGNING",
82 "OPEN", "XCOPY", "RENAME", "DELETE", "DELETE-LN", "PROPERTIES", "W2K",
83 "TCON2", "IOCTL", "CHKPATH", "FDSESS", "LOCAL-SUBSTITUTE", "CHAIN1", "CHAIN2",
84 "GETADDRINFO", "POSIX", "UID-REGRESSION-TEST", "SHORTNAME-TEST",
85 "LOCAL-BASE64", "LOCAL-GENCACHE", "POSIX-APPEND",
86 "CASE-INSENSITIVE-CREATE", "SMB2-BASIC", "NTTRANS-FSCTL", "SMB2-NEGPROT",
92 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"])
93 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"])
104 "LOCAL-string_to_sid",
105 "LOCAL-binary_to_sid",
107 "LOCAL-TEVENT-SELECT",
108 "LOCAL-CONVERT-STRING",
109 "LOCAL-CONV-AUTH-INFO",
110 "LOCAL-hex_encode_buf",
111 "LOCAL-sprintf_append"]
113 for t in local_tests:
114 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"])
116 tests=["--ping", "--separator",
120 "--domain-info=BUILTIN",
121 "--domain-info=$DOMAIN",
123 "--online-status --domain=BUILTIN",
124 "--online-status --domain=$DOMAIN",
125 "--check-secret --domain=$DOMAIN",
126 "--change-secret --domain=$DOMAIN",
127 "--check-secret --domain=$DOMAIN",
128 "--online-status --domain=$DOMAIN",
129 #Didn't pass yet# "--domain-users",
131 "--name-to-sid=$DC_USERNAME",
132 "--name-to-sid=$DOMAIN\\\\$DC_USERNAME",
133 #Didn't pass yet# "--user-info=$USERNAME",
134 "--user-groups=$DOMAIN\\\\$DC_USERNAME",
139 plantestsuite("samba3.wbinfo_s3.(s3dc:local).%s" % t, "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_wbinfo_s3.sh"), t])
140 plantestsuite("samba3.wbinfo_s3.(member:local).%s" % t, "member:local", [os.path.join(samba3srcdir, "script/tests/test_wbinfo_s3.sh"), t])
143 "samba3.wbinfo_sids2xids.(member:local)", "member:local",
144 [os.path.join(samba3srcdir, "script/tests/test_wbinfo_sids2xids.sh")])
146 plantestsuite("samba3.ntlm_auth.(s3dc:local)", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_ntlm_auth_s3.sh"), valgrindify(python), samba3srcdir, binpath('ntlm_auth3'), configuration])
148 for env in ["s3dc", "member"]:
149 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])
151 for env in ["secserver"]:
152 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"])
154 for env in ["member"]:
155 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])
157 for env in ["maptoguest", "secshare", "secserver"]:
158 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"])
161 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"])
165 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])
167 for env in ["member"]:
168 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])
171 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"])
173 for env in ["member"]:
174 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"])
178 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"])
180 #TODO encrypted against member, with member creds, and with DC creds
181 plantestsuite("samba3.blackbox.net.misc", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
182 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration])
183 plantestsuite("samba3.blackbox.net.local.registry", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
184 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration])
185 plantestsuite("samba3.blackbox.net.rpc.registry", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
186 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
188 plantestsuite("samba3.blackbox.net.local.registry.roundtrip", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
189 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration,])
190 plantestsuite("samba3.blackbox.net.rpc.registry.roundtrip", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
191 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
193 plantestsuite("samba3.blackbox.net.local.conf", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
194 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration,])
195 plantestsuite("samba3.blackbox.net.rpc.conf", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
196 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
199 plantestsuite("samba3.blackbox.testparm", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_testparm_s3.sh"),
203 "samba3.pthreadpool", "s3dc",
204 [os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
208 base = ["base.attr", "base.charset", "base.chkpath", "base.defer_open", "base.delaywrite", "base.delete",
209 "base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
210 "base.disconnect", "base.fdpass", "base.lock",
211 "base.mangle", "base.negnowait", "base.ntdeny1",
212 "base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
213 "base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
214 "base.xcopy", "base.samba3error"]
216 raw = ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
217 "raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock"
218 "raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
219 "raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
220 "raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename",
221 "raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
222 "raw.samba3rootdirfid", "raw.sfileinfo.end-of-file",
223 "raw.bench-oplock", "raw.bench-lock", "raw.bench-open", "raw.bench-tcon",
224 "raw.samba3checkfsp", "raw.samba3closeerr", "raw.samba3oplocklogoff"]
226 smb2 = ["smb2.lock", "smb2.read", "smb2.compound", "smb2.connect", "smb2.scan", "smb2.scanfind",
227 "smb2.bench-oplock", "smb2.rename"]
229 rpc = ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
230 "rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
231 "rpc.samba3.getaliasmembership-0",
232 "rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
233 "rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
234 "rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
235 "rpc.spoolss.driver",
236 "rpc.lsa", "rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
237 "rpc.lsa.privileges", "rpc.lsa.secrets",
238 "rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
239 "rpc.samr.passwords.pwdlastset", "rpc.samr.large-dc", "rpc.samr.machine.auth",
241 "rpc.netlogon.admin",
242 "rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.join", "rpc.bind"]
244 local = ["local.nss-wrapper", "local.ndr"]
246 winbind = ["winbind.struct", "winbind.wbclient"]
248 rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
250 unix = ["unix.info2", "unix.whoami"]
254 libsmbclient = ["libsmbclient"]
256 tests= base + raw + smb2 + rpc + unix + local + winbind + rap + nbt + libsmbclient
259 if t == "base.delaywrite":
260 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --maximum-runtime=900')
262 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
263 elif t == "unix.whoami":
264 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD')
265 elif t == "raw.samba3posixtimedlock":
266 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/s3dc/share')
267 elif t == "raw.chkpath":
268 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
270 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
273 test = 'rpc.lsa.lookupsids'
274 auth_options = ["", "ntlm", "spnego", "spnego,ntlm" ]
275 signseal_options = ["", ",connect", ",sign", ",seal"]
276 endianness_options = ["", ",bigendian"]
277 for s in signseal_options:
278 for e in endianness_options:
279 for a in auth_options:
280 binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
281 options = binding_string + " -U$USERNAME%$PASSWORD"
282 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_np with [%s%s%s] ' % (a, s, e))
283 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"),
284 "none", options, configuration])
287 # We should try more combinations in future, but this is all
288 # the pre-calculated credentials cache supports at the moment
291 binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
292 options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
293 plansmbtorturetestsuite(test, "ktest", options, 'krb5 with old ccache ncacn_np with [%s%s%s] ' % (a, s, e))
295 options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
296 plansmbtorturetestsuite(test, "ktest", options, 'krb5 ncacn_np with [%s%s%s] ' % (a, s, e))
298 auth_options2 = ["krb5", "spnego,krb5"]
299 for a in auth_options2:
300 binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
302 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"),
303 "$PREFIX/ktest/krb5_ccache-3", binding_string, "-k", configuration])
306 options_list = ["", "-e"]
307 for options in options_list:
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_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_large_file %s" % 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 krb5" % 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 NTLM" % options, "s3dc:local",
330 [os.path.join(samba3srcdir, "script/tests/test_smbclient_posix_large.sh"),
332 binpath('smbclient3'), "$SERVER", "$PREFIX", options, "-U$USERNAME%$PASSWORD " + configuration])
334 for e in endianness_options:
335 for a in auth_options:
336 for s in signseal_options:
337 binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
338 options = binding_string + " -U$USERNAME%$PASSWORD"
339 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))
341 test = 'rpc.epmapper'
343 binding_string = 'ncalrpc:'
344 options = binding_string + " -U$USERNAME%$PASSWORD"
346 plansmbtorturetestsuite(test, env, options, 'over ncalrpc')