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