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
22 sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../selftest"))
23 from selftesthelpers import *
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", "")
32 validate_list = [validate]
36 def plansmbtorturetestsuite(name, env, options, modname=None):
38 modname = "samba4.%s" % name
39 cmdline = "%s $LISTOPT %s %s" % (valgrindify(smb4torture), options, name)
40 plantestsuite_loadlist(modname, env, cmdline)
42 def smb4torture_testsuites(prefix):
43 return filter(lambda x: x.startswith(prefix), smb4torture_testsuite_list)
45 subprocess.call([smb4torture, "-V"])
47 bbdir = os.path.join(srcdir(), "testprogs/blackbox")
49 configuration = "--configfile=$SMB_CONF_PATH"
51 torture_options = [configuration, "--maximum-runtime=$SELFTEST_MAXTIME", "--target=samba4", "--basedir=$SELFTEST_TMPDIR"]
52 if not os.getenv("SELFTEST_VERBOSE"):
53 torture_options.append("--option=torture:progress=no")
54 torture_options.append("--format=subunit")
55 if os.getenv("SELFTEST_QUICK"):
56 torture_options.append("--option=torture:quick=yes")
57 smb4torture += " " + " ".join(torture_options)
59 print "OPTIONS %s" % " ".join(torture_options)
61 # Simple tests for LDAP and CLDAP
62 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']:
63 plantestsuite("samba4.ldb.ldap with options %s(dc)" % options, "dc", "%s/test_ldb.sh ldap $SERVER %s" % (bbdir, options))
65 # see if we support ADS on the Samba3 side
67 config_h = os.environ["CONFIG_H"]
69 config_h = os.path.join(samba4bindir, "default/include/config.h")
71 f = open(config_h, 'r')
73 # The other parts of the HAVE_ADS test are always supplied by the top level build
74 have_ads_support = ("HAVE_LDAP 1" in f.read())
78 # see if we support ldaps
79 f = open(config_h, 'r')
81 have_tls_support = ("ENABLE_GNUTLS 1" in f.read())
86 for options in ['-U"$USERNAME%$PASSWORD"']:
87 plantestsuite("samba4.ldb.ldaps with options %s(dc)" % options, "dc",
88 "%s/test_ldb.sh ldaps $SERVER_IP %s" % (bbdir, options))
90 for options in ['-U"$USERNAME%$PASSWORD"']:
91 plantestsuite("samba4.ldb.ldapi with options %s(dc:local)" % options, "dc:local",
92 "%s/test_ldb.sh ldapi $PREFIX_ABS/dc/private/ldapi %s" % (bbdir, options))
94 for t in smb4torture_testsuites("ldap."):
95 plansmbtorturetestsuite(t, "dc", '-U"$USERNAME%$PASSWORD" //$SERVER_IP/_none_')
97 ldbdir = os.path.join(srcdir(), "lib/ldb")
98 # Don't run LDB tests when using system ldb, as we won't have ldbtest installed
99 if os.path.exists(os.path.join(samba4bindir, "ldbtest")):
100 plantestsuite("ldb.base", "none", "%s/tests/test-tdb.sh" % ldbdir,
101 allow_empty_output=True)
103 skiptestsuite("ldb.base", "Using system LDB, ldbtest not available")
107 # add tests to this list as they start passing, so we test
108 # that they stay passing
109 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"]
110 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"]
111 drs_rpc_tests = smb4torture_testsuites("drs.rpc")
112 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
113 slow_ncacn_np_tests = ["rpc.samlogon", "rpc.samr.users", "rpc.samr.large-dc", "rpc.samr.users.privileges", "rpc.samr.passwords", "rpc.samr.passwords.pwdlastset"]
114 slow_ncacn_ip_tcp_tests = ["rpc.samr", "rpc.cracknames"]
116 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"]
118 # Make sure all tests get run
119 rpc_tests = smb4torture_testsuites("rpc.")
120 auto_rpc_tests = filter(lambda t: t not in all_rpc_tests, rpc_tests)
122 for bindoptions in ["seal,padcheck"] + validate_list + ["bigendian"]:
123 for transport in ["ncalrpc", "ncacn_np", "ncacn_ip_tcp"]:
125 if transport == "ncalrpc":
126 tests = ncalrpc_tests
128 elif transport == "ncacn_np":
129 tests = ncacn_np_tests
130 elif transport == "ncacn_ip_tcp":
131 tests = ncacn_ip_tcp_tests
133 plantestsuite_loadlist("samba4.%s on %s with %s" % (t, transport, bindoptions), env, [valgrindify(smb4torture), "$LISTOPT", "%s:$SERVER[%s]" % (transport, bindoptions), '-U$USERNAME%$PASSWORD', '-W', '$DOMAIN', t])
134 plantestsuite_loadlist("samba4.rpc.samba3.sharesec on %s with %s" % (transport, bindoptions), env, [valgrindify(smb4torture), "$LISTOPT", "%s:$SERVER[%s]" % (transport, bindoptions), '-U$USERNAME%$PASSWORD', '-W', '$DOMAIN', '--option=torture:share=tmp', 'rpc.samba3-sharesec'])
136 #Plugin S4 DC tests (confirms named pipe auth forwarding). This can be expanded once kerberos is supported in the plugin DC
139 for bindoptions in ["seal,padcheck"] + validate_list + ["bigendian"]:
140 for t in ncacn_np_tests:
142 transport = "ncacn_np"
143 plantestsuite_loadlist("samba4.%s with %s" % (t, bindoptions), env, [valgrindify(smb4torture), "$LISTOPT", "%s:$SERVER[%s]" % (transport, bindoptions), '-U$USERNAME%$PASSWORD', '-W', '$DOMAIN', '-k', 'no', t])
145 for bindoptions in [""] + validate_list + ["bigendian"]:
146 for t in auto_rpc_tests:
147 plantestsuite_loadlist("samba4.%s with %s" % (t, bindoptions), "dc", [valgrindify(smb4torture), "$LISTOPT", "$SERVER[%s]" % bindoptions, '-U$USERNAME%$PASSWORD', '-W', '$DOMAIN', t])
150 plantestsuite_loadlist("samba4.%s" % t, "dc:local", [valgrindify(smb4torture), "$LISTOPT", "$SERVER[%s]" % bindoptions, '-U$USERNAME%$PASSWORD', '-W', '$DOMAIN', t])
152 for transport in ["ncacn_np", "ncacn_ip_tcp"]:
154 if transport == "ncacn_np":
155 tests = slow_ncacn_np_tests
156 elif transport == "ncacn_ip_tcp":
157 tests = slow_ncacn_ip_tcp_tests
159 plantestsuite_loadlist("samba4.%s on %s" % (t, transport), env, [valgrindify(smb4torture), "$LISTOPT", "%s:$SERVER" % transport, '-U$USERNAME%$PASSWORD', '-W', '$DOMAIN', t])
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."))
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"
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 plantestsuite_loadlist("samba4.%s" % name, "dc", [smb4torture, "$LISTOPT", "%s:$SERVER[]" % (transport), ntlmoptions, '-U$USERNAME%$PASSWORD', '-W', '$DOMAIN', '--option=gensec:target_hostname=$NETBIOSNAME', 'rpc.lsa.secrets'])
191 transports = ["ncacn_np", "ncacn_ip_tcp"]
193 #Kerberos varies between functional levels, so it is important to check this on all of them
194 for env in ["dc", "fl2000dc", "fl2003dc", "fl2008r2dc"]:
195 transport = "ncacn_np"
196 plantestsuite_loadlist("samba4.rpc.pac on %s" % (transport,), env, [smb4torture, "$LISTOPT", "%s:$SERVER[]" % (transport, ), '-U$USERNAME%$PASSWORD', '-W', '$DOMAIN', 'rpc.pac'])
197 for transport in transports:
198 plantestsuite_loadlist("samba4.rpc.lsa.secrets on %s with Kerberos" % (transport,), env, [smb4torture, "$LISTOPT", "%s:$SERVER[]" % (transport, ), '-k', 'yes', '-U$USERNAME%$PASSWORD', '-W', '$DOMAIN', '--option=gensec:target_hostname=$NETBIOSNAME', 'rpc.lsa.secrets'])
199 plantestsuite_loadlist("samba4.rpc.lsa.secrets on %s with Kerberos - use target principal" % (transport,), env, [smb4torture, "$LISTOPT", "%s:$SERVER[]" % (transport, ), '-k', 'yes', '-U$USERNAME%$PASSWORD', '-W', '$DOMAIN', "--option=clientusespnegoprincipal=yes", '--option=gensec:target_hostname=$NETBIOSNAME', 'rpc.lsa.secrets'])
200 plantestsuite_loadlist("samba4.rpc.lsa.secrets on %s with Kerberos - use Samba3 style login" % transport, env, [smb4torture, "$LISTOPT", "%s:$SERVER" % transport, '-k', 'yes', '-U$USERNAME%$PASSWORD', '-W', '$DOMAIN', "--option=gensec:fake_gssapi_krb5=yes", '--option=gensec:gssapi_krb5=no', '--option=gensec:target_hostname=$NETBIOSNAME', "rpc.lsa.secrets.none*"])
201 plantestsuite_loadlist("samba4.rpc.lsa.secrets on %s with Kerberos - use Samba3 style login, use target principal" % transport, env, [smb4torture, "$LISTOPT", "%s:$SERVER" % transport, '-k', 'yes', '-U$USERNAME%$PASSWORD', '-W', '$DOMAIN', "--option=clientusespnegoprincipal=yes", '--option=gensec:fake_gssapi_krb5=yes', '--option=gensec:gssapi_krb5=no', '--option=gensec:target_hostname=$NETBIOSNAME', "rpc.lsa.secrets.none*"])
202 plantestsuite_loadlist("samba4.rpc.echo on %s" % (transport, ), env, [smb4torture, "$LISTOPT", "%s:$SERVER[]" % (transport,), '-U$USERNAME%$PASSWORD', '-W', '$DOMAIN', 'rpc.echo'])
204 # Echo tests test bulk Kerberos encryption of DCE/RPC
205 for bindoptions in ["connect", "spnego", "spnego,sign", "spnego,seal"] + validate_list + ["padcheck", "bigendian", "bigendian,seal"]:
206 echooptions = "--option=socket:testnonblock=True --option=torture:quick=yes -k yes"
207 plantestsuite_loadlist("samba4.rpc.echo on %s with %s and %s" % (transport, bindoptions, echooptions), env, [smb4torture, "$LISTOPT", "%s:$SERVER[%s]" % (transport, bindoptions), echooptions, '-U$USERNAME%$PASSWORD', '-W', '$DOMAIN', 'rpc.echo'])
208 plansmbtorturetestsuite("net.api.become.dc", env, '$SERVER[%s] -U$USERNAME%%$PASSWORD -W $DOMAIN' % validate)
210 for bindoptions in ["sign", "seal"]:
212 plantestsuite_loadlist("samba4.rpc.backupkey with %s" % (bindoptions), env, [smb4torture, "$LISTOPT", "ncacn_np:$SERVER[%s]" % ( bindoptions), '-U$USERNAME%$PASSWORD', '-W', '$DOMAIN', 'rpc.backupkey'])
214 for transport in transports:
215 for bindoptions in ["sign", "seal"]:
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":
230 plantestsuite_loadlist("samba4.rpc.echo on %s with %s and %s" % (transport, bindoptions, ntlmoptions), env, [smb4torture, "$LISTOPT", "%s:$SERVER[%s]" % (transport, bindoptions), ntlmoptions, '-U$USERNAME%$PASSWORD', '-W', '$DOMAIN', 'rpc.echo'])
232 plantestsuite_loadlist("samba4.rpc.echo on ncacn_np over smb2", "dc", [smb4torture, "$LISTOPT", 'ncacn_np:$SERVER[smb2]', '-U$USERNAME%$PASSWORD', '-W', '$DOMAIN', 'rpc.echo'])
234 plantestsuite_loadlist("samba4.ntp.signd", "dc:local", [smb4torture, "$LISTOPT", 'ncacn_np:$SERVER', '-U$USERNAME%$PASSWORD', '-W', '$DOMAIN', 'ntp.signd'])
236 nbt_tests = smb4torture_testsuites("nbt.")
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' + " " + " ".join(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
262 plantestsuite_loadlist("samba4.ntvfs.cifs.krb5.%s" % t, "dc", [valgrindify(smb4torture), "$LISTOPT", '//$NETBIOSNAME/cifs', '-U$USERNAME%$PASSWORD', '--kerberos=yes'] + ntvfsargs + [t])
264 # Test NTVFS CIFS backend with S4U2Self and S4U2Proxy
266 plantestsuite_loadlist("samba4.ntvfs.cifs.ntlm.%s" % t, "dc", [valgrindify(smb4torture), "$LISTOPT", '//$NETBIOSNAME/cifs', '-U$USERNAME%$PASSWORD', '--kerberos=no'] + ntvfsargs + [t])
267 plantestsuite_loadlist("samba4.ntvfs.cifs.krb5.%s" % t, "rpc_proxy", [valgrindify(smb4torture), "$LISTOPT", '//$NETBIOSNAME/cifs_to_dc', '-U$DC_USERNAME%$DC_PASSWORD', '--kerberos=yes'] + ntvfsargs + [t])
268 plantestsuite_loadlist("samba4.ntvfs.cifs.ntlm.%s" % t, "rpc_proxy", [valgrindify(smb4torture), "$LISTOPT", '//$NETBIOSNAME/cifs_to_dc', '-U$DC_USERNAME%$DC_PASSWORD', '--kerberos=no'] + ntvfsargs + [t])
270 plansmbtorturetestsuite('echo.udp', 'dc:local', '//$SERVER/whatever')
273 for t in smb4torture_testsuites("local."):
274 plansmbtorturetestsuite(t, "none", "ncalrpc:")
276 # Confirm these tests with the system iconv too
277 for t in ["local.convert_string_handle", "local.convert_string", "local.ndr"]:
278 options = "ncalrpc: --option='iconv:use_builtin_handlers=false'"
279 plansmbtorturetestsuite(t, "none", options,
280 modname="samba4.%s.system.iconv" % t)
282 tdbtorture4 = binpath("tdbtorture")
283 if os.path.exists(tdbtorture4):
284 plantestsuite("tdb.stress", "none", valgrindify(tdbtorture4))
286 skiptestsuite("tdb.stress", "Using system TDB, tdbtorture not available")
288 plansmbtorturetestsuite("drs.unit", "none", "ncalrpc:")
291 for f in sorted(os.listdir(os.path.join(samba4srcdir, "../pidl/tests"))):
292 if f.endswith(".pl"):
293 planperltestsuite("pidl.%s" % f[:-3], os.path.normpath(os.path.join(samba4srcdir, "../pidl/tests", f)))
296 # tests that interact directly with the command-line tools rather than using
297 # the API. These mainly test that the various command-line options of commands
300 planpythontestsuite("none", "samba.tests.blackbox.ndrdump")
301 planpythontestsuite("none", "samba.tests.source")
302 plantestsuite("samba4.blackbox.samba_tool(dc:local)", "dc:local", [os.path.join(samba4srcdir, "utils/tests/test_samba_tool.sh"), '$SERVER', "$USERNAME", "$PASSWORD", "$DOMAIN"])
303 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])
304 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])
305 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])
306 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])
307 plantestsuite("samba4.blackbox.ktpass(dc)", "dc", [os.path.join(bbdir, "test_ktpass.sh"), '$PREFIX'])
308 plantestsuite("samba4.blackbox.passwords(dc:local)", "dc:local", [os.path.join(bbdir, "test_passwords.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$REALM', '$DOMAIN', "$PREFIX"])
309 plantestsuite("samba4.blackbox.export.keytab(dc:local)", "dc:local", [os.path.join(bbdir, "test_export_keytab.sh"), '$SERVER', '$USERNAME', '$REALM', '$DOMAIN', "$PREFIX"])
310 plantestsuite("samba4.blackbox.cifsdd(dc)", "dc", [os.path.join(samba4srcdir, "client/tests/test_cifsdd.sh"), '$SERVER', '$USERNAME', '$PASSWORD', "$DOMAIN"])
311 plantestsuite("samba4.blackbox.nmblookup(dc)", "dc", [os.path.join(samba4srcdir, "utils/tests/test_nmblookup.sh"), '$NETBIOSNAME', '$NETBIOSALIAS', '$SERVER', '$SERVER_IP'])
312 plantestsuite("samba4.blackbox.locktest(dc)", "dc", [os.path.join(samba4srcdir, "torture/tests/test_locktest.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$DOMAIN', '$PREFIX'])
313 plantestsuite("samba4.blackbox.masktest", "dc", [os.path.join(samba4srcdir, "torture/tests/test_masktest.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$DOMAIN', '$PREFIX'])
314 plantestsuite("samba4.blackbox.gentest(dc)", "dc", [os.path.join(samba4srcdir, "torture/tests/test_gentest.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$DOMAIN', "$PREFIX"])
315 plantestsuite("samba4.blackbox.wbinfo(dc:local)", "dc:local", [os.path.join(samba4srcdir, "../nsswitch/tests/test_wbinfo.sh"), '$DOMAIN', '$USERNAME', '$PASSWORD', "dc"])
316 plantestsuite("samba4.blackbox.wbinfo(s4member:local)", "s4member:local", [os.path.join(samba4srcdir, "../nsswitch/tests/test_wbinfo.sh"), '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', "s4member"])
317 plantestsuite("samba4.blackbox.chgdcpass(dc)", "dc", [os.path.join(bbdir, "test_chgdcpass.sh"), '$SERVER', "LOCALDC\$", '$REALM', '$DOMAIN', '$PREFIX', "aes256-cts-hmac-sha1-96", '$SELFTEST_PREFIX/dc'])
319 # Tests using the "Simple" NTVFS backend
320 for t in ["base.rw1"]:
321 plantestsuite_loadlist("samba4.ntvfs.simple.%s" % t, "dc", [valgrindify(smb4torture), "$LISTOPT", "//$SERVER/simple", '-U$USERNAME%$PASSWORD', t])
323 # Domain S4member Tests
324 plantestsuite_loadlist("samba4.rpc.echo against s4member server with local creds", "s4member", [valgrindify(smb4torture), "$LISTOPT", 'ncacn_np:$NETBIOSNAME', '-U$NETBIOSNAME/$USERNAME%$PASSWORD', 'rpc.echo'])
325 plantestsuite_loadlist("samba4.rpc.echo against s4member server with domain creds", "s4member", [valgrindify(smb4torture), "$LISTOPT", 'ncacn_np:$NETBIOSNAME', '-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD', 'rpc.echo'])
326 plantestsuite_loadlist("samba4.rpc.samr against s4member server with local creds", "s4member", [valgrindify(smb4torture), "$LISTOPT", 'ncacn_np:$NETBIOSNAME', '-U$NETBIOSNAME/$USERNAME%$PASSWORD', "rpc.samr"])
327 plantestsuite_loadlist("samba4.rpc.samr.users against s4member server with local creds", "s4member", [valgrindify(smb4torture), "$LISTOPT", 'ncacn_np:$NETBIOSNAME', '-U$NETBIOSNAME/$USERNAME%$PASSWORD', "rpc.samr.users"])
328 plantestsuite_loadlist("samba4.rpc.samr.passwords against s4member server with local creds", "s4member", [valgrindify(smb4torture), "$LISTOPT", 'ncacn_np:$NETBIOSNAME', '-U$NETBIOSNAME/$USERNAME%$PASSWORD', "rpc.samr.passwords"])
329 plantestsuite("samba4.blackbox.smbclient against s4member server with local creds", "s4member", [os.path.join(samba4srcdir, "client/tests/test_smbclient.sh"), '$NETBIOSNAME', '$USERNAME', '$PASSWORD', '$NETBIOSNAME', '$PREFIX'])
332 plantestsuite_loadlist("samba4.rpc.echo against rpc proxy with domain creds", "rpc_proxy", [valgrindify(smb4torture), "$LISTOPT", 'ncacn_ip_tcp:$NETBIOSNAME', '-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD', "rpc.echo"])
337 "-k no --option=usespnego=no",
338 "-k no --option=gensec:spengo=no",
340 "-k yes --option=gensec:fake_gssapi_krb5=yes --option=gensec:gssapi_krb5=no"]:
341 for signing in ["--signing=on", "--signing=required"]:
342 signoptions = "%s %s" % (mech, signing)
343 name = "smb.signing on with %s" % signoptions
344 plantestsuite_loadlist("samba4.%s" % name, "dc", [valgrindify(smb4torture), "$LISTOPT", '//$NETBIOSNAME/xcopy_share', signoptions, '-U$USERNAME%$PASSWORD', 'base.xcopy'])
348 "-k no --option=usespnego=no",
349 "-k no --option=gensec:spengo=no",
351 signoptions = "%s --signing=off" % mech
352 name = "smb.signing disabled on with %s" % signoptions
353 plantestsuite_loadlist("samba4.%s domain-creds" % name, "s4member", [valgrindify(smb4torture), "$LISTOPT", '//$NETBIOSNAME/xcopy_share', signoptions, '-U$DC_USERNAME%$DC_PASSWORD', 'base.xcopy'])
355 plantestsuite_loadlist("samba4.%s domain-creds" % name, "s3member", [valgrindify(smb4torture), "$LISTOPT", '//$NETBIOSNAME/xcopy_share', signoptions, '-U$DC_USERNAME%$DC_PASSWORD', 'base.xcopy'])
356 plantestsuite_loadlist("samba4.%s" % name, "plugin_s4_dc", [valgrindify(smb4torture), "$LISTOPT", '//$NETBIOSNAME/xcopy_share', signoptions, '-U$USERNAME%$PASSWORD', 'base.xcopy'])
357 plantestsuite_loadlist("samba4.%s administrator" % name, "plugin_s4_dc",
358 [valgrindify(smb4torture), "$LISTOPT", '//$NETBIOSNAME/xcopy_share', signoptions, '-U$DC_USERNAME%$DC_PASSWORD', 'base.xcopy'])
362 "-k no --option=usespnego=no",
363 "-k no --option=gensec:spengo=no"]:
364 signoptions = "%s --signing=off" % mech
365 name = "smb.signing on with %s" % signoptions
366 plantestsuite_loadlist("samba4.%s local-creds" % name, "s4member", [valgrindify(smb4torture), "$LISTOPT", '//$NETBIOSNAME/xcopy_share', signoptions, '-U$NETBIOSNAME/$USERNAME%$PASSWORD', 'base.xcopy'])
368 plantestsuite_loadlist("samba4.smb.signing --signing=yes anon", "dc", [valgrindify(smb4torture), "$LISTOPT", '//$NETBIOSNAME/xcopy_share', '-k', 'no', '--signing=yes', '-U%', 'base.xcopy'])
369 plantestsuite_loadlist("samba4.smb.signing --signing=required anon", "dc", [valgrindify(smb4torture), "$LISTOPT", '//$NETBIOSNAME/xcopy_share', '-k', 'no', '--signing=required', '-U%', 'base.xcopy'])
370 plantestsuite_loadlist("samba4.smb.signing --signing=no anon", "s4member", [valgrindify(smb4torture), "$LISTOPT", '//$NETBIOSNAME/xcopy_share', '-k', 'no', '--signing=no', '-U%', 'base.xcopy'])
373 wb_opts = ["--option=\"torture:strict mode=no\"", "--option=\"torture:timelimit=1\"", "--option=\"torture:winbindd_separator=/\"", "--option=\"torture:winbindd_netbios_name=$SERVER\"", "--option=\"torture:winbindd_netbios_domain=$DOMAIN\""]
375 winbind_struct_tests = smb4torture_testsuites("winbind.struct")
376 winbind_ndr_tests = smb4torture_testsuites("winbind.ndr")
377 for env in ["dc", "s4member"]:
378 for t in winbind_struct_tests:
379 plansmbtorturetestsuite(t, env, "%s //_none_/_none_" % " ".join(wb_opts))
381 for t in winbind_ndr_tests:
382 plansmbtorturetestsuite(t, env, "%s //_none_/_none_" % " ".join(wb_opts))
384 nsstest4 = binpath("nsstest")
385 if os.path.exists(nsstest4):
386 plantestsuite("samba4.nss.test using winbind(s4member)", "s4member", [valgrindify(nsstest4), os.path.join(samba4bindir, "shared/libnss_winbind.so")])
388 skiptestsuite("samba4.nss.test using winbind(s4member)", "nsstest not available")
390 subunitrun = valgrindify(python) + " " + os.path.join(samba4srcdir, "scripting/bin/subunitrun")
391 def planoldpythontestsuite(env, module, name=None, extra_path=[], environ={}, extra_args=[]):
392 environ = dict(environ)
393 py_path = list(extra_path)
395 environ["PYTHONPATH"] = ":".join(["$PYTHONPATH"] + py_path)
396 args = ["%s=%s" % item for item in environ.iteritems()]
397 args += [subunitrun, "$LISTOPT", module]
401 plantestsuite(name, env, args)
403 planpythontestsuite("none", "api", name="ldb.python", extra_path=['lib/ldb/tests/python'])
404 planpythontestsuite("none", "samba.tests.credentials")
405 planoldpythontestsuite("dc:local", "samba.tests.gensec", extra_args=['-U"$USERNAME%$PASSWORD"'])
406 planpythontestsuite("none", "samba.tests.registry")
407 planoldpythontestsuite("none", "simple", extra_path=["%s/lib/tdb/python/tests" % srcdir()], name="tdb.python")
408 planpythontestsuite("none", "samba.tests.auth")
409 planpythontestsuite("none", "samba.tests.getopt")
410 planpythontestsuite("none", "samba.tests.security")
411 planpythontestsuite("none", "samba.tests.dcerpc.misc")
412 planpythontestsuite("none", "samba.tests.param")
413 planpythontestsuite("none", "samba.tests.upgrade")
414 planpythontestsuite("none", "samba.tests.core")
415 planpythontestsuite("none", "samba.tests.provision")
416 planpythontestsuite("none", "samba.tests.samba3")
417 planpythontestsuite("none", "samba.tests.strings")
418 planpythontestsuite("dc:local", "samba.tests.dcerpc.sam")
419 planpythontestsuite("dc:local", "samba.tests.dsdb")
420 planpythontestsuite("none", "samba.tests.netcmd")
421 planpythontestsuite("dc:local", "samba.tests.dcerpc.bare")
422 planpythontestsuite("dc:local", "samba.tests.dcerpc.unix")
423 planpythontestsuite("none", "samba.tests.dcerpc.rpc_talloc")
424 planpythontestsuite("none", "samba.tests.samdb")
425 planpythontestsuite("none", "samba.tests.hostconfig")
426 planpythontestsuite("none", "samba.tests.messaging")
427 planpythontestsuite("none", "samba.tests.samba3sam")
429 planpythontestsuite("dc:local", "samba.tests.samba_tool.timecmd")
430 planpythontestsuite("dc:local", "samba.tests.samba_tool.user")
432 planpythontestsuite("none", "subunit")
433 planpythontestsuite("dc:local", "samba.tests.dcerpc.rpcecho")
434 planoldpythontestsuite("dc:local", "samba.tests.dcerpc.registry", extra_args=['-U"$USERNAME%$PASSWORD"'])
435 planoldpythontestsuite("dc", "samba.tests.dcerpc.dnsserver", extra_args=['-U"$USERNAME%$PASSWORD"'])
436 plantestsuite("samba4.ldap.python(dc)", "dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/ldap.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '-W', '$DOMAIN'])
437 plantestsuite("samba4.tokengroups.python(dc)", "dc:local", [python, os.path.join(samba4srcdir, "dsdb/tests/python/token_group.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '-W', '$DOMAIN'])
438 plantestsuite("samba4.sam.python(dc)", "dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/sam.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '-W', '$DOMAIN'])
439 planoldpythontestsuite("dc", "dsdb_schema_info",
440 extra_path=[os.path.join(samba4srcdir, 'dsdb/tests/python')],
441 name="samba4.schemaInfo.python(dc)",
442 extra_args=['-U"$DOMAIN/$DC_USERNAME%$DC_PASSWORD"'])
443 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)
444 plantestsuite("samba4.ldap.dirsync.python(dc)", "dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/dirsync.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '-W', '$DOMAIN'])
445 plantestsuite("samba4.ldap.sites.python(dc)", "dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/sites.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '-W', '$DOMAIN'])
446 for env in ["dc", "fl2000dc", "fl2003dc", "fl2008r2dc"]:
447 plantestsuite("samba4.ldap_schema.python(%s)" % env, env, [python, os.path.join(samba4srcdir, "dsdb/tests/python/ldap_schema.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '-W', '$DOMAIN'])
448 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"])
449 plantestsuite("samba4.ldap.secdesc.python(%s)" % env, env, [python, os.path.join(samba4srcdir, "dsdb/tests/python/sec_descriptor.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '-W', '$DOMAIN'])
450 plantestsuite("samba4.ldap.acl.python(%s)" % env, env, [python, os.path.join(samba4srcdir, "dsdb/tests/python/acl.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '-W', '$DOMAIN'])
451 if env != "fl2000dc":
452 # This test makes excessive use of the "userPassword" attribute which
453 # isn't available on DCs with Windows 2000 domain function level -
454 # therefore skip it in that configuration
455 plantestsuite("samba4.ldap.passwords.python(%s)" % env, env, [python, os.path.join(samba4srcdir, "dsdb/tests/python/passwords.py"), "$SERVER", '-U"$USERNAME%$PASSWORD"', "-W", "$DOMAIN"])
456 planpythontestsuite("dc:local", "samba.tests.upgradeprovisionneeddc")
457 planpythontestsuite("none", "samba.tests.upgradeprovision")
458 planpythontestsuite("none", "samba.tests.xattr")
459 planpythontestsuite("none", "samba.tests.ntacls")
460 plantestsuite("samba4.deletetest.python(dc)", "dc", ['PYTHONPATH="$PYTHONPATH:%s/lib/subunit/python:%s/lib/testtools"' % (srcdir(), srcdir()),
461 python, os.path.join(samba4srcdir, "dsdb/tests/python/deletetest.py"),
462 '$SERVER', '-U"$USERNAME%$PASSWORD"', '-W', '$DOMAIN'])
463 planpythontestsuite("none", "bindings", extra_path=["%s/lib/policy/tests/python" % samba4srcdir], name="samba4.policy.python")
464 plantestsuite("samba4.blackbox.samba3dump", "none", [python, os.path.join(samba4srcdir, "scripting/bin/samba3dump"), os.path.join(samba4srcdir, "../testdata/samba3")], allow_empty_output=True)
465 plantestsuite("samba4.blackbox.upgrade", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_s3upgrade.sh"), '$PREFIX/provision'])
466 plantestsuite("samba4.blackbox.provision.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_provision.sh"), '$PREFIX/provision'])
467 plantestsuite("samba4.blackbox.upgradeprovision.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_upgradeprovision.sh"), '$PREFIX/provision'])
468 plantestsuite("samba4.blackbox.setpassword.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_setpassword.sh"), '$PREFIX/provision'])
469 plantestsuite("samba4.blackbox.newuser.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_newuser.sh"), '$PREFIX/provision'])
470 plantestsuite("samba4.blackbox.group.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_group.sh"), '$PREFIX/provision'])
471 plantestsuite("samba4.blackbox.spn.py(dc:local)", "dc:local", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_spn.sh"), '$PREFIX/dc'])
472 plantestsuite("samba4.ldap.bind(dc)", "dc", [python, os.path.join(srcdir(), "auth/credentials/tests/bind.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"'])
475 planoldpythontestsuite("vampire_dc", "samba.tests.blackbox.samba_tool_drs",
476 environ={'DC1': '$DC_SERVER', 'DC2': '$VAMPIRE_DC_SERVER'},
477 extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
478 planoldpythontestsuite("vampire_dc", "replica_sync",
479 extra_path=[os.path.join(samba4srcdir, 'torture/drs/python')],
480 name="samba4.drs.replica_sync.python(vampire_dc)",
481 environ={'DC1': '$DC_SERVER', 'DC2': '$VAMPIRE_DC_SERVER'},
482 extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
483 planoldpythontestsuite("vampire_dc", "delete_object",
484 extra_path=[os.path.join(samba4srcdir, 'torture/drs/python')],
485 name="samba4.drs.delete_object.python(vampire_dc)",
486 environ={'DC1': '$DC_SERVER', 'DC2': '$VAMPIRE_DC_SERVER'},
487 extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
488 planoldpythontestsuite("vampire_dc", "fsmo",
489 name="samba4.drs.fsmo.python(vampire_dc)",
490 extra_path=[os.path.join(samba4srcdir, 'torture/drs/python')],
491 environ={'DC1': "$DC_SERVER", 'DC2': "$VAMPIRE_DC_SERVER"},
492 extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
493 planoldpythontestsuite("vampire_dc", "repl_schema",
494 extra_path=[os.path.join(samba4srcdir, 'torture/drs/python')],
495 name="samba4.drs.repl_schema.python(vampire_dc)",
496 environ={'DC1': "$DC_SERVER", 'DC2': '$VAMPIRE_DC_SERVER'},
497 extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
499 # This makes sure we test the rid allocation code
500 t = "rpc.samr.large-dc"
501 plantestsuite_loadlist("samba4.%s.one" % t, "vampire_dc", [valgrindify(smb4torture), "$LISTOPT", '$SERVER', '-U$USERNAME%$PASSWORD', '-W', '$DOMAIN', t])
502 plantestsuite_loadlist("samba4.%s.two" % t, "vampire_dc", [valgrindify(smb4torture), "$LISTOPT", '$SERVER', '-U$USERNAME%$PASSWORD', '-W', '$DOMAIN', t])
506 plantestsuite_loadlist("samba4.rpc.echo", env, [smb4torture, "$LISTOPT", 'ncacn_np:$SERVER', "-k", "yes", '-U$USERNAME%$PASSWORD', '-W' '$DOMAIN', 'rpc.echo'])
507 plantestsuite_loadlist("samba4.rpc.echo", "%s:local" % env, [smb4torture, "$LISTOPT", 'ncacn_np:$SERVER', "-k", "yes", '-P', '-W' '$DOMAIN', 'rpc.echo'])
508 plantestsuite("samba4.blackbox.provision-backend.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_provision-backend.sh"), '$PREFIX/provision'])
510 # Test renaming the DC
511 plantestsuite("samba4.blackbox.renamedc.sh", "none", ["PYTHON=%s" % python, os.path.join(bbdir, "renamedc.sh"), '$PREFIX/provision'])
513 # check the databases are all OK. PLEASE LEAVE THIS AS THE LAST TEST
514 for env in ["dc", "fl2000dc", "fl2003dc", "fl2008r2dc"]:
515 plantestsuite("samba4.blackbox.dbcheck(%s)" % env, env + ":local" , ["PYTHON=%s" % python, os.path.join(bbdir, "dbcheck.sh"), '$PREFIX/provision', configuration])