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 f
= open(config_h
, 'r')
75 # The other parts of the HAVE_ADS test are always supplied by the top level build
76 have_ads_support
= ("HAVE_LDAP 1" in f
.read())
80 # see if we support ldaps
81 f
= open(config_h
, 'r')
83 have_tls_support
= ("ENABLE_GNUTLS 1" in f
.read())
88 for options
in ['-U"$USERNAME%$PASSWORD"']:
89 plantestsuite("samba4.ldb.ldaps with options %s(dc)" % options
, "dc",
90 "%s/test_ldb.sh ldaps $SERVER_IP %s" % (bbdir
, options
))
92 for options
in ['-U"$USERNAME%$PASSWORD"']:
93 plantestsuite("samba4.ldb.ldapi with options %s(dc:local)" % options
, "dc:local",
94 "%s/test_ldb.sh ldapi $PREFIX_ABS/dc/private/ldapi %s" % (bbdir
, options
))
96 for t
in smb4torture_testsuites("ldap."):
97 plansmbtorturetestsuite(t
, "dc", '-U"$USERNAME%$PASSWORD" //$SERVER_IP/_none_')
99 ldbdir
= os
.path
.join(srcdir(), "lib/ldb")
100 # Don't run LDB tests when using system ldb, as we won't have ldbtest installed
101 if os
.path
.exists(os
.path
.join(samba4bindir
, "ldbtest")):
102 plantestsuite("ldb.base", "none", "%s/tests/test-tdb.sh" % ldbdir
,
103 allow_empty_output
=True)
105 skiptestsuite("ldb.base", "Using system LDB, ldbtest not available")
109 # add tests to this list as they start passing, so we test
110 # that they stay passing
111 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"]
112 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"]
113 drs_rpc_tests
= smb4torture_testsuites("drs.rpc")
114 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
115 slow_ncacn_np_tests
= ["rpc.samlogon", "rpc.samr.users", "rpc.samr.large-dc", "rpc.samr.users.privileges", "rpc.samr.passwords", "rpc.samr.passwords.pwdlastset"]
116 slow_ncacn_ip_tcp_tests
= ["rpc.samr", "rpc.cracknames"]
118 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"]
120 # Make sure all tests get run
121 rpc_tests
= smb4torture_testsuites("rpc.")
122 auto_rpc_tests
= filter(lambda t
: t
not in all_rpc_tests
, rpc_tests
)
124 for bindoptions
in ["seal,padcheck"] + validate_list
+ ["bigendian"]:
125 for transport
in ["ncalrpc", "ncacn_np", "ncacn_ip_tcp"]:
127 if transport
== "ncalrpc":
128 tests
= ncalrpc_tests
130 elif transport
== "ncacn_np":
131 tests
= ncacn_np_tests
132 elif transport
== "ncacn_ip_tcp":
133 tests
= ncacn_ip_tcp_tests
135 raise AssertionError("invalid transport %r"% transport
)
137 plansmbtorturetestsuite(t
, env
, ["%s:$SERVER[%s]" % (transport
, bindoptions
), '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.%s on %s with %s" % (t
, transport
, bindoptions
))
138 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
))
140 #Plugin S4 DC tests (confirms named pipe auth forwarding). This can be expanded once kerberos is supported in the plugin DC
143 for bindoptions
in ["seal,padcheck"] + validate_list
+ ["bigendian"]:
144 for t
in ncacn_np_tests
:
146 transport
= "ncacn_np"
147 plansmbtorturetestsuite(t
, env
, ["%s:$SERVER[%s]" % (transport
, bindoptions
), '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN', '-k', 'no'], "samba4.%s with %s" % (t
, bindoptions
))
149 for bindoptions
in [""] + validate_list
+ ["bigendian"]:
150 for t
in auto_rpc_tests
:
151 plansmbtorturetestsuite(t
, "dc", ["$SERVER[%s]" % bindoptions
, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.%s with %s" % (t
, bindoptions
))
154 plansmbtorturetestsuite(t
, "dc:local", ["$SERVER[%s]" % bindoptions
, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], modname
="samba4.%s" % t
)
156 for transport
in ["ncacn_np", "ncacn_ip_tcp"]:
158 if transport
== "ncacn_np":
159 tests
= slow_ncacn_np_tests
160 elif transport
== "ncacn_ip_tcp":
161 tests
= slow_ncacn_ip_tcp_tests
163 raise AssertionError("Invalid transport %r" % transport
)
165 plansmbtorturetestsuite(t
, env
, ["%s:$SERVER" % transport
, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.%s on %s" % (t
, transport
))
167 # Tests for the DFS referral calls implementation
168 for t
in smb4torture_testsuites("dfs."):
169 plansmbtorturetestsuite(t
, "dc", '//$SERVER/ipc\$ -U$USERNAME%$PASSWORD')
170 plansmbtorturetestsuite(t
, "plugin_s4_dc", '//$SERVER/ipc\$ -U$USERNAME%$PASSWORD')
172 # Tests for the NET API (net.api.become.dc tested below against all the roles)
173 net_tests
= filter(lambda x
: "net.api.become.dc" not in x
, smb4torture_testsuites("net."))
175 plansmbtorturetestsuite(t
, "dc", '$SERVER[%s] -U$USERNAME%%$PASSWORD -W$DOMAIN' % validate
)
177 # Tests for session keys and encryption of RPC pipes
178 # FIXME: Integrate these into a single smbtorture test
180 transport
= "ncacn_np"
182 "-k no --option=usespnego=yes",
183 "-k no --option=usespnego=yes --option=ntlmssp_client:128bit=no",
184 "-k no --option=usespnego=yes --option=ntlmssp_client:56bit=yes",
185 "-k no --option=usespnego=yes --option=ntlmssp_client:56bit=no",
186 "-k no --option=usespnego=yes --option=ntlmssp_client:128bit=no --option=ntlmssp_client:56bit=yes",
187 "-k no --option=usespnego=yes --option=ntlmssp_client:128bit=no --option=ntlmssp_client:56bit=no",
188 "-k no --option=usespnego=yes --option=clientntlmv2auth=yes",
189 "-k no --option=usespnego=yes --option=clientntlmv2auth=yes --option=ntlmssp_client:128bit=no",
190 "-k no --option=usespnego=yes --option=clientntlmv2auth=yes --option=ntlmssp_client:128bit=no --option=ntlmssp_client:56bit=yes",
191 "-k no --option=usespnego=no --option=clientntlmv2auth=yes",
192 "-k no --option=gensec:spnego=no --option=clientntlmv2auth=yes",
193 "-k no --option=usespnego=no"]:
194 name
= "rpc.lsa.secrets on %s with with %s" % (transport
, ntlmoptions
)
195 plansmbtorturetestsuite('rpc.lsa.secrets', "dc", ["%s:$SERVER[]" % (transport
), ntlmoptions
, '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN', '--option=gensec:target_hostname=$NETBIOSNAME'], "samba4.%s" % name
)
197 transports
= ["ncacn_np", "ncacn_ip_tcp"]
199 #Kerberos varies between functional levels, so it is important to check this on all of them
200 for env
in ["dc", "fl2000dc", "fl2003dc", "fl2008r2dc"]:
201 transport
= "ncacn_np"
202 plansmbtorturetestsuite('rpc.pac', env
, ["%s:$SERVER[]" % (transport
, ), '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.rpc.pac on %s" % (transport
,))
203 for transport
in transports
:
204 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
,))
205 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
,))
206 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
)
207 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
)
208 plansmbtorturetestsuite('rpc.echo', env
, ["%s:$SERVER[]" % (transport
,), '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.rpc.echo on %s" % (transport
, ))
210 # Echo tests test bulk Kerberos encryption of DCE/RPC
211 for bindoptions
in ["connect", "spnego", "spnego,sign", "spnego,seal"] + validate_list
+ ["padcheck", "bigendian", "bigendian,seal"]:
212 echooptions
= "--option=socket:testnonblock=True --option=torture:quick=yes -k yes"
213 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
))
214 plansmbtorturetestsuite("net.api.become.dc", env
, '$SERVER[%s] -U$USERNAME%%$PASSWORD -W$DOMAIN' % validate
)
216 for bindoptions
in ["sign", "seal"]:
217 plansmbtorturetestsuite('rpc.backupkey', "dc", ["ncacn_np:$SERVER[%s]" % ( bindoptions
), '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.rpc.backupkey with %s" % (bindoptions
))
219 for transport
in transports
:
220 for bindoptions
in ["sign", "seal"]:
222 "--option=ntlmssp_client:ntlm2=yes --option=torture:quick=yes",
223 "--option=ntlmssp_client:ntlm2=no --option=torture:quick=yes",
224 "--option=ntlmssp_client:ntlm2=yes --option=ntlmssp_client:128bit=no --option=torture:quick=yes",
225 "--option=ntlmssp_client:ntlm2=no --option=ntlmssp_client:128bit=no --option=torture:quick=yes",
226 "--option=ntlmssp_client:ntlm2=yes --option=ntlmssp_client:keyexchange=no --option=torture:quick=yes",
227 "--option=ntlmssp_client:ntlm2=no --option=ntlmssp_client:keyexchange=no --option=torture:quick=yes",
228 "--option=clientntlmv2auth=yes --option=ntlmssp_client:keyexchange=no --option=torture:quick=yes",
229 "--option=clientntlmv2auth=yes --option=ntlmssp_client:128bit=no --option=ntlmssp_client:keyexchange=yes --option=torture:quick=yes",
230 "--option=clientntlmv2auth=yes --option=ntlmssp_client:128bit=no --option=ntlmssp_client:keyexchange=no --option=torture:quick=yes"]:
231 if transport
== "ncalrpc":
235 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
))
237 plansmbtorturetestsuite('rpc.echo', "dc", ['ncacn_np:$SERVER[smb2]', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.rpc.echo on ncacn_np over smb2")
239 plansmbtorturetestsuite('ntp.signd', "dc:local", ['ncacn_np:$SERVER', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], "samba4.ntp.signd")
241 nbt_tests
= smb4torture_testsuites("nbt.")
243 plansmbtorturetestsuite(t
, "dc", "//$SERVER/_none_ -U\"$USERNAME%$PASSWORD\"")
245 # Tests against the NTVFS POSIX backend
246 ntvfsargs
= ["--option=torture:sharedelay=10000", "--option=torture:oplocktimeout=3", "--option=torture:writetimeupdatedelay=50000"]
248 smb2
= smb4torture_testsuites("smb2.")
249 #The QFILEINFO-IPC test needs to be on ipc$
250 raw
= filter(lambda x
: "raw.qfileinfo.ipc" not in x
, smb4torture_testsuites("raw."))
251 base
= smb4torture_testsuites("base.")
253 netapi
= smb4torture_testsuites("netapi.")
255 libsmbclient
= smb4torture_testsuites("libsmbclient.")
257 for t
in base
+ raw
+ smb2
+ netapi
+ libsmbclient
:
258 plansmbtorturetestsuite(t
, "dc", ['//$SERVER/tmp', '-U$USERNAME%$PASSWORD'] + ntvfsargs
)
260 plansmbtorturetestsuite("raw.qfileinfo.ipc", "dc", '//$SERVER/ipc\$ -U$USERNAME%$PASSWORD')
262 for t
in smb4torture_testsuites("rap."):
263 plansmbtorturetestsuite(t
, "dc", '//$SERVER/IPC\$ -U$USERNAME%$PASSWORD')
265 # Tests against the NTVFS CIFS backend
267 plansmbtorturetestsuite(t
, "dc", ['//$NETBIOSNAME/cifs', '-U$USERNAME%$PASSWORD', '--kerberos=yes'] + ntvfsargs
, modname
="samba4.ntvfs.cifs.krb5.%s" % t
)
269 # Test NTVFS CIFS backend with S4U2Self and S4U2Proxy
271 plansmbtorturetestsuite(t
, "dc", ['//$NETBIOSNAME/cifs', '-U$USERNAME%$PASSWORD', '--kerberos=no'] + ntvfsargs
, "samba4.ntvfs.cifs.ntlm.%s" % t
)
272 plansmbtorturetestsuite(t
, "rpc_proxy", ['//$NETBIOSNAME/cifs_to_dc', '-U$DC_USERNAME%$DC_PASSWORD', '--kerberos=yes'] + ntvfsargs
, "samba4.ntvfs.cifs.krb5.%s" % t
)
273 plansmbtorturetestsuite(t
, "rpc_proxy", ['//$NETBIOSNAME/cifs_to_dc', '-U$DC_USERNAME%$DC_PASSWORD', '--kerberos=no'] + ntvfsargs
, "samba4.ntvfs.cifs.ntlm.%s" % t
)
275 plansmbtorturetestsuite('echo.udp', 'dc:local', '//$SERVER/whatever')
278 for t
in smb4torture_testsuites("local."):
279 #The local.resolve test needs a name to look up using real system (not emulated) name routines
280 plansmbtorturetestsuite(t
, "none", "ncalrpc:localhost")
282 # Confirm these tests with the system iconv too
283 for t
in ["local.convert_string_handle", "local.convert_string", "local.ndr"]:
284 options
= "ncalrpc: --option='iconv:use_builtin_handlers=false'"
285 plansmbtorturetestsuite(t
, "none", options
,
286 modname
="samba4.%s.system.iconv" % t
)
288 tdbtorture4
= binpath("tdbtorture")
289 if os
.path
.exists(tdbtorture4
):
290 plantestsuite("tdb.stress", "none", valgrindify(tdbtorture4
))
292 skiptestsuite("tdb.stress", "Using system TDB, tdbtorture not available")
294 plansmbtorturetestsuite("drs.unit", "none", "ncalrpc:")
297 for f
in sorted(os
.listdir(os
.path
.join(samba4srcdir
, "../pidl/tests"))):
298 if f
.endswith(".pl"):
299 planperltestsuite("pidl.%s" % f
[:-3], os
.path
.normpath(os
.path
.join(samba4srcdir
, "../pidl/tests", f
)))
302 planpythontestsuite("dc", "samba.tests.dns")
305 # tests that interact directly with the command-line tools rather than using
306 # the API. These mainly test that the various command-line options of commands
309 planpythontestsuite("none", "samba.tests.blackbox.ndrdump")
310 planpythontestsuite("none", "samba.tests.source")
311 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'])
312 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
])
313 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
])
314 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
])
315 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
])
316 plantestsuite("samba4.blackbox.ktpass(dc)", "dc", [os
.path
.join(bbdir
, "test_ktpass.sh"), '$PREFIX'])
317 plantestsuite("samba4.blackbox.passwords(dc:local)", "dc:local", [os
.path
.join(bbdir
, "test_passwords.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$REALM', '$DOMAIN', "$PREFIX"])
318 plantestsuite("samba4.blackbox.export.keytab(dc:local)", "dc:local", [os
.path
.join(bbdir
, "test_export_keytab.sh"), '$SERVER', '$USERNAME', '$REALM', '$DOMAIN', "$PREFIX"])
319 plantestsuite("samba4.blackbox.cifsdd(dc)", "dc", [os
.path
.join(samba4srcdir
, "client/tests/test_cifsdd.sh"), '$SERVER', '$USERNAME', '$PASSWORD', "$DOMAIN"])
320 plantestsuite("samba4.blackbox.nmblookup(dc)", "dc", [os
.path
.join(samba4srcdir
, "utils/tests/test_nmblookup.sh"), '$NETBIOSNAME', '$NETBIOSALIAS', '$SERVER', '$SERVER_IP'])
321 plantestsuite("samba4.blackbox.locktest(dc)", "dc", [os
.path
.join(samba4srcdir
, "torture/tests/test_locktest.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$DOMAIN', '$PREFIX'])
322 plantestsuite("samba4.blackbox.masktest", "dc", [os
.path
.join(samba4srcdir
, "torture/tests/test_masktest.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$DOMAIN', '$PREFIX'])
323 plantestsuite("samba4.blackbox.gentest(dc)", "dc", [os
.path
.join(samba4srcdir
, "torture/tests/test_gentest.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$DOMAIN', "$PREFIX"])
324 plantestsuite("samba4.blackbox.wbinfo(dc:local)", "dc:local", [os
.path
.join(samba4srcdir
, "../nsswitch/tests/test_wbinfo.sh"), '$DOMAIN', '$USERNAME', '$PASSWORD', "dc"])
325 plantestsuite("samba4.blackbox.wbinfo(s4member:local)", "s4member:local", [os
.path
.join(samba4srcdir
, "../nsswitch/tests/test_wbinfo.sh"), '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', "s4member"])
326 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'])
327 plantestsuite_loadlist("samba4.rpc.echo against NetBIOS alias", "dc", [valgrindify(smb4torture
), "$LISTOPT", 'ncacn_np:$NETBIOSALIAS', '-U$DOMAIN/$USERNAME%$PASSWORD', 'rpc.echo'])
329 # Tests using the "Simple" NTVFS backend
330 for t
in ["base.rw1"]:
331 plansmbtorturetestsuite(t
, "dc", ["//$SERVER/simple", '-U$USERNAME%$PASSWORD'], modname
="samba4.ntvfs.simple.%s" % t
)
333 # Domain S4member Tests
334 plansmbtorturetestsuite('rpc.echo', "s4member", ['ncacn_np:$NETBIOSNAME', '-U$NETBIOSNAME/$USERNAME%$PASSWORD'], "samba4.rpc.echo against s4member server with local creds")
335 plansmbtorturetestsuite('rpc.echo', "s4member", ['ncacn_np:$NETBIOSNAME', '-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'], "samba4.rpc.echo against s4member server with domain creds")
336 plansmbtorturetestsuite('rpc.samr', "s4member", ['ncacn_np:$NETBIOSNAME', '-U$NETBIOSNAME/$USERNAME%$PASSWORD'], "samba4.rpc.samr against s4member server with local creds")
337 plansmbtorturetestsuite('rpc.samr.users', "s4member", ['ncacn_np:$NETBIOSNAME', '-U$NETBIOSNAME/$USERNAME%$PASSWORD'], "samba4.rpc.samr.users against s4member server with local creds",)
338 plansmbtorturetestsuite('rpc.samr.passwords', "s4member", ['ncacn_np:$NETBIOSNAME', '-U$NETBIOSNAME/$USERNAME%$PASSWORD'], "samba4.rpc.samr.passwords against s4member server with local creds")
339 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'])
342 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")
347 "-k no --option=usespnego=no",
348 "-k no --option=gensec:spengo=no",
350 "-k yes --option=gensec:fake_gssapi_krb5=yes --option=gensec:gssapi_krb5=no"]:
351 for signing
in ["--signing=on", "--signing=required"]:
352 signoptions
= "%s %s" % (mech
, signing
)
353 name
= "smb.signing on with %s" % signoptions
354 plansmbtorturetestsuite('base.xcopy', "dc", ['//$NETBIOSNAME/xcopy_share', signoptions
, '-U$USERNAME%$PASSWORD'], modname
="samba4.%s" % name
)
358 "-k no --option=usespnego=no",
359 "-k no --option=gensec:spengo=no",
361 signoptions
= "%s --signing=off" % mech
362 name
= "smb.signing disabled on with %s" % signoptions
363 plansmbtorturetestsuite('base.xcopy', "s4member", ['//$NETBIOSNAME/xcopy_share', signoptions
, '-U$DC_USERNAME%$DC_PASSWORD'], "samba4.%s domain-creds" % name
)
365 plansmbtorturetestsuite('base.xcopy', "s3member", ['//$NETBIOSNAME/xcopy_share', signoptions
, '-U$DC_USERNAME%$DC_PASSWORD'], "samba4.%s domain-creds" % name
)
366 plansmbtorturetestsuite('base.xcopy', "plugin_s4_dc", ['//$NETBIOSNAME/xcopy_share', signoptions
, '-U$USERNAME%$PASSWORD'], "samba4.%s" % name
)
367 plansmbtorturetestsuite('base.xcopy', "plugin_s4_dc",
368 ['//$NETBIOSNAME/xcopy_share', signoptions
, '-U$DC_USERNAME%$DC_PASSWORD'], "samba4.%s administrator" % name
)
372 "-k no --option=usespnego=no",
373 "-k no --option=gensec:spengo=no"]:
374 signoptions
= "%s --signing=off" % mech
375 plansmbtorturetestsuite('base.xcopy', "s4member", ['//$NETBIOSNAME/xcopy_share', signoptions
, '-U$NETBIOSNAME/$USERNAME%$PASSWORD'], modname
="samba4.smb.signing on with %s local-creds" % signoptions
)
377 plansmbtorturetestsuite('base.xcopy', "dc", ['//$NETBIOSNAME/xcopy_share', '-k', 'no', '--signing=yes', '-U%'], modname
="samba4.smb.signing --signing=yes anon")
378 plansmbtorturetestsuite('base.xcopy', "dc", ['//$NETBIOSNAME/xcopy_share', '-k', 'no', '--signing=required', '-U%'], modname
="samba4.smb.signing --signing=required anon")
379 plansmbtorturetestsuite('base.xcopy', "s4member", ['//$NETBIOSNAME/xcopy_share', '-k', 'no', '--signing=no', '-U%'], modname
="samba4.smb.signing --signing=no anon")
382 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\""]
384 winbind_struct_tests
= smb4torture_testsuites("winbind.struct")
385 winbind_ndr_tests
= smb4torture_testsuites("winbind.ndr")
386 for env
in ["dc", "s4member"]:
387 for t
in winbind_struct_tests
:
388 plansmbtorturetestsuite(t
, env
, wb_opts
+ ['//_none_/_none_'])
390 for t
in winbind_ndr_tests
:
391 plansmbtorturetestsuite(t
, env
, wb_opts
+ ['//_none_/_none_'])
393 nsstest4
= binpath("nsstest")
394 if os
.path
.exists(nsstest4
):
395 plantestsuite("samba4.nss.test using winbind(s4member)", "s4member", [os
.path
.join(bbdir
, "nsstest.sh"), nsstest4
, os
.path
.join(samba4bindir
, "default/nsswitch/libnss-winbind.so")])
397 skiptestsuite("samba4.nss.test using winbind(s4member)", "nsstest not available")
399 subunitrun
= valgrindify(python
) + " " + os
.path
.join(samba4srcdir
, "scripting/bin/subunitrun")
400 def planoldpythontestsuite(env
, module
, name
=None, extra_path
=[], environ
={}, extra_args
=[]):
401 environ
= dict(environ
)
402 py_path
= list(extra_path
)
404 environ
["PYTHONPATH"] = ":".join(["$PYTHONPATH"] + py_path
)
405 args
= ["%s=%s" % item
for item
in environ
.iteritems()]
406 args
+= [subunitrun
, "$LISTOPT", module
]
410 plantestsuite(name
, env
, args
)
412 planpythontestsuite("none", "api", name
="ldb.python", extra_path
=['lib/ldb/tests/python'])
413 planpythontestsuite("none", "samba.tests.credentials")
414 planoldpythontestsuite("dc:local", "samba.tests.gensec", extra_args
=['-U"$USERNAME%$PASSWORD"'])
415 planpythontestsuite("none", "samba.tests.registry")
416 planoldpythontestsuite("none", "simple", extra_path
=["%s/lib/tdb/python/tests" % srcdir()], name
="tdb.python")
417 planpythontestsuite("none", "samba.tests.auth")
418 planpythontestsuite("none", "samba.tests.getopt")
419 planpythontestsuite("none", "samba.tests.security")
420 planpythontestsuite("none", "samba.tests.dcerpc.misc")
421 planpythontestsuite("none", "samba.tests.param")
422 planpythontestsuite("none", "samba.tests.upgrade")
423 planpythontestsuite("none", "samba.tests.core")
424 planpythontestsuite("none", "samba.tests.provision")
425 planpythontestsuite("none", "samba.tests.samba3")
426 planpythontestsuite("none", "samba.tests.strings")
427 planpythontestsuite("dc:local", "samba.tests.dcerpc.sam")
428 planpythontestsuite("dc:local", "samba.tests.dsdb")
429 planpythontestsuite("none", "samba.tests.netcmd")
430 planpythontestsuite("dc:local", "samba.tests.dcerpc.bare")
431 planpythontestsuite("dc:local", "samba.tests.dcerpc.unix")
432 planpythontestsuite("dc:local", "samba.tests.dcerpc.srvsvc")
433 planpythontestsuite("none", "samba.tests.dcerpc.rpc_talloc")
434 planpythontestsuite("none", "samba.tests.samdb")
435 planpythontestsuite("none", "samba.tests.hostconfig")
436 planpythontestsuite("none", "samba.tests.messaging")
437 planpythontestsuite("none", "samba.tests.samba3sam")
439 planpythontestsuite("dc:local", "samba.tests.samba_tool.timecmd")
440 planpythontestsuite("dc:local", "samba.tests.samba_tool.user")
442 planpythontestsuite("none", "subunit")
443 planpythontestsuite("dc:local", "samba.tests.dcerpc.rpcecho")
444 planoldpythontestsuite("dc:local", "samba.tests.dcerpc.registry", extra_args
=['-U"$USERNAME%$PASSWORD"'])
445 planoldpythontestsuite("dc", "samba.tests.dcerpc.dnsserver", extra_args
=['-U"$USERNAME%$PASSWORD"'])
446 plantestsuite("samba4.ldap.python(dc)", "dc", [python
, os
.path
.join(samba4srcdir
, "dsdb/tests/python/ldap.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
447 plantestsuite("samba4.tokengroups.python(dc)", "dc:local", [python
, os
.path
.join(samba4srcdir
, "dsdb/tests/python/token_group.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
448 plantestsuite("samba4.sam.python(dc)", "dc", [python
, os
.path
.join(samba4srcdir
, "dsdb/tests/python/sam.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
449 planoldpythontestsuite("dc", "dsdb_schema_info",
450 extra_path
=[os
.path
.join(samba4srcdir
, 'dsdb/tests/python')],
451 name
="samba4.schemaInfo.python(dc)",
452 extra_args
=['-U"$DOMAIN/$DC_USERNAME%$DC_PASSWORD"'])
453 plantestsuite("samba4.urgent_replication.python(dc)", "dc:local", [python
, os
.path
.join(samba4srcdir
, "dsdb/tests/python/urgent_replication.py"), '$PREFIX_ABS/dc/private/sam.ldb'], allow_empty_output
=True)
454 plantestsuite("samba4.ldap.dirsync.python(dc)", "dc", [python
, os
.path
.join(samba4srcdir
, "dsdb/tests/python/dirsync.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
455 plantestsuite("samba4.ldap.sites.python(dc)", "dc", [python
, os
.path
.join(samba4srcdir
, "dsdb/tests/python/sites.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
456 for env
in ["dc", "fl2000dc", "fl2003dc", "fl2008r2dc"]:
457 plantestsuite("samba4.ldap_schema.python(%s)" % env
, env
, [python
, os
.path
.join(samba4srcdir
, "dsdb/tests/python/ldap_schema.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
458 plantestsuite("samba4.ldap.possibleInferiors.python(%s)" % env
, env
, [python
, os
.path
.join(samba4srcdir
, "dsdb/samdb/ldb_modules/tests/possibleinferiors.py"), "ldap://$SERVER", '-U"$USERNAME%$PASSWORD"', "-W$DOMAIN"])
459 plantestsuite("samba4.ldap.secdesc.python(%s)" % env
, env
, [python
, os
.path
.join(samba4srcdir
, "dsdb/tests/python/sec_descriptor.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
460 plantestsuite("samba4.ldap.acl.python(%s)" % env
, env
, [python
, os
.path
.join(samba4srcdir
, "dsdb/tests/python/acl.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
461 if env
!= "fl2000dc":
462 # This test makes excessive use of the "userPassword" attribute which
463 # isn't available on DCs with Windows 2000 domain function level -
464 # therefore skip it in that configuration
465 plantestsuite("samba4.ldap.passwords.python(%s)" % env
, env
, [python
, os
.path
.join(samba4srcdir
, "dsdb/tests/python/passwords.py"), "$SERVER", '-U"$USERNAME%$PASSWORD"', "-W$DOMAIN"])
466 planpythontestsuite("dc:local", "samba.tests.upgradeprovisionneeddc")
467 planpythontestsuite("none", "samba.tests.upgradeprovision")
468 planpythontestsuite("none", "samba.tests.xattr")
469 planpythontestsuite("none", "samba.tests.ntacls")
470 plantestsuite("samba4.deletetest.python(dc)", "dc", ['PYTHONPATH="$PYTHONPATH:%s/lib/subunit/python:%s/lib/testtools"' % (srcdir(), srcdir()),
471 python
, os
.path
.join(samba4srcdir
, "dsdb/tests/python/deletetest.py"),
472 '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN'])
473 planpythontestsuite("none", "bindings", extra_path
=["%s/lib/policy/tests/python" % samba4srcdir
], name
="samba4.policy.python")
474 plantestsuite("samba4.blackbox.samba3dump", "none", [python
, os
.path
.join(samba4srcdir
, "scripting/bin/samba3dump"), os
.path
.join(samba4srcdir
, "../testdata/samba3")], allow_empty_output
=True)
475 plantestsuite("samba4.blackbox.upgrade", "none", ["PYTHON=%s" % python
, os
.path
.join(samba4srcdir
, "setup/tests/blackbox_s3upgrade.sh"), '$PREFIX/provision'])
476 plantestsuite("samba4.blackbox.provision.py", "none", ["PYTHON=%s" % python
, os
.path
.join(samba4srcdir
, "setup/tests/blackbox_provision.sh"), '$PREFIX/provision'])
477 plantestsuite("samba4.blackbox.upgradeprovision.py", "none", ["PYTHON=%s" % python
, os
.path
.join(samba4srcdir
, "setup/tests/blackbox_upgradeprovision.sh"), '$PREFIX/provision'])
478 plantestsuite("samba4.blackbox.setpassword.py", "none", ["PYTHON=%s" % python
, os
.path
.join(samba4srcdir
, "setup/tests/blackbox_setpassword.sh"), '$PREFIX/provision'])
479 plantestsuite("samba4.blackbox.newuser.py", "none", ["PYTHON=%s" % python
, os
.path
.join(samba4srcdir
, "setup/tests/blackbox_newuser.sh"), '$PREFIX/provision'])
480 plantestsuite("samba4.blackbox.group.py", "none", ["PYTHON=%s" % python
, os
.path
.join(samba4srcdir
, "setup/tests/blackbox_group.sh"), '$PREFIX/provision'])
481 plantestsuite("samba4.blackbox.spn.py(dc:local)", "dc:local", ["PYTHON=%s" % python
, os
.path
.join(samba4srcdir
, "setup/tests/blackbox_spn.sh"), '$PREFIX/dc'])
482 plantestsuite("samba4.ldap.bind(dc)", "dc", [python
, os
.path
.join(srcdir(), "auth/credentials/tests/bind.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"'])
485 planoldpythontestsuite("vampire_dc", "samba.tests.blackbox.samba_tool_drs",
486 environ
={'DC1': '$DC_SERVER', 'DC2': '$VAMPIRE_DC_SERVER'},
487 extra_args
=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
488 planoldpythontestsuite("vampire_dc", "replica_sync",
489 extra_path
=[os
.path
.join(samba4srcdir
, 'torture/drs/python')],
490 name
="samba4.drs.replica_sync.python(vampire_dc)",
491 environ
={'DC1': '$DC_SERVER', 'DC2': '$VAMPIRE_DC_SERVER'},
492 extra_args
=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
493 planoldpythontestsuite("vampire_dc", "delete_object",
494 extra_path
=[os
.path
.join(samba4srcdir
, 'torture/drs/python')],
495 name
="samba4.drs.delete_object.python(vampire_dc)",
496 environ
={'DC1': '$DC_SERVER', 'DC2': '$VAMPIRE_DC_SERVER'},
497 extra_args
=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
498 planoldpythontestsuite("vampire_dc", "fsmo",
499 name
="samba4.drs.fsmo.python(vampire_dc)",
500 extra_path
=[os
.path
.join(samba4srcdir
, 'torture/drs/python')],
501 environ
={'DC1': "$DC_SERVER", 'DC2': "$VAMPIRE_DC_SERVER"},
502 extra_args
=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
503 planoldpythontestsuite("vampire_dc", "repl_schema",
504 extra_path
=[os
.path
.join(samba4srcdir
, 'torture/drs/python')],
505 name
="samba4.drs.repl_schema.python(vampire_dc)",
506 environ
={'DC1': "$DC_SERVER", 'DC2': '$VAMPIRE_DC_SERVER'},
507 extra_args
=['-U$DOMAIN/$DC_USERNAME%$DC_PASSWORD'])
509 # This makes sure we test the rid allocation code
510 t
= "rpc.samr.large-dc"
511 plansmbtorturetestsuite(t
, "vampire_dc", ['$SERVER', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], modname
=("samba4.%s.one" % t
))
512 plansmbtorturetestsuite(t
, "vampire_dc", ['$SERVER', '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], modname
="samba4.%s.two" % t
)
516 plansmbtorturetestsuite('rpc.echo', env
, ['ncacn_np:$SERVER', "-k", "yes", '-U$USERNAME%$PASSWORD', '--workgroup=$DOMAIN'], modname
="samba4.rpc.echo")
517 plansmbtorturetestsuite('rpc.echo', "%s:local" % env
, ['ncacn_np:$SERVER', "-k", "yes", '-P', '--workgroup=$DOMAIN'], modname
="samba4.rpc.echo")
518 plantestsuite("samba4.blackbox.provision-backend", "none", ["PYTHON=%s" % python
, os
.path
.join(samba4srcdir
, "setup/tests/blackbox_provision-backend.sh"), '$PREFIX/provision'])
520 # Test renaming the DC
521 plantestsuite("samba4.blackbox.renamedc.sh", "none", ["PYTHON=%s" % python
, os
.path
.join(bbdir
, "renamedc.sh"), '$PREFIX/provision'])
523 # Demote the vampire DC, it must be the last test on the VAMPIRE DC
524 plantestsuite("samba4.blackbox.samba_tool_demote(vampire_dc)", "vampire_dc", [os
.path
.join(samba4srcdir
, "utils/tests/test_demote.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', '$DOMAIN', '$DC_SERVER', '$PREFIX/vampire_dc'])
525 # check the databases are all OK. PLEASE LEAVE THIS AS THE LAST TEST
526 for env
in ["dc", "fl2000dc", "fl2003dc", "fl2008r2dc"]:
527 plantestsuite("samba4.blackbox.dbcheck(%s)" % env
, env
+ ":local" , ["PYTHON=%s" % python
, os
.path
.join(bbdir
, "dbcheck.sh"), '$PREFIX/provision', configuration
])