s3-selftest: Remove some unnecessary comma
[Samba/gebeck_regimport.git] / source4 / selftest / tests.py
blob63d1b80ef212905b7364ea96214c2f9003df3c9d
1 #!/usr/bin/python
2 # This script generates a list of testsuites that should be run as part of
3 # the Samba 4 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 4, 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 4 and makes
13 # it possible to run the testsuite against other servers, such as Samba 3 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
19 # comments.
21 import os, sys
22 sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../selftest"))
23 from selftesthelpers import *
24 import subprocess
26 samba4srcdir = source4dir()
27 samba4bindir = bindir()
28 smb4torture = binpath("smbtorture4")
29 smb4torture_testsuite_list = subprocess.Popen([smb4torture, "--list-suites"], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate("")[0].splitlines()
30 validate = os.getenv("VALIDATE", "")
31 if validate:
32 validate_list = [validate]
33 else:
34 validate_list = []
36 def plansmbtorturetestsuite(name, env, options, modname=None):
37 if modname is None:
38 modname = "samba4.%s" % name
39 if isinstance(options, list):
40 options = " ".join(options)
41 cmdline = "%s $LISTOPT %s %s" % (valgrindify(smb4torture), options, name)
42 plantestsuite_loadlist(modname, env, cmdline)
44 def smb4torture_testsuites(prefix):
45 return filter(lambda x: x.startswith(prefix), smb4torture_testsuite_list)
47 subprocess.call([smb4torture, "-V"], stdout=sys.stderr)
49 bbdir = os.path.join(srcdir(), "testprogs/blackbox")
51 configuration = "--configfile=$SMB_CONF_PATH"
53 torture_options = [configuration, "--maximum-runtime=$SELFTEST_MAXTIME", "--target=samba4", "--basedir=$SELFTEST_TMPDIR"]
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 print >>sys.stderr, "OPTIONS %s" % " ".join(torture_options)
63 # Simple tests for LDAP and CLDAP
64 for options in ['-U"$USERNAME%$PASSWORD" --option=socket:testnonblock=true', '-U"$USERNAME%$PASSWORD"', '-U"$USERNAME%$PASSWORD" -k yes', '-U"$USERNAME%$PASSWORD" -k no', '-U"$USERNAME%$PASSWORD" -k no --sign', '-U"$USERNAME%$PASSWORD" -k no --encrypt', '-U"$USERNAME%$PASSWORD" -k yes --encrypt', '-U"$USERNAME%$PASSWORD" -k yes --sign']:
65 plantestsuite("samba4.ldb.ldap with options %s(dc)" % options, "dc", "%s/test_ldb.sh ldap $SERVER %s" % (bbdir, options))
67 # see if we support ADS on the Samba3 side
68 try:
69 config_h = os.environ["CONFIG_H"]
70 except KeyError:
71 config_h = os.path.join(samba4bindir, "default/include/config.h")
73 # see if we support ldaps
74 f = open(config_h, 'r')
75 try:
76 have_tls_support = ("ENABLE_GNUTLS 1" in f.read())
77 finally:
78 f.close()
80 if have_tls_support:
81 for options in ['-U"$USERNAME%$PASSWORD"']:
82 plantestsuite("samba4.ldb.ldaps with options %s(dc)" % options, "dc",
83 "%s/test_ldb.sh ldaps $SERVER_IP %s" % (bbdir, options))
85 for options in ['-U"$USERNAME%$PASSWORD"']:
86 plantestsuite("samba4.ldb.ldapi with options %s(dc:local)" % options, "dc:local",
87 "%s/test_ldb.sh ldapi $PREFIX_ABS/dc/private/ldapi %s" % (bbdir, options))
89 for t in smb4torture_testsuites("ldap."):
90 plansmbtorturetestsuite(t, "dc", '-U"$USERNAME%$PASSWORD" //$SERVER_IP/_none_')
92 ldbdir = os.path.join(srcdir(), "lib/ldb")
93 # Don't run LDB tests when using system ldb, as we won't have ldbtest installed
94 if os.path.exists(os.path.join(samba4bindir, "ldbtest")):
95 plantestsuite("ldb.base", "none", "%s/tests/test-tdb.sh" % ldbdir,
96 allow_empty_output=True)
97 else:
98 skiptestsuite("ldb.base", "Using system LDB, ldbtest not available")
100 # Tests for RPC
102 # add tests to this list as they start passing, so we test
103 # that they stay passing
104 ncacn_np_tests = ["rpc.schannel", "rpc.join", "rpc.lsa", "rpc.dssetup", "rpc.altercontext", "rpc.multibind", "rpc.netlogon", "rpc.handles", "rpc.samsync", "rpc.samba3-sessionkey", "rpc.samba3-getusername", "rpc.samba3-lsa", "rpc.samba3-bind", "rpc.samba3-netlogon", "rpc.asyncbind", "rpc.lsalookup", "rpc.lsa-getuser", "rpc.schannel2", "rpc.authcontext"]
105 ncalrpc_tests = ["rpc.schannel", "rpc.join", "rpc.lsa", "rpc.dssetup", "rpc.altercontext", "rpc.multibind", "rpc.netlogon", "rpc.drsuapi", "rpc.asyncbind", "rpc.lsalookup", "rpc.lsa-getuser", "rpc.schannel2", "rpc.authcontext"]
106 drs_rpc_tests = smb4torture_testsuites("drs.rpc")
107 ncacn_ip_tcp_tests = ["rpc.schannel", "rpc.join", "rpc.lsa", "rpc.dssetup", "rpc.altercontext", "rpc.multibind", "rpc.netlogon", "rpc.handles", "rpc.asyncbind", "rpc.lsalookup", "rpc.lsa-getuser", "rpc.schannel2", "rpc.authcontext", "rpc.objectuuid"] + drs_rpc_tests
108 slow_ncacn_np_tests = ["rpc.samlogon", "rpc.samr.users", "rpc.samr.large-dc", "rpc.samr.users.privileges", "rpc.samr.passwords", "rpc.samr.passwords.pwdlastset"]
109 slow_ncacn_ip_tcp_tests = ["rpc.samr", "rpc.cracknames"]
111 all_rpc_tests = ncalrpc_tests + ncacn_np_tests + ncacn_ip_tcp_tests + slow_ncacn_np_tests + slow_ncacn_ip_tcp_tests + ["rpc.lsa.secrets", "rpc.pac", "rpc.samba3-sharesec", "rpc.countcalls"]
113 # Make sure all tests get run
114 rpc_tests = smb4torture_testsuites("rpc.")
115 auto_rpc_tests = filter(lambda t: t not in all_rpc_tests, rpc_tests)
117 for bindoptions in ["seal,padcheck"] + validate_list + ["bigendian"]:
118 for transport in ["ncalrpc", "ncacn_np", "ncacn_ip_tcp"]:
119 env = "dc"
120 if transport == "ncalrpc":
121 tests = ncalrpc_tests
122 env = "dc:local"
123 elif transport == "ncacn_np":
124 tests = ncacn_np_tests
125 elif transport == "ncacn_ip_tcp":
126 tests = ncacn_ip_tcp_tests
127 else:
128 raise AssertionError("invalid transport %r"% transport)
129 for t in tests:
130 plansmbtorturetestsuite(t, env, ["%s:$SERVER[%s]" % (transport, bindoptions), '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.%s on %s with %s" % (t, transport, bindoptions))
131 plansmbtorturetestsuite('rpc.samba3-sharesec', env, ["%s:$SERVER[%s]" % (transport, bindoptions), '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN', '--option=torture:share=tmp'], "samba4.rpc.samba3.sharesec on %s with %s" % (transport, bindoptions))
133 #Plugin S4 DC tests (confirms named pipe auth forwarding). This can be expanded once kerberos is supported in the plugin DC
135 for bindoptions in ["seal,padcheck"] + validate_list + ["bigendian"]:
136 for t in ncacn_np_tests:
137 env = "plugin_s4_dc"
138 transport = "ncacn_np"
139 plansmbtorturetestsuite(t, env, ["%s:$SERVER[%s]" % (transport, bindoptions), '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.%s with %s" % (t, bindoptions))
141 for bindoptions in [""] + validate_list + ["bigendian"]:
142 for t in auto_rpc_tests:
143 plansmbtorturetestsuite(t, "dc", ["$SERVER[%s]" % bindoptions, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.%s with %s" % (t, bindoptions))
145 t = "rpc.countcalls"
146 plansmbtorturetestsuite(t, "dc:local", ["$SERVER[%s]" % bindoptions, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], modname="samba4.%s" % t)
148 for transport in ["ncacn_np", "ncacn_ip_tcp"]:
149 env = "dc"
150 if transport == "ncacn_np":
151 tests = slow_ncacn_np_tests
152 elif transport == "ncacn_ip_tcp":
153 tests = slow_ncacn_ip_tcp_tests
154 else:
155 raise AssertionError("Invalid transport %r" % transport)
156 for t in tests:
157 plansmbtorturetestsuite(t, env, ["%s:$SERVER" % transport, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.%s on %s" % (t, transport))
159 # Tests for the DFS referral calls implementation
160 for t in smb4torture_testsuites("dfs."):
161 plansmbtorturetestsuite(t, "dc", '//$SERVER/ipc\$ -U$USERNAME%$PASSWORD')
162 plansmbtorturetestsuite(t, "plugin_s4_dc", '//$SERVER/ipc\$ -U$USERNAME%$PASSWORD')
164 # Tests for the NET API (net.api.become.dc tested below against all the roles)
165 net_tests = filter(lambda x: "net.api.become.dc" not in x, smb4torture_testsuites("net."))
166 for t in net_tests:
167 plansmbtorturetestsuite(t, "dc", '$SERVER[%s] -U$USERNAME%%$PASSWORD -W$DOMAIN' % validate)
169 # Tests for session keys and encryption of RPC pipes
170 # FIXME: Integrate these into a single smbtorture test
172 transport = "ncacn_np"
173 for ntlmoptions in [
174 "-k no --option=usespnego=yes",
175 "-k no --option=usespnego=yes --option=ntlmssp_client:128bit=no",
176 "-k no --option=usespnego=yes --option=ntlmssp_client:56bit=yes",
177 "-k no --option=usespnego=yes --option=ntlmssp_client:56bit=no",
178 "-k no --option=usespnego=yes --option=ntlmssp_client:128bit=no --option=ntlmssp_client:56bit=yes",
179 "-k no --option=usespnego=yes --option=ntlmssp_client:128bit=no --option=ntlmssp_client:56bit=no",
180 "-k no --option=usespnego=yes --option=clientntlmv2auth=yes",
181 "-k no --option=usespnego=yes --option=clientntlmv2auth=yes --option=ntlmssp_client:128bit=no",
182 "-k no --option=usespnego=yes --option=clientntlmv2auth=yes --option=ntlmssp_client:128bit=no --option=ntlmssp_client:56bit=yes",
183 "-k no --option=usespnego=no --option=clientntlmv2auth=yes",
184 "-k no --option=gensec:spnego=no --option=clientntlmv2auth=yes",
185 "-k no --option=usespnego=no"]:
186 name = "rpc.lsa.secrets on %s with with %s" % (transport, ntlmoptions)
187 plansmbtorturetestsuite('rpc.lsa.secrets', "dc", ["%s:$SERVER[]" % (transport), ntlmoptions, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN', '--option=gensec:target_hostname=$NETBIOSNAME'], "samba4.%s" % name)
188 plansmbtorturetestsuite('rpc.lsa.secrets', "s3dc", ["%s:$SERVER[]" % (transport), ntlmoptions, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN', '--option=gensec:target_hostname=$NETBIOSNAME'], "samba4.%s" % name)
190 transports = ["ncacn_np", "ncacn_ip_tcp"]
192 #Kerberos varies between functional levels, so it is important to check this on all of them
193 for env in ["dc", "fl2000dc", "fl2003dc", "fl2008r2dc", "plugin_s4_dc"]:
194 transport = "ncacn_np"
195 plansmbtorturetestsuite('rpc.pac', env, ["%s:$SERVER[]" % (transport, ), '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.rpc.pac on %s" % (transport,))
196 for transport in transports:
197 plansmbtorturetestsuite('rpc.lsa.secrets', env, ["%s:$SERVER[]" % (transport, ), '-k', 'yes', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN', '--option=gensec:target_hostname=$NETBIOSNAME', 'rpc.lsa.secrets'], "samba4.rpc.lsa.secrets on %s with Kerberos" % (transport,))
198 plansmbtorturetestsuite('rpc.lsa.secrets', env, ["%s:$SERVER[]" % (transport, ), '-k', 'yes', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN', "--option=clientusespnegoprincipal=yes", '--option=gensec:target_hostname=$NETBIOSNAME'], "samba4.rpc.lsa.secrets on %s with Kerberos - use target principal" % (transport,))
199 plansmbtorturetestsuite('rpc.lsa.secrets.none*', env, ["%s:$SERVER" % transport, '-k', 'yes', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN', "--option=gensec:fake_gssapi_krb5=yes", '--option=gensec:gssapi_krb5=no', '--option=gensec:target_hostname=$NETBIOSNAME'], "samba4.rpc.lsa.secrets on %s with Kerberos - use Samba3 style login" % transport)
200 plansmbtorturetestsuite('rpc.lsa.secrets.none*', env, ["%s:$SERVER" % transport, '-k', 'yes', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN', "--option=clientusespnegoprincipal=yes", '--option=gensec:fake_gssapi_krb5=yes', '--option=gensec:gssapi_krb5=no', '--option=gensec:target_hostname=$NETBIOSNAME'], "samba4.rpc.lsa.secrets on %s with Kerberos - use Samba3 style login, use target principal" % transport)
201 plansmbtorturetestsuite('rpc.echo', env, ["%s:$SERVER[]" % (transport,), '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.rpc.echo on %s" % (transport, ))
203 # Echo tests test bulk Kerberos encryption of DCE/RPC
204 for bindoptions in ["connect", "spnego", "spnego,sign", "spnego,seal"] + validate_list + ["padcheck", "bigendian", "bigendian,seal"]:
205 echooptions = "--option=socket:testnonblock=True --option=torture:quick=yes -k yes"
206 plansmbtorturetestsuite('rpc.echo', env, ["%s:$SERVER[%s]" % (transport, bindoptions), echooptions, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.rpc.echo on %s with %s and %s" % (transport, bindoptions, echooptions))
207 plansmbtorturetestsuite("net.api.become.dc", env, '$SERVER[%s] -U$USERNAME%%$PASSWORD -W$DOMAIN' % validate)
209 for bindoptions in ["sign", "seal"]:
210 plansmbtorturetestsuite('rpc.backupkey', "dc", ["ncacn_np:$SERVER[%s]" % ( bindoptions), '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.rpc.backupkey with %s" % (bindoptions))
212 for transport in transports:
213 for bindoptions in ["sign", "seal"]:
214 for ntlmoptions in [
215 "--option=ntlmssp_client:ntlm2=yes --option=torture:quick=yes",
216 "--option=ntlmssp_client:ntlm2=no --option=torture:quick=yes",
217 "--option=ntlmssp_client:ntlm2=yes --option=ntlmssp_client:128bit=no --option=torture:quick=yes",
218 "--option=ntlmssp_client:ntlm2=no --option=ntlmssp_client:128bit=no --option=torture:quick=yes",
219 "--option=ntlmssp_client:ntlm2=yes --option=ntlmssp_client:keyexchange=no --option=torture:quick=yes",
220 "--option=ntlmssp_client:ntlm2=no --option=ntlmssp_client:keyexchange=no --option=torture:quick=yes",
221 "--option=clientntlmv2auth=yes --option=ntlmssp_client:keyexchange=no --option=torture:quick=yes",
222 "--option=clientntlmv2auth=yes --option=ntlmssp_client:128bit=no --option=ntlmssp_client:keyexchange=yes --option=torture:quick=yes",
223 "--option=clientntlmv2auth=yes --option=ntlmssp_client:128bit=no --option=ntlmssp_client:keyexchange=no --option=torture:quick=yes"]:
224 if transport == "ncalrpc":
225 env = "dc:local"
226 else:
227 env = "dc"
228 plansmbtorturetestsuite('rpc.echo', env, ["%s:$SERVER[%s]" % (transport, bindoptions), ntlmoptions, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.rpc.echo on %s with %s and %s" % (transport, bindoptions, ntlmoptions))
230 plansmbtorturetestsuite('rpc.echo', "dc", ['ncacn_np:$SERVER[smb2]', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.rpc.echo on ncacn_np over smb2")
232 plansmbtorturetestsuite('ntp.signd', "dc:local", ['ncacn_np:$SERVER', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.ntp.signd")
234 nbt_tests = smb4torture_testsuites("nbt.")
235 for t in nbt_tests:
236 plansmbtorturetestsuite(t, "dc", "//$SERVER/_none_ -U\"$USERNAME%$PASSWORD\"")
238 # Tests against the NTVFS POSIX backend
239 ntvfsargs = ["--option=torture:sharedelay=10000", "--option=torture:oplocktimeout=3", "--option=torture:writetimeupdatedelay=50000"]
241 smb2 = smb4torture_testsuites("smb2.")
242 #The QFILEINFO-IPC test needs to be on ipc$
243 raw = filter(lambda x: "raw.qfileinfo.ipc" not in x, smb4torture_testsuites("raw."))
244 base = smb4torture_testsuites("base.")
246 netapi = smb4torture_testsuites("netapi.")
248 libsmbclient = smb4torture_testsuites("libsmbclient.")
250 for t in base + raw + smb2 + netapi + libsmbclient:
251 plansmbtorturetestsuite(t, "dc", ['//$SERVER/tmp', '-U$USERNAME%$PASSWORD'] + ntvfsargs)
253 plansmbtorturetestsuite("raw.qfileinfo.ipc", "dc", '//$SERVER/ipc\$ -U$USERNAME%$PASSWORD')
255 for t in smb4torture_testsuites("rap."):
256 plansmbtorturetestsuite(t, "dc", '//$SERVER/IPC\$ -U$USERNAME%$PASSWORD')
258 # Tests against the NTVFS CIFS backend
259 for t in base + raw:
260 plansmbtorturetestsuite(t, "dc", ['//$NETBIOSNAME/cifs', '-U$USERNAME%$PASSWORD', '--kerberos=yes'] + ntvfsargs, modname="samba4.ntvfs.cifs.krb5.%s" % t)
262 # Test NTVFS CIFS backend with S4U2Self and S4U2Proxy
263 t = "base.unlink"
264 plansmbtorturetestsuite(t, "dc", ['//$NETBIOSNAME/cifs', '-U$USERNAME%$PASSWORD', '--kerberos=no'] + ntvfsargs, "samba4.ntvfs.cifs.ntlm.%s" % t)
265 plansmbtorturetestsuite(t, "rpc_proxy", ['//$NETBIOSNAME/cifs_to_dc', '-U$DC_USERNAME%$DC_PASSWORD', '--kerberos=yes'] + ntvfsargs, "samba4.ntvfs.cifs.krb5.%s" % t)
266 plansmbtorturetestsuite(t, "rpc_proxy", ['//$NETBIOSNAME/cifs_to_dc', '-U$DC_USERNAME%$DC_PASSWORD', '--kerberos=no'] + ntvfsargs, "samba4.ntvfs.cifs.ntlm.%s" % t)
268 plansmbtorturetestsuite('echo.udp', 'dc:local', '//$SERVER/whatever')
270 # Local tests
271 for t in smb4torture_testsuites("local."):
272 #The local.resolve test needs a name to look up using real system (not emulated) name routines
273 plansmbtorturetestsuite(t, "none", "ncalrpc:localhost")
275 # Confirm these tests with the system iconv too
276 for t in ["local.convert_string_handle", "local.convert_string", "local.ndr"]:
277 options = "ncalrpc: --option='iconv:use_builtin_handlers=false'"
278 plansmbtorturetestsuite(t, "none", options,
279 modname="samba4.%s.system.iconv" % t)
281 tdbtorture4 = binpath("tdbtorture")
282 if os.path.exists(tdbtorture4):
283 plantestsuite("tdb.stress", "none", valgrindify(tdbtorture4))
284 else:
285 skiptestsuite("tdb.stress", "Using system TDB, tdbtorture not available")
287 plansmbtorturetestsuite("drs.unit", "none", "ncalrpc:")
289 # Pidl tests
290 for f in sorted(os.listdir(os.path.join(samba4srcdir, "../pidl/tests"))):
291 if f.endswith(".pl"):
292 planperltestsuite("pidl.%s" % f[:-3], os.path.normpath(os.path.join(samba4srcdir, "../pidl/tests", f)))
294 # DNS tests
295 planpythontestsuite("dc", "samba.tests.dns")
297 # Blackbox Tests:
298 # tests that interact directly with the command-line tools rather than using
299 # the API. These mainly test that the various command-line options of commands
300 # work correctly.
302 planpythontestsuite("none", "samba.tests.blackbox.ndrdump")
303 planpythontestsuite("none", "samba.tests.source")
304 plantestsuite("samba4.blackbox.samba_tool(dc:local)", "dc:local", [os.path.join(samba4srcdir, "utils/tests/test_samba_tool.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', '$DOMAIN'])
305 plantestsuite("samba4.blackbox.pkinit(dc:local)", "dc:local", [os.path.join(bbdir, "test_pkinit.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$REALM', '$DOMAIN', '$PREFIX', "aes256-cts-hmac-sha1-96", configuration])
306 plantestsuite("samba4.blackbox.kinit(dc:local)", "dc:local", [os.path.join(bbdir, "test_kinit.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$REALM', '$DOMAIN', '$PREFIX', "aes256-cts-hmac-sha1-96", configuration])
307 plantestsuite("samba4.blackbox.kinit(fl2000dc:local)", "fl2000dc:local", [os.path.join(bbdir, "test_kinit.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$REALM', '$DOMAIN', '$PREFIX', "arcfour-hmac-md5", configuration])
308 plantestsuite("samba4.blackbox.kinit(fl2008r2dc:local)", "fl2008r2dc:local", [os.path.join(bbdir, "test_kinit.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$REALM', '$DOMAIN', '$PREFIX', "aes256-cts-hmac-sha1-96", configuration])
309 plantestsuite("samba4.blackbox.ktpass(dc)", "dc", [os.path.join(bbdir, "test_ktpass.sh"), '$PREFIX'])
310 plantestsuite("samba4.blackbox.passwords(dc:local)", "dc:local", [os.path.join(bbdir, "test_passwords.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$REALM', '$DOMAIN', "$PREFIX"])
311 plantestsuite("samba4.blackbox.export.keytab(dc:local)", "dc:local", [os.path.join(bbdir, "test_export_keytab.sh"), '$SERVER', '$USERNAME', '$REALM', '$DOMAIN', "$PREFIX"])
312 plantestsuite("samba4.blackbox.cifsdd(dc)", "dc", [os.path.join(samba4srcdir, "client/tests/test_cifsdd.sh"), '$SERVER', '$USERNAME', '$PASSWORD', "$DOMAIN"])
313 plantestsuite("samba4.blackbox.nmblookup(dc)", "dc", [os.path.join(samba4srcdir, "utils/tests/test_nmblookup.sh"), '$NETBIOSNAME', '$NETBIOSALIAS', '$SERVER', '$SERVER_IP'])
314 plantestsuite("samba4.blackbox.locktest(dc)", "dc", [os.path.join(samba4srcdir, "torture/tests/test_locktest.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$DOMAIN', '$PREFIX'])
315 plantestsuite("samba4.blackbox.masktest", "dc", [os.path.join(samba4srcdir, "torture/tests/test_masktest.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$DOMAIN', '$PREFIX'])
316 plantestsuite("samba4.blackbox.gentest(dc)", "dc", [os.path.join(samba4srcdir, "torture/tests/test_gentest.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$DOMAIN', "$PREFIX"])
317 plantestsuite("samba4.blackbox.wbinfo(dc:local)", "dc:local", [os.path.join(samba4srcdir, "../nsswitch/tests/test_wbinfo.sh"), '$DOMAIN', '$USERNAME', '$PASSWORD', "dc"])
318 plantestsuite("samba4.blackbox.wbinfo(s4member:local)", "s4member:local", [os.path.join(samba4srcdir, "../nsswitch/tests/test_wbinfo.sh"), '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', "s4member"])
319 plantestsuite("samba4.blackbox.chgdcpass", "chgdcpass", [os.path.join(bbdir, "test_chgdcpass.sh"), '$SERVER', "CHGDCPASS\$", '$REALM', '$DOMAIN', '$PREFIX', "aes256-cts-hmac-sha1-96", '$SELFTEST_PREFIX/chgdcpass'])
320 plantestsuite_loadlist("samba4.rpc.echo against NetBIOS alias", "dc", [valgrindify(smb4torture), "$LISTOPT", 'ncacn_np:$NETBIOSALIAS', '-U$DOMAIN/$USERNAME%$PASSWORD', 'rpc.echo'])
322 # Tests using the "Simple" NTVFS backend
323 for t in ["base.rw1"]:
324 plansmbtorturetestsuite(t, "dc", ["//$SERVER/simple", '-U$USERNAME%$PASSWORD'], modname="samba4.ntvfs.simple.%s" % t)
326 # Domain S4member Tests
327 plansmbtorturetestsuite('rpc.echo', "s4member", ['ncacn_np:$NETBIOSNAME', '-U$NETBIOSNAME/$USERNAME%$PASSWORD'], "samba4.rpc.echo against s4member server with local creds")
328 plansmbtorturetestsuite('rpc.echo', "s4member", ['ncacn_np:$NETBIOSNAME', '-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'], "samba4.rpc.echo against s4member server with domain creds")
329 plansmbtorturetestsuite('rpc.samr', "s4member", ['ncacn_np:$NETBIOSNAME', '-U$NETBIOSNAME/$USERNAME%$PASSWORD'], "samba4.rpc.samr against s4member server with local creds")
330 plansmbtorturetestsuite('rpc.samr.users', "s4member", ['ncacn_np:$NETBIOSNAME', '-U$NETBIOSNAME/$USERNAME%$PASSWORD'], "samba4.rpc.samr.users against s4member server with local creds",)
331 plansmbtorturetestsuite('rpc.samr.passwords', "s4member", ['ncacn_np:$NETBIOSNAME', '-U$NETBIOSNAME/$USERNAME%$PASSWORD'], "samba4.rpc.samr.passwords against s4member server with local creds")
332 plantestsuite("samba4.blackbox.smbclient against s4member server with local creds", "s4member", [os.path.join(samba4srcdir, "client/tests/test_smbclient.sh"), '$NETBIOSNAME', '$USERNAME', '$PASSWORD', '$NETBIOSNAME', '$PREFIX'])
334 # RPC Proxy
335 plansmbtorturetestsuite("rpc.echo", "rpc_proxy", ['ncacn_ip_tcp:$NETBIOSNAME', '-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'], modname="samba4.rpc.echo against rpc proxy with domain creds")
337 # Tests SMB signing
338 for mech in [
339 "-k no",
340 "-k no --option=usespnego=no",
341 "-k no --option=gensec:spengo=no",
342 "-k yes",
343 "-k yes --option=gensec:fake_gssapi_krb5=yes --option=gensec:gssapi_krb5=no"]:
344 for signing in ["--signing=on", "--signing=required"]:
345 signoptions = "%s %s" % (mech, signing)
346 name = "smb.signing on with %s" % signoptions
347 plansmbtorturetestsuite('base.xcopy', "dc", ['//$NETBIOSNAME/xcopy_share', signoptions, '-U$USERNAME%$PASSWORD'], modname="samba4.%s" % name)
349 for mech in [
350 "-k no",
351 "-k no --option=usespnego=no",
352 "-k no --option=gensec:spengo=no",
353 "-k yes"]:
354 signoptions = "%s --signing=off" % mech
355 name = "smb.signing disabled on with %s" % signoptions
356 plansmbtorturetestsuite('base.xcopy', "s4member", ['//$NETBIOSNAME/xcopy_share', signoptions, '-U$DC_USERNAME%$DC_PASSWORD'], "samba4.%s domain-creds" % name)
357 plansmbtorturetestsuite('base.xcopy', "s3member", ['//$NETBIOSNAME/xcopy_share', signoptions, '-U$DC_USERNAME%$DC_PASSWORD'], "samba4.%s domain-creds" % name)
358 plansmbtorturetestsuite('base.xcopy', "plugin_s4_dc", ['//$NETBIOSNAME/xcopy_share', signoptions, '-U$USERNAME%$PASSWORD'], "samba4.%s" % name)
359 plansmbtorturetestsuite('base.xcopy', "plugin_s4_dc",
360 ['//$NETBIOSNAME/xcopy_share', signoptions, '-U$DC_USERNAME%$DC_PASSWORD'], "samba4.%s administrator" % name)
362 plantestsuite("samba4.blackbox.bogusdomain", "s3member", ["testprogs/blackbox/bogus.sh", "$NETBIOSNAME", "xcopy_share", '$USERNAME', '$PASSWORD', '$DC_USERNAME', '$DC_PASSWORD'])
363 for mech in [
364 "-k no",
365 "-k no --option=usespnego=no",
366 "-k no --option=gensec:spengo=no"]:
367 signoptions = "%s --signing=off" % mech
368 plansmbtorturetestsuite('base.xcopy', "s4member", ['//$NETBIOSNAME/xcopy_share', signoptions, '-U$NETBIOSNAME/$USERNAME%$PASSWORD'], modname="samba4.smb.signing on with %s local-creds" % signoptions)
370 plansmbtorturetestsuite('base.xcopy', "dc", ['//$NETBIOSNAME/xcopy_share', '-k', 'no', '--signing=yes', '-U%'], modname="samba4.smb.signing --signing=yes anon")
371 plansmbtorturetestsuite('base.xcopy', "dc", ['//$NETBIOSNAME/xcopy_share', '-k', 'no', '--signing=required', '-U%'], modname="samba4.smb.signing --signing=required anon")
372 plansmbtorturetestsuite('base.xcopy', "s4member", ['//$NETBIOSNAME/xcopy_share', '-k', 'no', '--signing=no', '-U%'], modname="samba4.smb.signing --signing=no anon")
375 wb_opts = ["--option=\"torture:strict mode=no\"", "--option=\"torture:timelimit=1\"", "--option=\"torture:winbindd_separator=/\"", "--option=\"torture:winbindd_netbios_name=$SERVER\"", "--option=\"torture:winbindd_netbios_domain=$DOMAIN\""]
377 winbind_struct_tests = smb4torture_testsuites("winbind.struct")
378 winbind_ndr_tests = smb4torture_testsuites("winbind.ndr")
379 for env in ["plugin_s4_dc", "dc", "s4member"]:
380 for t in winbind_struct_tests:
381 plansmbtorturetestsuite(t, env, wb_opts + ['//_none_/_none_'])
383 for t in winbind_ndr_tests:
384 plansmbtorturetestsuite(t, env, wb_opts + ['//_none_/_none_'])
386 nsstest4 = binpath("nsstest")
387 for env in ["plugin_s4_dc", "dc", "s4member", "s3dc", "s3member", "member"]:
388 if os.path.exists(nsstest4):
389 plantestsuite("samba4.nss.test using winbind(%s)" % env, env, [os.path.join(bbdir, "nsstest.sh"), nsstest4, os.path.join(samba4bindir, "default/nsswitch/libnss-winbind.so")])
390 else:
391 skiptestsuite("samba4.nss.test using winbind(%s)" % env, "nsstest not available")
393 subunitrun = valgrindify(python) + " " + os.path.join(samba4srcdir, "scripting/bin/subunitrun")
394 def planoldpythontestsuite(env, module, name=None, extra_path=[], environ={}, extra_args=[]):
395 environ = dict(environ)
396 py_path = list(extra_path)
397 if py_path:
398 environ["PYTHONPATH"] = ":".join(["$PYTHONPATH"] + py_path)
399 args = ["%s=%s" % item for item in environ.iteritems()]
400 args += [subunitrun, "$LISTOPT", module]
401 args += extra_args
402 if name is None:
403 name = module
404 plantestsuite(name, env, args)
406 planpythontestsuite("none", "selftest.tests.test_suite", extra_path=[srcdir()])
407 planpythontestsuite("none", "api", name="ldb.python", extra_path=['lib/ldb/tests/python'])
408 planpythontestsuite("none", "samba.tests.credentials")
409 planoldpythontestsuite("dc:local", "samba.tests.gensec", extra_args=['-U"$USERNAME%$PASSWORD"'])
410 planpythontestsuite("none", "samba.tests.registry")
411 planoldpythontestsuite("none", "simple", extra_path=["%s/lib/tdb/python/tests" % srcdir()], name="tdb.python")
412 planpythontestsuite("none", "samba.tests.auth")
413 planpythontestsuite("none", "samba.tests.getopt")
414 planpythontestsuite("none", "samba.tests.security")
415 planpythontestsuite("none", "samba.tests.dcerpc.misc")
416 planpythontestsuite("none", "samba.tests.param")
417 planpythontestsuite("none", "samba.tests.upgrade")
418 planpythontestsuite("none", "samba.tests.core")
419 planpythontestsuite("none", "samba.tests.provision")
420 planpythontestsuite("none", "samba.tests.samba3")
421 planpythontestsuite("none", "samba.tests.strings")
422 planpythontestsuite("dc:local", "samba.tests.dcerpc.sam")
423 planpythontestsuite("dc:local", "samba.tests.dsdb")
424 planpythontestsuite("none", "samba.tests.netcmd")
425 planpythontestsuite("dc:local", "samba.tests.dcerpc.bare")
426 planpythontestsuite("dc:local", "samba.tests.dcerpc.unix")
427 planpythontestsuite("dc:local", "samba.tests.dcerpc.srvsvc")
428 planpythontestsuite("none", "samba.tests.dcerpc.rpc_talloc")
429 planpythontestsuite("none", "samba.tests.samdb")
430 planpythontestsuite("none", "samba.tests.hostconfig")
431 planpythontestsuite("none", "samba.tests.messaging")
432 planpythontestsuite("none", "samba.tests.samba3sam")
434 planpythontestsuite("dc:local", "samba.tests.samba_tool.timecmd")
435 planpythontestsuite("dc:local", "samba.tests.samba_tool.user")
436 planpythontestsuite("dc:local", "samba.tests.samba_tool.group")
438 planpythontestsuite("none", "subunit")
439 planpythontestsuite("dc:local", "samba.tests.dcerpc.rpcecho")
440 planpythontestsuite("none", "wafsamba.tests.test_utils", extra_path=[os.path.join(samba4srcdir, "..", "buildtools"), os.path.join(samba4srcdir, "..", "buildtools", "wafadmin")])
441 planoldpythontestsuite("dc:local", "samba.tests.dcerpc.registry", extra_args=['-U"$USERNAME%$PASSWORD"'])
442 planoldpythontestsuite("dc", "samba.tests.dcerpc.dnsserver", extra_args=['-U"$USERNAME%$PASSWORD"'])
443 planoldpythontestsuite("plugin_s4_dc", "samba.tests.dcerpc.dnsserver", extra_args=['-U"$USERNAME%$PASSWORD"'])
444 plantestsuite("samba4.ldap.python(dc)", "dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/ldap.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
445 plantestsuite("samba4.tokengroups.python(dc)", "dc:local", [python, os.path.join(samba4srcdir, "dsdb/tests/python/token_group.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
446 plantestsuite("samba4.sam.python(dc)", "dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/sam.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
447 planoldpythontestsuite("dc", "dsdb_schema_info",
448 extra_path=[os.path.join(samba4srcdir, 'dsdb/tests/python')],
449 name="samba4.schemaInfo.python(dc)",
450 extra_args=['-U"$DOMAIN/$DC_USERNAME%$DC_PASSWORD"'])
451 plantestsuite("samba4.urgent_replication.python(dc)", "dc:local", [python, os.path.join(samba4srcdir, "dsdb/tests/python/urgent_replication.py"), '$PREFIX_ABS/dc/private/sam.ldb'], allow_empty_output=True)
452 plantestsuite("samba4.ldap.dirsync.python(dc)", "dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/dirsync.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
453 plantestsuite("samba4.ldap.sites.python(dc)", "dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/sites.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
454 for env in ["dc", "fl2000dc", "fl2003dc", "fl2008r2dc"]:
455 plantestsuite("samba4.ldap_schema.python(%s)" % env, env, [python, os.path.join(samba4srcdir, "dsdb/tests/python/ldap_schema.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
456 plantestsuite("samba4.ldap.possibleInferiors.python(%s)" % env, env, [python, os.path.join(samba4srcdir, "dsdb/samdb/ldb_modules/tests/possibleinferiors.py"), "ldap://$SERVER", '-U"$USERNAME%$PASSWORD"', "-W$DOMAIN"])
457 plantestsuite("samba4.ldap.secdesc.python(%s)" % env, env, [python, os.path.join(samba4srcdir, "dsdb/tests/python/sec_descriptor.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
458 plantestsuite("samba4.ldap.acl.python(%s)" % env, env, [python, os.path.join(samba4srcdir, "dsdb/tests/python/acl.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
459 if env != "fl2000dc":
460 # This test makes excessive use of the "userPassword" attribute which
461 # isn't available on DCs with Windows 2000 domain function level -
462 # therefore skip it in that configuration
463 plantestsuite("samba4.ldap.passwords.python(%s)" % env, env, [python, os.path.join(samba4srcdir, "dsdb/tests/python/passwords.py"), "$SERVER", '-U"$USERNAME%$PASSWORD"', "-W$DOMAIN"])
464 planpythontestsuite("dc:local", "samba.tests.upgradeprovisionneeddc")
465 planpythontestsuite("none", "samba.tests.upgradeprovision")
466 planpythontestsuite("none", "samba.tests.xattr")
467 planpythontestsuite("none", "samba.tests.ntacls")
468 plantestsuite("samba4.deletetest.python(dc)", "dc", ['PYTHONPATH="$PYTHONPATH:%s/lib/subunit/python:%s/lib/testtools"' % (srcdir(), srcdir()),
469 python, os.path.join(samba4srcdir, "dsdb/tests/python/deletetest.py"),
470 '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
471 planpythontestsuite("none", "samba.tests.policy")
472 plantestsuite("samba4.blackbox.samba3dump", "none", [python, os.path.join(samba4srcdir, "scripting/bin/samba3dump"), os.path.join(samba4srcdir, "../testdata/samba3")], allow_empty_output=True)
473 plantestsuite("samba4.blackbox.upgrade", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_s3upgrade.sh"), '$PREFIX/provision'])
474 plantestsuite("samba4.blackbox.provision.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_provision.sh"), '$PREFIX/provision'])
475 plantestsuite("samba4.blackbox.upgradeprovision.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_upgradeprovision.sh"), '$PREFIX/provision'])
476 plantestsuite("samba4.blackbox.setpassword.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_setpassword.sh"), '$PREFIX/provision'])
477 plantestsuite("samba4.blackbox.newuser.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_newuser.sh"), '$PREFIX/provision'])
478 plantestsuite("samba4.blackbox.group.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_group.sh"), '$PREFIX/provision'])
479 plantestsuite("samba4.blackbox.spn.py(dc:local)", "dc:local", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_spn.sh"), '$PREFIX/dc'])
480 plantestsuite("samba4.ldap.bind(dc)", "dc", [python, os.path.join(srcdir(), "auth/credentials/tests/bind.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"'])
482 # DRS python tests
483 planoldpythontestsuite("vampire_dc", "samba.tests.blackbox.samba_tool_drs",
484 environ={'DC1': '$DC_SERVER', 'DC2': '$VAMPIRE_DC_SERVER'},
485 extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
486 planoldpythontestsuite("vampire_dc", "replica_sync",
487 extra_path=[os.path.join(samba4srcdir, 'torture/drs/python')],
488 name="samba4.drs.replica_sync.python(vampire_dc)",
489 environ={'DC1': '$DC_SERVER', 'DC2': '$VAMPIRE_DC_SERVER'},
490 extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
491 planoldpythontestsuite("vampire_dc", "delete_object",
492 extra_path=[os.path.join(samba4srcdir, 'torture/drs/python')],
493 name="samba4.drs.delete_object.python(vampire_dc)",
494 environ={'DC1': '$DC_SERVER', 'DC2': '$VAMPIRE_DC_SERVER'},
495 extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
496 planoldpythontestsuite("vampire_dc", "fsmo",
497 name="samba4.drs.fsmo.python(vampire_dc)",
498 extra_path=[os.path.join(samba4srcdir, 'torture/drs/python')],
499 environ={'DC1': "$DC_SERVER", 'DC2': "$VAMPIRE_DC_SERVER"},
500 extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
501 planoldpythontestsuite("vampire_dc", "repl_schema",
502 extra_path=[os.path.join(samba4srcdir, 'torture/drs/python')],
503 name="samba4.drs.repl_schema.python(vampire_dc)",
504 environ={'DC1': "$DC_SERVER", 'DC2': '$VAMPIRE_DC_SERVER'},
505 extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
507 # This makes sure we test the rid allocation code
508 t = "rpc.samr.large-dc"
509 plansmbtorturetestsuite(t, "vampire_dc", ['$SERVER', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], modname=("samba4.%s.one" % t))
510 plansmbtorturetestsuite(t, "vampire_dc", ['$SERVER', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], modname="samba4.%s.two" % t)
512 # some RODC testing
513 for env in ['rodc']:
514 plansmbtorturetestsuite('rpc.echo', env, ['ncacn_np:$SERVER', "-k", "yes", '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], modname="samba4.rpc.echo")
515 plansmbtorturetestsuite('rpc.echo', "%s:local" % env, ['ncacn_np:$SERVER', "-k", "yes", '-P', '--workgroup=$DOMAIN'], modname="samba4.rpc.echo")
516 plantestsuite("samba4.blackbox.provision-backend", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_provision-backend.sh"), '$PREFIX/provision'])
518 # Test renaming the DC
519 plantestsuite("samba4.blackbox.renamedc.sh", "none", ["PYTHON=%s" % python, os.path.join(bbdir, "renamedc.sh"), '$PREFIX/provision'])
521 # Demote the vampire DC, it must be the last test on the VAMPIRE DC
522 plantestsuite("samba4.blackbox.samba_tool_demote(vampire_dc)", "vampire_dc", [os.path.join(samba4srcdir, "utils/tests/test_demote.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', '$DOMAIN', '$DC_SERVER', '$PREFIX/vampire_dc'])
523 # check the databases are all OK. PLEASE LEAVE THIS AS THE LAST TEST
524 for env in ["dc", "fl2000dc", "fl2003dc", "fl2008r2dc"]:
525 plantestsuite("samba4.blackbox.dbcheck(%s)" % env, env + ":local" , ["PYTHON=%s" % python, os.path.join(bbdir, "dbcheck.sh"), '$PREFIX/provision', configuration])