smb2_negprot: make use of struct smb311_capabilities.encryption
[Samba.git] / selftest / tests.py
blob1f9d3f37a76959b072f386daeccf8361c42bef0b
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.get("LIBPAM_WRAPPER_SO_PATH")
49 pam_set_items_so_path = config_hash.get("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")
221 planpythontestsuite("none", "samba.tests.ndr")
223 if with_pam:
224 env = "ad_member"
225 options = [
227 "description": "krb5",
228 "pam_options": "krb5_auth krb5_ccache_type=FILE",
231 "description": "default",
232 "pam_options": "",
235 for o in options:
236 description = o["description"]
237 pam_options = "'%s'" % o["pam_options"]
239 plantestsuite("samba.tests.pam_winbind(local+%s)" % description, env,
240 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
241 valgrindify(python), pam_wrapper_so_path,
242 "$SERVER", "$USERNAME", "$PASSWORD",
243 pam_options])
244 plantestsuite("samba.tests.pam_winbind(domain1+%s)" % description, env,
245 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
246 valgrindify(python), pam_wrapper_so_path,
247 "$DOMAIN", "$DC_USERNAME", "$DC_PASSWORD",
248 pam_options])
249 plantestsuite("samba.tests.pam_winbind(domain2+%s)" % description, env,
250 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
251 valgrindify(python), pam_wrapper_so_path,
252 "$REALM", "$DC_USERNAME", "$DC_PASSWORD",
253 pam_options])
254 plantestsuite("samba.tests.pam_winbind(domain3+%s)" % description, env,
255 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
256 valgrindify(python), pam_wrapper_so_path,
257 "''", "${DC_USERNAME}@${DOMAIN}", "$DC_PASSWORD",
258 pam_options])
259 plantestsuite("samba.tests.pam_winbind(domain4+%s)" % description, env,
260 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
261 valgrindify(python), pam_wrapper_so_path,
262 "''", "${DC_USERNAME}@${REALM}", "$DC_PASSWORD",
263 pam_options])
264 plantestsuite("samba.tests.pam_winbind(domain5+%s)" % description, env,
265 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
266 valgrindify(python), pam_wrapper_so_path,
267 "$REALM", "${DC_USERNAME}@${DOMAIN}", "$DC_PASSWORD",
268 pam_options])
269 plantestsuite("samba.tests.pam_winbind(domain6+%s)" % description, env,
270 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
271 valgrindify(python), pam_wrapper_so_path,
272 "$DOMAIN", "${DC_USERNAME}@${REALM}", "$DC_PASSWORD",
273 pam_options])
274 plantestsuite("samba.tests.pam_winbind(trust_f_both1+%s)" % description, env,
275 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
276 valgrindify(python), pam_wrapper_so_path,
277 "$TRUST_F_BOTH_DOMAIN",
278 "$TRUST_F_BOTH_USERNAME",
279 "$TRUST_F_BOTH_PASSWORD",
280 pam_options])
281 plantestsuite("samba.tests.pam_winbind(trust_f_both2+%s)" % description, env,
282 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
283 valgrindify(python), pam_wrapper_so_path,
284 "$TRUST_F_BOTH_REALM",
285 "$TRUST_F_BOTH_USERNAME",
286 "$TRUST_F_BOTH_PASSWORD",
287 pam_options])
288 plantestsuite("samba.tests.pam_winbind(trust_f_both3+%s)" % description, env,
289 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
290 valgrindify(python), pam_wrapper_so_path,
291 "''",
292 "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_DOMAIN}",
293 "$TRUST_F_BOTH_PASSWORD",
294 pam_options])
295 plantestsuite("samba.tests.pam_winbind(trust_f_both4+%s)" % description, env,
296 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
297 valgrindify(python), pam_wrapper_so_path,
298 "''",
299 "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_REALM}",
300 "$TRUST_F_BOTH_PASSWORD",
301 pam_options])
302 plantestsuite("samba.tests.pam_winbind(trust_f_both5+%s)" % description, env,
303 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
304 valgrindify(python), pam_wrapper_so_path,
305 "${TRUST_F_BOTH_REALM}",
306 "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_DOMAIN}",
307 "$TRUST_F_BOTH_PASSWORD",
308 pam_options])
309 plantestsuite("samba.tests.pam_winbind(trust_f_both6+%s)" % description, env,
310 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
311 valgrindify(python), pam_wrapper_so_path,
312 "${TRUST_F_BOTH_DOMAIN}",
313 "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_REALM}",
314 "$TRUST_F_BOTH_PASSWORD",
315 pam_options])
316 plantestsuite("samba.tests.pam_winbind(trust_e_both1+%s)" % description, env,
317 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
318 valgrindify(python), pam_wrapper_so_path,
319 "$TRUST_E_BOTH_DOMAIN",
320 "$TRUST_E_BOTH_USERNAME",
321 "$TRUST_E_BOTH_PASSWORD",
322 pam_options])
323 plantestsuite("samba.tests.pam_winbind(trust_e_both2+%s)" % description, env,
324 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
325 valgrindify(python), pam_wrapper_so_path,
326 "$TRUST_E_BOTH_REALM",
327 "$TRUST_E_BOTH_USERNAME",
328 "$TRUST_E_BOTH_PASSWORD",
329 pam_options])
330 plantestsuite("samba.tests.pam_winbind(trust_e_both3+%s)" % description, env,
331 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
332 valgrindify(python), pam_wrapper_so_path,
333 "''",
334 "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_DOMAIN}",
335 "$TRUST_E_BOTH_PASSWORD",
336 pam_options])
337 plantestsuite("samba.tests.pam_winbind(trust_e_both4+%s)" % description, env,
338 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
339 valgrindify(python), pam_wrapper_so_path,
340 "''",
341 "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_REALM}",
342 "$TRUST_E_BOTH_PASSWORD",
343 pam_options])
344 plantestsuite("samba.tests.pam_winbind(trust_e_both5+%s)" % description, env,
345 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
346 valgrindify(python), pam_wrapper_so_path,
347 "${TRUST_E_BOTH_REALM}",
348 "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_DOMAIN}",
349 "$TRUST_E_BOTH_PASSWORD",
350 pam_options])
351 plantestsuite("samba.tests.pam_winbind(trust_e_both6+%s)" % description, env,
352 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
353 valgrindify(python), pam_wrapper_so_path,
354 "${TRUST_E_BOTH_DOMAIN}",
355 "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_REALM}",
356 "$TRUST_E_BOTH_PASSWORD",
357 pam_options])
359 for authtok_options in ["", "use_authtok", "try_authtok"]:
360 _pam_options = "'%s %s'" % (o["pam_options"], authtok_options)
361 _description = "%s %s" % (description, authtok_options)
362 plantestsuite("samba.tests.pam_winbind_chauthtok(domain+%s)" % _description, env,
363 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind_chauthtok.sh"),
364 valgrindify(python), pam_wrapper_so_path, pam_set_items_so_path,
365 "$DOMAIN", "TestPamOptionsUser", "oldp@ssword0", "newp@ssword0",
366 _pam_options, 'yes',
367 "$DC_SERVER", "$DC_USERNAME", "$DC_PASSWORD"])
369 plantestsuite("samba.tests.pam_winbind_warn_pwd_expire(domain+%s)" % description, env,
370 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind_warn_pwd_expire.sh"),
371 valgrindify(python), pam_wrapper_so_path,
372 "$DOMAIN", "alice", "Secret007",
373 pam_options])
376 plantestsuite("samba.unittests.krb5samba", "none",
377 [os.path.join(bindir(), "default/testsuite/unittests/test_krb5samba")])
378 plantestsuite("samba.unittests.sambafs_srv_pipe", "none",
379 [os.path.join(bindir(), "default/testsuite/unittests/test_sambafs_srv_pipe")])
380 plantestsuite("samba.unittests.lib_util_modules", "none",
381 [os.path.join(bindir(), "default/testsuite/unittests/test_lib_util_modules")])
382 plantestsuite("samba.unittests.background_send",
383 "none",
384 [os.path.join(
385 bindir(),
386 "default/testsuite/unittests/test_background_send"),
387 "$SMB_CONF_PATH"])
389 plantestsuite("samba.unittests.smb1cli_session", "none",
390 [os.path.join(bindir(), "default/libcli/smb/test_smb1cli_session")])
391 plantestsuite("samba.unittests.smb_util_translate", "none",
392 [os.path.join(bindir(), "default/libcli/smb/test_util_translate")])
394 plantestsuite("samba.unittests.talloc_keep_secret", "none",
395 [os.path.join(bindir(), "default/lib/util/test_talloc_keep_secret")])
397 plantestsuite("samba.unittests.tldap", "none",
398 [os.path.join(bindir(), "default/source3/test_tldap")])
399 plantestsuite("samba.unittests.rfc1738", "none",
400 [os.path.join(bindir(), "default/lib/util/test_rfc1738")])
401 plantestsuite("samba.unittests.kerberos", "none",
402 [os.path.join(bindir(), "test_kerberos")])
403 plantestsuite("samba.unittests.ms_fnmatch", "none",
404 [os.path.join(bindir(), "default/lib/util/test_ms_fnmatch")])
405 plantestsuite("samba.unittests.byteorder", "none",
406 [os.path.join(bindir(), "default/lib/util/test_byteorder")])
407 plantestsuite("samba.unittests.bytearray", "none",
408 [os.path.join(bindir(), "default/lib/util/test_bytearray")])
409 plantestsuite("samba.unittests.byteorder_verify", "none",
410 [os.path.join(bindir(), "default/lib/util/test_byteorder_verify")])
411 plantestsuite("samba.unittests.util_paths", "none",
412 [os.path.join(bindir(), "default/lib/util/test_util_paths")])
413 plantestsuite("samba.unittests.util", "none",
414 [os.path.join(bindir(), "default/lib/util/test_util")])
415 plantestsuite("samba.unittests.memcache", "none",
416 [os.path.join(bindir(), "default/lib/util/test_memcache")])
417 plantestsuite("samba.unittests.sys_rw", "none",
418 [os.path.join(bindir(), "default/lib/util/test_sys_rw")])
419 plantestsuite("samba.unittests.ntlm_check", "none",
420 [os.path.join(bindir(), "default/libcli/auth/test_ntlm_check")])
421 plantestsuite("samba.unittests.gnutls", "none",
422 [os.path.join(bindir(), "default/libcli/auth/test_gnutls")])
423 plantestsuite("samba.unittests.rc4_passwd_buffer", "none",
424 [os.path.join(bindir(), "default/libcli/auth/test_rc4_passwd_buffer")])
425 plantestsuite("samba.unittests.schannel", "none",
426 [os.path.join(bindir(), "default/libcli/auth/test_schannel")])
427 plantestsuite("samba.unittests.test_registry_regfio", "none",
428 [os.path.join(bindir(), "default/source3/test_registry_regfio")])
429 plantestsuite("samba.unittests.test_oLschema2ldif", "none",
430 [os.path.join(bindir(), "default/source4/utils/oLschema2ldif/test_oLschema2ldif")])
431 if with_elasticsearch_backend:
432 plantestsuite("samba.unittests.mdsparser_es", "none",
433 [os.path.join(bindir(), "default/source3/test_mdsparser_es")] + [configuration])
434 plantestsuite("samba.unittests.credentials", "none",
435 [os.path.join(bindir(), "default/auth/credentials/test_creds")])