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