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 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
69 config_h = os.environ["CONFIG_H"]
71 config_h = os.path.join(samba4bindir, "default/include/config.h")
73 # see if we support ldaps
74 f = open(config_h, 'r')
76 have_tls_support = ("ENABLE_GNUTLS 1" in f.read())
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.sh" % ldbdir,
96 allow_empty_output=True)
98 skiptestsuite("ldb.base", "Using system LDB, ldbtest not available")
102 # add tests to this list as they start passing, so we test
103 # that they stay passing
104 ncacn_np_tests = ["rpc.schannel", "rpc.join", "rpc.lsa", "rpc.dssetup", "rpc.altercontext", "rpc.multibind", "rpc.netlogon", "rpc.handles", "rpc.samsync", "rpc.samba3-sessionkey", "rpc.samba3-getusername", "rpc.samba3-lsa", "rpc.samba3-bind", "rpc.samba3-netlogon", "rpc.asyncbind", "rpc.lsalookup", "rpc.lsa-getuser", "rpc.schannel2", "rpc.authcontext"]
105 ncalrpc_tests = ["rpc.schannel", "rpc.join", "rpc.lsa", "rpc.dssetup", "rpc.altercontext", "rpc.multibind", "rpc.netlogon", "rpc.drsuapi", "rpc.asyncbind", "rpc.lsalookup", "rpc.lsa-getuser", "rpc.schannel2", "rpc.authcontext"]
106 drs_rpc_tests = smb4torture_testsuites("drs.rpc")
107 ncacn_ip_tcp_tests = ["rpc.schannel", "rpc.join", "rpc.lsa", "rpc.dssetup", "rpc.altercontext", "rpc.multibind", "rpc.netlogon", "rpc.handles", "rpc.asyncbind", "rpc.lsalookup", "rpc.lsa-getuser", "rpc.schannel2", "rpc.authcontext", "rpc.objectuuid"] + drs_rpc_tests
108 slow_ncacn_np_tests = ["rpc.samlogon", "rpc.samr.users", "rpc.samr.large-dc", "rpc.samr.users.privileges", "rpc.samr.passwords", "rpc.samr.passwords.pwdlastset"]
109 slow_ncacn_ip_tcp_tests = ["rpc.samr", "rpc.cracknames"]
111 all_rpc_tests = ncalrpc_tests + ncacn_np_tests + ncacn_ip_tcp_tests + slow_ncacn_np_tests + slow_ncacn_ip_tcp_tests + ["rpc.lsa.secrets", "rpc.pac", "rpc.samba3-sharesec", "rpc.countcalls"]
113 # Make sure all tests get run
114 rpc_tests = smb4torture_testsuites("rpc.")
115 auto_rpc_tests = filter(lambda t: t not in all_rpc_tests, rpc_tests)
117 for bindoptions in ["seal,padcheck"] + validate_list + ["bigendian"]:
118 for transport in ["ncalrpc", "ncacn_np", "ncacn_ip_tcp"]:
120 if transport == "ncalrpc":
121 tests = ncalrpc_tests
123 elif transport == "ncacn_np":
124 tests = ncacn_np_tests
125 elif transport == "ncacn_ip_tcp":
126 tests = ncacn_ip_tcp_tests
128 raise AssertionError("invalid transport %r"% transport)
130 plansmbtorturetestsuite(t, env, ["%s:$SERVER[%s]" % (transport, bindoptions), '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.%s on %s with %s" % (t, transport, bindoptions))
131 plansmbtorturetestsuite('rpc.samba3-sharesec', env, ["%s:$SERVER[%s]" % (transport, bindoptions), '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN', '--option=torture:share=tmp'], "samba4.rpc.samba3.sharesec on %s with %s" % (transport, bindoptions))
133 #Plugin S4 DC tests (confirms named pipe auth forwarding). This can be expanded once kerberos is supported in the plugin DC
135 for bindoptions in ["seal,padcheck"] + validate_list + ["bigendian"]:
136 for t in ncacn_np_tests:
138 transport = "ncacn_np"
139 plansmbtorturetestsuite(t, env, ["%s:$SERVER[%s]" % (transport, bindoptions), '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.%s with %s" % (t, bindoptions))
141 for bindoptions in [""] + validate_list + ["bigendian"]:
142 for t in auto_rpc_tests:
143 plansmbtorturetestsuite(t, "dc", ["$SERVER[%s]" % bindoptions, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.%s with %s" % (t, bindoptions))
146 plansmbtorturetestsuite(t, "dc:local", ["$SERVER[%s]" % bindoptions, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], modname="samba4.%s" % t)
148 for transport in ["ncacn_np", "ncacn_ip_tcp"]:
150 if transport == "ncacn_np":
151 tests = slow_ncacn_np_tests
152 elif transport == "ncacn_ip_tcp":
153 tests = slow_ncacn_ip_tcp_tests
155 raise AssertionError("Invalid transport %r" % transport)
157 plansmbtorturetestsuite(t, env, ["%s:$SERVER" % transport, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.%s on %s" % (t, transport))
159 # Tests for the DFS referral calls implementation
160 for t in smb4torture_testsuites("dfs."):
161 plansmbtorturetestsuite(t, "dc", '//$SERVER/ipc\$ -U$USERNAME%$PASSWORD')
162 plansmbtorturetestsuite(t, "plugin_s4_dc", '//$SERVER/ipc\$ -U$USERNAME%$PASSWORD')
164 # Tests for the NET API (net.api.become.dc tested below against all the roles)
165 net_tests = filter(lambda x: "net.api.become.dc" not in x, smb4torture_testsuites("net."))
167 plansmbtorturetestsuite(t, "dc", '$SERVER[%s] -U$USERNAME%%$PASSWORD -W$DOMAIN' % validate)
169 # Tests for session keys and encryption of RPC pipes
170 # FIXME: Integrate these into a single smbtorture test
172 transport = "ncacn_np"
174 "-k no --option=usespnego=yes",
175 "-k no --option=usespnego=yes --option=ntlmssp_client:128bit=no",
176 "-k no --option=usespnego=yes --option=ntlmssp_client:56bit=yes",
177 "-k no --option=usespnego=yes --option=ntlmssp_client:56bit=no",
178 "-k no --option=usespnego=yes --option=ntlmssp_client:128bit=no --option=ntlmssp_client:56bit=yes",
179 "-k no --option=usespnego=yes --option=ntlmssp_client:128bit=no --option=ntlmssp_client:56bit=no",
180 "-k no --option=usespnego=yes --option=clientntlmv2auth=yes",
181 "-k no --option=usespnego=yes --option=clientntlmv2auth=yes --option=ntlmssp_client:128bit=no",
182 "-k no --option=usespnego=yes --option=clientntlmv2auth=yes --option=ntlmssp_client:128bit=no --option=ntlmssp_client:56bit=yes",
183 "-k no --option=usespnego=no --option=clientntlmv2auth=yes",
184 "-k no --option=gensec:spnego=no --option=clientntlmv2auth=yes",
185 "-k no --option=usespnego=no"]:
186 name = "rpc.lsa.secrets on %s with with %s" % (transport, ntlmoptions)
187 plansmbtorturetestsuite('rpc.lsa.secrets', "dc", ["%s:$SERVER[]" % (transport), ntlmoptions, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN', '--option=gensec:target_hostname=$NETBIOSNAME'], "samba4.%s" % name)
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"]:
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":
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.")
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
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
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')
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))
284 skiptestsuite("tdb.stress", "Using system TDB, tdbtorture not available")
286 plansmbtorturetestsuite("drs.unit", "none", "ncalrpc:")
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)))
294 planpythontestsuite("dc", "samba.tests.dns")
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
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'])
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")
339 "-k no --option=usespnego=no",
340 "-k no --option=gensec:spengo=no",
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)
350 "-k no --option=usespnego=no",
351 "-k no --option=gensec:spengo=no",
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'])
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")])
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)
397 environ["PYTHONPATH"] = ":".join(["$PYTHONPATH"] + py_path)
398 args = ["%s=%s" % item for item in environ.iteritems()]
399 args += [subunitrun, "$LISTOPT", 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")
436 planpythontestsuite("none", "subunit")
437 planpythontestsuite("dc:local", "samba.tests.dcerpc.rpcecho")
438 planpythontestsuite("none", "wafsamba.tests.test_utils", extra_path=[os.path.join(samba4srcdir, "..", "buildtools"), os.path.join(samba4srcdir, "..", "buildtools", "wafadmin")])
439 planoldpythontestsuite("dc:local", "samba.tests.dcerpc.registry", extra_args=['-U"$USERNAME%$PASSWORD"'])
440 planoldpythontestsuite("dc", "samba.tests.dcerpc.dnsserver", extra_args=['-U"$USERNAME%$PASSWORD"'])
441 planoldpythontestsuite("plugin_s4_dc", "samba.tests.dcerpc.dnsserver", extra_args=['-U"$USERNAME%$PASSWORD"'])
442 plantestsuite("samba4.ldap.python(dc)", "dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/ldap.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
443 plantestsuite("samba4.tokengroups.python(dc)", "dc:local", [python, os.path.join(samba4srcdir, "dsdb/tests/python/token_group.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
444 plantestsuite("samba4.sam.python(dc)", "dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/sam.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
445 planoldpythontestsuite("dc", "dsdb_schema_info",
446 extra_path=[os.path.join(samba4srcdir, 'dsdb/tests/python')],
447 name="samba4.schemaInfo.python(dc)",
448 extra_args=['-U"$DOMAIN/$DC_USERNAME%$DC_PASSWORD"'])
449 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)
450 plantestsuite("samba4.ldap.dirsync.python(dc)", "dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/dirsync.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
451 plantestsuite("samba4.ldap.sites.python(dc)", "dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/sites.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
452 for env in ["dc", "fl2000dc", "fl2003dc", "fl2008r2dc"]:
453 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'])
454 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"])
455 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'])
456 plantestsuite("samba4.ldap.acl.python(%s)" % env, env, [python, os.path.join(samba4srcdir, "dsdb/tests/python/acl.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
457 if env != "fl2000dc":
458 # This test makes excessive use of the "userPassword" attribute which
459 # isn't available on DCs with Windows 2000 domain function level -
460 # therefore skip it in that configuration
461 plantestsuite("samba4.ldap.passwords.python(%s)" % env, env, [python, os.path.join(samba4srcdir, "dsdb/tests/python/passwords.py"), "$SERVER", '-U"$USERNAME%$PASSWORD"', "-W$DOMAIN"])
462 planpythontestsuite("dc:local", "samba.tests.upgradeprovisionneeddc")
463 planpythontestsuite("none", "samba.tests.upgradeprovision")
464 planpythontestsuite("none", "samba.tests.xattr")
465 planpythontestsuite("none", "samba.tests.ntacls")
466 plantestsuite("samba4.deletetest.python(dc)", "dc", ['PYTHONPATH="$PYTHONPATH:%s/lib/subunit/python:%s/lib/testtools"' % (srcdir(), srcdir()),
467 python, os.path.join(samba4srcdir, "dsdb/tests/python/deletetest.py"),
468 '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
469 planpythontestsuite("none", "samba.tests.policy")
470 plantestsuite("samba4.blackbox.samba3dump", "none", [python, os.path.join(samba4srcdir, "scripting/bin/samba3dump"), os.path.join(samba4srcdir, "../testdata/samba3")], allow_empty_output=True)
471 plantestsuite("samba4.blackbox.upgrade", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_s3upgrade.sh"), '$PREFIX/provision'])
472 plantestsuite("samba4.blackbox.provision.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_provision.sh"), '$PREFIX/provision'])
473 plantestsuite("samba4.blackbox.upgradeprovision.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_upgradeprovision.sh"), '$PREFIX/provision'])
474 plantestsuite("samba4.blackbox.setpassword.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_setpassword.sh"), '$PREFIX/provision'])
475 plantestsuite("samba4.blackbox.newuser.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_newuser.sh"), '$PREFIX/provision'])
476 plantestsuite("samba4.blackbox.group.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_group.sh"), '$PREFIX/provision'])
477 plantestsuite("samba4.blackbox.spn.py(dc:local)", "dc:local", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_spn.sh"), '$PREFIX/dc'])
478 plantestsuite("samba4.ldap.bind(dc)", "dc", [python, os.path.join(srcdir(), "auth/credentials/tests/bind.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"'])
481 planoldpythontestsuite("vampire_dc", "samba.tests.blackbox.samba_tool_drs",
482 environ={'DC1': '$DC_SERVER', 'DC2': '$VAMPIRE_DC_SERVER'},
483 extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
484 planoldpythontestsuite("vampire_dc", "replica_sync",
485 extra_path=[os.path.join(samba4srcdir, 'torture/drs/python')],
486 name="samba4.drs.replica_sync.python(vampire_dc)",
487 environ={'DC1': '$DC_SERVER', 'DC2': '$VAMPIRE_DC_SERVER'},
488 extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
489 planoldpythontestsuite("vampire_dc", "delete_object",
490 extra_path=[os.path.join(samba4srcdir, 'torture/drs/python')],
491 name="samba4.drs.delete_object.python(vampire_dc)",
492 environ={'DC1': '$DC_SERVER', 'DC2': '$VAMPIRE_DC_SERVER'},
493 extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
494 planoldpythontestsuite("vampire_dc", "fsmo",
495 name="samba4.drs.fsmo.python(vampire_dc)",
496 extra_path=[os.path.join(samba4srcdir, 'torture/drs/python')],
497 environ={'DC1': "$DC_SERVER", 'DC2': "$VAMPIRE_DC_SERVER"},
498 extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
499 planoldpythontestsuite("vampire_dc", "repl_schema",
500 extra_path=[os.path.join(samba4srcdir, 'torture/drs/python')],
501 name="samba4.drs.repl_schema.python(vampire_dc)",
502 environ={'DC1': "$DC_SERVER", 'DC2': '$VAMPIRE_DC_SERVER'},
503 extra_args=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
505 # This makes sure we test the rid allocation code
506 t = "rpc.samr.large-dc"
507 plansmbtorturetestsuite(t, "vampire_dc", ['$SERVER', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], modname=("samba4.%s.one" % t))
508 plansmbtorturetestsuite(t, "vampire_dc", ['$SERVER', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], modname="samba4.%s.two" % t)
512 plansmbtorturetestsuite('rpc.echo', env, ['ncacn_np:$SERVER', "-k", "yes", '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], modname="samba4.rpc.echo")
513 plansmbtorturetestsuite('rpc.echo', "%s:local" % env, ['ncacn_np:$SERVER', "-k", "yes", '-P', '--workgroup=$DOMAIN'], modname="samba4.rpc.echo")
514 plantestsuite("samba4.blackbox.provision-backend", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_provision-backend.sh"), '$PREFIX/provision'])
516 # Test renaming the DC
517 plantestsuite("samba4.blackbox.renamedc.sh", "none", ["PYTHON=%s" % python, os.path.join(bbdir, "renamedc.sh"), '$PREFIX/provision'])
519 # Demote the vampire DC, it must be the last test on the VAMPIRE DC
520 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'])
521 # check the databases are all OK. PLEASE LEAVE THIS AS THE LAST TEST
522 for env in ["dc", "fl2000dc", "fl2003dc", "fl2008r2dc"]:
523 plantestsuite("samba4.blackbox.dbcheck(%s)" % env, env + ":local" , ["PYTHON=%s" % python, os.path.join(bbdir, "dbcheck.sh"), '$PREFIX/provision', configuration])