Fix typo
[Samba/bjacke.git] / source4 / selftest / tests.py
blob8279ba4041061166fa672feecfcb2bb0527b885d
1 #!/usr/bin/python
2 # This script generates a list of testsuites that should be run as part of
3 # the Samba 4 test suite.
5 # The output of this script is parsed by selftest.pl, which then decides
6 # which of the tests to actually run. It will, for example, skip all tests
7 # listed in selftest/skip or only run a subset during "make quicktest".
9 # The idea is that this script outputs all of the tests of Samba 4, not
10 # just those that are known to pass, and list those that should be skipped
11 # or are known to fail in selftest/skip or selftest/knownfail. This makes it
12 # very easy to see what functionality is still missing in Samba 4 and makes
13 # it possible to run the testsuite against other servers, such as Samba 3 or
14 # Windows that have a different set of features.
16 # The syntax for a testsuite is "-- TEST --" on a single line, followed
17 # by the name of the test, the environment it needs and the command to run, all
18 # three separated by newlines. All other lines in the output are considered
19 # comments.
21 import os, sys
22 sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../selftest"))
23 from selftesthelpers import *
24 import subprocess
26 samba4srcdir = source4dir()
27 samba4bindir = bindir()
28 smb4torture = binpath("smbtorture4")
29 smb4torture_testsuite_list = subprocess.Popen([smb4torture, "--list-suites"], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate("")[0].splitlines()
30 validate = os.getenv("VALIDATE", "")
31 if validate:
32 validate_list = [validate]
33 else:
34 validate_list = []
36 def plansmbtorturetestsuite(name, env, options, modname=None):
37 if modname is None:
38 modname = "samba4.%s" % name
39 if isinstance(options, list):
40 options = " ".join(options)
41 cmdline = "%s $LISTOPT %s %s" % (valgrindify(smb4torture), options, name)
42 plantestsuite_loadlist(modname, env, cmdline)
44 def smb4torture_testsuites(prefix):
45 return filter(lambda x: x.startswith(prefix), smb4torture_testsuite_list)
47 subprocess.call([smb4torture, "-V"], stdout=sys.stderr)
49 bbdir = os.path.join(srcdir(), "testprogs/blackbox")
51 configuration = "--configfile=$SMB_CONF_PATH"
53 torture_options = [configuration, "--maximum-runtime=$SELFTEST_MAXTIME", "--target=samba4", "--basedir=$SELFTEST_TMPDIR"]
54 if not os.getenv("SELFTEST_VERBOSE"):
55 torture_options.append("--option=torture:progress=no")
56 torture_options.append("--format=subunit")
57 if os.getenv("SELFTEST_QUICK"):
58 torture_options.append("--option=torture:quick=yes")
59 smb4torture += " " + " ".join(torture_options)
61 print >>sys.stderr, "OPTIONS %s" % " ".join(torture_options)
63 # Simple tests for LDAP and CLDAP
64 for options in ['-U"$USERNAME%$PASSWORD" --option=socket:testnonblock=true', '-U"$USERNAME%$PASSWORD"', '-U"$USERNAME%$PASSWORD" -k yes', '-U"$USERNAME%$PASSWORD" -k no', '-U"$USERNAME%$PASSWORD" -k no --sign', '-U"$USERNAME%$PASSWORD" -k no --encrypt', '-U"$USERNAME%$PASSWORD" -k yes --encrypt', '-U"$USERNAME%$PASSWORD" -k yes --sign']:
65 plantestsuite("samba4.ldb.ldap with options %s(dc)" % options, "dc", "%s/test_ldb.sh ldap $SERVER %s" % (bbdir, options))
67 # see if we support ADS on the Samba3 side
68 try:
69 config_h = os.environ["CONFIG_H"]
70 except KeyError:
71 config_h = os.path.join(samba4bindir, "default/include/config.h")
73 # see if we support ldaps
74 f = open(config_h, 'r')
75 try:
76 have_tls_support = ("ENABLE_GNUTLS 1" in f.read())
77 finally:
78 f.close()
80 if have_tls_support:
81 for options in ['-U"$USERNAME%$PASSWORD"']:
82 plantestsuite("samba4.ldb.ldaps with options %s(dc)" % options, "dc",
83 "%s/test_ldb.sh ldaps $SERVER_IP %s" % (bbdir, options))
85 for options in ['-U"$USERNAME%$PASSWORD"']:
86 plantestsuite("samba4.ldb.ldapi with options %s(dc:local)" % options, "dc:local",
87 "%s/test_ldb.sh ldapi $PREFIX_ABS/dc/private/ldapi %s" % (bbdir, options))
89 for t in smb4torture_testsuites("ldap."):
90 plansmbtorturetestsuite(t, "dc", '-U"$USERNAME%$PASSWORD" //$SERVER_IP/_none_')
92 ldbdir = os.path.join(srcdir(), "lib/ldb")
93 # Don't run LDB tests when using system ldb, as we won't have ldbtest installed
94 if os.path.exists(os.path.join(samba4bindir, "ldbtest")):
95 plantestsuite("ldb.base", "none", "%s/tests/test-tdb-subunit.sh %s" % (ldbdir, samba4bindir))
96 else:
97 skiptestsuite("ldb.base", "Using system LDB, ldbtest not available")
99 # Tests for RPC
101 # add tests to this list as they start passing, so we test
102 # that they stay passing
103 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"]
104 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"]
105 drs_rpc_tests = smb4torture_testsuites("drs.rpc")
106 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
107 slow_ncacn_np_tests = ["rpc.samlogon", "rpc.samr.users", "rpc.samr.large-dc", "rpc.samr.users.privileges", "rpc.samr.passwords", "rpc.samr.passwords.pwdlastset"]
108 slow_ncacn_ip_tcp_tests = ["rpc.samr", "rpc.cracknames"]
110 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 # Make sure all tests get run
113 rpc_tests = smb4torture_testsuites("rpc.")
114 auto_rpc_tests = filter(lambda t: t not in all_rpc_tests, rpc_tests)
116 for bindoptions in ["seal,padcheck"] + validate_list + ["bigendian"]:
117 for transport in ["ncalrpc", "ncacn_np", "ncacn_ip_tcp"]:
118 env = "dc"
119 if transport == "ncalrpc":
120 tests = ncalrpc_tests
121 env = "dc:local"
122 elif transport == "ncacn_np":
123 tests = ncacn_np_tests
124 elif transport == "ncacn_ip_tcp":
125 tests = ncacn_ip_tcp_tests
126 else:
127 raise AssertionError("invalid transport %r"% transport)
128 for t in tests:
129 plansmbtorturetestsuite(t, env, ["%s:$SERVER[%s]" % (transport, bindoptions), '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.%s on %s with %s" % (t, transport, bindoptions))
130 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 #Plugin S4 DC tests (confirms named pipe auth forwarding). This can be expanded once kerberos is supported in the plugin DC
134 for bindoptions in ["seal,padcheck"] + validate_list + ["bigendian"]:
135 for t in ncacn_np_tests:
136 env = "plugin_s4_dc"
137 transport = "ncacn_np"
138 plansmbtorturetestsuite(t, env, ["%s:$SERVER[%s]" % (transport, bindoptions), '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.%s with %s" % (t, bindoptions))
140 for bindoptions in [""] + validate_list + ["bigendian"]:
141 for t in auto_rpc_tests:
142 plansmbtorturetestsuite(t, "dc", ["$SERVER[%s]" % bindoptions, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.%s with %s" % (t, bindoptions))
144 t = "rpc.countcalls"
145 plansmbtorturetestsuite(t, "dc:local", ["$SERVER[%s]" % bindoptions, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], modname="samba4.%s" % t)
147 for transport in ["ncacn_np", "ncacn_ip_tcp"]:
148 env = "dc"
149 if transport == "ncacn_np":
150 tests = slow_ncacn_np_tests
151 elif transport == "ncacn_ip_tcp":
152 tests = slow_ncacn_ip_tcp_tests
153 else:
154 raise AssertionError("Invalid transport %r" % transport)
155 for t in tests:
156 plansmbtorturetestsuite(t, env, ["%s:$SERVER" % transport, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.%s on %s" % (t, transport))
158 # Tests for the DFS referral calls implementation
159 for t in smb4torture_testsuites("dfs."):
160 plansmbtorturetestsuite(t, "dc", '//$SERVER/ipc\$ -U$USERNAME%$PASSWORD')
161 plansmbtorturetestsuite(t, "plugin_s4_dc", '//$SERVER/ipc\$ -U$USERNAME%$PASSWORD')
163 # Tests for the NET API (net.api.become.dc tested below against all the roles)
164 net_tests = filter(lambda x: "net.api.become.dc" not in x, smb4torture_testsuites("net."))
165 for t in net_tests:
166 plansmbtorturetestsuite(t, "dc", '$SERVER[%s] -U$USERNAME%%$PASSWORD -W$DOMAIN' % validate)
168 # Tests for session keys and encryption of RPC pipes
169 # FIXME: Integrate these into a single smbtorture test
171 transport = "ncacn_np"
172 for ntlmoptions in [
173 "-k no --option=usespnego=yes",
174 "-k no --option=usespnego=yes --option=ntlmssp_client:128bit=no",
175 "-k no --option=usespnego=yes --option=ntlmssp_client:56bit=yes",
176 "-k no --option=usespnego=yes --option=ntlmssp_client:56bit=no",
177 "-k no --option=usespnego=yes --option=ntlmssp_client:128bit=no --option=ntlmssp_client:56bit=yes",
178 "-k no --option=usespnego=yes --option=ntlmssp_client:128bit=no --option=ntlmssp_client:56bit=no",
179 "-k no --option=usespnego=yes --option=clientntlmv2auth=yes",
180 "-k no --option=usespnego=yes --option=clientntlmv2auth=yes --option=ntlmssp_client:128bit=no",
181 "-k no --option=usespnego=yes --option=clientntlmv2auth=yes --option=ntlmssp_client:128bit=no --option=ntlmssp_client:56bit=yes",
182 "-k no --option=usespnego=no --option=clientntlmv2auth=yes",
183 "-k no --option=gensec:spnego=no --option=clientntlmv2auth=yes",
184 "-k no --option=usespnego=no"]:
185 name = "rpc.lsa.secrets on %s with with %s" % (transport, ntlmoptions)
186 plansmbtorturetestsuite('rpc.lsa.secrets', "dc", ["%s:$SERVER[]" % (transport), ntlmoptions, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN', '--option=gensec:target_hostname=$NETBIOSNAME'], "samba4.%s" % name)
187 plansmbtorturetestsuite('rpc.lsa.secrets', "s3dc", ["%s:$SERVER[]" % (transport), ntlmoptions, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN', '--option=gensec:target_hostname=$NETBIOSNAME'], "samba4.%s" % name)
189 transports = ["ncacn_np", "ncacn_ip_tcp"]
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", "plugin_s4_dc"]:
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, ))
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)
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))
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))
229 plansmbtorturetestsuite('rpc.echo', "dc", ['ncacn_np:$SERVER[smb2]', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.rpc.echo on ncacn_np over smb2")
231 plansmbtorturetestsuite('ntp.signd', "dc:local", ['ncacn_np:$SERVER', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.ntp.signd")
233 nbt_tests = smb4torture_testsuites("nbt.")
234 for t in nbt_tests:
235 plansmbtorturetestsuite(t, "dc", "//$SERVER/_none_ -U\"$USERNAME%$PASSWORD\"")
237 # Tests against the NTVFS POSIX backend
238 ntvfsargs = ["--option=torture:sharedelay=10000", "--option=torture:oplocktimeout=3", "--option=torture:writetimeupdatedelay=50000"]
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.")
245 netapi = smb4torture_testsuites("netapi.")
247 libsmbclient = smb4torture_testsuites("libsmbclient.")
249 for t in base + raw + smb2 + netapi + libsmbclient:
250 plansmbtorturetestsuite(t, "dc", ['//$SERVER/tmp', '-U$USERNAME%$PASSWORD'] + ntvfsargs)
252 plansmbtorturetestsuite("raw.qfileinfo.ipc", "dc", '//$SERVER/ipc\$ -U$USERNAME%$PASSWORD')
254 for t in smb4torture_testsuites("rap."):
255 plansmbtorturetestsuite(t, "dc", '//$SERVER/IPC\$ -U$USERNAME%$PASSWORD')
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)
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)
267 plansmbtorturetestsuite('echo.udp', 'dc:local', '//$SERVER/whatever')
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")
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)
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")
286 plansmbtorturetestsuite("drs.unit", "none", "ncalrpc:")
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)))
293 # DNS tests
294 planpythontestsuite("dc", "samba.tests.dns")
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.
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", "chgdcpass", [os.path.join(bbdir, "test_chgdcpass.sh"), '$SERVER', "CHGDCPASS\$", '$REALM', '$DOMAIN', '$PREFIX', "aes256-cts-hmac-sha1-96", '$SELFTEST_PREFIX/chgdcpass'])
319 plantestsuite_loadlist("samba4.rpc.echo against NetBIOS alias", "dc", [valgrindify(smb4torture), "$LISTOPT", 'ncacn_np:$NETBIOSALIAS', '-U$DOMAIN/$USERNAME%$PASSWORD', 'rpc.echo'])
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)
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'])
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")
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)
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)
361 plantestsuite("samba4.blackbox.bogusdomain", "s3member", ["testprogs/blackbox/bogus.sh", "$NETBIOSNAME", "xcopy_share", '$USERNAME', '$PASSWORD', '$DC_USERNAME', '$DC_PASSWORD'])
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)
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")
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\""]
376 winbind_struct_tests = smb4torture_testsuites("winbind.struct")
377 winbind_ndr_tests = smb4torture_testsuites("winbind.ndr")
378 for env in ["plugin_s4_dc", "dc", "s4member"]:
379 for t in winbind_struct_tests:
380 plansmbtorturetestsuite(t, env, wb_opts + ['//_none_/_none_'])
382 for t in winbind_ndr_tests:
383 plansmbtorturetestsuite(t, env, wb_opts + ['//_none_/_none_'])
385 nsstest4 = binpath("nsstest")
386 for env in ["plugin_s4_dc", "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")
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)
405 planpythontestsuite("none", "selftest.tests.test_suite", extra_path=[srcdir()])
406 planpythontestsuite("none", "api", name="ldb.python", extra_path=['lib/ldb/tests/python'])
407 planpythontestsuite("none", "samba.tests.credentials")
408 planoldpythontestsuite("dc:local", "samba.tests.gensec", extra_args=['-U"$USERNAME%$PASSWORD"'])
409 planpythontestsuite("none", "samba.tests.registry")
410 planoldpythontestsuite("none", "simple", extra_path=["%s/lib/tdb/python/tests" % srcdir()], name="tdb.python")
411 planpythontestsuite("none", "samba.tests.auth")
412 planpythontestsuite("none", "samba.tests.getopt")
413 planpythontestsuite("none", "samba.tests.security")
414 planpythontestsuite("none", "samba.tests.dcerpc.misc")
415 planpythontestsuite("none", "samba.tests.param")
416 planpythontestsuite("none", "samba.tests.upgrade")
417 planpythontestsuite("none", "samba.tests.core")
418 planpythontestsuite("none", "samba.tests.provision")
419 planpythontestsuite("none", "samba.tests.samba3")
420 planpythontestsuite("none", "samba.tests.strings")
421 planpythontestsuite("dc:local", "samba.tests.dcerpc.sam")
422 planpythontestsuite("dc:local", "samba.tests.dsdb")
423 planpythontestsuite("none", "samba.tests.netcmd")
424 planpythontestsuite("dc:local", "samba.tests.dcerpc.bare")
425 planpythontestsuite("dc:local", "samba.tests.dcerpc.unix")
426 planpythontestsuite("dc:local", "samba.tests.dcerpc.srvsvc")
427 planpythontestsuite("none", "samba.tests.dcerpc.rpc_talloc")
428 planpythontestsuite("none", "samba.tests.samdb")
429 planpythontestsuite("none", "samba.tests.hostconfig")
430 planpythontestsuite("none", "samba.tests.messaging")
431 planpythontestsuite("none", "samba.tests.samba3sam")
433 planpythontestsuite("dc:local", "samba.tests.samba_tool.timecmd")
434 planpythontestsuite("dc:local", "samba.tests.samba_tool.user")
435 planpythontestsuite("dc:local", "samba.tests.samba_tool.group")
437 planpythontestsuite("none", "subunit")
438 planpythontestsuite("dc:local", "samba.tests.dcerpc.rpcecho")
439 planpythontestsuite("none", "wafsamba.tests.test_suite", extra_path=[os.path.join(samba4srcdir, "..", "buildtools"), os.path.join(samba4srcdir, "..", "buildtools", "wafadmin")])
440 planoldpythontestsuite("dc:local", "samba.tests.dcerpc.registry", extra_args=['-U"$USERNAME%$PASSWORD"'])
441 planoldpythontestsuite("dc", "samba.tests.dcerpc.dnsserver", extra_args=['-U"$USERNAME%$PASSWORD"'])
442 planoldpythontestsuite("plugin_s4_dc", "samba.tests.dcerpc.dnsserver", extra_args=['-U"$USERNAME%$PASSWORD"'])
443 plantestsuite("samba4.ldap.python(dc)", "dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/ldap.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
444 plantestsuite("samba4.tokengroups.python(dc)", "dc:local", [python, os.path.join(samba4srcdir, "dsdb/tests/python/token_group.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
445 plantestsuite("samba4.sam.python(dc)", "dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/sam.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
446 planoldpythontestsuite("dc", "dsdb_schema_info",
447 extra_path=[os.path.join(samba4srcdir, 'dsdb/tests/python')],
448 name="samba4.schemaInfo.python(dc)",
449 extra_args=['-U"$DOMAIN/$DC_USERNAME%$DC_PASSWORD"'])
450 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)
451 plantestsuite("samba4.ldap.dirsync.python(dc)", "dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/dirsync.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
452 plantestsuite("samba4.ldap.sites.python(dc)", "dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/sites.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
453 for env in ["dc", "fl2000dc", "fl2003dc", "fl2008r2dc"]:
454 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'])
455 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"])
456 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'])
457 plantestsuite("samba4.ldap.acl.python(%s)" % env, env, [python, os.path.join(samba4srcdir, "dsdb/tests/python/acl.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
458 if env != "fl2000dc":
459 # This test makes excessive use of the "userPassword" attribute which
460 # isn't available on DCs with Windows 2000 domain function level -
461 # therefore skip it in that configuration
462 plantestsuite("samba4.ldap.passwords.python(%s)" % env, env, [python, os.path.join(samba4srcdir, "dsdb/tests/python/passwords.py"), "$SERVER", '-U"$USERNAME%$PASSWORD"', "-W$DOMAIN"])
463 planpythontestsuite("dc:local", "samba.tests.upgradeprovisionneeddc")
464 planpythontestsuite("none", "samba.tests.upgradeprovision")
465 planpythontestsuite("none", "samba.tests.xattr")
466 planpythontestsuite("none", "samba.tests.ntacls")
467 plantestsuite("samba4.deletetest.python(dc)", "dc", ['PYTHONPATH="$PYTHONPATH:%s/lib/subunit/python:%s/lib/testtools"' % (srcdir(), srcdir()),
468 python, os.path.join(samba4srcdir, "dsdb/tests/python/deletetest.py"),
469 '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
470 planpythontestsuite("none", "samba.tests.policy")
471 plantestsuite("samba4.blackbox.samba3dump", "none", [python, os.path.join(samba4srcdir, "scripting/bin/samba3dump"), os.path.join(samba4srcdir, "../testdata/samba3")], allow_empty_output=True)
472 plantestsuite("samba4.blackbox.upgrade", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_s3upgrade.sh"), '$PREFIX/provision'])
473 plantestsuite("samba4.blackbox.provision.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_provision.sh"), '$PREFIX/provision'])
474 plantestsuite("samba4.blackbox.upgradeprovision.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_upgradeprovision.sh"), '$PREFIX/provision'])
475 plantestsuite("samba4.blackbox.setpassword.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_setpassword.sh"), '$PREFIX/provision'])
476 plantestsuite("samba4.blackbox.newuser.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_newuser.sh"), '$PREFIX/provision'])
477 plantestsuite("samba4.blackbox.group.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_group.sh"), '$PREFIX/provision'])
478 plantestsuite("samba4.blackbox.spn.py(dc:local)", "dc:local", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_spn.sh"), '$PREFIX/dc'])
479 plantestsuite("samba4.ldap.bind(dc)", "dc", [python, os.path.join(srcdir(), "auth/credentials/tests/bind.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"'])
481 # DRS python tests
482 planoldpythontestsuite("vampire_dc", "samba.tests.blackbox.samba_tool_drs",
483 environ={'DC1': '$DC_SERVER', 'DC2': '$VAMPIRE_DC_SERVER'},
484 extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
485 planoldpythontestsuite("vampire_dc", "replica_sync",
486 extra_path=[os.path.join(samba4srcdir, 'torture/drs/python')],
487 name="samba4.drs.replica_sync.python(vampire_dc)",
488 environ={'DC1': '$DC_SERVER', 'DC2': '$VAMPIRE_DC_SERVER'},
489 extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
490 planoldpythontestsuite("vampire_dc", "delete_object",
491 extra_path=[os.path.join(samba4srcdir, 'torture/drs/python')],
492 name="samba4.drs.delete_object.python(vampire_dc)",
493 environ={'DC1': '$DC_SERVER', 'DC2': '$VAMPIRE_DC_SERVER'},
494 extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
495 planoldpythontestsuite("vampire_dc", "fsmo",
496 name="samba4.drs.fsmo.python(vampire_dc)",
497 extra_path=[os.path.join(samba4srcdir, 'torture/drs/python')],
498 environ={'DC1': "$DC_SERVER", 'DC2': "$VAMPIRE_DC_SERVER"},
499 extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
500 planoldpythontestsuite("vampire_dc", "repl_schema",
501 extra_path=[os.path.join(samba4srcdir, 'torture/drs/python')],
502 name="samba4.drs.repl_schema.python(vampire_dc)",
503 environ={'DC1': "$DC_SERVER", 'DC2': '$VAMPIRE_DC_SERVER'},
504 extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
506 # This makes sure we test the rid allocation code
507 t = "rpc.samr.large-dc"
508 plansmbtorturetestsuite(t, "vampire_dc", ['$SERVER', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], modname=("samba4.%s.one" % t))
509 plansmbtorturetestsuite(t, "vampire_dc", ['$SERVER', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], modname="samba4.%s.two" % t)
511 # some RODC testing
512 for env in ['rodc']:
513 plansmbtorturetestsuite('rpc.echo', env, ['ncacn_np:$SERVER', "-k", "yes", '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], modname="samba4.rpc.echo")
514 plansmbtorturetestsuite('rpc.echo', "%s:local" % env, ['ncacn_np:$SERVER', "-k", "yes", '-P', '--workgroup=$DOMAIN'], modname="samba4.rpc.echo")
515 plantestsuite("samba4.blackbox.provision-backend", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_provision-backend.sh"), '$PREFIX/provision'])
517 # Test renaming the DC
518 plantestsuite("samba4.blackbox.renamedc.sh", "none", ["PYTHON=%s" % python, os.path.join(bbdir, "renamedc.sh"), '$PREFIX/provision'])
520 # Demote the vampire DC, it must be the last test on the VAMPIRE DC
521 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'])
522 # check the databases are all OK. PLEASE LEAVE THIS AS THE LAST TEST
523 for env in ["dc", "fl2000dc", "fl2003dc", "fl2008r2dc"]:
524 plantestsuite("samba4.blackbox.dbcheck(%s)" % env, env + ":local" , ["PYTHON=%s" % python, os.path.join(bbdir, "dbcheck.sh"), '$PREFIX/provision', configuration])