selftest: Remove 'if have_ads_support:' from tests.py
[metze/samba/wip.git] / source4 / selftest / tests.py
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.
4
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".
8
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.
15
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.
20
21 import os, sys
22 sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../selftest"))
23 from selftesthelpers import *
24 import subprocess
25
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 = []
35
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)
43
44 def smb4torture_testsuites(prefix):
45     return filter(lambda x: x.startswith(prefix), smb4torture_testsuite_list)
46
47 subprocess.call([smb4torture, "-V"], stdout=sys.stderr)
48
49 bbdir = os.path.join(srcdir(), "testprogs/blackbox")
50
51 configuration = "--configfile=$SMB_CONF_PATH"
52
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)
60
61 print >>sys.stderr, "OPTIONS %s" % " ".join(torture_options)
62
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))
66
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")
72
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()
79
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))
84
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))
88
89 for t in smb4torture_testsuites("ldap."):
90     plansmbtorturetestsuite(t, "dc", '-U"$USERNAME%$PASSWORD" //$SERVER_IP/_none_')
91
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")
99
100 # Tests for RPC
101
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"]
110
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"]
112
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)
116
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))
132
133 #Plugin S4 DC tests (confirms named pipe auth forwarding).  This can be expanded once kerberos is supported in the plugin DC
134 #
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', '-k', 'no'], "samba4.%s with %s" % (t, bindoptions))
140
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))
144
145 t = "rpc.countcalls"
146 plansmbtorturetestsuite(t, "dc:local", ["$SERVER[%s]" % bindoptions, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], modname="samba4.%s" % t)
147
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))
158
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')
163
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)
168
169 # Tests for session keys and encryption of RPC pipes
170 # FIXME: Integrate these into a single smbtorture test
171
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
189 transports = ["ncacn_np", "ncacn_ip_tcp"]
190
191 #Kerberos varies between functional levels, so it is important to check this on all of them
192 for env in ["dc", "fl2000dc", "fl2003dc", "fl2008r2dc"]:
193     transport = "ncacn_np"
194     plansmbtorturetestsuite('rpc.pac', env, ["%s:$SERVER[]" % (transport, ), '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.rpc.pac on %s" % (transport,))
195     for transport in transports:
196         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,))
197         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,))
198         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)
199         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)
200         plansmbtorturetestsuite('rpc.echo', env, ["%s:$SERVER[]" % (transport,), '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.rpc.echo on %s" % (transport, ))
201
202         # Echo tests test bulk Kerberos encryption of DCE/RPC
203         for bindoptions in ["connect", "spnego", "spnego,sign", "spnego,seal"] + validate_list + ["padcheck", "bigendian", "bigendian,seal"]:
204             echooptions = "--option=socket:testnonblock=True --option=torture:quick=yes -k yes"
205             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))
206     plansmbtorturetestsuite("net.api.become.dc", env, '$SERVER[%s] -U$USERNAME%%$PASSWORD -W$DOMAIN' % validate)
207
208 for bindoptions in ["sign", "seal"]:
209     plansmbtorturetestsuite('rpc.backupkey', "dc", ["ncacn_np:$SERVER[%s]" % ( bindoptions), '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.rpc.backupkey with %s" % (bindoptions))
210
211 for transport in transports:
212     for bindoptions in ["sign", "seal"]:
213         for ntlmoptions in [
214         "--option=ntlmssp_client:ntlm2=yes --option=torture:quick=yes",
215         "--option=ntlmssp_client:ntlm2=no --option=torture:quick=yes",
216         "--option=ntlmssp_client:ntlm2=yes --option=ntlmssp_client:128bit=no --option=torture:quick=yes",
217         "--option=ntlmssp_client:ntlm2=no --option=ntlmssp_client:128bit=no --option=torture:quick=yes",
218         "--option=ntlmssp_client:ntlm2=yes --option=ntlmssp_client:keyexchange=no --option=torture:quick=yes",
219         "--option=ntlmssp_client:ntlm2=no --option=ntlmssp_client:keyexchange=no --option=torture:quick=yes",
220         "--option=clientntlmv2auth=yes --option=ntlmssp_client:keyexchange=no --option=torture:quick=yes",
221         "--option=clientntlmv2auth=yes --option=ntlmssp_client:128bit=no --option=ntlmssp_client:keyexchange=yes --option=torture:quick=yes",
222         "--option=clientntlmv2auth=yes --option=ntlmssp_client:128bit=no --option=ntlmssp_client:keyexchange=no --option=torture:quick=yes"]:
223             if transport == "ncalrpc":
224                 env = "dc:local"
225             else:
226                 env = "dc"
227             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))
228
229 plansmbtorturetestsuite('rpc.echo', "dc", ['ncacn_np:$SERVER[smb2]', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.rpc.echo on ncacn_np over smb2")
230
231 plansmbtorturetestsuite('ntp.signd', "dc:local", ['ncacn_np:$SERVER', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.ntp.signd")
232
233 nbt_tests = smb4torture_testsuites("nbt.")
234 for t in nbt_tests:
235     plansmbtorturetestsuite(t, "dc", "//$SERVER/_none_ -U\"$USERNAME%$PASSWORD\"")
236
237 # Tests against the NTVFS POSIX backend
238 ntvfsargs = ["--option=torture:sharedelay=10000", "--option=torture:oplocktimeout=3", "--option=torture:writetimeupdatedelay=50000"]
239
240 smb2 = smb4torture_testsuites("smb2.")
241 #The QFILEINFO-IPC test needs to be on ipc$
242 raw = filter(lambda x: "raw.qfileinfo.ipc" not in x, smb4torture_testsuites("raw."))
243 base = smb4torture_testsuites("base.")
244
245 netapi = smb4torture_testsuites("netapi.")
246
247 libsmbclient = smb4torture_testsuites("libsmbclient.")
248
249 for t in base + raw + smb2 + netapi + libsmbclient:
250     plansmbtorturetestsuite(t, "dc", ['//$SERVER/tmp', '-U$USERNAME%$PASSWORD'] + ntvfsargs)
251
252 plansmbtorturetestsuite("raw.qfileinfo.ipc", "dc", '//$SERVER/ipc\$ -U$USERNAME%$PASSWORD')
253
254 for t in smb4torture_testsuites("rap."):
255     plansmbtorturetestsuite(t, "dc", '//$SERVER/IPC\$ -U$USERNAME%$PASSWORD')
256
257 # Tests against the NTVFS CIFS backend
258 for t in base + raw:
259     plansmbtorturetestsuite(t, "dc", ['//$NETBIOSNAME/cifs', '-U$USERNAME%$PASSWORD', '--kerberos=yes'] + ntvfsargs, modname="samba4.ntvfs.cifs.krb5.%s" % t)
260
261 # Test NTVFS CIFS backend with S4U2Self and S4U2Proxy
262 t = "base.unlink"
263 plansmbtorturetestsuite(t, "dc", ['//$NETBIOSNAME/cifs', '-U$USERNAME%$PASSWORD', '--kerberos=no'] + ntvfsargs, "samba4.ntvfs.cifs.ntlm.%s" % t)
264 plansmbtorturetestsuite(t, "rpc_proxy", ['//$NETBIOSNAME/cifs_to_dc', '-U$DC_USERNAME%$DC_PASSWORD', '--kerberos=yes'] + ntvfsargs, "samba4.ntvfs.cifs.krb5.%s" % t)
265 plansmbtorturetestsuite(t, "rpc_proxy", ['//$NETBIOSNAME/cifs_to_dc', '-U$DC_USERNAME%$DC_PASSWORD', '--kerberos=no'] + ntvfsargs, "samba4.ntvfs.cifs.ntlm.%s" % t)
266
267 plansmbtorturetestsuite('echo.udp', 'dc:local', '//$SERVER/whatever')
268
269 # Local tests
270 for t in smb4torture_testsuites("local."):
271     #The local.resolve test needs a name to look up using real system (not emulated) name routines
272     plansmbtorturetestsuite(t, "none", "ncalrpc:localhost")
273
274 # Confirm these tests with the system iconv too
275 for t in ["local.convert_string_handle", "local.convert_string", "local.ndr"]:
276     options = "ncalrpc: --option='iconv:use_builtin_handlers=false'"
277     plansmbtorturetestsuite(t, "none", options,
278         modname="samba4.%s.system.iconv" % t)
279
280 tdbtorture4 = binpath("tdbtorture")
281 if os.path.exists(tdbtorture4):
282     plantestsuite("tdb.stress", "none", valgrindify(tdbtorture4))
283 else:
284     skiptestsuite("tdb.stress", "Using system TDB, tdbtorture not available")
285
286 plansmbtorturetestsuite("drs.unit", "none", "ncalrpc:")
287
288 # Pidl tests
289 for f in sorted(os.listdir(os.path.join(samba4srcdir, "../pidl/tests"))):
290     if f.endswith(".pl"):
291         planperltestsuite("pidl.%s" % f[:-3], os.path.normpath(os.path.join(samba4srcdir, "../pidl/tests", f)))
292
293 # DNS tests
294 planpythontestsuite("dc", "samba.tests.dns")
295
296 # Blackbox Tests:
297 # tests that interact directly with the command-line tools rather than using
298 # the API. These mainly test that the various command-line options of commands
299 # work correctly.
300
301 planpythontestsuite("none", "samba.tests.blackbox.ndrdump")
302 planpythontestsuite("none", "samba.tests.source")
303 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'])
304 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])
305 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])
306 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])
307 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])
308 plantestsuite("samba4.blackbox.ktpass(dc)", "dc", [os.path.join(bbdir, "test_ktpass.sh"), '$PREFIX'])
309 plantestsuite("samba4.blackbox.passwords(dc:local)", "dc:local", [os.path.join(bbdir, "test_passwords.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$REALM', '$DOMAIN', "$PREFIX"])
310 plantestsuite("samba4.blackbox.export.keytab(dc:local)", "dc:local", [os.path.join(bbdir, "test_export_keytab.sh"), '$SERVER', '$USERNAME', '$REALM', '$DOMAIN', "$PREFIX"])
311 plantestsuite("samba4.blackbox.cifsdd(dc)", "dc", [os.path.join(samba4srcdir, "client/tests/test_cifsdd.sh"), '$SERVER', '$USERNAME', '$PASSWORD', "$DOMAIN"])
312 plantestsuite("samba4.blackbox.nmblookup(dc)", "dc", [os.path.join(samba4srcdir, "utils/tests/test_nmblookup.sh"), '$NETBIOSNAME', '$NETBIOSALIAS', '$SERVER', '$SERVER_IP'])
313 plantestsuite("samba4.blackbox.locktest(dc)", "dc", [os.path.join(samba4srcdir, "torture/tests/test_locktest.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$DOMAIN', '$PREFIX'])
314 plantestsuite("samba4.blackbox.masktest", "dc", [os.path.join(samba4srcdir, "torture/tests/test_masktest.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$DOMAIN', '$PREFIX'])
315 plantestsuite("samba4.blackbox.gentest(dc)", "dc", [os.path.join(samba4srcdir, "torture/tests/test_gentest.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$DOMAIN', "$PREFIX"])
316 plantestsuite("samba4.blackbox.wbinfo(dc:local)", "dc:local", [os.path.join(samba4srcdir, "../nsswitch/tests/test_wbinfo.sh"), '$DOMAIN', '$USERNAME', '$PASSWORD', "dc"])
317 plantestsuite("samba4.blackbox.wbinfo(s4member:local)", "s4member:local", [os.path.join(samba4srcdir, "../nsswitch/tests/test_wbinfo.sh"), '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', "s4member"])
318 plantestsuite("samba4.blackbox.chgdcpass(dc)", "dc", [os.path.join(bbdir, "test_chgdcpass.sh"), '$SERVER', "LOCALDC\$", '$REALM', '$DOMAIN', '$PREFIX', "aes256-cts-hmac-sha1-96", '$SELFTEST_PREFIX/dc'])
319 plantestsuite_loadlist("samba4.rpc.echo against NetBIOS alias", "dc", [valgrindify(smb4torture), "$LISTOPT", 'ncacn_np:$NETBIOSALIAS', '-U$DOMAIN/$USERNAME%$PASSWORD', 'rpc.echo'])
320
321 # Tests using the "Simple" NTVFS backend
322 for t in ["base.rw1"]:
323     plansmbtorturetestsuite(t, "dc", ["//$SERVER/simple", '-U$USERNAME%$PASSWORD'], modname="samba4.ntvfs.simple.%s" % t)
324
325 # Domain S4member Tests
326 plansmbtorturetestsuite('rpc.echo', "s4member", ['ncacn_np:$NETBIOSNAME', '-U$NETBIOSNAME/$USERNAME%$PASSWORD'], "samba4.rpc.echo against s4member server with local creds")
327 plansmbtorturetestsuite('rpc.echo', "s4member", ['ncacn_np:$NETBIOSNAME', '-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'], "samba4.rpc.echo against s4member server with domain creds")
328 plansmbtorturetestsuite('rpc.samr', "s4member", ['ncacn_np:$NETBIOSNAME', '-U$NETBIOSNAME/$USERNAME%$PASSWORD'], "samba4.rpc.samr against s4member server with local creds")
329 plansmbtorturetestsuite('rpc.samr.users', "s4member", ['ncacn_np:$NETBIOSNAME', '-U$NETBIOSNAME/$USERNAME%$PASSWORD'], "samba4.rpc.samr.users against s4member server with local creds",)
330 plansmbtorturetestsuite('rpc.samr.passwords', "s4member", ['ncacn_np:$NETBIOSNAME', '-U$NETBIOSNAME/$USERNAME%$PASSWORD'], "samba4.rpc.samr.passwords against s4member server with local creds")
331 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'])
332
333 # RPC Proxy
334 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")
335
336 # Tests SMB signing
337 for mech in [
338     "-k no",
339     "-k no --option=usespnego=no",
340     "-k no --option=gensec:spengo=no",
341     "-k yes",
342     "-k yes --option=gensec:fake_gssapi_krb5=yes --option=gensec:gssapi_krb5=no"]:
343     for signing in ["--signing=on", "--signing=required"]:
344         signoptions = "%s %s" % (mech, signing)
345         name = "smb.signing on with %s" % signoptions
346         plansmbtorturetestsuite('base.xcopy', "dc", ['//$NETBIOSNAME/xcopy_share', signoptions, '-U$USERNAME%$PASSWORD'], modname="samba4.%s" % name)
347
348 for mech in [
349     "-k no",
350     "-k no --option=usespnego=no",
351     "-k no --option=gensec:spengo=no",
352     "-k yes"]:
353     signoptions = "%s --signing=off" % mech
354     name = "smb.signing disabled on with %s" % signoptions
355     plansmbtorturetestsuite('base.xcopy', "s4member", ['//$NETBIOSNAME/xcopy_share', signoptions, '-U$DC_USERNAME%$DC_PASSWORD'], "samba4.%s domain-creds" % name)
356     plansmbtorturetestsuite('base.xcopy', "s3member", ['//$NETBIOSNAME/xcopy_share', signoptions, '-U$DC_USERNAME%$DC_PASSWORD'], "samba4.%s domain-creds" % name)
357     plansmbtorturetestsuite('base.xcopy', "plugin_s4_dc", ['//$NETBIOSNAME/xcopy_share', signoptions, '-U$USERNAME%$PASSWORD'], "samba4.%s" % name)
358     plansmbtorturetestsuite('base.xcopy', "plugin_s4_dc",
359                             ['//$NETBIOSNAME/xcopy_share', signoptions, '-U$DC_USERNAME%$DC_PASSWORD'], "samba4.%s administrator" % name)
360
361 plantestsuite("samba4.blackbox.bogusdomain", "s3member", ["testprogs/blackbox/bogus.sh", "$NETBIOSNAME", "xcopy_share", '$DC_USERNAME', '$DC_PASSWORD'], allow_empty_output=True)
362 for mech in [
363     "-k no",
364     "-k no --option=usespnego=no",
365     "-k no --option=gensec:spengo=no"]:
366     signoptions = "%s --signing=off" % mech
367     plansmbtorturetestsuite('base.xcopy', "s4member", ['//$NETBIOSNAME/xcopy_share', signoptions, '-U$NETBIOSNAME/$USERNAME%$PASSWORD'], modname="samba4.smb.signing on with %s local-creds" % signoptions)
368
369 plansmbtorturetestsuite('base.xcopy', "dc", ['//$NETBIOSNAME/xcopy_share', '-k', 'no', '--signing=yes', '-U%'], modname="samba4.smb.signing --signing=yes anon")
370 plansmbtorturetestsuite('base.xcopy', "dc", ['//$NETBIOSNAME/xcopy_share', '-k', 'no', '--signing=required', '-U%'], modname="samba4.smb.signing --signing=required anon")
371 plansmbtorturetestsuite('base.xcopy', "s4member", ['//$NETBIOSNAME/xcopy_share', '-k', 'no', '--signing=no', '-U%'], modname="samba4.smb.signing --signing=no anon")
372
373
374 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\""]
375
376 winbind_struct_tests = smb4torture_testsuites("winbind.struct")
377 winbind_ndr_tests = smb4torture_testsuites("winbind.ndr")
378 for env in ["dc", "s4member"]:
379     for t in winbind_struct_tests:
380         plansmbtorturetestsuite(t, env, wb_opts + ['//_none_/_none_'])
381
382     for t in winbind_ndr_tests:
383         plansmbtorturetestsuite(t, env, wb_opts + ['//_none_/_none_'])
384
385 nsstest4 = binpath("nsstest")
386 for env in ["dc", "s4member", "s3dc", "s3member", "member"]:
387     if os.path.exists(nsstest4):
388         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")])
389     else:
390         skiptestsuite("samba4.nss.test using winbind(%s)" % env, "nsstest not available")
391
392 subunitrun = valgrindify(python) + " " + os.path.join(samba4srcdir, "scripting/bin/subunitrun")
393 def planoldpythontestsuite(env, module, name=None, extra_path=[], environ={}, extra_args=[]):
394     environ = dict(environ)
395     py_path = list(extra_path)
396     if py_path:
397         environ["PYTHONPATH"] = ":".join(["$PYTHONPATH"] + py_path)
398     args = ["%s=%s" % item for item in environ.iteritems()]
399     args += [subunitrun, "$LISTOPT", module]
400     args += extra_args
401     if name is None:
402         name = module
403     plantestsuite(name, env, args)
404
405 planpythontestsuite("none", "api", name="ldb.python", extra_path=['lib/ldb/tests/python'])
406 planpythontestsuite("none", "samba.tests.credentials")
407 planoldpythontestsuite("dc:local", "samba.tests.gensec", extra_args=['-U"$USERNAME%$PASSWORD"'])
408 planpythontestsuite("none", "samba.tests.registry")
409 planoldpythontestsuite("none", "simple", extra_path=["%s/lib/tdb/python/tests" % srcdir()], name="tdb.python")
410 planpythontestsuite("none", "samba.tests.auth")
411 planpythontestsuite("none", "samba.tests.getopt")
412 planpythontestsuite("none", "samba.tests.security")
413 planpythontestsuite("none", "samba.tests.dcerpc.misc")
414 planpythontestsuite("none", "samba.tests.param")
415 planpythontestsuite("none", "samba.tests.upgrade")
416 planpythontestsuite("none", "samba.tests.core")
417 planpythontestsuite("none", "samba.tests.provision")
418 planpythontestsuite("none", "samba.tests.samba3")
419 planpythontestsuite("none", "samba.tests.strings")
420 planpythontestsuite("dc:local", "samba.tests.dcerpc.sam")
421 planpythontestsuite("dc:local", "samba.tests.dsdb")
422 planpythontestsuite("none", "samba.tests.netcmd")
423 planpythontestsuite("dc:local", "samba.tests.dcerpc.bare")
424 planpythontestsuite("dc:local", "samba.tests.dcerpc.unix")
425 planpythontestsuite("dc:local", "samba.tests.dcerpc.srvsvc")
426 planpythontestsuite("none", "samba.tests.dcerpc.rpc_talloc")
427 planpythontestsuite("none", "samba.tests.samdb")
428 planpythontestsuite("none", "samba.tests.hostconfig")
429 planpythontestsuite("none", "samba.tests.messaging")
430 planpythontestsuite("none", "samba.tests.samba3sam")
431
432 planpythontestsuite("dc:local", "samba.tests.samba_tool.timecmd")
433 planpythontestsuite("dc:local", "samba.tests.samba_tool.user")
434
435 planpythontestsuite("none", "subunit")
436 planpythontestsuite("dc:local", "samba.tests.dcerpc.rpcecho")
437 planpythontestsuite("none", "wafsamba.tests.test_utils", extra_path=[os.path.join(samba4srcdir, "..", "buildtools"), os.path.join(samba4srcdir, "..", "buildtools", "wafadmin")])
438 planoldpythontestsuite("dc:local", "samba.tests.dcerpc.registry", extra_args=['-U"$USERNAME%$PASSWORD"'])
439 planoldpythontestsuite("dc", "samba.tests.dcerpc.dnsserver", extra_args=['-U"$USERNAME%$PASSWORD"'])
440 plantestsuite("samba4.ldap.python(dc)", "dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/ldap.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
441 plantestsuite("samba4.tokengroups.python(dc)", "dc:local", [python, os.path.join(samba4srcdir, "dsdb/tests/python/token_group.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
442 plantestsuite("samba4.sam.python(dc)", "dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/sam.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
443 planoldpythontestsuite("dc", "dsdb_schema_info",
444         extra_path=[os.path.join(samba4srcdir, 'dsdb/tests/python')],
445         name="samba4.schemaInfo.python(dc)",
446         extra_args=['-U"$DOMAIN/$DC_USERNAME%$DC_PASSWORD"'])
447 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)
448 plantestsuite("samba4.ldap.dirsync.python(dc)", "dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/dirsync.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
449 plantestsuite("samba4.ldap.sites.python(dc)", "dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/sites.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
450 for env in ["dc", "fl2000dc", "fl2003dc", "fl2008r2dc"]:
451     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'])
452     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"])
453     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'])
454     plantestsuite("samba4.ldap.acl.python(%s)" % env, env, [python, os.path.join(samba4srcdir, "dsdb/tests/python/acl.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
455     if env != "fl2000dc":
456         # This test makes excessive use of the "userPassword" attribute which
457         # isn't available on DCs with Windows 2000 domain function level -
458         # therefore skip it in that configuration
459         plantestsuite("samba4.ldap.passwords.python(%s)" % env, env, [python, os.path.join(samba4srcdir, "dsdb/tests/python/passwords.py"), "$SERVER", '-U"$USERNAME%$PASSWORD"', "-W$DOMAIN"])
460 planpythontestsuite("dc:local", "samba.tests.upgradeprovisionneeddc")
461 planpythontestsuite("none", "samba.tests.upgradeprovision")
462 planpythontestsuite("none", "samba.tests.xattr")
463 planpythontestsuite("none", "samba.tests.ntacls")
464 plantestsuite("samba4.deletetest.python(dc)", "dc", ['PYTHONPATH="$PYTHONPATH:%s/lib/subunit/python:%s/lib/testtools"' % (srcdir(), srcdir()),
465                                                      python, os.path.join(samba4srcdir, "dsdb/tests/python/deletetest.py"),
466                                                      '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
467 planpythontestsuite("none", "bindings", extra_path=["%s/lib/policy/tests/python" % samba4srcdir], name="samba4.policy.python")
468 plantestsuite("samba4.blackbox.samba3dump", "none", [python, os.path.join(samba4srcdir, "scripting/bin/samba3dump"), os.path.join(samba4srcdir, "../testdata/samba3")], allow_empty_output=True)
469 plantestsuite("samba4.blackbox.upgrade", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_s3upgrade.sh"), '$PREFIX/provision'])
470 plantestsuite("samba4.blackbox.provision.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_provision.sh"), '$PREFIX/provision'])
471 plantestsuite("samba4.blackbox.upgradeprovision.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_upgradeprovision.sh"), '$PREFIX/provision'])
472 plantestsuite("samba4.blackbox.setpassword.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_setpassword.sh"), '$PREFIX/provision'])
473 plantestsuite("samba4.blackbox.newuser.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_newuser.sh"), '$PREFIX/provision'])
474 plantestsuite("samba4.blackbox.group.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_group.sh"), '$PREFIX/provision'])
475 plantestsuite("samba4.blackbox.spn.py(dc:local)", "dc:local", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_spn.sh"), '$PREFIX/dc'])
476 plantestsuite("samba4.ldap.bind(dc)", "dc", [python, os.path.join(srcdir(), "auth/credentials/tests/bind.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"'])
477
478 # DRS python tests
479 planoldpythontestsuite("vampire_dc", "samba.tests.blackbox.samba_tool_drs",
480         environ={'DC1': '$DC_SERVER', 'DC2': '$VAMPIRE_DC_SERVER'},
481         extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
482 planoldpythontestsuite("vampire_dc", "replica_sync",
483         extra_path=[os.path.join(samba4srcdir, 'torture/drs/python')],
484         name="samba4.drs.replica_sync.python(vampire_dc)",
485         environ={'DC1': '$DC_SERVER', 'DC2': '$VAMPIRE_DC_SERVER'},
486         extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
487 planoldpythontestsuite("vampire_dc", "delete_object",
488         extra_path=[os.path.join(samba4srcdir, 'torture/drs/python')],
489         name="samba4.drs.delete_object.python(vampire_dc)",
490         environ={'DC1': '$DC_SERVER', 'DC2': '$VAMPIRE_DC_SERVER'},
491         extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
492 planoldpythontestsuite("vampire_dc", "fsmo",
493         name="samba4.drs.fsmo.python(vampire_dc)",
494         extra_path=[os.path.join(samba4srcdir, 'torture/drs/python')],
495         environ={'DC1': "$DC_SERVER", 'DC2': "$VAMPIRE_DC_SERVER"},
496         extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
497 planoldpythontestsuite("vampire_dc", "repl_schema",
498         extra_path=[os.path.join(samba4srcdir, 'torture/drs/python')],
499         name="samba4.drs.repl_schema.python(vampire_dc)",
500         environ={'DC1': "$DC_SERVER", 'DC2': '$VAMPIRE_DC_SERVER'},
501         extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
502
503 # This makes sure we test the rid allocation code
504 t = "rpc.samr.large-dc"
505 plansmbtorturetestsuite(t, "vampire_dc", ['$SERVER', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], modname=("samba4.%s.one" % t))
506 plansmbtorturetestsuite(t, "vampire_dc", ['$SERVER', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], modname="samba4.%s.two" % t)
507
508 # some RODC testing
509 for env in ['rodc']:
510     plansmbtorturetestsuite('rpc.echo', env, ['ncacn_np:$SERVER', "-k", "yes", '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], modname="samba4.rpc.echo")
511     plansmbtorturetestsuite('rpc.echo', "%s:local" % env, ['ncacn_np:$SERVER', "-k", "yes", '-P', '--workgroup=$DOMAIN'], modname="samba4.rpc.echo")
512 plantestsuite("samba4.blackbox.provision-backend", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_provision-backend.sh"), '$PREFIX/provision'])
513
514 # Test renaming the DC
515 plantestsuite("samba4.blackbox.renamedc.sh", "none", ["PYTHON=%s" % python, os.path.join(bbdir, "renamedc.sh"), '$PREFIX/provision'])
516
517 # Demote the vampire DC, it must be the last test on the VAMPIRE DC
518 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'])
519 # check the databases are all OK. PLEASE LEAVE THIS AS THE LAST TEST
520 for env in ["dc", "fl2000dc", "fl2003dc", "fl2008r2dc"]:
521     plantestsuite("samba4.blackbox.dbcheck(%s)" % env, env + ":local" , ["PYTHON=%s" % python, os.path.join(bbdir, "dbcheck.sh"), '$PREFIX/provision', configuration])