torture: smbtorture test case to verify Compound related handling
[Samba.git] / selftest / tests.py
blob9685a744d0d0db25d19b183fb53c8fe8e0dc3fe2
1 #!/usr/bin/python
2 # This script generates a list of testsuites that should be run as part of
3 # the Samba 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, 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/knownfail. This makes it
12 # very easy to see what functionality is still missing in Samba and makes
13 # it possible to run the testsuite against other servers, such as
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
19 # comments.
21 import os
22 from selftesthelpers import bindir, srcdir, python
23 from selftesthelpers import planpythontestsuite, samba4srcdir
24 from selftesthelpers import plantestsuite, bbdir
25 from selftesthelpers import configuration, valgrindify
26 from selftesthelpers import skiptestsuite
28 try:
29 config_h = os.environ["CONFIG_H"]
30 except KeyError:
31 samba4bindir = bindir()
32 config_h = os.path.join(samba4bindir, "default/include/config.h")
34 # check available features
35 config_hash = dict()
36 f = open(config_h, 'r')
37 try:
38 lines = f.readlines()
39 config_hash = dict((x[0], ' '.join(x[1:]))
40 for x in map(lambda line: line.strip().split(' ')[1:],
41 list(filter(lambda line: (line[0:7] == '#define') and (len(line.split(' ')) > 2), lines))))
42 finally:
43 f.close()
45 have_man_pages_support = ("XSLTPROC_MANPAGES" in config_hash)
46 with_pam = ("WITH_PAM" in config_hash)
47 with_elasticsearch_backend = ("HAVE_SPOTLIGHT_BACKEND_ES" in config_hash)
48 pam_wrapper_so_path = config_hash["LIBPAM_WRAPPER_SO_PATH"]
49 pam_set_items_so_path = config_hash["PAM_SET_ITEMS_SO_PATH"]
51 planpythontestsuite("none", "samba.tests.source")
52 if have_man_pages_support:
53 planpythontestsuite("none", "samba.tests.docs")
55 try:
56 import testscenarios
57 except ImportError:
58 skiptestsuite("subunit", "testscenarios not available")
59 else:
60 planpythontestsuite("none", "subunit.tests.test_suite")
61 planpythontestsuite("none", "samba.tests.blackbox.ndrdump")
62 planpythontestsuite("none", "samba.tests.blackbox.check_output")
63 planpythontestsuite("none", "api", name="ldb.python", extra_path=['lib/ldb/tests/python'])
64 planpythontestsuite("none", "samba.tests.credentials")
65 planpythontestsuite("none", "samba.tests.registry")
66 planpythontestsuite("ad_dc_ntvfs:local", "samba.tests.auth")
67 planpythontestsuite("none", "samba.tests.get_opt")
68 planpythontestsuite("none", "samba.tests.cred_opt")
69 planpythontestsuite("none", "samba.tests.security")
70 planpythontestsuite("none", "samba.tests.dcerpc.misc")
71 planpythontestsuite("none", "samba.tests.dcerpc.integer")
72 planpythontestsuite("none", "samba.tests.param")
73 planpythontestsuite("none", "samba.tests.upgrade")
74 planpythontestsuite("none", "samba.tests.core")
75 planpythontestsuite("none", "samba.tests.common")
76 planpythontestsuite("none", "samba.tests.provision")
77 planpythontestsuite("none", "samba.tests.password_quality")
78 planpythontestsuite("none", "samba.tests.strings")
79 planpythontestsuite("none", "samba.tests.netcmd")
80 planpythontestsuite("none", "samba.tests.dcerpc.rpc_talloc")
81 planpythontestsuite("none", "samba.tests.dcerpc.array")
82 planpythontestsuite("none", "samba.tests.dcerpc.string_tests")
83 planpythontestsuite("none", "samba.tests.hostconfig")
84 planpythontestsuite("ad_dc_ntvfs:local", "samba.tests.messaging")
85 planpythontestsuite("none", "samba.tests.s3param")
86 planpythontestsuite("none", "samba.tests.s3passdb")
87 planpythontestsuite("none", "samba.tests.s3registry")
88 planpythontestsuite("none", "samba.tests.s3windb")
89 planpythontestsuite("none", "samba.tests.s3idmapdb")
90 planpythontestsuite("none", "samba.tests.samba3sam")
91 planpythontestsuite(
92 "none", "wafsamba.tests.test_suite",
93 extra_path=[os.path.join(samba4srcdir, "..", "buildtools"),
94 os.path.join(samba4srcdir, "..", "third_party", "waf")])
95 planpythontestsuite("fileserver", "samba.tests.smbd_fuzztest")
96 planpythontestsuite("nt4_dc_smb1", "samba.tests.dcerpc.binding")
97 for env in [ 'ad_dc:local', 'ad_dc_fips:local' ]:
98 planpythontestsuite(env, "samba.tests.dcerpc.samr_change_password")
101 def cmdline(script, *args):
103 Prefix PYTHON env var and append --configurefile option to abs script path.
105 script.sh arg1 arg2
107 PYTHON=python /path/to/bbdir/script.sh arg1 arg2 \
108 --configurefile $SMB_CONF_FILE
110 return [
111 "PYTHON=%s" % python,
112 os.path.join(bbdir, script),
113 ] + list(args) + [configuration]
116 plantestsuite(
117 "samba4.blackbox.demote-saveddb", "none",
118 cmdline('demote-saveddb.sh', '$PREFIX_ABS/demote'))
120 plantestsuite(
121 "samba4.blackbox.dbcheck.alpha13", "none",
122 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
123 'alpha13'))
125 # same test as above but skip member link checks
126 plantestsuite(
127 "samba4.blackbox.dbcheck.alpha13.quick", "none",
128 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
129 'alpha13', '--quick-membership-checks'))
131 plantestsuite(
132 "samba4.blackbox.dbcheck.release-4-0-0", "none",
133 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
134 'release-4-0-0'))
136 # same test as above but skip member link checks
137 plantestsuite(
138 "samba4.blackbox.dbcheck.release-4-0-0.quick", "none",
139 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
140 'release-4-0-0', '--quick-membership-checks'))
142 plantestsuite(
143 "samba4.blackbox.dbcheck.release-4-1-0rc3", "none",
144 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
145 'release-4-1-0rc3'))
147 # same test as above but skip member link checks
148 plantestsuite(
149 "samba4.blackbox.dbcheck.release-4-1-0rc3.quick", "none",
150 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
151 'release-4-1-0rc3', '--quick-membership-checks'))
153 plantestsuite(
154 "samba4.blackbox.dbcheck.release-4-1-6-partial-object", "none",
155 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
156 'release-4-1-6-partial-object'))
158 # same test as above but skip member link checks
159 plantestsuite(
160 "samba4.blackbox.dbcheck.release-4-1-6-partial-object.quick", "none",
161 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
162 'release-4-1-6-partial-object', '--quick-membership-checks'))
164 plantestsuite(
165 "samba4.blackbox.dbcheck.release-4-5-0-pre1", "none",
166 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
167 'release-4-5-0-pre1'))
169 # same test as above but skip member link checks
170 plantestsuite(
171 "samba4.blackbox.dbcheck.release-4-5-0-pre1.quick", "none",
172 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
173 'release-4-5-0-pre1', '--quick-membership-checks'))
175 plantestsuite(
176 "samba4.blackbox.upgradeprovision.alpha13", "none",
177 cmdline('upgradeprovision-oldrelease.sh', '$PREFIX_ABS/provision',
178 'alpha13'))
180 plantestsuite(
181 "samba4.blackbox.upgradeprovision.release-4-0-0", "none",
182 cmdline('upgradeprovision-oldrelease.sh', '$PREFIX_ABS/provision',
183 'release-4-0-0'))
185 plantestsuite(
186 "samba4.blackbox.tombstones-expunge.release-4-5-0-pre1", "none",
187 cmdline('tombstones-expunge.sh', '$PREFIX_ABS/provision',
188 'release-4-5-0-pre1'))
190 plantestsuite(
191 "samba4.blackbox.dbcheck-links.release-4-5-0-pre1", "none",
192 cmdline('dbcheck-links.sh', '$PREFIX_ABS/provision',
193 'release-4-5-0-pre1'))
195 plantestsuite(
196 "samba4.blackbox.runtime-links.release-4-5-0-pre1", "none",
197 cmdline('runtime-links.sh', '$PREFIX_ABS/provision',
198 'release-4-5-0-pre1'))
200 plantestsuite(
201 "samba4.blackbox.schemaupgrade", "none",
202 cmdline('schemaupgrade.sh', '$PREFIX_ABS/provision'))
204 plantestsuite(
205 "samba4.blackbox.functionalprep", "none",
206 cmdline('functionalprep.sh', '$PREFIX_ABS/provision'))
208 planpythontestsuite("none", "samba.tests.upgradeprovision")
209 planpythontestsuite("none", "samba.tests.xattr")
210 planpythontestsuite("none", "samba.tests.ntacls")
211 planpythontestsuite("none", "samba.tests.policy")
212 planpythontestsuite("none", "samba.tests.kcc.graph")
213 planpythontestsuite("none", "samba.tests.kcc.graph_utils")
214 planpythontestsuite("none", "samba.tests.kcc.ldif_import_export")
215 planpythontestsuite("none", "samba.tests.graph")
216 plantestsuite("wafsamba.duplicate_symbols", "none", [os.path.join(srcdir(), "buildtools/wafsamba/test_duplicate_symbol.sh")])
217 planpythontestsuite("none", "samba.tests.glue")
218 planpythontestsuite("none", "samba.tests.tdb_util")
219 planpythontestsuite("none", "samba.tests.samdb")
220 planpythontestsuite("none", "samba.tests.samdb_api")
222 if with_pam:
223 env = "ad_member"
224 options = [
226 "description": "krb5",
227 "pam_options": "krb5_auth krb5_ccache_type=FILE",
230 "description": "default",
231 "pam_options": "",
234 for o in options:
235 description = o["description"]
236 pam_options = "'%s'" % o["pam_options"]
238 plantestsuite("samba.tests.pam_winbind(local+%s)" % description, env,
239 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
240 valgrindify(python), pam_wrapper_so_path,
241 "$SERVER", "$USERNAME", "$PASSWORD",
242 pam_options])
243 plantestsuite("samba.tests.pam_winbind(domain1+%s)" % description, env,
244 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
245 valgrindify(python), pam_wrapper_so_path,
246 "$DOMAIN", "$DC_USERNAME", "$DC_PASSWORD",
247 pam_options])
248 plantestsuite("samba.tests.pam_winbind(domain2+%s)" % description, env,
249 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
250 valgrindify(python), pam_wrapper_so_path,
251 "$REALM", "$DC_USERNAME", "$DC_PASSWORD",
252 pam_options])
253 plantestsuite("samba.tests.pam_winbind(domain3+%s)" % description, env,
254 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
255 valgrindify(python), pam_wrapper_so_path,
256 "''", "${DC_USERNAME}@${DOMAIN}", "$DC_PASSWORD",
257 pam_options])
258 plantestsuite("samba.tests.pam_winbind(domain4+%s)" % description, env,
259 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
260 valgrindify(python), pam_wrapper_so_path,
261 "''", "${DC_USERNAME}@${REALM}", "$DC_PASSWORD",
262 pam_options])
263 plantestsuite("samba.tests.pam_winbind(domain5+%s)" % description, env,
264 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
265 valgrindify(python), pam_wrapper_so_path,
266 "$REALM", "${DC_USERNAME}@${DOMAIN}", "$DC_PASSWORD",
267 pam_options])
268 plantestsuite("samba.tests.pam_winbind(domain6+%s)" % description, env,
269 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
270 valgrindify(python), pam_wrapper_so_path,
271 "$DOMAIN", "${DC_USERNAME}@${REALM}", "$DC_PASSWORD",
272 pam_options])
273 plantestsuite("samba.tests.pam_winbind(trust_f_both1+%s)" % description, env,
274 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
275 valgrindify(python), pam_wrapper_so_path,
276 "$TRUST_F_BOTH_DOMAIN",
277 "$TRUST_F_BOTH_USERNAME",
278 "$TRUST_F_BOTH_PASSWORD",
279 pam_options])
280 plantestsuite("samba.tests.pam_winbind(trust_f_both2+%s)" % description, env,
281 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
282 valgrindify(python), pam_wrapper_so_path,
283 "$TRUST_F_BOTH_REALM",
284 "$TRUST_F_BOTH_USERNAME",
285 "$TRUST_F_BOTH_PASSWORD",
286 pam_options])
287 plantestsuite("samba.tests.pam_winbind(trust_f_both3+%s)" % description, env,
288 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
289 valgrindify(python), pam_wrapper_so_path,
290 "''",
291 "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_DOMAIN}",
292 "$TRUST_F_BOTH_PASSWORD",
293 pam_options])
294 plantestsuite("samba.tests.pam_winbind(trust_f_both4+%s)" % description, env,
295 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
296 valgrindify(python), pam_wrapper_so_path,
297 "''",
298 "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_REALM}",
299 "$TRUST_F_BOTH_PASSWORD",
300 pam_options])
301 plantestsuite("samba.tests.pam_winbind(trust_f_both5+%s)" % description, env,
302 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
303 valgrindify(python), pam_wrapper_so_path,
304 "${TRUST_F_BOTH_REALM}",
305 "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_DOMAIN}",
306 "$TRUST_F_BOTH_PASSWORD",
307 pam_options])
308 plantestsuite("samba.tests.pam_winbind(trust_f_both6+%s)" % description, env,
309 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
310 valgrindify(python), pam_wrapper_so_path,
311 "${TRUST_F_BOTH_DOMAIN}",
312 "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_REALM}",
313 "$TRUST_F_BOTH_PASSWORD",
314 pam_options])
315 plantestsuite("samba.tests.pam_winbind(trust_e_both1+%s)" % description, env,
316 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
317 valgrindify(python), pam_wrapper_so_path,
318 "$TRUST_E_BOTH_DOMAIN",
319 "$TRUST_E_BOTH_USERNAME",
320 "$TRUST_E_BOTH_PASSWORD",
321 pam_options])
322 plantestsuite("samba.tests.pam_winbind(trust_e_both2+%s)" % description, env,
323 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
324 valgrindify(python), pam_wrapper_so_path,
325 "$TRUST_E_BOTH_REALM",
326 "$TRUST_E_BOTH_USERNAME",
327 "$TRUST_E_BOTH_PASSWORD",
328 pam_options])
329 plantestsuite("samba.tests.pam_winbind(trust_e_both3+%s)" % description, env,
330 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
331 valgrindify(python), pam_wrapper_so_path,
332 "''",
333 "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_DOMAIN}",
334 "$TRUST_E_BOTH_PASSWORD",
335 pam_options])
336 plantestsuite("samba.tests.pam_winbind(trust_e_both4+%s)" % description, env,
337 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
338 valgrindify(python), pam_wrapper_so_path,
339 "''",
340 "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_REALM}",
341 "$TRUST_E_BOTH_PASSWORD",
342 pam_options])
343 plantestsuite("samba.tests.pam_winbind(trust_e_both5+%s)" % description, env,
344 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
345 valgrindify(python), pam_wrapper_so_path,
346 "${TRUST_E_BOTH_REALM}",
347 "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_DOMAIN}",
348 "$TRUST_E_BOTH_PASSWORD",
349 pam_options])
350 plantestsuite("samba.tests.pam_winbind(trust_e_both6+%s)" % description, env,
351 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
352 valgrindify(python), pam_wrapper_so_path,
353 "${TRUST_E_BOTH_DOMAIN}",
354 "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_REALM}",
355 "$TRUST_E_BOTH_PASSWORD",
356 pam_options])
358 for authtok_options in ["", "use_authtok", "try_authtok"]:
359 _pam_options = "'%s %s'" % (o["pam_options"], authtok_options)
360 _description = "%s %s" % (description, authtok_options)
361 plantestsuite("samba.tests.pam_winbind_chauthtok(domain+%s)" % _description, env,
362 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind_chauthtok.sh"),
363 valgrindify(python), pam_wrapper_so_path, pam_set_items_so_path,
364 "$DOMAIN", "TestPamOptionsUser", "oldp@ssword0", "newp@ssword0",
365 _pam_options, 'yes',
366 "$DC_SERVER", "$DC_USERNAME", "$DC_PASSWORD"])
368 plantestsuite("samba.tests.pam_winbind_warn_pwd_expire(domain+%s)" % description, env,
369 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind_warn_pwd_expire.sh"),
370 valgrindify(python), pam_wrapper_so_path,
371 "$DOMAIN", "alice", "Secret007",
372 pam_options])
375 plantestsuite("samba.unittests.krb5samba", "none",
376 [os.path.join(bindir(), "default/testsuite/unittests/test_krb5samba")])
377 plantestsuite("samba.unittests.sambafs_srv_pipe", "none",
378 [os.path.join(bindir(), "default/testsuite/unittests/test_sambafs_srv_pipe")])
379 plantestsuite("samba.unittests.lib_util_modules", "none",
380 [os.path.join(bindir(), "default/testsuite/unittests/test_lib_util_modules")])
381 plantestsuite("samba.unittests.background_send",
382 "none",
383 [os.path.join(
384 bindir(),
385 "default/testsuite/unittests/test_background_send"),
386 "$SMB_CONF_PATH"])
388 plantestsuite("samba.unittests.smb1cli_session", "none",
389 [os.path.join(bindir(), "default/libcli/smb/test_smb1cli_session")])
390 plantestsuite("samba.unittests.smb_util_translate", "none",
391 [os.path.join(bindir(), "default/libcli/smb/test_util_translate")])
393 plantestsuite("samba.unittests.talloc_keep_secret", "none",
394 [os.path.join(bindir(), "default/lib/util/test_talloc_keep_secret")])
396 plantestsuite("samba.unittests.tldap", "none",
397 [os.path.join(bindir(), "default/source3/test_tldap")])
398 plantestsuite("samba.unittests.rfc1738", "none",
399 [os.path.join(bindir(), "default/lib/util/test_rfc1738")])
400 plantestsuite("samba.unittests.kerberos", "none",
401 [os.path.join(bindir(), "test_kerberos")])
402 plantestsuite("samba.unittests.ms_fnmatch", "none",
403 [os.path.join(bindir(), "default/lib/util/test_ms_fnmatch")])
404 plantestsuite("samba.unittests.byteorder", "none",
405 [os.path.join(bindir(), "default/lib/util/test_byteorder")])
406 plantestsuite("samba.unittests.bytearray", "none",
407 [os.path.join(bindir(), "default/lib/util/test_bytearray")])
408 plantestsuite("samba.unittests.byteorder_verify", "none",
409 [os.path.join(bindir(), "default/lib/util/test_byteorder_verify")])
410 plantestsuite("samba.unittests.util_paths", "none",
411 [os.path.join(bindir(), "default/lib/util/test_util_paths")])
412 plantestsuite("samba.unittests.util", "none",
413 [os.path.join(bindir(), "default/lib/util/test_util")])
414 plantestsuite("samba.unittests.memcache", "none",
415 [os.path.join(bindir(), "default/lib/util/test_memcache")])
416 plantestsuite("samba.unittests.ntlm_check", "none",
417 [os.path.join(bindir(), "default/libcli/auth/test_ntlm_check")])
418 plantestsuite("samba.unittests.gnutls", "none",
419 [os.path.join(bindir(), "default/libcli/auth/test_gnutls")])
420 plantestsuite("samba.unittests.rc4_passwd_buffer", "none",
421 [os.path.join(bindir(), "default/libcli/auth/test_rc4_passwd_buffer")])
422 plantestsuite("samba.unittests.schannel", "none",
423 [os.path.join(bindir(), "default/libcli/auth/test_schannel")])
424 plantestsuite("samba.unittests.test_registry_regfio", "none",
425 [os.path.join(bindir(), "default/source3/test_registry_regfio")])
426 plantestsuite("samba.unittests.test_oLschema2ldif", "none",
427 [os.path.join(bindir(), "default/source4/utils/oLschema2ldif/test_oLschema2ldif")])
428 if with_elasticsearch_backend:
429 plantestsuite("samba.unittests.mdsparser_es", "none",
430 [os.path.join(bindir(), "default/source3/test_mdsparser_es")] + [configuration])
431 plantestsuite("samba.unittests.credentials", "none",
432 [os.path.join(bindir(), "default/auth/credentials/test_creds")])