f79f4ac54fde5d82bb4d0e4774e86009abd4f132
[samba.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
22 import sys
23 import re
24 sys.path.insert(0, os.path.normpath(os.path.join(os.path.dirname(__file__), "../../selftest")))
25 import selftesthelpers
26 from selftesthelpers import bindir, srcdir, scriptdir, binpath
27 from selftesthelpers import plantestsuite, samba3srcdir
28 from selftesthelpers import smbtorture3, configuration, smbclient3, smbtorture4
29 from selftesthelpers import net, wbinfo, dbwrap_tool, rpcclient, python
30 from selftesthelpers import smbget, smbcacls, smbcquotas, ntlm_auth3
31 from selftesthelpers import valgrindify, smbtorture4_testsuites
32 from selftesthelpers import smbtorture4_options
33 from selftesthelpers import smbcontrol
34 from selftesthelpers import smbstatus
35 smbtorture4_options.extend([
36     '--option=torture:sharedelay=100000',
37    '--option=torture:writetimeupdatedelay=500000',
38 ])
39
40
41 def plansmbtorture4testsuite(name, env, options, description=''):
42     if description == '':
43         modname = "samba3.%s" % (name, )
44     else:
45         modname = "samba3.%s %s" % (name, description)
46
47     selftesthelpers.plansmbtorture4testsuite(
48         name, env, options, target='samba3', modname=modname)
49
50 def compare_versions(version1, version2):
51     for i in range(max(len(version1),len(version2))):
52          v1 = version1[i] if i < len(version1) else 0
53          v2 = version2[i] if i < len(version2) else 0
54          if v1 > v2:
55             return 1
56          elif v1 <v2:
57             return -1
58     return 0
59
60 # find config.h
61 try:
62     config_h = os.environ["CONFIG_H"]
63 except KeyError:
64     samba4bindir = bindir()
65     config_h = os.path.join(samba4bindir, "default/include/config.h")
66
67 # check available features
68 config_hash = dict()
69 f = open(config_h, 'r')
70 try:
71     lines = f.readlines()
72     config_hash = dict((x[0], ' '.join(x[1:]))
73                        for x in map(lambda line: line.strip().split(' ')[1:],
74                                     filter(lambda line: (line[0:7] == '#define') and (len(line.split(' ')) > 2), lines)))
75 finally:
76     f.close()
77
78 if config_hash["SYSTEM_UNAME_SYSNAME"] == '"Linux"':
79     m = re.search(r'(\d+).(\d+).(\d+)', config_hash["SYSTEM_UNAME_RELEASE"])
80     if m:
81         linux_kernel_version = [int(m.group(1)), int(m.group(2)), int(m.group(3))]
82
83 have_linux_kernel_oplocks = False
84 if "HAVE_KERNEL_OPLOCKS_LINUX" in config_hash:
85     if compare_versions(linux_kernel_version, [5,3,1]) >= 0:
86         have_linux_kernel_oplocks = True
87
88 have_inotify = ("HAVE_INOTIFY" in config_hash)
89 have_ldwrap = ("HAVE_LDWRAP" in config_hash)
90 with_pthreadpool = ("WITH_PTHREADPOOL" in config_hash)
91
92 def is_module_enabled(module):
93     if module in config_hash["STRING_SHARED_MODULES"]:
94         return True
95     if module in config_hash["STRING_STATIC_MODULES"]:
96         return True
97     return False
98
99 plantestsuite("samba3.blackbox.success", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_success.sh")])
100 plantestsuite("samba3.blackbox.failure", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_failure.sh")])
101
102 plantestsuite("samba3.local_s3", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_local_s3.sh")])
103
104 plantestsuite("samba3.blackbox.registry.upgrade", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_registry_upgrade.sh"), net, dbwrap_tool])
105
106 fileserver_tests = [
107          "FDPASS", "LOCK1", "LOCK2", "LOCK3", "LOCK4", "LOCK5", "LOCK6", "LOCK7",
108          "LOCK9A", "LOCK9B",
109          "LOCK10",
110          "LOCK11",
111          "LOCK12",
112          "LOCK13",
113          "UNLINK", "BROWSE", "ATTR", "TRANS2", "TORTURE",
114          "OPLOCK1", "OPLOCK2", "OPLOCK4", "STREAMERROR",
115          "DIR", "DIR1", "DIR-CREATETIME", "TCON", "TCONDEV", "RW1", "RW2", "RW3", "LARGE_READX", "RW-SIGNING",
116          "OPEN", "XCOPY", "RENAME", "DELETE", "DELETE-LN", "WILDDELETE", "PROPERTIES", "W2K",
117          "TCON2", "IOCTL", "CHKPATH", "FDSESS", "CHAIN1", "CHAIN2", "OWNER-RIGHTS",
118          "CHAIN3", "PIDHIGH", "CLI_SPLICE",
119          "UID-REGRESSION-TEST", "SHORTNAME-TEST",
120          "CASE-INSENSITIVE-CREATE", "SMB2-BASIC", "NTTRANS-FSCTL", "SMB2-NEGPROT",
121          "SMB2-SESSION-REAUTH", "SMB2-SESSION-RECONNECT", "SMB2-FTRUNCATE",
122          "SMB2-ANONYMOUS", "SMB2-DIR-FSYNC",
123          "SMB2-PATH-SLASH",
124          "SMB2-QUOTA1",
125          "CLEANUP1",
126          "CLEANUP2",
127          "CLEANUP4",
128          "DELETE-STREAM",
129          "BAD-NBT-SESSION",
130          "SMB1-WILD-MANGLE-UNLINK",
131          "SMB1-WILD-MANGLE-RENAME"]
132
133 for t in fileserver_tests:
134     fileserver_env = "fileserver_smb1"
135     if "SMB2" in t:
136         fileserver_env = "fileserver"
137     plantestsuite("samba3.smbtorture_s3.plain.%s" % t, fileserver_env, [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
138     plantestsuite("samba3.smbtorture_s3.crypt_client.%s" % t, "nt4_dc_smb1", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', smbtorture3, "-e", "-l $LOCAL_PATH"])
139     if t == "TORTURE":
140         # this is a negative test to verify that the server rejects
141         # access without encryption
142         plantestsuite("samba3.smbtorture_s3.crypt_server.%s" % t, "nt4_dc_smb1", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmpenc', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
143     if t == "CLI_SPLICE":
144         # We must test this against the SMB1 fallback.
145         plantestsuite("samba3.smbtorture_s3.plain.%s" % t, "fileserver_smb1", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH", "-mNT1"])
146     plantestsuite("samba3.smbtorture_s3.plain.%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"])
147
148 t = "TLDAP"
149 plantestsuite("samba3.smbtorture_s3.plain.%s" % t, "ad_dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER/tmp', '$DC_USERNAME', '$DC_PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
150
151 if have_linux_kernel_oplocks:
152     t = "OPLOCK5"
153     plantestsuite("samba3.smbtorture_s3.plain.%s" % t,
154                   "fileserver_smb1",
155                   [os.path.join(samba3srcdir,
156                                 "script/tests/test_smbtorture_s3.sh"),
157                    t,
158                    '//$SERVER/tmp',
159                    '$USERNAME',
160                    '$PASSWORD',
161                    smbtorture3,
162                    "",
163                    "-l $LOCAL_PATH",
164                    "-mNT1"])
165 #
166 # RENAME-ACCESS needs to run against a special share - acl_xattr_ign_sysacl_windows
167 #
168 plantestsuite("samba3.smbtorture_s3.plain.%s" % "RENAME-ACCESS", "nt4_dc_smb1", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), "RENAME-ACCESS", '//$SERVER_IP/acl_xattr_ign_sysacl_windows', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
169 plantestsuite("samba3.smbtorture_s3.crypt_client.%s" % "RENAME-ACCESS", "nt4_dc_smb1", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), "RENAME-ACCESS", '//$SERVER_IP/acl_xattr_ign_sysacl_windows', '$USERNAME', '$PASSWORD', smbtorture3, "-e", "-l $LOCAL_PATH"])
170 # non-crypt only
171
172 tests = ["OPLOCK-CANCEL"]
173 for t in tests:
174     plantestsuite("samba3.smbtorture_s3.plain.%s" % t, "nt4_dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
175
176 env = "nt4_dc_smb1"
177 tests = ["MANGLE-ILLEGAL"]
178 for t in tests:
179     plantestsuite("samba3.smbtorture_s3.plain.%s" % t, env, [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/mangle_illegal', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
180
181 tests = ["RW1", "RW2", "RW3", "SMB2-BASIC"]
182 for t in tests:
183     if t == "SMB2-BASIC":
184         env = "simpleserver"
185     else:
186         env = "fileserver_smb1"
187
188     plantestsuite("samba3.smbtorture_s3.vfs_aio_pthread(%s).%s" % (env, t), env, [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/vfs_aio_pthread', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
189     plantestsuite("samba3.smbtorture_s3.vfs_aio_fork(%s).%s" % (env, t), env, [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/vfs_aio_fork', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
190
191 plantestsuite("samba3.smbtorture_s3.hidenewfiles(fileserver_smb1)",
192               "fileserver_smb1",
193               [os.path.join(samba3srcdir,
194                             "script/tests/test_smbtorture_s3.sh"),
195                'hide-new-files-timeout',
196                '//$SERVER_IP/hidenewfiles',
197                '$USERNAME',
198                '$PASSWORD',
199                smbtorture3,
200                "",
201                "-l $LOCAL_PATH"])
202
203 #
204 # MSDFS attribute tests.
205 #
206 plantestsuite("samba3.smbtorture_s3.smb2.MSDFS-ATTRIBUTE",
207                 "fileserver",
208                 [os.path.join(samba3srcdir,
209                               "script/tests/test_smbtorture_s3.sh"),
210                 'MSDFS-ATTRIBUTE',
211                 '//$SERVER_IP/msdfs-share',
212                 '$USERNAME',
213                 '$PASSWORD',
214                 smbtorture3,
215                 "-mSMB2",
216                 "-f msdfs-src1"])
217
218 plantestsuite("samba3.smbtorture_s3.smb1.MSDFS-ATTRIBUTE",
219                 "fileserver_smb1",
220                 [os.path.join(samba3srcdir,
221                               "script/tests/test_smbtorture_s3.sh"),
222                 'MSDFS-ATTRIBUTE',
223                 '//$SERVER_IP/msdfs-share',
224                 '$USERNAME',
225                 '$PASSWORD',
226                 smbtorture3,
227                 "-mNT1",
228                 "-f msdfs-src1"])
229
230 #
231 # SMB2-STREAM-ACL needs to run against a special share - vfs_wo_fruit
232 #
233 plantestsuite("samba3.smbtorture_s3.plain.%s" % "SMB2-STREAM-ACL",
234                 "fileserver",
235                 [os.path.join(samba3srcdir,
236                               "script/tests/test_smbtorture_s3.sh"),
237                 'SMB2-STREAM-ACL',
238                 '//$SERVER_IP/vfs_wo_fruit',
239                 '$USERNAME',
240                 '$PASSWORD',
241                 smbtorture3,
242                 "",
243                 "-l $LOCAL_PATH"])
244
245 shares = [
246     "vfs_aio_pthread_async_dosmode_default1",
247     "vfs_aio_pthread_async_dosmode_default2",
248     "vfs_aio_pthread_async_dosmode_force_sync1",
249     "vfs_aio_pthread_async_dosmode_force_sync2"
250 ]
251 for s in shares:
252     plantestsuite("samba3.smbtorture_s3.%s(simpleserver).SMB2-BASIC" % s, "simpleserver", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), 'SMB2-BASIC', '//$SERVER_IP/' + s, '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
253     t = "smb2.compound_find"
254     plansmbtorture4testsuite(t, "simpleserver", "//%s/%s %s" % ('$SERVER_IP', s, ' -U$USERNAME%$PASSWORD'), description=s)
255
256 posix_tests = ["POSIX", "POSIX-APPEND", "POSIX-SYMLINK-ACL", "POSIX-SYMLINK-EA", "POSIX-OFD-LOCK",
257                "POSIX-STREAM-DELETE", "WINDOWS-BAD-SYMLINK", "POSIX-MKDIR",
258                "POSIX-BLOCKING-LOCK",
259                "POSIX-ACL-OPLOCK",
260                "POSIX-ACL-SHAREROOT",
261                "POSIX-LS-WILDCARD",
262                "POSIX-LS-SINGLE",
263                "POSIX-READLINK",
264                "POSIX-STAT",
265                "POSIX-SYMLINK-PARENT",
266                "POSIX-SYMLINK-CHMOD",
267                "POSIX-DIR-DEFAULT-ACL",
268                "POSIX-SYMLINK-RENAME",
269                "POSIX-SYMLINK-GETPATHINFO",
270               ]
271
272 for t in posix_tests:
273     plantestsuite("samba3.smbtorture_s3.plain.%s" % t, "nt4_dc_smb1", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/posix_share', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
274     plantestsuite("samba3.smbtorture_s3.crypt.%s" % t, "nt4_dc_smb1", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/posix_share', '$USERNAME', '$PASSWORD', smbtorture3, "-e", "-l $LOCAL_PATH"])
275
276 local_tests = [
277     "LOCAL-SUBSTITUTE",
278     "LOCAL-GENCACHE",
279     "LOCAL-BASE64",
280     "LOCAL-RBTREE",
281     "LOCAL-MEMCACHE",
282     "LOCAL-STREAM-NAME",
283     "LOCAL-string_to_sid",
284     "LOCAL-sid_to_string",
285     "LOCAL-binary_to_sid",
286     "LOCAL-DBTRANS",
287     "LOCAL-TEVENT-POLL",
288     "LOCAL-CONVERT-STRING",
289     "LOCAL-CONV-AUTH-INFO",
290     "LOCAL-IDMAP-TDB-COMMON",
291     "LOCAL-MESSAGING-READ1",
292     "LOCAL-MESSAGING-READ2",
293     "LOCAL-MESSAGING-READ3",
294     "LOCAL-MESSAGING-READ4",
295     "LOCAL-MESSAGING-FDPASS1",
296     "LOCAL-MESSAGING-FDPASS2",
297     "LOCAL-MESSAGING-FDPASS2a",
298     "LOCAL-MESSAGING-FDPASS2b",
299     "LOCAL-MESSAGING-SEND-ALL",
300     "LOCAL-PTHREADPOOL-TEVENT",
301     "LOCAL-CANONICALIZE-PATH",
302     "LOCAL-DBWRAP-WATCH1",
303     "LOCAL-DBWRAP-WATCH2",
304     "LOCAL-DBWRAP-WATCH3",
305     "LOCAL-DBWRAP-WATCH4",
306     "LOCAL-DBWRAP-DO-LOCKED1",
307     "LOCAL-G-LOCK1",
308     "LOCAL-G-LOCK2",
309     "LOCAL-G-LOCK3",
310     "LOCAL-G-LOCK4",
311     "LOCAL-G-LOCK4A",
312     "LOCAL-G-LOCK5",
313     "LOCAL-G-LOCK6",
314     "LOCAL-G-LOCK7",
315     "LOCAL-G-LOCK8",
316     "LOCAL-NAMEMAP-CACHE1",
317     "LOCAL-IDMAP-CACHE1",
318     "LOCAL-hex_encode_buf",
319     "LOCAL-remove_duplicate_addrs2"]
320
321 for t in local_tests:
322     plantestsuite("samba3.smbtorture_s3.%s" % t, "none", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//foo/bar', '""', '""', smbtorture3, ""])
323
324 plantestsuite("samba.vfstest.stream_depot", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/stream-depot/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
325 plantestsuite("samba.vfstest.xattr-tdb-1", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/xattr-tdb-1/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
326 plantestsuite("samba.vfstest.acl", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/vfstest-acl/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
327 plantestsuite("samba.vfstest.catia", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/vfstest-catia/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
328
329 plantestsuite("samba3.blackbox.smbclient_basic.NT1", "nt4_dc_schannel", [os.path.join(samba3srcdir, "script/tests/test_smbclient_basic.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration, "-mNT1"])
330 plantestsuite("samba3.blackbox.smbclient_basic.NT1", "nt4_dc_smb1", [os.path.join(samba3srcdir, "script/tests/test_smbclient_basic.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration, "-mNT1"])
331 plantestsuite("samba3.blackbox.smbclient_basic.SMB2_02", "nt4_dc_schannel", [os.path.join(samba3srcdir, "script/tests/test_smbclient_basic.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration, "-mSMB2_02"])
332 plantestsuite("samba3.blackbox.smbclient_basic.SMB2_10", "nt4_dc_schannel", [os.path.join(samba3srcdir, "script/tests/test_smbclient_basic.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration, "-mSMB2_10"])
333 plantestsuite("samba3.blackbox.smbclient_basic.SMB3_02", "nt4_dc_schannel", [os.path.join(samba3srcdir, "script/tests/test_smbclient_basic.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration, "-mSMB3_02"])
334 plantestsuite("samba3.blackbox.smbclient_basic.SMB3_11", "nt4_dc_schannel", [os.path.join(samba3srcdir, "script/tests/test_smbclient_basic.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration, "-mSMB3_11"])
335
336 plantestsuite("samba3.blackbox.smbclient_basic", "ad_member", [os.path.join(samba3srcdir, "script/tests/test_smbclient_basic.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration])
337 for options in ["", "--option=clientntlmv2auth=no", "--option=clientusespnego=no", "--option=clientusespnego=no --option=clientntlmv2auth=no", "--option=clientntlmv2auth=no --option=clientlanmanauth=yes --max-protocol=LANMAN2", "--option=clientntlmv2auth=no --option=clientlanmanauth=yes --option=clientmaxprotocol=NT1"]:
338     if "NT1" in options or "LANMAN2" in options:
339         env = "nt4_dc_smb1_done"
340     else:
341         env = "nt4_dc"
342     plantestsuite("samba3.blackbox.smbclient_auth.plain.%s" % (options), env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration, options])
343
344 for env in ["nt4_dc", "nt4_member", "ad_member", "ad_dc", "ad_dc_ntvfs", "s4member", "fl2000dc"]:
345     plantestsuite("samba3.blackbox.smbclient_machine_auth.plain", "%s:local" % env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_machine_auth.sh"), '$SERVER', smbclient3, configuration])
346     smb1_env = env
347     if smb1_env == "ad_dc" or smb1_env == "nt4_dc":
348         smb1_env = smb1_env + "_smb1_done"
349     plantestsuite("samba3.blackbox.smbclient_ntlm.plain NT1", smb1_env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_ntlm.sh"), '$SERVER', '$DC_USERNAME', '$DC_PASSWORD', "never", smbclient3, "NT1", configuration])
350     plantestsuite("samba3.blackbox.smbclient_ntlm.plain SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_ntlm.sh"), '$SERVER', '$DC_USERNAME', '$DC_PASSWORD', "never", smbclient3, "SMB3", configuration])
351
352
353 plantestsuite("samba3.blackbox.smbclient_log_basename", "ad_dc", [os.path.join(samba3srcdir, "script/tests/test_smbclient_log_basename.sh"), '$SERVER', smbclient3, '$PREFIX', configuration])
354
355 for options in ["--option=clientntlmv2auth=no", "--option=clientusespnego=no --option=clientntlmv2auth=no", "--option=clientusespnego=no --option=clientntlmv2auth=no -mNT1", ""]:
356     # don't attempt to run SMB1 tests in nt4_member or ad_member
357     # as these test envs don't support SMB1, use nt4_dc instead
358     environs = ["nt4_member", "ad_member"]
359     if "NT1" in options or "LANMAN2" in options:
360         environs = ["nt4_dc_smb1_done"]
361     for env in environs:
362         plantestsuite("samba3.blackbox.smbclient_auth.plain.%s" % (options), env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration, options])
363         plantestsuite("samba3.blackbox.smbclient_auth.plain.%s.member_creds" % (options), env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$SERVER/$USERNAME', '$PASSWORD', smbclient3, configuration, options])
364
365 for env in ["nt4_member", "ad_member"]:
366     plantestsuite("samba3.blackbox.smbclient_auth.empty_domain.domain_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '/$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration, options])
367     plantestsuite("samba3.blackbox.smbclient_auth.empty_domain.member_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '/$USERNAME', '$PASSWORD', smbclient3, configuration, options])
368     plantestsuite("samba3.blackbox.smbclient_auth.dot_domain.domain_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', './$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration, options])
369     plantestsuite("samba3.blackbox.smbclient_auth.dot_domain.member_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', './$USERNAME', '$PASSWORD', smbclient3, configuration, options])
370     plantestsuite("samba3.blackbox.smbclient_auth.upn.domain_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME@$REALM', '$DC_PASSWORD', smbclient3, configuration, options])
371     plantestsuite("samba3.blackbox.smbclient_auth.upn.member_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$USERNAME@$SERVER', '$PASSWORD', smbclient3, configuration, options])
372
373 env = "ad_dc_smb1"
374 plantestsuite("samba3.blackbox.smbspool", env, [os.path.join(samba3srcdir, "script/tests/test_smbspool.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', env])
375
376 plantestsuite("samba3.blackbox.printing_var_exp", "nt4_dc", [os.path.join(samba3srcdir, "script/tests/test_printing_var_exp.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD'])
377
378 for env in ["ad_member:local", "nt4_dc:local"]:
379     plantestsuite("samba3.blackbox.smbpasswd", env, [os.path.join(samba3srcdir, "script/tests/test_smbpasswd.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD'])
380
381 env = "nt4_dc"
382 plantestsuite("samba3.blackbox.smbclient_auth.plain.ipv6", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IPV6', '$SERVER/$USERNAME', '$PASSWORD', smbclient3, configuration])
383
384 for env in ["nt4_member", "ad_member"]:
385     plantestsuite("samba3.blackbox.net_cred_change", "%s:local" % env, [os.path.join(samba3srcdir, "script/tests/test_net_cred_change.sh"), configuration])
386
387 env = "ad_member"
388 t = "--krb5auth=$DOMAIN/$DC_USERNAME%$DC_PASSWORD"
389 plantestsuite("samba3.wbinfo_simple.%s" % t, "%s:local" % env, [os.path.join(srcdir(), "nsswitch/tests/test_wbinfo_simple.sh"), t])
390 plantestsuite("samba3.wbinfo_name_lookup", env,
391               [os.path.join(srcdir(),
392                             "nsswitch/tests/test_wbinfo_name_lookup.sh"),
393                '$DOMAIN', '$REALM', '$DC_USERNAME'])
394
395 env = "ad_member"
396 plantestsuite("samba3.wbinfo_user_info_cached", env,
397               [os.path.join(srcdir(),
398                             "nsswitch/tests/test_wbinfo_user_info_cached.sh"),
399                '$DOMAIN', '$REALM', 'joe', 'Secret007', '"Samba Users"', env])
400 plantestsuite("samba3.wbinfo_user_info_cached.trustdom", env,
401               [os.path.join(srcdir(),
402                             "nsswitch/tests/test_wbinfo_user_info_cached.sh"),
403                '$TRUST_F_BOTH_DOMAIN', '$TRUST_F_BOTH_REALM', 'joe', 'Secret007', '"Samba Users"', env])
404
405 env = "ad_member:local"
406 plantestsuite("samba3.wbinfo_user_info", env,
407               [os.path.join(srcdir(),
408                             "nsswitch/tests/test_wbinfo_user_info.sh"),
409                '$DOMAIN', '$REALM', '$DOMAIN', 'alice', 'alice', 'jane', 'jane.doe', env])
410
411 env = "fl2008r2dc:local"
412 plantestsuite("samba3.wbinfo_user_info", env,
413               [os.path.join(srcdir(),
414                             "nsswitch/tests/test_wbinfo_user_info.sh"),
415                '$TRUST_DOMAIN', '$TRUST_REALM', '$DOMAIN', 'alice', 'alice', 'jane', 'jane.doe', env])
416
417 env = "nt4_member:local"
418 plantestsuite("samba3.wbinfo_sids_to_xids", env,
419               [os.path.join(srcdir(),
420                             "nsswitch/tests/test_wbinfo_sids_to_xids.sh")])
421 plantestsuite(
422     "samba.wbinfo_lookuprids_cache",
423     env,
424     [os.path.join(samba3srcdir,
425                   "script/tests/test_wbinfo_lookuprids_cache.sh")])
426
427 env = "ad_member"
428 t = "WBCLIENT-MULTI-PING"
429 plantestsuite("samba3.smbtorture_s3.%s" % t, env, [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//foo/bar', '""', '""', smbtorture3, ""])
430 plantestsuite("samba3.substitutions", env, [os.path.join(samba3srcdir, "script/tests/test_substitutions.sh"), "$SERVER", "alice", "Secret007", "$PREFIX"])
431
432 for env in ["maptoguest", "simpleserver"]:
433     plantestsuite("samba3.blackbox.smbclient_auth.plain.local_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbclient3, configuration + " --option=clientntlmv2auth=no --option=clientlanmanauth=yes"])
434
435 env = "maptoguest"
436 plantestsuite("samba3.blackbox.smbclient_auth.plain.bad_username", 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"])
437 plantestsuite("samba3.blackbox.smbclient_ntlm.plain.NT1", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_ntlm.sh"), '$SERVER', '$USERNAME', '$PASSWORD', "baduser", smbclient3, "NT1", configuration])
438 plantestsuite("samba3.blackbox.smbclient_ntlm.plain.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_ntlm.sh"), '$SERVER', '$USERNAME', '$PASSWORD', "baduser", smbclient3, "SMB3", configuration])
439
440 # plain
441 env = "nt4_dc_smb1_done"
442 plantestsuite("samba3.blackbox.smbclient_s3.NT1.plain", 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, "NT1"])
443 env = "nt4_dc"
444 plantestsuite("samba3.blackbox.smbclient_s3.SMB3.plain", 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, "SMB3"])
445
446 for env in ["nt4_member", "ad_member"]:
447     plantestsuite("samba3.blackbox.smbclient_s3.NT1.plain.member_creds", 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, "NT1"])
448     plantestsuite("samba3.blackbox.smbclient_s3.SMB3.plain.member_creds", 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, "SMB3"])
449
450 env = "nt4_dc_smb1_done"
451 plantestsuite("samba3.blackbox.smbclient_s3.NT1.sign", 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, "NT1", "--client-protection=sign"])
452 env = "nt4_dc"
453 plantestsuite("samba3.blackbox.smbclient_s3.SMB3.sign", 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, "SMB3", "--client-protection=sign"])
454
455 for env in ["nt4_member", "ad_member"]:
456     plantestsuite("samba3.blackbox.smbclient_s3.NT1.sign.member_creds", 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, "NT1", "--client-protection=sign"])
457     plantestsuite("samba3.blackbox.smbclient_s3.SMB3.sign.member_creds", 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, "SMB3", "--client-protection=sign"])
458
459 env = "nt4_dc_smb1_done"
460 # encrypted
461 plantestsuite("samba3.blackbox.smbclient_s3.NT1.crypt", 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, "NT1", "--client-protection=encrypt"])
462 env = "nt4_dc"
463 plantestsuite("samba3.blackbox.smbclient_s3.SMB3.crypt", 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, "SMB3", "--client-protection=encrypt"])
464
465 for env in ["fileserver"]:
466     plantestsuite("samba3.blackbox.preserve_case.NT1", env + "_smb1_done", [os.path.join(samba3srcdir, "script/tests/test_preserve_case.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, "NT1"])
467     plantestsuite("samba3.blackbox.preserve_case.SMB2+", env, [os.path.join(samba3srcdir, "script/tests/test_preserve_case.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, '"SMB2 SMB3"'])
468     plantestsuite("samba3.blackbox.dfree_command.NT1", env + "_smb1_done", [os.path.join(samba3srcdir, "script/tests/test_dfree_command.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, "NT1"])
469     plantestsuite("samba3.blackbox.dfree_command.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_dfree_command.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, "SMB3"])
470     plantestsuite("samba3.blackbox.dfree_quota.NT1", env + "_smb1_done", [os.path.join(samba3srcdir, "script/tests/test_dfree_quota.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3, smbcquotas, smbcacls, "NT1"])
471     plantestsuite("samba3.blackbox.dfree_quota.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_dfree_quota.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3, smbcquotas, smbcacls, "SMB3"])
472     plantestsuite("samba3.blackbox.smbcquotas", env, [os.path.join(samba3srcdir, "script/tests/test_smbcquota.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbcquotas])
473     plantestsuite("samba3.blackbox.valid_users", env, [os.path.join(samba3srcdir, "script/tests/test_valid_users.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3])
474     plantestsuite("samba3.blackbox.force_create_mode", env, [os.path.join(samba3srcdir, "script/tests/test_force_create_mode.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', env, smbclient3])
475     plantestsuite("samba3.blackbox.dropbox", env, [os.path.join(samba3srcdir, "script/tests/test_dropbox.sh"), '$SERVER', '$DOMAIN', 'gooduser', '$PASSWORD', '$PREFIX', env, smbclient3])
476     plantestsuite("samba3.blackbox.offline", env, [os.path.join(samba3srcdir, "script/tests/test_offline.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/offline', smbclient3])
477     plantestsuite("samba3.blackbox.shadow_copy2.NT1", env + "_smb1_done", [os.path.join(samba3srcdir, "script/tests/test_shadow_copy.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/shadow', smbclient3, '-m', 'NT1'])
478     plantestsuite("samba3.blackbox.shadow_copy2.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_shadow_copy.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/shadow', smbclient3, '-m', 'SMB3'])
479     plantestsuite("samba3.blackbox.shadow_copy_torture", env, [os.path.join(samba3srcdir, "script/tests/test_shadow_copy_torture.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/shadow', smbtorture4])
480     plantestsuite("samba3.blackbox.smbclient.forceuser_validusers", env, [os.path.join(samba3srcdir, "script/tests/test_forceuser_validusers.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3])
481     plantestsuite("samba3.blackbox.smbget", env, [os.path.join(samba3srcdir, "script/tests/test_smbget.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', 'smbget_user', '$PASSWORD', '$LOCAL_PATH/smbget', smbget])
482     plantestsuite("samba3.blackbox.netshareenum", env, [os.path.join(samba3srcdir, "script/tests/test_shareenum.sh"), '$SERVER', '$USERNAME', '$PASSWORD', rpcclient])
483     plantestsuite("samba3.blackbox.acl_xattr.NT1", env + "_smb1_done", [os.path.join(samba3srcdir, "script/tests/test_acl_xattr.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, '-mNT1'])
484     plantestsuite("samba3.blackbox.acl_xattr.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_acl_xattr.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, '-mSMB3'])
485     plantestsuite("samba3.blackbox.smb2.not_casesensitive", env, [os.path.join(samba3srcdir, "script/tests/test_smb2_not_casesensitive.sh"), '//$SERVER/tmp', '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3])
486     plantestsuite("samba3.blackbox.inherit_owner.default.NT1", env + "_smb1_done", [os.path.join(samba3srcdir, "script/tests/test_inherit_owner.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, net, 'tmp', '0', '0', '-m', 'NT1'])
487     plantestsuite("samba3.blackbox.inherit_owner.default.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_inherit_owner.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, net, 'tmp', '0', '0', '-m', 'SMB3'])
488     plantestsuite("samba3.blackbox.inherit_owner.full.NT1", env + "_smb1_done", [os.path.join(samba3srcdir, "script/tests/test_inherit_owner.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, net, 'inherit_owner', '1', '1', '-m', 'NT1'])
489     plantestsuite("samba3.blackbox.inherit_owner.full.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_inherit_owner.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, net, 'inherit_owner', '1', '1', '-m', 'SMB3'])
490     plantestsuite("samba3.blackbox.inherit_owner.unix.NT1", env + "_smb1_done", [os.path.join(samba3srcdir, "script/tests/test_inherit_owner.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, net, 'inherit_owner_u', '0', '1', '-m', 'NT1'])
491     plantestsuite("samba3.blackbox.inherit_owner.unix.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_inherit_owner.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, net, 'inherit_owner_u', '0', '1', '-m', 'SMB3'])
492     plantestsuite("samba3.blackbox.large_acl.NT1", env + "_smb1_done", [os.path.join(samba3srcdir, "script/tests/test_large_acl.sh"), '$SERVER', '$USERNAME', '$PASSWORD', smbclient3, smbcacls, '-m', 'NT1'])
493     plantestsuite("samba3.blackbox.large_acl.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_large_acl.sh"), '$SERVER', '$USERNAME', '$PASSWORD', smbclient3, smbcacls, '-m', 'SMB3'])
494     plantestsuite("samba3.blackbox.give_owner", env, [os.path.join(samba3srcdir, "script/tests/test_give_owner.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, net, 'tmp'])
495     plantestsuite("samba3.blackbox.homes", env, [os.path.join(samba3srcdir, "script/tests/test_homes.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', '$PREFIX', smbclient3, configuration])
496     plantestsuite("samba3.blackbox.force_group_change", env,
497                 [os.path.join(samba3srcdir, "script/tests/test_force_group_change.sh"),
498                 '$SERVER', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3, smbcontrol])
499     plantestsuite("samba3.blackbox.zero-data", env,
500                   [os.path.join(samba3srcdir, "script/tests/test_zero_data.sh"),
501                    '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH'])
502     plantestsuite("samba3.blackbox.timestamps", env,
503                   [os.path.join(samba3srcdir, "script/tests/test_timestamps.sh"),
504                    '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3])
505     plantestsuite("samba3.blackbox.smb1_system_security", env + "_smb1_done",
506                   [os.path.join(samba3srcdir, "script/tests/test_smb1_system_security.sh"),
507                    '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbtorture3, net, 'tmp'])
508     plantestsuite("samba3.blackbox.sacl_get_set", env,
509                   [os.path.join(samba3srcdir, "script/tests/test_sacl_set_get.sh"),
510                    '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbtorture3, net, 'tmp'])
511     plantestsuite("samba3.blackbox.NT1.shadow_copy_torture", env + "_smb1_done",
512                   [os.path.join(samba3srcdir, "script/tests/test_smb1_shadow_copy_torture.sh"),
513                    '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/shadow', smbtorture4])
514     plantestsuite("samba3.blackbox.smbclient_iconv.SMB2", env,
515                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_iconv.sh"),
516                    '$SERVER', '$SERVER_IP', 'bad_iconv', '$USERNAME', '$PASSWORD', smbclient3])
517     plantestsuite("samba3.blackbox.smbclient_iconv.NT1", env + "_smb1_done",
518                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_iconv.sh"),
519                    '$SERVER', '$SERVER_IP', 'bad_iconv', '$USERNAME', '$PASSWORD', smbclient3, '-mNT1'])
520     plantestsuite("samba3.blackbox.smbclient_iconv.CORE", env + "_smb1_done",
521                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_iconv.sh"),
522                    '$SERVER', '$SERVER_IP', 'bad_iconv', '$USERNAME', '$PASSWORD', smbclient3, '-mCORE'])
523
524     #
525     # tar command tests
526     #
527
528     # Test smbclient/tarmode
529     plantestsuite("samba3.blackbox.smbclient_tarmode.NT1", env + "_smb1_done",
530                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.sh"),
531                    '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD',
532                    '$LOCAL_PATH/tarmode/smbclient_tar', '$PREFIX', smbclient3, configuration, "-mNT1"])
533     plantestsuite("samba3.blackbox.smbclient_tarmode.SMB3", env,
534                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.sh"),
535                    '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD',
536                    '$LOCAL_PATH/tarmode/smbclient_tar', '$PREFIX', smbclient3, configuration, "-mSMB3"])
537
538     # Test suite for new smbclient/tar with libarchive (GSoC 13)
539     plantestsuite("samba3.blackbox.smbclient_tar.NT1", env + "_smb1_done",
540                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.pl"),
541                    '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tarmode2',
542                    '-u', '$USERNAME', '-p', '$PASSWORD', '-l', '$LOCAL_PATH/tarmode2',
543                    '-d', 'smbclient_tar.NT1', '-b', smbclient3,
544                    '--subunit', '--', configuration, '-mNT1'])
545     plantestsuite("samba3.blackbox.smbclient_tar.SMB3", env,
546                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.pl"),
547                    '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tarmode2',
548                    '-u', '$USERNAME', '-p', '$PASSWORD', '-l', '$LOCAL_PATH/tarmode2',
549                    '-d', 'smbclient_tar.SMB3', '-b', smbclient3,
550                    '--subunit', '--', configuration, '-mSMB3'])
551
552 for env in ["fileserver:local"]:
553     plantestsuite("samba3.blackbox.net_usershare", env, [os.path.join(samba3srcdir, "script/tests/test_net_usershare.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbclient3])
554
555     plantestsuite("samba3.blackbox.smbstatus", env, [os.path.join(samba3srcdir, "script/tests/test_smbstatus.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, smbstatus, configuration, "SMB3"])
556     plantestsuite("samba3.blackbox.net_registry_import", env, [os.path.join(samba3srcdir, "script/tests/test_net_registry_import.sh"), '$SERVER', '$LOCAL_PATH', '$USERNAME', '$PASSWORD'])
557
558 # TODO encrypted against member, with member creds, and with DC creds
559 plantestsuite("samba3.blackbox.net.misc NT1", "ad_dc_smb1_done:local",
560               [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
561                scriptdir, "$SMB_CONF_PATH", net, configuration, "NT1"])
562 plantestsuite("samba3.blackbox.net.misc SMB3", "ad_dc:local",
563               [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
564                scriptdir, "$SMB_CONF_PATH", net, configuration, "SMB3"])
565 plantestsuite("samba3.blackbox.net.local.registry", "nt4_dc:local",
566               [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
567                scriptdir, "$SMB_CONF_PATH", net, configuration])
568 plantestsuite("samba3.blackbox.net.registry.check", "nt4_dc:local",
569               [os.path.join(samba3srcdir, "script/tests/test_net_registry_check.sh"),
570                scriptdir, "$SMB_CONF_PATH", net, configuration, dbwrap_tool])
571 plantestsuite("samba3.blackbox.net.rpc.registry", "nt4_dc",
572               [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
573                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
574
575 plantestsuite("samba3.blackbox.net.local.registry.roundtrip", "nt4_dc:local",
576               [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
577                scriptdir, "$SMB_CONF_PATH", net, configuration])
578 plantestsuite("samba3.blackbox.net.rpc.registry.roundtrip", "nt4_dc",
579               [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
580                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
581
582 plantestsuite("samba3.blackbox.net.local.conf", "nt4_dc:local",
583               [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
584                scriptdir, "$SMB_CONF_PATH", net, configuration])
585 plantestsuite("samba3.blackbox.net.rpc.conf", "nt4_dc",
586               [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
587                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
588
589
590 plantestsuite("samba3.blackbox.testparm", "nt4_dc:local",
591               [os.path.join(samba3srcdir, "script/tests/test_testparm_s3.sh"),
592                "$LOCAL_PATH"])
593
594 plantestsuite(
595     "samba3.pthreadpool", "none",
596     [os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
597
598 if with_pthreadpool and have_ldwrap:
599     plantestsuite("samba3.pthreadpool_cmocka", "none",
600                   [os.path.join(bindir(), "pthreadpooltest_cmocka")])
601
602 if with_pthreadpool:
603     plantestsuite("samba3.libwbclient_threads",
604                   "nt4_member",
605                   [os.path.join(samba3srcdir,
606                                 "script/tests/test_libwbclient_threads.sh"),
607                    "$DOMAIN", "$DC_USERNAME"])
608
609 plantestsuite("samba3.test_nfs4_acl", "none",
610               [os.path.join(bindir(), "test_nfs4_acls"),
611                "$SMB_CONF_PATH"])
612
613 plantestsuite("samba3.test_vfs_full_audit", "none",
614               [os.path.join(bindir(), "test_vfs_full_audit"),
615                "$SMB_CONF_PATH"])
616
617 plantestsuite("samba3.test_vfs_posixacl", "none",
618               [os.path.join(bindir(), "test_vfs_posixacl"),
619                "$SMB_CONF_PATH"])
620
621 if is_module_enabled("vfs_gpfs"):
622     plantestsuite("samba3.test_vfs_gpfs", "none",
623                   [os.path.join(bindir(), "test_vfs_gpfs")])
624
625 plantestsuite(
626     "samba3.resolvconf", "none",
627     [os.path.join(samba3srcdir, "script/tests/test_resolvconf.sh")])
628
629 plantestsuite("samba3.tevent_glib_glue", "none",
630     [os.path.join(samba3srcdir, "script/tests/test_tevent_glib_glue.sh")])
631
632 plantestsuite("samba3.async_req", "nt4_dc",
633               [os.path.join(samba3srcdir, "script/tests/test_async_req.sh")])
634
635 # smbtorture4 tests
636
637 base = ["base.attr", "base.charset", "base.chkpath", "base.createx_access", "base.defer_open", "base.delaywrite", "base.delete",
638         "base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
639         "base.disconnect", "base.fdpass", "base.lock",
640         "base.mangle", "base.negnowait", "base.ntdeny1",
641         "base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
642         "base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
643         "base.xcopy", "base.samba3error"]
644
645 raw = ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
646        "raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock",
647        "raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
648        "raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
649        "raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename", "raw.session",
650        "raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
651        "raw.samba3rootdirfid", "raw.samba3rootdirfid2", "raw.sfileinfo.end-of-file",
652        "raw.bench-oplock", "raw.bench-lock", "raw.bench-open", "raw.bench-tcon",
653        "raw.samba3checkfsp", "raw.samba3closeerr", "raw.samba3oplocklogoff", "raw.samba3badnameblob"]
654
655 smb2 = smbtorture4_testsuites("smb2.")
656
657 rpc = ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
658        "rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
659        "rpc.samba3.getaliasmembership-0",
660        "rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
661        "rpc.samba3.smb1-pipe-name", "rpc.samba3.smb2-pipe-name",
662        "rpc.samba3.smb-reauth1", "rpc.samba3.smb-reauth2",
663        "rpc.samba3.lsa_over_netlogon", "rpc.samba3.pipes_supported_interfaces",
664        "rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
665        "rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
666        "rpc.spoolss.driver",
667        "rpc.lsa", "rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
668        "rpc.lsa.privileges", "rpc.lsa.secrets",
669        "rpc.mdssvc",
670        "rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
671        "rpc.samr.passwords.pwdlastset", "rpc.samr.passwords.lockout", "rpc.samr.passwords.badpwdcount", "rpc.samr.large-dc", "rpc.samr.machine.auth",
672        "rpc.samr.priv", "rpc.samr.passwords.validate", "rpc.samr.handletype",
673        "rpc.netlogon.admin",
674        "rpc.netlogon.zerologon",
675        "rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.schannel_anon_setpw", "rpc.join", "rpc.bind",
676        "rpc.initshutdown", "rpc.wkssvc", "rpc.srvsvc"]
677
678 local = ["local.nss"]
679
680 idmap = ["idmap.rfc2307", "idmap.alloc", "idmap.rid", "idmap.ad"]
681
682 rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
683
684 unix = ["unix.info2", "unix.whoami"]
685
686 nbt = ["nbt.dgram"]
687
688 vfs = [
689     "vfs.fruit",
690     "vfs.acl_xattr",
691     "vfs.fruit_netatalk",
692     "vfs.fruit_file_id",
693     "vfs.fruit_timemachine",
694     "vfs.fruit_conversion",
695     "vfs.unfruit",
696 ]
697
698 tests = base + raw + smb2 + rpc + unix + local + rap + nbt + idmap + vfs
699
700 for t in tests:
701     if t == "base.delaywrite" or t == "base.deny1" or t == "base.deny2":
702         plansmbtorture4testsuite(t, "fileserver_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD --maximum-runtime=900')
703     elif t == "base.createx_access":
704         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD -k yes --maximum-runtime=900')
705     elif t == "rap.sam":
706         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
707         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
708     elif t == "winbind.pac":
709         plansmbtorture4testsuite(t, "ad_member:local", '//$SERVER/tmp --realm=$REALM --machine-pass --option=torture:addc=$DC_SERVER', description="machine account")
710     elif t == "unix.whoami":
711         plansmbtorture4testsuite(t, "nt4_member:local", '//$SERVER/tmp --machine-pass', description="machine account")
712         plansmbtorture4testsuite(t, "ad_dc_smb1:local", '//$SERVER/tmp --machine-pass', description="machine account")
713         plansmbtorture4testsuite(t, "ad_member:local", '//$SERVER/tmp --machine-pass --option=torture:addc=$DC_SERVER', description="machine account")
714         plansmbtorture4testsuite(t, "ad_dc_smb1:local", '//$SERVER/tmp --machine-pass --option=torture:addc=$DC_SERVER', description="machine account")
715         for env in ["nt4_dc_smb1", "nt4_member"]:
716             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
717             plansmbtorture4testsuite(t, env, '//$SERVER/tmpguest -U%', description='anonymous connection')
718         for env in ["ad_dc_smb1", "ad_member"]:
719             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$DC_USERNAME@$REALM%$DC_PASSWORD --option=torture:addc=$DC_SERVER')
720             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -k yes -U$DC_USERNAME@$REALM%$DC_PASSWORD --option=torture:addc=$DC_SERVER', description='kerberos connection')
721             plansmbtorture4testsuite(t, env, '//$SERVER/tmpguest -U% --option=torture:addc=$DC_SERVER', description='anonymous connection')
722             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -k no -U$DC_USERNAME@$REALM%$DC_PASSWORD', description='ntlm user@realm')
723     elif t == "raw.samba3posixtimedlock":
724         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc_smb1/share')
725         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/brl_delay_inject1 -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc_smb1/share',
726                                  description="brl_delay_inject1")
727         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/brl_delay_inject2 -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc_smb1/share',
728                                  description="brl_delay_inject2")
729         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/ad_dc_smb1/share')
730     elif t == "smb2.samba3misc":
731         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
732         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/brl_delay_inject1 -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share',
733                                  description="brl_delay_inject1")
734         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/brl_delay_inject2 -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share',
735                                  description="brl_delay_inject2")
736         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/ad_dc/share')
737     elif t == "raw.chkpath":
738         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
739         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
740     elif t == "raw.samba3hide" or t == "raw.samba3checkfsp" or t == "raw.samba3closeerr":
741         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
742         plansmbtorture4testsuite(t, "fileserver_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
743         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
744     elif t == "raw.session":
745         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'plain')
746         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmpenc -U$USERNAME%$PASSWORD', 'enc')
747         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -k no -U$USERNAME%$PASSWORD', 'ntlm')
748         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -k yes -U$USERNAME%$PASSWORD', 'krb5')
749     elif t == "smb2.session":
750         alice_creds = "--option='torture:user2name=alice' --option='torture:user2password=Secret007'"
751         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'plain')
752         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpenc -U$USERNAME%$PASSWORD', 'enc')
753         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -k no -U$USERNAME%$PASSWORD ' + alice_creds, 'ntlm')
754         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -k yes -U$USERNAME%$PASSWORD ' + alice_creds, 'krb5')
755         # Certain tests fail when run against ad_member with MIT kerberos because the private krb5.conf overrides the provisioned lib/krb5.conf,
756         # ad_member_idmap_rid sets "create krb5.conf = no"
757         plansmbtorture4testsuite(t, "ad_member_idmap_rid", '//$SERVER/tmp -k yes -U$DC_USERNAME@$REALM%$DC_PASSWORD', 'krb5')
758     elif t == "rpc.lsa":
759         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'over ncacn_np ')
760         plansmbtorture4testsuite(t, "nt4_dc", 'ncacn_ip_tcp:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
761         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'over ncacn_np ')
762         plansmbtorture4testsuite(t, "ad_dc", 'ncacn_ip_tcp:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
763     elif t == "rpc.mdssvc":
764         plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:no_spotlight_localdir=$SELFTEST_PREFIX/fileserver/share')
765     elif t == "rpc.samr.passwords.validate":
766         plansmbtorture4testsuite(t, "nt4_dc", 'ncacn_ip_tcp:$SERVER_IP[seal] -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
767         plansmbtorture4testsuite(t, "ad_dc", 'ncacn_ip_tcp:$SERVER_IP[seal] -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
768     elif t == "smb2.durable-open" or t == "smb2.durable-v2-open" or t == "smb2.replay" or t == "smb2.durable-v2-delay":
769         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/durable -U$USERNAME%$PASSWORD')
770         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/durable -U$USERNAME%$PASSWORD')
771     elif t == "base.rw1":
772         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
773         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/valid-users-tmp -U$USERNAME%$PASSWORD')
774         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/write-list-tmp -U$USERNAME%$PASSWORD')
775         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
776     elif t == "idmap.rfc2307":
777         plantestsuite(t, "ad_member_rfc2307",
778                       [os.path.join(samba3srcdir,
779                                     "../nsswitch/tests/test_idmap_rfc2307.sh"),
780                        '$DOMAIN',
781                        'Administrator', '2000000',
782                        'Guest', '2000001',
783                        '"Domain Users"', '2000002',
784                        'DnsAdmins', '2000003',
785                        '2000005', '35',
786                        'ou=idmap,dc=samba,dc=example,dc=com',
787                        '$DC_SERVER', '$DC_USERNAME', '$DC_PASSWORD'])
788     elif t == "idmap.alloc":
789         plantestsuite(t, "ad_member_rfc2307", [os.path.join(samba3srcdir, "../nsswitch/tests/test_idmap_nss.sh"), '$DOMAIN'])
790     elif t == "idmap.rid":
791         plantestsuite(t, "ad_member_idmap_rid", [os.path.join(samba3srcdir, "../nsswitch/tests/test_idmap_rid.sh"), '$DOMAIN', '2000000'])
792     elif t == "idmap.ad":
793         plantestsuite(t, "ad_member_idmap_ad", [os.path.join(samba3srcdir, "../nsswitch/tests/test_idmap_ad.sh"), '$DOMAIN', '$DC_SERVER', '$DC_PASSWORD', '$TRUST_DOMAIN', '$TRUST_SERVER', '$TRUST_PASSWORD'])
794     elif t == "raw.acls":
795         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
796         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_simple_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-simple-40')
797         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_special_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-special-40')
798         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_simple_41 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-simple-41')
799         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_xdr_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-xdr-40')
800         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_xdr_41 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-xdr-41')
801         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_nfs_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-nfs-40')
802         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_nfs_41 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-nfs-41')
803         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
804     elif t == "smb2.ioctl":
805         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/fs_specific -U$USERNAME%$PASSWORD', 'fs_specific')
806         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
807         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
808     elif t == "smb2.lock":
809         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
810         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
811     elif t == "raw.lock" or t == "base.lock":
812         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
813     elif t == "raw.read":
814         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
815         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
816         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
817     elif t == "raw.search":
818         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
819 # test the dirsort module.
820         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmpsort -U$USERNAME%$PASSWORD')
821         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
822     elif t == "vfs.fruit":
823         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share --option=torture:share2=vfs_wo_fruit', 'metadata_netatalk')
824         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_metadata_stream -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share --option=torture:share2=vfs_wo_fruit', 'metadata_stream')
825         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_stream_depot -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share --option=torture:share2=vfs_wo_fruit_stream_depot', 'streams_depot')
826         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_delete_empty_adfiles -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share --option=torture:share2=vfs_wo_fruit', 'fruit_delete_empty_adfiles')
827     elif t == "vfs.fruit_netatalk":
828         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_xattr -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
829     elif t == "vfs.fruit_timemachine":
830         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_timemachine -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
831     elif t == "vfs.fruit_file_id":
832         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_zero_fileid -U$USERNAME%$PASSWORD')
833     elif t == "vfs.fruit_conversion":
834         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:share2=vfs_fruit_wipe_intentionally_left_blank_rfork --option=torture:delete_empty_adfiles=false', 'wipe_intentionally_left_blank_rfork')
835         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:share2=vfs_fruit_delete_empty_adfiles --option=torture:delete_empty_adfiles=true', 'delete_empty_adfiles')
836     elif t == "vfs.unfruit":
837         creds = '-U$USERNAME%$PASSWORD'
838         share2 = '--option=torture:share2=tmp'
839         netopt = '--option=torture:net=%s' % net
840         shareopt = '--option=torture:sharename'
841
842         plansmbtorture4testsuite(t, "nt4_dc:local", '//$SERVER_IP/vfs_fruit %s %s %s %s=%s' % (creds, share2, netopt, shareopt, 'vfs_fruit'), 'metadata_netatalk')
843         plansmbtorture4testsuite(t, "nt4_dc:local", '//$SERVER_IP/vfs_fruit_metadata_stream %s %s %s %s=%s' % (creds, share2, netopt, shareopt, 'vfs_fruit_metadata_stream'), 'metadata_stream')
844         plansmbtorture4testsuite(t, "nt4_dc:local", '//$SERVER_IP/vfs_fruit_stream_depot %s %s %s %s=%s' % (creds, share2, netopt, shareopt, 'vfs_fruit_stream_depot'), 'streams_depot')
845     elif t == "rpc.schannel_anon_setpw":
846         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$%', description="anonymous password set")
847         plansmbtorture4testsuite(t, "nt4_dc_schannel", '//$SERVER_IP/tmp -U$%', description="anonymous password set (schannel enforced server-side)")
848         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$%', description="anonymous password set")
849     elif t == "local.nss":
850         for env in ["nt4_dc:local", "ad_member:local", "nt4_member:local", "ad_dc:local"]:
851             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$USERNAME%$PASSWORD')
852     elif t == "smb2.change_notify_disabled":
853         plansmbtorture4testsuite(t, "simpleserver", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
854     elif t == "smb2.notify" or t == "raw.notify" or t == "smb2.oplock" or t == "raw.oplock":
855         tmp_env = "nt4_dc"
856         if t == "raw.notify" or t == "raw.oplock":
857             tmp_env = "nt4_dc_smb1"
858         # These tests are a little slower so don't duplicate them with ad_dc
859         plansmbtorture4testsuite(t, tmp_env, '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --signing=required')
860     elif t == "smb2.dosmode":
861         plansmbtorture4testsuite(t, "simpleserver", '//$SERVER/dosmode -U$USERNAME%$PASSWORD')
862     elif t == "smb2.kernel-oplocks":
863         if have_linux_kernel_oplocks:
864             plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER/kernel_oplocks -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
865     elif t == "smb2.notify-inotify":
866         if have_inotify:
867             plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
868     elif t == "vfs.acl_xattr":
869         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
870     elif t == "smb2.compound_find":
871         plansmbtorture4testsuite(t, "fileserver", '//$SERVER/compound_find -U$USERNAME%$PASSWORD')
872         plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
873     elif t == "rpc.samr.users.privileges":
874         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:nt4_dc=true')
875         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
876     elif t == "smb2.compound":
877         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
878         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
879         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
880     elif t == "rpc.samba3.netlogon" or t == "rpc.samba3.sessionkey":
881         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:wksname=samba3rpctest')
882         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD --option=torture:wksname=samba3rpctest')
883     elif t == "smb2.streams":
884         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
885         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
886         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/streams_xattr -U$USERNAME%$PASSWORD', 'streams_xattr')
887     elif t == "smb2.aio_delay":
888         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio_delay_inject -U$USERNAME%$PASSWORD')
889     elif t == "smb2.delete-on-close-perms":
890         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
891         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/delete_readonly -U$USERNAME%$PASSWORD --option=torture:delete_readonly=true')
892         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
893     elif t == "smb2.fileid":
894         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_xattr -U$USERNAME%$PASSWORD')
895     elif t == "smb2.acls_non_canonical":
896         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/acls_non_canonical -U$USERNAME%$PASSWORD')
897     elif t == "rpc.wkssvc":
898         plansmbtorture4testsuite(t, "ad_member", '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
899     elif t == "rpc.srvsvc":
900         plansmbtorture4testsuite(t, "ad_member", '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
901         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
902     elif t == "rpc.samba3.lsa_over_netlogon":
903         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
904     elif t == "rpc.samba3.pipes_supported_interfaces":
905         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
906         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
907     elif t == "rpc.spoolss.notify":
908         plansmbtorture4testsuite(t, "ad_member", '//$SERVER_IP/tmp -U$DC_USERNAME%$DC_PASSWORD')
909     elif (t in base and t != "base.charset") \
910         or (t in rap and t != "rap.printing") \
911         or (t in unix) \
912         or (t in ["rpc.authcontext",
913                   "rpc.join",
914                   "rpc.samba3.bind",
915                   "rpc.samba3.getusername",
916                   "rpc.samba3.sharesec",
917                   "rpc.samba3.smb1-pipe-name",
918                   "rpc.samba3.smb-reauth1",
919                   "rpc.samba3.smb-reauth2",
920                   "rpc.samba3.spoolss",
921                   "rpc.samba3.wkssvc",]) \
922         or (t in ["raw.close",
923                   "raw.composite",
924                   "raw.eas",
925                   "raw.mkdir",
926                   "raw.open",
927                   "raw.rename",
928                   "raw.samba3badnameblob",
929                   "raw.samba3badpath",
930                   "raw.samba3caseinsensitive",
931                   "raw.samba3oplocklogoff",
932                   "raw.samba3posixtimedlock",
933                   "raw.samba3rootdirfid",
934                   "raw.samba3rootdirfid2",
935                   "raw.seek",
936                   "raw.sfileinfo.bug",
937                   "raw.sfileinfo.end-of-file",
938                   "raw.sfileinfo.rename",
939                   "raw.streams",
940                   "raw.unlink",
941                   "raw.write",]) :
942         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
943         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
944     elif t in ["base.mangle", "base.tcon", "raw.mkdir"]:
945         plansmbtorture4testsuite(t, "nt4_dc_smb1_done", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
946         plansmbtorture4testsuite(t, "ad_dc_smb1_done", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
947     else:
948         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
949         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
950
951 plantestsuite(
952     "idmap_ad.ticket_expiry",
953     "ad_member_idmap_ad:local",
954     [os.path.join(samba3srcdir, "../nsswitch/tests/test_ticket_expiry.sh"),
955      '$DOMAIN'])
956
957 plansmbtorture4testsuite(
958     "notifyd",
959     "fileserver:local",
960     '//foo/bar -U%')
961
962 test = 'rpc.lsa.lookupsids'
963 auth_options = ["", "ntlm", "spnego", "spnego,ntlm", "spnego,smb1", "spnego,smb2"]
964 signseal_options = ["", ",connect", ",packet", ",sign", ",seal"]
965 endianness_options = ["", ",bigendian"]
966 for s in signseal_options:
967     for e in endianness_options:
968         for a in auth_options:
969             binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
970             options = binding_string + " -U$USERNAME%$PASSWORD"
971             if "smb1" in a:
972                 plansmbtorture4testsuite(test, "nt4_dc_smb1_done", options, 'over ncacn_np with [%s%s%s] ' % (a, s, e))
973             else:
974                 plansmbtorture4testsuite(test, "nt4_dc", options, 'over ncacn_np with [%s%s%s] ' % (a, s, e))
975             plantestsuite(
976                 f'samba3.blackbox.rpcclient over ncacn_np with [{a}{s}{e}] ',
977                 "nt4_dc:local",
978                 [os.path.join(samba3srcdir, "script/tests/test_rpcclient.sh"),
979                  "none",
980                  options + " -c getusername",
981                  configuration])
982             plantestsuite(
983                 f'samba3.blackbox.rpcclient over ncalrpc with [{a}{s}{e}] ',
984                 "nt4_dc:local",
985                 [os.path.join(samba3srcdir, "script/tests/test_rpcclient.sh"),
986                  "none",
987                  f'ncalrpc:[{a}{s}{e}] -c epmmap',
988                  configuration])
989
990     # We should try more combinations in future, but this is all
991     # the pre-calculated credentials cache supports at the moment
992     #
993     # As the ktest env requires SMB3_00 we need to use "smb2" until
994     # dcerpc client code in smbtorture support autonegotiation
995     # of any smb dialect.
996     e = ""
997     a = "smb2"
998     binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
999     options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
1000     plansmbtorture4testsuite(test, "ktest", options, 'krb5 with old ccache ncacn_np with [%s%s%s] ' % (a, s, e))
1001
1002     options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
1003     plansmbtorture4testsuite(test, "ktest", options, 'krb5 ncacn_np with [%s%s%s] ' % (a, s, e))
1004
1005     auth_options2 = ["krb5", "spnego,krb5"]
1006     for a in auth_options2:
1007         binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
1008
1009         plantestsuite(
1010             f'samba3.blackbox.rpcclient krb5 ncacn_np with [{a}{s}{e}] ',
1011             "ktest:local",
1012             [os.path.join(samba3srcdir, "script/tests/test_rpcclient.sh"),
1013              "$PREFIX/ktest/krb5_ccache-3",
1014              binding_string,
1015              "--use-krb5-ccache=$PREFIX/ktest/krb5_ccache-3 -c getusername",
1016              configuration])
1017
1018 plantestsuite("samba3.blackbox.rpcclient_samlogon", "ad_member:local", [os.path.join(samba3srcdir, "script/tests/test_rpcclient_samlogon.sh"),
1019                                                                         "$DC_USERNAME", "$DC_PASSWORD", "ncacn_np:$DC_SERVER", configuration])
1020 plantestsuite("samba3.blackbox.sharesec", "simpleserver:local",
1021               [os.path.join(samba3srcdir, "script/tests/test_sharesec.sh"),
1022                configuration, os.path.join(bindir(), "sharesec"),
1023                os.path.join(bindir(), "net"), "tmp"])
1024
1025 plantestsuite("samba3.blackbox.close-denied-share", "simpleserver:local",
1026               [os.path.join(samba3srcdir,
1027                             "script/tests/test_close_denied_share.sh"),
1028                configuration,
1029                os.path.join(bindir(), "sharesec"),
1030                os.path.join(bindir(), "smbclient"),
1031                os.path.join(bindir(), "smbcontrol"),
1032                '$SERVER_IP',
1033                "tmp"])
1034
1035 plantestsuite("samba3.blackbox.force-close-share", "simpleserver:local",
1036               [os.path.join(samba3srcdir,
1037                             "script/tests/test_force_close_share.sh"),
1038                configuration,
1039                os.path.join(bindir(), "smbclient"),
1040                os.path.join(bindir(), "smbcontrol"),
1041                '$SERVER_IP',
1042                "aio_delay_inject",
1043                '$PREFIX/force-close-share'])
1044
1045 plantestsuite("samba3.blackbox.open-eintr", "simpleserver:local",
1046               [os.path.join(samba3srcdir,
1047                             "script/tests/test_open_eintr.sh"),
1048                configuration,
1049                os.path.join(bindir(), "smbclient"),
1050                os.path.join(bindir(), "smbcontrol"),
1051                '$SERVER_IP',
1052                "error_inject"])
1053
1054 plantestsuite("samba3.blackbox.netfileenum", "simpleserver:local",
1055               [os.path.join(samba3srcdir,
1056                             "script/tests/test_netfileenum.sh"),
1057                os.path.join(bindir(), "smbclient"),
1058                os.path.join(bindir(), "rpcclient"),
1059                os.path.join(bindir(), "net"),
1060                '$SERVER_IP',
1061                'tmp'])
1062
1063 plantestsuite("samba3.blackbox.net_tdb", "simpleserver:local",
1064               [os.path.join(samba3srcdir, "script/tests/test_net_tdb.sh"),
1065                smbclient3, '$SERVER', 'tmp', '$USERNAME', '$PASSWORD',
1066                configuration, '$LOCAL_PATH', '$LOCK_DIR'])
1067
1068 plantestsuite("samba3.blackbox.aio-outstanding", "simpleserver:local",
1069               [os.path.join(samba3srcdir,
1070                             "script/tests/test_aio_outstanding.sh"),
1071                configuration,
1072                os.path.join(bindir(), "smbclient"),
1073                '$SERVER_IP',
1074                "aio_delay_inject"])
1075
1076 plantestsuite("samba3.blackbox.smbd_error", "simpleserver:local",
1077               [os.path.join(samba3srcdir, "script/tests/test_smbd_error.sh")])
1078
1079 plantestsuite("samba3.blackbox.smbd_no_krb5", "ad_member:local",
1080               [os.path.join(samba3srcdir, "script/tests/test_smbd_no_krb5.sh"),
1081                smbclient3, '$SERVER', "$DC_USERNAME", "$DC_PASSWORD", "$PREFIX"])
1082
1083 plantestsuite("samba3.blackbox.winbind_ignore_domain", "ad_member_idmap_ad:local",
1084               [os.path.join(samba3srcdir, "script/tests/test_winbind_ignore_domains.sh")])
1085
1086 plantestsuite("samba3.blackbox.durable_v2_delay", "simpleserver:local",
1087               [os.path.join(samba3srcdir, "script/tests/test_durable_handle_reconnect.sh")])
1088
1089 plantestsuite("samba3.blackbox.net_cache_samlogon", "ad_member:local",
1090               [os.path.join(samba3srcdir, "script/tests/test_net_cache_samlogon.sh"),
1091                '$SERVER', 'tmp', '$DC_USERNAME', '$DC_PASSWORD'])
1092
1093 plantestsuite("samba3.blackbox.net_rpc_share_allowedusers", "nt4_dc",
1094               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_share_allowedusers.sh"),
1095                "$SERVER", "$USERNAME", "$PASSWORD", "$PREFIX/net_rpc_share_allowedusers",
1096                configuration])
1097
1098 plantestsuite("samba3.blackbox.net_dom_join_fail_dc", "nt4_dc",
1099               [os.path.join(samba3srcdir, "script/tests/test_net_dom_join_fail_dc.sh"),
1100                "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_dom_join_fail_dc",
1101                configuration])
1102 plantestsuite("samba3.blackbox.net_rpc_join", "nt4_dc",
1103               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_join.sh"),
1104                "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_rpc_join",
1105                configuration])
1106 plantestsuite("samba3.blackbox.net_rpc_oldjoin", "nt4_dc:local",
1107               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_oldjoin.sh"),
1108                "$SERVER", "$PREFIX/net_rpc_oldjoin",
1109                "$SMB_CONF_PATH"])
1110 plantestsuite("samba3.blackbox.net_rpc_join_creds", "nt4_dc",
1111               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_join_creds.sh"),
1112                "$DOMAIN", "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_rpc_join_creds",
1113                configuration])
1114
1115 plantestsuite("samba3.blackbox.rpcclient_srvsvc", "simpleserver",
1116               [os.path.join(samba3srcdir, "script/tests/test_rpcclientsrvsvc.sh"),
1117                "$USERNAME", "$PASSWORD", "$SERVER",
1118                os.path.join(bindir(), "rpcclient"), "tmp"])
1119
1120 plantestsuite("samba3.blackbox.rpcclient_lookup", "simpleserver",
1121               [os.path.join(samba3srcdir, "script/tests/test_rpcclient_lookup.sh"),
1122                "$USERNAME", "$PASSWORD", "$SERVER",
1123                os.path.join(bindir(), "rpcclient")])
1124
1125 plantestsuite("samba3.blackbox.rpcclient.pw-nt-hash", "simpleserver",
1126               [os.path.join(samba3srcdir, "script/tests/test_rpcclient_pw_nt_hash.sh"),
1127                "$USERNAME", "$PASSWORD", "$SERVER",
1128                os.path.join(bindir(), "rpcclient")])
1129
1130 plantestsuite("samba3.blackbox.smbclient.encryption_off", "simpleserver",
1131               [os.path.join(samba3srcdir, "script/tests/test_smbclient_encryption_off.sh"),
1132                "$USERNAME", "$PASSWORD", "$SERVER",
1133                smbclient3])
1134
1135 for env in ['fileserver', 'simpleserver']:
1136     plantestsuite("samba3.blackbox.smbclient.encryption", env,
1137                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_encryption.sh"),
1138                    "$USERNAME", "$PASSWORD", "$SERVER",
1139                    smbclient3, env])
1140
1141 plantestsuite("samba3.blackbox.rpcclient_netsessenum", "ad_member",
1142               [os.path.join(samba3srcdir,
1143                             "script/tests/test_rpcclient_netsessenum.sh"),
1144                "$DOMAIN", "$DC_USERNAME", "$DC_PASSWORD", "$SERVER",
1145                os.path.join(bindir(), "rpcclient"), smbtorture3, "tmp"])
1146
1147 # The ktest environment uses:
1148 # server min protocol = SMB3_00
1149 # client max protocol = SMB3
1150 options_list = ["", "--client-protection=encrypt"]
1151 for options in options_list:
1152     plantestsuite("samba3.blackbox.smbclient_krb5 old ccache %s" % options, "ktest:local",
1153                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
1154                    "$PREFIX/ktest/krb5_ccache-2",
1155                    smbclient3, "$SERVER", options, configuration])
1156
1157     plantestsuite("samba3.blackbox.smbclient_krb5 new ccache %s" % options, "ktest:local",
1158                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
1159                    "$PREFIX/ktest/krb5_ccache-3",
1160                    smbclient3, "$SERVER", options, configuration])
1161
1162     plantestsuite("samba3.blackbox.smbclient_large_file %s krb5" % options, "ktest:local",
1163                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_large_file.sh"),
1164                    "$PREFIX/ktest/krb5_ccache-3",
1165                    smbclient3, "$SERVER", "$PREFIX", options, "--use-krb5-ccache=$PREFIX/ktest/krb5_ccache-3 " + configuration])
1166
1167 options_list = ["-mNT1", "-mNT1 --client-protection=encrypt", "-mSMB3", "-mSMB3 --client-protection=encrypt"]
1168 for options in options_list:
1169     env = "nt4_dc"
1170     if "NT1" in options:
1171         env = "nt4_dc_smb1_done"
1172     plantestsuite("samba3.blackbox.smbclient_large_file %s NTLM" % options, "%s:local" % env,
1173                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_large_file.sh"),
1174                    "none",
1175                    smbclient3, "$SERVER", "$PREFIX", options, "-U$USERNAME%$PASSWORD " + configuration])
1176
1177 for alias in ["foo", "bar"]:
1178     plantestsuite("samba3.blackbox.smbclient_netbios_aliases [%s]" % alias, "ad_member:local",
1179                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_netbios_aliases.sh"),
1180                    smbclient3, alias, "$DC_USERNAME", "$DC_PASSWORD", "$PREFIX",
1181                    configuration])
1182
1183 for e in endianness_options:
1184     for a in auth_options:
1185         for s in signseal_options:
1186             binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
1187             options = binding_string + " -U$USERNAME%$PASSWORD"
1188             plansmbtorture4testsuite(test, "nt4_dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))
1189
1190 plansmbtorture4testsuite('rpc.epmapper', 'nt4_dc:local', 'ncalrpc: -U$USERNAME%$PASSWORD', 'over ncalrpc')
1191 plansmbtorture4testsuite('rpc.fsrvp', 'nt4_dc:local', 'ncacn_np:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_np')
1192
1193 for env in ["ad_member_idmap_rid:local", "maptoguest:local"]:
1194     plantestsuite("samba3.blackbox.guest", env,
1195                   [os.path.join(samba3srcdir, "script/tests/test_guest_auth.sh"),
1196                    '$SERVER', smbclient3, smbcontrol, net, configuration])
1197
1198 plantestsuite("samba3.blackbox.itime", "ad_dc", [os.path.join(samba3srcdir, "script/tests/test_itime.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3, 'xattr'])
1199
1200 plantestsuite("samba3.blackbox.smbclient-mget",
1201               "fileserver",
1202               [os.path.join(samba3srcdir, "script/tests/test_smbclient_mget.sh"),
1203                smbclient3,
1204                "$SERVER",
1205                "tmp",
1206                "$USERNAME",
1207                "$PASSWORD",
1208                "valid_users"])
1209
1210 t = "readdir-timestamp"
1211 plantestsuite(
1212     "samba3.smbtorture_s3.plain.%s" % t,
1213     "clusteredmember",
1214     [os.path.join(samba3srcdir,
1215                   "script/tests/test_smbtorture_s3.sh"),
1216      t,
1217      '//foo/bar',
1218      '$DOMAIN\\\\$DC_USERNAME',
1219      '$DC_PASSWORD',
1220      smbtorture3,
1221      "",
1222      "-b $PREFIX/clusteredmember/unclists/tmp.txt -N 5 -o 10"])
1223
1224 plantestsuite(
1225     "samba3.net_lookup_ldap",
1226     "ad_dc:local",
1227     [os.path.join(samba3srcdir,
1228                   "script/tests/test_net_lookup.sh"),
1229      '$DC_SERVER',
1230      '$DC_USERNAME',
1231      '$DC_PASSWORD',
1232      "bin/net",
1233      "bin/samba-tool",
1234      '$DNSNAME'])
1235
1236 plantestsuite("samba3.blackbox.force-user-unlink",
1237               "maptoguest:local",
1238               [os.path.join(samba3srcdir,
1239                             "script/tests/test_force_user_unlink.sh")])
1240
1241 def planclusteredmembertestsuite(tname, prefix):
1242     '''Define a clustered test for the clusteredmember environment'''
1243
1244     tshare = 'tmp'
1245
1246     autharg = '-U${DOMAIN}/${DC_USERNAME}%${DC_PASSWORD}'
1247     namearg = 'clustered.%s' % tname
1248     modnamearg = 'samba3.%s' % namearg
1249     extraargs = ''
1250
1251     prefix = os.path.join(prefix, 'clusteredmember')
1252     unclist = os.path.join(prefix, 'unclists/%s.txt' % tshare)
1253
1254     unclistarg = '--unclist=%s' % unclist
1255     sharearg = '//$SERVER_IP/%s' % tshare
1256
1257     return selftesthelpers.plansmbtorture4testsuite(
1258         namearg,
1259         'clusteredmember',
1260         [extraargs, unclistarg, sharearg, autharg, tname],
1261         target='samba3',
1262         modname=modnamearg)
1263
1264
1265 CLUSTERED_TESTS = [ 'smb2.deny.deny2' ]
1266
1267 for test in CLUSTERED_TESTS:
1268     planclusteredmembertestsuite(test, "$PREFIX")
1269
1270 CLUSTERED_LOCAL_TESTS = [
1271     "ctdbd-conn1",
1272     "local-dbwrap-ctdb1"
1273 ]
1274
1275 for t in CLUSTERED_LOCAL_TESTS:
1276     plantestsuite(
1277         "samba3.%s" % t,
1278         "clusteredmember:local",
1279         [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"),
1280          t,
1281          '//foo/bar',
1282          '""',
1283          '""',
1284          smbtorture3,
1285          "-N 1000 -o 2000"])