samba3.blackbox.smbclient.forceuser_validusers: Add new test for force user option.
[vlendec/samba-autobuild/.git] / source3 / selftest / tests.py
1 #!/usr/bin/python
2 # This script generates a list of testsuites that should be run as part of
3 # the Samba 3 test suite.
4
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".
8
9 # The idea is that this script outputs all of the tests of Samba 3, 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/samba3-knownfail. This makes it
12 # very easy to see what functionality is still missing in Samba 3 and makes
13 # it possible to run the testsuite against other servers, such as Samba 4 or
14 # Windows that have a different set of features.
15
16 # The syntax for a testsuite is "-- TEST --" on a single line, followed
17 # by the name of the test, the environment it needs and the command to run, all
18 # three separated by newlines. All other lines in the output are considered
19 # comments.
20
21 import os, sys
22 sys.path.insert(0, os.path.normpath(os.path.join(os.path.dirname(__file__), "../../selftest")))
23 import selftesthelpers
24 from selftesthelpers import *
25 smbtorture4_options.extend([
26    '--option=torture:sharedelay=100000',
27    '--option=torture:writetimeupdatedelay=500000',
28    ])
29
30 def plansmbtorture4testsuite(name, env, options, description=''):
31     if description == '':
32         modname = "samba3.%s" % (name, )
33     else:
34         modname = "samba3.%s %s" % (name, description)
35
36     selftesthelpers.plansmbtorture4testsuite(
37         name, env, options, target='samba3', modname=modname)
38
39
40 plantestsuite("samba3.blackbox.success", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_success.sh")])
41 plantestsuite("samba3.blackbox.failure", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_failure.sh")])
42
43 plantestsuite("samba3.local_s3", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_local_s3.sh")])
44
45 plantestsuite("samba3.blackbox.registry.upgrade", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_registry_upgrade.sh"), net, dbwrap_tool])
46
47 tests = ["FDPASS", "LOCK1", "LOCK2", "LOCK3", "LOCK4", "LOCK5", "LOCK6", "LOCK7", "LOCK9",
48         "UNLINK", "BROWSE", "ATTR", "TRANS2", "TORTURE",
49         "OPLOCK1", "OPLOCK2", "OPLOCK4", "STREAMERROR",
50         "DIR", "DIR1", "DIR-CREATETIME", "TCON", "TCONDEV", "RW1", "RW2", "RW3", "LARGE_READX", "RW-SIGNING",
51         "OPEN", "XCOPY", "RENAME", "DELETE", "DELETE-LN", "WILDDELETE", "PROPERTIES", "W2K",
52         "TCON2", "IOCTL", "CHKPATH", "FDSESS", "CHAIN1", "CHAIN2",
53         "CHAIN3",
54         "GETADDRINFO", "UID-REGRESSION-TEST", "SHORTNAME-TEST",
55         "CASE-INSENSITIVE-CREATE", "SMB2-BASIC", "NTTRANS-FSCTL", "SMB2-NEGPROT",
56         "SMB2-SESSION-REAUTH", "SMB2-SESSION-RECONNECT",
57         "CLEANUP1",
58         "CLEANUP2",
59         "CLEANUP4",
60         "BAD-NBT-SESSION"]
61
62 for t in tests:
63     plantestsuite("samba3.smbtorture_s3.plain(nt4_dc).%s" % t, "nt4_dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
64     plantestsuite("samba3.smbtorture_s3.crypt_client(nt4_dc).%s" % t, "nt4_dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', smbtorture3, "-e", "-l $LOCAL_PATH"])
65     if t == "TORTURE":
66         # this is a negative test to verify that the server rejects
67         # access without encryption
68         plantestsuite("samba3.smbtorture_s3.crypt_server(nt4_dc).%s" % t, "nt4_dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmpenc', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
69     plantestsuite("samba3.smbtorture_s3.plain(ad_dc_ntvfs).%s" % t, "ad_dc_ntvfs", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
70
71 # non-crypt only
72
73 tests = ["OPLOCK-CANCEL"]
74 for t in tests:
75     plantestsuite("samba3.smbtorture_s3.plain(nt4_dc).%s" % t, "nt4_dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
76
77 tests = ["RW1", "RW2", "RW3"]
78 for t in tests:
79     plantestsuite("samba3.smbtorture_s3.vfs_aio_fork(simpleserver).%s" % t, "simpleserver", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/vfs_aio_fork', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
80
81 posix_tests = ["POSIX", "POSIX-APPEND"]
82
83 for t in posix_tests:
84     plantestsuite("samba3.smbtorture_s3.plain(nt4_dc).%s" % t, "nt4_dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/posix_share', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
85     plantestsuite("samba3.smbtorture_s3.crypt(nt4_dc).%s" % t, "nt4_dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/posix_share', '$USERNAME', '$PASSWORD', smbtorture3, "-e", "-l $LOCAL_PATH"])
86     plantestsuite("samba3.smbtorture_s3.plain(ad_dc_ntvfs).%s" % t, "ad_dc_ntvfs", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/posix_share', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
87
88 env = "nt4_dc:local"
89 t = "CLEANUP3"
90 plantestsuite("samba3.smbtorture_s3.plain(%s).%s" % (env, t), env, [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', binpath('smbtorture3'), "", "-l $LOCAL_PATH"])
91
92 local_tests = [
93     "LOCAL-SUBSTITUTE",
94     "LOCAL-GENCACHE",
95     "LOCAL-TALLOC-DICT",
96     "LOCAL-BASE64",
97     "LOCAL-RBTREE",
98     "LOCAL-MEMCACHE",
99     "LOCAL-STREAM-NAME",
100     "LOCAL-string_to_sid",
101     "LOCAL-sid_to_string",
102     "LOCAL-binary_to_sid",
103     "LOCAL-DBTRANS",
104     "LOCAL-TEVENT-SELECT",
105     "LOCAL-CONVERT-STRING",
106     "LOCAL-CONV-AUTH-INFO",
107     "LOCAL-IDMAP-TDB-COMMON",
108     "LOCAL-MESSAGING-READ1",
109     "LOCAL-MESSAGING-READ2",
110     "LOCAL-MESSAGING-READ3",
111     "LOCAL-MESSAGING-READ4",
112     "LOCAL-MESSAGING-FDPASS1",
113     "LOCAL-MESSAGING-FDPASS2",
114     "LOCAL-MESSAGING-FDPASS2a",
115     "LOCAL-MESSAGING-FDPASS2b",
116     "LOCAL-hex_encode_buf",
117     "LOCAL-sprintf_append",
118     "LOCAL-remove_duplicate_addrs2"]
119
120 for t in local_tests:
121     plantestsuite("samba3.smbtorture_s3.%s" % t, "none", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//foo/bar', '""', '""', smbtorture3, ""])
122
123 plantestsuite("samba.vfstest.stream_depot", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/stream-depot/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
124 plantestsuite("samba.vfstest.xattr-tdb-1", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/xattr-tdb-1/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
125 plantestsuite("samba.vfstest.acl", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/vfstest-acl/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
126 plantestsuite("samba.vfstest.catia", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/vfstest-catia/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
127
128 for options in ["--option=clientusespnego=no", " --option=clientntlmv2auth=no --option=clientlanmanauth=yes --max-protocol=LANMAN2", ""]:
129     env = "nt4_dc"
130     plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) %s" % (env, options), env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration, options])
131
132 for env in ["nt4_dc", "nt4_member", "ad_member", "ad_dc_ntvfs", "s4member"]:
133     plantestsuite("samba3.blackbox.smbclient_machine_auth.plain (%s:local)" % env, "%s:local" % env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_machine_auth.sh"), '$SERVER', smbclient3, configuration])
134
135 for env in ["nt4_dc", "nt4_member", "ad_member"]:
136     plantestsuite("samba3.blackbox.smbclient_auth.plain (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration])
137     plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) member creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$SERVER/$USERNAME', '$PASSWORD', smbclient3, configuration])
138
139 for env in ["nt4_member", "ad_member"]:
140     plantestsuite("samba3.blackbox.net_cred_change.(%s:local)" % env, "%s:local" % env, [os.path.join(samba3srcdir, "script/tests/test_net_cred_change.sh"), configuration])
141
142 env = "ad_member"
143 t = "--krb5auth=$DOMAIN/$DC_USERNAME%$DC_PASSWORD"
144 plantestsuite("samba3.wbinfo_simple.(%s:local).%s" % (env, t), "%s:local" % env, [os.path.join(srcdir(), "nsswitch/tests/test_wbinfo_simple.sh"), t])
145 t = "WBCLIENT-MULTI-PING"
146 plantestsuite("samba3.smbtorture_s3.%s" % t, env, [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//foo/bar', '""', '""', smbtorture3, ""])
147
148
149 plantestsuite("samba3.ntlm_auth.krb5(ktest:local) old ccache", "ktest:local", [os.path.join(samba3srcdir, "script/tests/test_ntlm_auth_krb5.sh"), valgrindify(python), samba3srcdir, ntlm_auth3, '$PREFIX/ktest/krb5_ccache-2', '$SERVER', configuration])
150
151 plantestsuite("samba3.ntlm_auth.krb5(ktest:local)", "ktest:local", [os.path.join(samba3srcdir, "script/tests/test_ntlm_auth_krb5.sh"), valgrindify(python), samba3srcdir, ntlm_auth3, '$PREFIX/ktest/krb5_ccache-3', '$SERVER', configuration])
152
153
154 for env in ["maptoguest", "simpleserver"]:
155     plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) local creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbclient3, configuration + " --option=clientntlmv2auth=no --option=clientlanmanauth=yes"])
156
157 env = "maptoguest"
158 plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) bad username" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', 'notmy$USERNAME', '$PASSWORD', smbclient3, configuration + " --option=clientntlmv2auth=no --option=clientlanmanauth=yes"])
159
160 # plain
161 for env in ["nt4_dc"]:
162     plantestsuite("samba3.blackbox.smbclient_s3.plain (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration])
163
164 for env in ["nt4_member", "ad_member"]:
165     plantestsuite("samba3.blackbox.smbclient_s3.plain (%s) member creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$SERVER', '$SERVER/$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration])
166
167 for env in ["nt4_dc"]:
168     plantestsuite("samba3.blackbox.smbclient_s3.sign (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "--signing=required"])
169
170 for env in ["nt4_member", "ad_member"]:
171     plantestsuite("samba3.blackbox.smbclient_s3.sign (%s) member creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$SERVER', '$SERVER/$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "--signing=required"])
172
173 for env in ["nt4_dc"]:
174     # encrypted
175     plantestsuite("samba3.blackbox.smbclient_s3.crypt (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "-e"])
176
177 for env in ["fileserver"]:
178     plantestsuite("samba3.blackbox.preserve_case (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_preserve_case.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3])
179     plantestsuite("samba3.blackbox.dfree_command (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_dfree_command.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3])
180     plantestsuite("samba3.blackbox.dfree_quota (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_dfree_quota.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3, smbcquotas])
181     plantestsuite("samba3.blackbox.valid_users (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_valid_users.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3])
182     plantestsuite("samba3.blackbox.offline (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_offline.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/offline', smbclient3])
183     plantestsuite("samba3.blackbox.shadow_copy2 (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_shadow_copy.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/shadow', smbclient3])
184     plantestsuite("samba3.blackbox.smbclient.forceuser_validusers (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_forceuser_validusers.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3])
185
186     #
187     # tar command tests
188     #
189
190     # find config.h
191     try:
192         config_h = os.environ["CONFIG_H"]
193     except KeyError:
194         config_h = os.path.join(samba4bindir, "default/include/config.h")
195
196     # see if libarchive is supported
197     f = open(config_h, 'r')
198     try:
199         have_libarchive = ("HAVE_LIBARCHIVE 1" in f.read())
200     finally:
201         f.close()
202
203     # tar command enabled only if built with libarchive
204     if have_libarchive:
205         # Test smbclient/tarmode
206         plantestsuite("samba3.blackbox.smbclient_tarmode (%s)" % env, env,
207                       [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.sh"),
208                        '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD',
209                        '$LOCAL_PATH', '$PREFIX', smbclient3, configuration])
210
211         # Test suite for new smbclient/tar with libarchive (GSoC 13)
212         plantestsuite("samba3.blackbox.smbclient_tar (%s)" % env, env,
213                       [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.pl"),
214                        '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tmp',
215                        '-u', '$USERNAME', '-p', '$PASSWORD', '-l', '$LOCAL_PATH',
216                        '-d', '$PREFIX', '-b', smbclient3,
217                        '--subunit', '--', configuration])
218
219 #TODO encrypted against member, with member creds, and with DC creds
220 plantestsuite("samba3.blackbox.net.misc", "nt4_dc:local",
221               [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
222                scriptdir, "$SMB_CONF_PATH", net, configuration])
223 plantestsuite("samba3.blackbox.net.local.registry", "nt4_dc:local",
224               [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
225                scriptdir, "$SMB_CONF_PATH", net, configuration])
226 plantestsuite("samba3.blackbox.net.registry.check", "nt4_dc:local",
227               [os.path.join(samba3srcdir, "script/tests/test_net_registry_check.sh"),
228                scriptdir, "$SMB_CONF_PATH", net, configuration, dbwrap_tool])
229 plantestsuite("samba3.blackbox.net.rpc.registry", "nt4_dc",
230               [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
231                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
232
233 plantestsuite("samba3.blackbox.net.local.registry.roundtrip", "nt4_dc:local",
234               [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
235                scriptdir, "$SMB_CONF_PATH", net, configuration])
236 plantestsuite("samba3.blackbox.net.rpc.registry.roundtrip", "nt4_dc",
237               [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
238                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
239
240 plantestsuite("samba3.blackbox.net.local.conf", "nt4_dc:local",
241               [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
242                scriptdir, "$SMB_CONF_PATH", net, configuration])
243 plantestsuite("samba3.blackbox.net.rpc.conf", "nt4_dc",
244               [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
245                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
246
247
248 plantestsuite("samba3.blackbox.testparm", "nt4_dc:local",
249               [os.path.join(samba3srcdir, "script/tests/test_testparm_s3.sh"),
250                "$LOCAL_PATH"])
251
252 plantestsuite(
253     "samba3.pthreadpool", "nt4_dc",
254     [os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
255
256 plantestsuite("samba3.async_req", "nt4_dc",
257               [os.path.join(samba3srcdir, "script/tests/test_async_req.sh")])
258
259 #smbtorture4 tests
260
261 base = ["base.attr", "base.charset", "base.chkpath", "base.defer_open", "base.delaywrite", "base.delete",
262         "base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
263         "base.disconnect", "base.fdpass", "base.lock",
264         "base.mangle", "base.negnowait", "base.ntdeny1",
265         "base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
266         "base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
267         "base.xcopy", "base.samba3error"]
268
269 raw = ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
270        "raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock",
271        "raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
272        "raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
273        "raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename", "raw.session",
274        "raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
275        "raw.samba3rootdirfid", "raw.sfileinfo.end-of-file",
276        "raw.bench-oplock", "raw.bench-lock", "raw.bench-open", "raw.bench-tcon",
277        "raw.samba3checkfsp", "raw.samba3closeerr", "raw.samba3oplocklogoff", "raw.samba3badnameblob"]
278
279 smb2 = smbtorture4_testsuites("smb2.")
280
281 rpc = ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
282        "rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
283        "rpc.samba3.getaliasmembership-0",
284        "rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
285        "rpc.samba3.smb1-pipe-name", "rpc.samba3.smb2-pipe-name",
286        "rpc.samba3.smb-reauth1", "rpc.samba3.smb-reauth2",
287        "rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
288        "rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
289        "rpc.spoolss.driver",
290        "rpc.lsa", "rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
291        "rpc.lsa.privileges", "rpc.lsa.secrets",
292        "rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
293        "rpc.samr.passwords.pwdlastset", "rpc.samr.passwords.lockout", "rpc.samr.passwords.badpwdcount", "rpc.samr.large-dc", "rpc.samr.machine.auth",
294        "rpc.samr.priv", "rpc.samr.passwords.validate",
295        "rpc.netlogon.admin",
296        "rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.schannel_anon_setpw", "rpc.join", "rpc.bind"]
297
298 local = ["local.nss", "local.ndr"]
299
300 idmap = [ "idmap.rfc2307" ]
301
302 rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
303
304 unix = ["unix.info2", "unix.whoami"]
305
306 nbt = ["nbt.dgram" ]
307
308 libsmbclient = ["libsmbclient"]
309
310 vfs = ["vfs.fruit"]
311
312 tests= base + raw + smb2 + rpc + unix + local + rap + nbt + libsmbclient + idmap + vfs
313
314 for t in tests:
315     if t == "base.delaywrite":
316         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD -k yes --maximum-runtime=900')
317     elif t == "rap.sam":
318         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
319         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
320     elif t == "winbind.pac":
321         plansmbtorture4testsuite(t, "ad_member:local", '//$SERVER/tmp --realm=$REALM --machine-pass --option=torture:addc=$DC_SERVER', description="machine account")
322     elif t == "unix.whoami":
323         plansmbtorture4testsuite(t, "nt4_member:local", '//$SERVER/tmp --machine-pass', description="machine account")
324         plansmbtorture4testsuite(t, "ad_member:local", '//$SERVER/tmp --machine-pass --option=torture:addc=$DC_SERVER', description="machine account")
325         for env in ["nt4_dc", "nt4_member"]:
326             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
327             plansmbtorture4testsuite(t, env, '//$SERVER/tmpguest -U%', description='anonymous connection')
328         for env in ["ad_dc", "ad_member"]:
329             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$DC_USERNAME@$REALM%$DC_PASSWORD --option=torture:addc=$DC_SERVER')
330             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -k yes -U$DC_USERNAME@$REALM%$DC_PASSWORD --option=torture:addc=$DC_SERVER', description='kerberos connection')
331             plansmbtorture4testsuite(t, env, '//$SERVER/tmpguest -U% --option=torture:addc=$DC_SERVER', description='anonymous connection')
332     elif t == "raw.samba3posixtimedlock":
333         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
334         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/ad_dc/share')
335     elif t == "raw.chkpath":
336         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
337         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
338     elif t == "raw.samba3hide" or t == "raw.samba3checkfsp" or t ==  "raw.samba3closeerr":
339         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
340         plansmbtorture4testsuite(t, "simpleserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
341         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
342     elif t == "raw.session" or t == "smb2.session":
343         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'plain')
344         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpenc -U$USERNAME%$PASSWORD', 'enc')
345         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -k no -U$USERNAME%$PASSWORD', 'ntlm')
346         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -k yes -U$USERNAME%$PASSWORD', 'krb5')
347     elif t == "rpc.lsa":
348         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'over ncacn_np ')
349         plansmbtorture4testsuite(t, "nt4_dc", 'ncacn_ip_tcp:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
350         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'over ncacn_np ')
351         plansmbtorture4testsuite(t, "ad_dc", 'ncacn_ip_tcp:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
352     elif t == "rpc.samr.passwords.validate":
353         plansmbtorture4testsuite(t, "nt4_dc", 'ncacn_ip_tcp:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
354         plansmbtorture4testsuite(t, "ad_dc", 'ncacn_ip_tcp:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
355     elif t == "smb2.durable-open" or t == "smb2.durable-v2-open" or t == "smb2.replay":
356         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/durable -U$USERNAME%$PASSWORD')
357         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/durable -U$USERNAME%$PASSWORD')
358     elif t == "base.rw1":
359         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
360         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/valid-users-tmp -U$USERNAME%$PASSWORD')
361         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/write-list-tmp -U$USERNAME%$PASSWORD')
362         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
363     elif t == "idmap.rfc2307":
364         plantestsuite(t, "ad_member_rfc2307", [os.path.join(samba3srcdir, "../nsswitch/tests/test_idmap_rfc2307.sh"), '$DOMAIN', 'Administrator', '2000000', 'Guest', '2000001', '"Domain Users"', '2000002', 'DnsAdmins', '2000003', 'ou=idmap,dc=samba,dc=example,dc=com', '$DC_SERVER', '$DC_USERNAME', '$DC_PASSWORD'])
365     elif t == "raw.acls":
366         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
367         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/nfs4acl_simple -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-simple')
368         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/nfs4acl_special -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-special')
369         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
370     elif t == "smb2.ioctl":
371         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/fs_specific -U$USERNAME%$PASSWORD', 'fs_specific')
372         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
373         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
374     elif t == "smb2.lock":
375         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
376         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
377         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
378     elif t == "raw.read":
379         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
380         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
381         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
382     elif t == "raw.search":
383         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
384 # test the dirsort module.
385         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpsort -U$USERNAME%$PASSWORD')
386         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
387     elif t == "vfs.fruit":
388         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
389         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/vfs_fruit -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/ad_dc/share')
390     elif t == "rpc.schannel_anon_setpw":
391         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$%', description="anonymous password set")
392         plansmbtorture4testsuite(t, "nt4_dc_schannel", '//$SERVER_IP/tmp -U$%', description="anonymous password set (schannel enforced server-side)")
393         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$%', description="anonymous password set")
394     elif t == "local.nss":
395         for env in ["nt4_dc:local", "ad_member:local", "nt4_member:local", "ad_dc:local", "ad_dc_ntvfs:local"]:
396             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$USERNAME%$PASSWORD')
397     elif t == "smb2.change_notify_disabled":
398         plansmbtorture4testsuite(t, "simpleserver", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
399     elif t == "smb2.notify":
400         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --signing=required')
401         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD --signing=required')
402     else:
403         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
404         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
405
406
407 test = 'rpc.lsa.lookupsids'
408 auth_options = ["", "ntlm", "spnego", "spnego,ntlm" ]
409 signseal_options = ["", ",connect", ",sign", ",seal"]
410 endianness_options = ["", ",bigendian"]
411 for s in signseal_options:
412     for e in endianness_options:
413         for a in auth_options:
414             binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
415             options = binding_string + " -U$USERNAME%$PASSWORD"
416             plansmbtorture4testsuite(test, "nt4_dc", options, 'over ncacn_np with [%s%s%s] ' % (a, s, e))
417             plantestsuite("samba3.blackbox.rpcclient over ncacn_np with [%s%s%s] " % (a, s, e), "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_rpcclient.sh"),
418                                                              "none", options, configuration])
419
420     # We should try more combinations in future, but this is all
421     # the pre-calculated credentials cache supports at the moment
422     e = ""
423     a = ""
424     binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
425     options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
426     plansmbtorture4testsuite(test, "ktest", options, 'krb5 with old ccache ncacn_np with [%s%s%s] ' % (a, s, e))
427
428     options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
429     plansmbtorture4testsuite(test, "ktest", options, 'krb5 ncacn_np with [%s%s%s] ' % (a, s, e))
430
431     auth_options2 = ["krb5", "spnego,krb5"]
432     for a in auth_options2:
433         binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
434
435         plantestsuite("samba3.blackbox.rpcclient krb5 ncacn_np with [%s%s%s] " % (a, s, e), "ktest:local", [os.path.join(samba3srcdir, "script/tests/test_rpcclient.sh"),
436                                                                                                                               "$PREFIX/ktest/krb5_ccache-3", binding_string, "-k", configuration])
437
438 plantestsuite("samba3.blackbox.rpcclient_samlogon", "ad_member:local", [os.path.join(samba3srcdir, "script/tests/test_rpcclient_samlogon.sh"),
439                                                                        "$DC_USERNAME", "$DC_PASSWORD", "ncacn_np:$DC_SERVER", configuration])
440 plantestsuite("samba3.blackbox.sharesec", "simpleserver:local",
441               [os.path.join(samba3srcdir, "script/tests/test_sharesec.sh"),
442                configuration, os.path.join(bindir(), "sharesec"), "tmp"])
443
444 plantestsuite("samba3.blackbox.net_dom_join_fail_dc", "nt4_dc",
445               [os.path.join(samba3srcdir, "script/tests/test_net_dom_join_fail_dc.sh"),
446                "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_dom_join_fail_dc",
447                configuration])
448 plantestsuite("samba3.blackbox.net_rpc_join", "nt4_dc",
449               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_join.sh"),
450                "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_rpc_join",
451                configuration])
452
453 plantestsuite("samba3.blackbox.rpcclient_srvsvc", "simpleserver",
454               [os.path.join(samba3srcdir, "script/tests/test_rpcclientsrvsvc.sh"),
455                "$USERNAME", "$PASSWORD", "$SERVER",
456                os.path.join(bindir(), "rpcclient"), "tmp"])
457
458 options_list = ["", "-e"]
459 for options in options_list:
460     plantestsuite("samba3.blackbox.smbclient_krb5 old ccache %s" % options, "ktest:local",
461                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
462                    "$PREFIX/ktest/krb5_ccache-2",
463                    smbclient3, "$SERVER", options, configuration])
464
465     plantestsuite("samba3.blackbox.smbclient_krb5 old ccache %s" % options, "ktest:local",
466                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
467                    "$PREFIX/ktest/krb5_ccache-2",
468                    smbclient3, "$SERVER", options, configuration])
469
470     plantestsuite("samba3.blackbox.smbclient_large_file %s" % options, "ktest:local",
471                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_posix_large.sh"),
472                    "$PREFIX/ktest/krb5_ccache-3",
473                    smbclient3, "$SERVER", "$PREFIX", options, "-k " + configuration])
474
475     plantestsuite("samba3.blackbox.smbclient_posix_large %s krb5" % options, "ktest:local",
476                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_posix_large.sh"),
477                    "$PREFIX/ktest/krb5_ccache-3",
478                    smbclient3, "$SERVER", "$PREFIX", options, "-k " + configuration])
479
480     plantestsuite("samba3.blackbox.smbclient_posix_large %s NTLM" % options, "nt4_dc:local",
481                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_posix_large.sh"),
482                    "none",
483                    smbclient3, "$SERVER", "$PREFIX", options, "-U$USERNAME%$PASSWORD " + configuration])
484
485 for e in endianness_options:
486     for a in auth_options:
487         for s in signseal_options:
488             binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
489             options = binding_string + " -U$USERNAME%$PASSWORD"
490             plansmbtorture4testsuite(test, "nt4_dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))
491
492 plansmbtorture4testsuite('rpc.epmapper', 'nt4_dc:local', 'ncalrpc: -U$USERNAME%$PASSWORD', 'over ncalrpc')
493 plansmbtorture4testsuite('rpc.fsrvp', 'nt4_dc:local', 'ncacn_np:$SERVER_IP[/pipe/FssagentRpc] -U$USERNAME%$PASSWORD', 'over ncacn_np')