s3: smbd: Add test to show smbd crashes when doing an FSCTL on a named stream handle.
[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 import platform
25 sys.path.insert(0, os.path.normpath(os.path.join(os.path.dirname(__file__), "../../selftest")))
26 import selftesthelpers
27 from selftesthelpers import bindir, srcdir, scriptdir, binpath
28 from selftesthelpers import plantestsuite, samba3srcdir
29 from selftesthelpers import planpythontestsuite
30 from selftesthelpers import smbtorture3, configuration, smbclient3, smbtorture4
31 from selftesthelpers import net, wbinfo, dbwrap_tool, rpcclient, python
32 from selftesthelpers import smbget, smbcacls, smbcquotas, ntlm_auth3
33 from selftesthelpers import valgrindify, smbtorture4_testsuites
34 from selftesthelpers import smbtorture4_options
35 from selftesthelpers import smbcontrol
36 from selftesthelpers import smbstatus
37 smbtorture4_options.extend([
38     '--option=torture:sharedelay=100000',
39    '--option=torture:writetimeupdatedelay=500000',
40 ])
41
42
43 def plansmbtorture4testsuite(name, env, options, description=''):
44     if description == '':
45         modname = "samba3.%s" % (name, )
46     else:
47         modname = "samba3.%s %s" % (name, description)
48
49     selftesthelpers.plansmbtorture4testsuite(
50         name, env, options, target='samba3', modname=modname)
51
52 def compare_versions(version1, version2):
53     for i in range(max(len(version1),len(version2))):
54          v1 = version1[i] if i < len(version1) else 0
55          v2 = version2[i] if i < len(version2) else 0
56          if v1 > v2:
57             return 1
58          elif v1 <v2:
59             return -1
60     return 0
61
62 # find config.h
63 try:
64     config_h = os.environ["CONFIG_H"]
65 except KeyError:
66     samba4bindir = bindir()
67     config_h = os.path.join(samba4bindir, "default/include/config.h")
68
69 # check available features
70 config_hash = dict()
71 f = open(config_h, 'r')
72 try:
73     lines = f.readlines()
74     config_hash = dict((x[0], ' '.join(x[1:]))
75                        for x in map(lambda line: line.strip().split(' ')[1:],
76                                     filter(lambda line: (line[0:7] == '#define') and (len(line.split(' ')) > 2), lines)))
77 finally:
78     f.close()
79
80 linux_kernel_version = None
81 if platform.system() == 'Linux':
82     m = re.search(r'(\d+).(\d+).(\d+)', platform.release())
83     if m:
84         linux_kernel_version = [int(m.group(1)), int(m.group(2)), int(m.group(3))]
85
86 have_linux_kernel_oplocks = False
87 if "HAVE_KERNEL_OPLOCKS_LINUX" in config_hash:
88     if compare_versions(linux_kernel_version, [5,3,1]) >= 0:
89         have_linux_kernel_oplocks = True
90
91 have_inotify = ("HAVE_INOTIFY" in config_hash)
92 have_ldwrap = ("HAVE_LDWRAP" in config_hash)
93 with_pthreadpool = ("WITH_PTHREADPOOL" in config_hash)
94
95 def is_module_enabled(module):
96     if module in config_hash["STRING_SHARED_MODULES"]:
97         return True
98     if module in config_hash["STRING_STATIC_MODULES"]:
99         return True
100     return False
101
102 plantestsuite("samba3.blackbox.success", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_success.sh")])
103 plantestsuite("samba3.blackbox.failure", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_failure.sh")])
104
105 plantestsuite("samba3.local_s3", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_local_s3.sh")])
106
107 plantestsuite("samba3.blackbox.registry.upgrade", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_registry_upgrade.sh"), net, dbwrap_tool])
108
109 fileserver_tests = [
110          "FDPASS", "LOCK1", "LOCK2", "LOCK3", "LOCK4", "LOCK5", "LOCK6", "LOCK7",
111          "LOCK9A", "LOCK9B",
112          "LOCK10",
113          "LOCK11",
114          "LOCK12",
115          "LOCK13",
116          "UNLINK", "BROWSE", "ATTR", "TRANS2", "TORTURE",
117          "OPLOCK1", "OPLOCK2", "OPLOCK4", "STREAMERROR",
118          "DIR", "DIR1", "DIR-CREATETIME", "TCON", "TCONDEV", "RW1", "RW2", "RW3", "LARGE_READX", "RW-SIGNING",
119          "OPEN", "XCOPY", "RENAME", "DELETE", "DELETE-LN", "PROPERTIES", "W2K",
120          "TCON2", "IOCTL", "CHKPATH", "FDSESS", "CHAIN1", "CHAIN2", "OWNER-RIGHTS",
121          "CHAIN3", "PIDHIGH", "CLI_SPLICE",
122          "UID-REGRESSION-TEST", "SHORTNAME-TEST",
123          "CASE-INSENSITIVE-CREATE", "SMB2-BASIC", "NTTRANS-FSCTL", "SMB2-NEGPROT",
124          "SMB2-SESSION-REAUTH", "SMB2-SESSION-RECONNECT", "SMB2-FTRUNCATE",
125          "SMB2-ANONYMOUS", "SMB2-DIR-FSYNC",
126          "SMB2-PATH-SLASH",
127          "SMB2-QUOTA1",
128          "CLEANUP1",
129          "CLEANUP2",
130          "CLEANUP4",
131          "DELETE-STREAM",
132          "BAD-NBT-SESSION",
133          "SMB1-WILD-MANGLE-UNLINK",
134          "SMB1-WILD-MANGLE-RENAME"]
135
136 for t in fileserver_tests:
137     fileserver_env = "fileserver_smb1"
138     if "SMB2" in t:
139         fileserver_env = "fileserver"
140     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"])
141     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"])
142     if t == "TORTURE":
143         # this is a negative test to verify that the server rejects
144         # access without encryption
145         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"])
146     if t == "CLI_SPLICE":
147         # We must test this against the SMB1 fallback.
148         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"])
149     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"])
150
151 t = "TLDAP"
152 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"])
153
154 if have_linux_kernel_oplocks:
155     t = "OPLOCK5"
156     plantestsuite("samba3.smbtorture_s3.plain.%s" % t,
157                   "fileserver_smb1",
158                   [os.path.join(samba3srcdir,
159                                 "script/tests/test_smbtorture_s3.sh"),
160                    t,
161                    '//$SERVER/tmp',
162                    '$USERNAME',
163                    '$PASSWORD',
164                    smbtorture3,
165                    "",
166                    "-l $LOCAL_PATH",
167                    "-mNT1"])
168 #
169 # RENAME-ACCESS needs to run against a special share - acl_xattr_ign_sysacl_windows
170 #
171 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"])
172 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"])
173 # non-crypt only
174
175 tests = ["OPLOCK-CANCEL"]
176 for t in tests:
177     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"])
178
179 env = "nt4_dc_smb1"
180 tests = ["MANGLE-ILLEGAL"]
181 for t in tests:
182     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"])
183
184 tests = ["RW1", "RW2", "RW3", "SMB2-BASIC"]
185 for t in tests:
186     if t == "SMB2-BASIC":
187         env = "simpleserver"
188     else:
189         env = "fileserver_smb1"
190
191     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"])
192     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"])
193
194 plantestsuite("samba3.smbtorture_s3.hidenewfiles",
195               "simpleserver",
196               [os.path.join(samba3srcdir,
197                             "script/tests/test_smbtorture_s3.sh"),
198                'hide-new-files-timeout',
199                '//$SERVER_IP/hidenewfiles',
200                '$USERNAME',
201                '$PASSWORD',
202                smbtorture3,
203                "",
204                "-l $LOCAL_PATH"])
205 plantestsuite("samba3.smbtorture_s3.hidenewfiles_showdirs",
206               "simpleserver",
207               [os.path.join(samba3srcdir,
208                             "script/tests/test_smbtorture_s3.sh"),
209                'hide-new-files-timeout-showdirs',
210                '//$SERVER_IP/hidenewfiles',
211                '$USERNAME',
212                '$PASSWORD',
213                smbtorture3,
214                "",
215                "-l $LOCAL_PATH"])
216
217 #
218 # MSDFS attribute tests.
219 #
220 plantestsuite("samba3.smbtorture_s3.smb2.MSDFS-ATTRIBUTE",
221                 "fileserver",
222                 [os.path.join(samba3srcdir,
223                               "script/tests/test_smbtorture_s3.sh"),
224                 'MSDFS-ATTRIBUTE',
225                 '//$SERVER_IP/msdfs-share',
226                 '$USERNAME',
227                 '$PASSWORD',
228                 smbtorture3,
229                 "-mSMB2",
230                 "-f msdfs-src1"])
231
232 plantestsuite("samba3.smbtorture_s3.smb1.MSDFS-ATTRIBUTE",
233                 "fileserver_smb1",
234                 [os.path.join(samba3srcdir,
235                               "script/tests/test_smbtorture_s3.sh"),
236                 'MSDFS-ATTRIBUTE',
237                 '//$SERVER_IP/msdfs-share',
238                 '$USERNAME',
239                 '$PASSWORD',
240                 smbtorture3,
241                 "-mNT1",
242                 "-f msdfs-src1"])
243
244 #
245 # SMB2-DFS-PATHS needs to run against a special share msdfs-pathname-share
246 # This is an empty DFS share with no links, used merely to test
247 # incoming DFS pathnames and how they map to local paths.
248 #
249 plantestsuite("samba3.smbtorture_s3.smb2.SMB2-DFS-PATHS",
250                 "fileserver",
251                 [os.path.join(samba3srcdir,
252                               "script/tests/test_smbtorture_s3.sh"),
253                 'SMB2-DFS-PATHS',
254                 '//$SERVER_IP/msdfs-pathname-share',
255                 '$USERNAME',
256                 '$PASSWORD',
257                 smbtorture3,
258                 "-mSMB2"])
259
260 #
261 # SMB2-NON-DFS-SHARE needs to run against a special share non-msdfs-pathname-share
262 # This is an empty non-DFS share with no links, used merely to test
263 # incoming DFS pathnames and how they map to local paths. We are testing
264 # what happens if we set the FLAGS2_DFS_PATHNAMES and send DFS paths
265 # on a non-DFS share.
266 #
267 plantestsuite("samba3.smbtorture_s3.smb2.SMB2-NON-DFS-SHARE",
268                 "fileserver",
269                 [os.path.join(samba3srcdir,
270                               "script/tests/test_smbtorture_s3.sh"),
271                 'SMB2-NON-DFS-SHARE',
272                 '//$SERVER_IP/non-msdfs-pathname-share',
273                 '$USERNAME',
274                 '$PASSWORD',
275                 smbtorture3,
276                 "-mSMB2"])
277
278 #
279 # SMB2-DFS-SHARE-NON-DFS-PATH needs to run against a special share msdfs-pathname-share
280 # This is an empty DFS share with no links, used merely to test
281 # incoming non-DFS pathnames and how they map to local paths.
282 #
283 plantestsuite("samba3.smbtorture_s3.smb2.SMB2-DFS-SHARE-NON-DFS-PATH",
284                 "fileserver",
285                 [os.path.join(samba3srcdir,
286                               "script/tests/test_smbtorture_s3.sh"),
287                 'SMB2-DFS-SHARE-NON-DFS-PATH',
288                 '//$SERVER_IP/msdfs-pathname-share',
289                 '$USERNAME',
290                 '$PASSWORD',
291                 smbtorture3,
292                 "-mSMB2"])
293
294 #
295 # SMB1-DFS-PATHS needs to run against a special share msdfs-pathname-share
296 # This is an empty DFS share with no links, used merely to test
297 # incoming DFS pathnames and how they map to local paths.
298 #
299 plantestsuite("samba3.smbtorture_s3.smb1.SMB1-DFS-PATHS",
300                 "fileserver",
301                 [os.path.join(samba3srcdir,
302                               "script/tests/test_smbtorture_s3.sh"),
303                 'SMB1-DFS-PATHS',
304                 '//$SERVER_IP/msdfs-pathname-share',
305                 '$USERNAME',
306                 '$PASSWORD',
307                 smbtorture3,
308                 "-mNT1"])
309
310 #
311 # SMB1-DFS-SEARCH-PATHS needs to run against a special share msdfs-pathname-share
312 # This is an empty DFS share with no links, used merely to test
313 # incoming DFS pathnames and how they map to local paths.
314 #
315 plantestsuite("samba3.smbtorture_s3.smb1.SMB1-DFS-SEARCH-PATHS",
316                 "fileserver",
317                 [os.path.join(samba3srcdir,
318                               "script/tests/test_smbtorture_s3.sh"),
319                 'SMB1-DFS-SEARCH-PATHS',
320                 '//$SERVER_IP/msdfs-pathname-share',
321                 '$USERNAME',
322                 '$PASSWORD',
323                 smbtorture3,
324                 "-mNT1"])
325
326 #
327 # SMB1-DFS-OPERATIONS needs to run against a special share msdfs-pathname-share
328 # This is an empty DFS share with no links, used merely to test
329 # incoming DFS pathnames and how they map to local paths.
330 #
331 plantestsuite("samba3.smbtorture_s3.smb1.SMB1-DFS-OPERATIONS",
332                 "fileserver",
333                 [os.path.join(samba3srcdir,
334                               "script/tests/test_smbtorture_s3.sh"),
335                 'SMB1-DFS-OPERATIONS',
336                 '//$SERVER_IP/msdfs-pathname-share',
337                 '$USERNAME',
338                 '$PASSWORD',
339                 smbtorture3,
340                 "-mNT1"])
341
342 #
343 # SMB2-STREAM-ACL needs to run against a special share - vfs_wo_fruit
344 #
345 plantestsuite("samba3.smbtorture_s3.plain.%s" % "SMB2-STREAM-ACL",
346                 "fileserver",
347                 [os.path.join(samba3srcdir,
348                               "script/tests/test_smbtorture_s3.sh"),
349                 'SMB2-STREAM-ACL',
350                 '//$SERVER_IP/vfs_wo_fruit',
351                 '$USERNAME',
352                 '$PASSWORD',
353                 smbtorture3,
354                 "",
355                 "-l $LOCAL_PATH"])
356
357 #
358 # SMB2-LIST-DIR-ASYNC needs to run against a special share vfs_aio_pthread_async_dosmode_default1
359 #
360 plantestsuite("samba3.smbtorture_s3.plain.%s" % "SMB2-LIST-DIR-ASYNC",
361                 "simpleserver",
362                 [os.path.join(samba3srcdir,
363                               "script/tests/test_smbtorture_s3.sh"),
364                 'SMB2-LIST-DIR-ASYNC',
365                 '//$SERVER_IP/vfs_aio_pthread_async_dosmode_default1',
366                 '$USERNAME',
367                 '$PASSWORD',
368                 smbtorture3,
369                 "",
370                 "-l $LOCAL_PATH"])
371 #
372 # SMB2-DEL-ON-CLOSE-NONEMPTY needs to run against a special fileserver share veto_files_delete
373 #
374 plantestsuite("samba3.smbtorture_s3.plain.%s" % "SMB2-DEL-ON-CLOSE-NONEMPTY",
375                 "fileserver",
376                 [os.path.join(samba3srcdir,
377                               "script/tests/test_smbtorture_s3.sh"),
378                 'SMB2-DEL-ON-CLOSE-NONEMPTY',
379                 '//$SERVER_IP/veto_files_delete',
380                 '$USERNAME',
381                 '$PASSWORD',
382                 smbtorture3,
383                 "",
384                 "-l $LOCAL_PATH"])
385
386 #
387 # SMB2-DEL-ON-CLOSE-NONWRITE-DELETE-YES needs to run against a special fileserver share delete_yes_unwrite
388 #
389 plantestsuite("samba3.smbtorture_s3.plain.%s" % "SMB2-DEL-ON-CLOSE-NONWRITE-DELETE-YES",
390                 "fileserver",
391                 [os.path.join(samba3srcdir,
392                               "script/tests/test_smbtorture_s3.sh"),
393                 'SMB2-DEL-ON-CLOSE-NONWRITE-DELETE-YES',
394                 '//$SERVER_IP/delete_yes_unwrite',
395                 '$USERNAME',
396                 '$PASSWORD',
397                 smbtorture3,
398                 "",
399                 "-l $LOCAL_PATH"])
400
401 #
402 # SMB2-DEL-ON-CLOSE-NONWRITE-DELETE-NO needs to run against a special fileserver share delete_no_unwrite
403 #
404 plantestsuite("samba3.smbtorture_s3.plain.%s" % "SMB2-DEL-ON-CLOSE-NONWRITE-DELETE-NO",
405                 "fileserver",
406                 [os.path.join(samba3srcdir,
407                               "script/tests/test_smbtorture_s3.sh"),
408                 'SMB2-DEL-ON-CLOSE-NONWRITE-DELETE-NO',
409                 '//$SERVER_IP/delete_no_unwrite',
410                 '$USERNAME',
411                 '$PASSWORD',
412                 smbtorture3,
413                 "",
414                 "-l $LOCAL_PATH"])
415
416 shares = [
417     "vfs_aio_pthread_async_dosmode_default1",
418     "vfs_aio_pthread_async_dosmode_default2"
419 ]
420 for s in shares:
421     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"])
422     t = "smb2.compound_find"
423     plansmbtorture4testsuite(t, "simpleserver", "//%s/%s %s" % ('$SERVER_IP', s, ' -U$USERNAME%$PASSWORD'), description=s)
424
425 posix_tests = ["POSIX", "POSIX-APPEND", "POSIX-SYMLINK-ACL", "POSIX-SYMLINK-EA", "POSIX-OFD-LOCK",
426                "POSIX-STREAM-DELETE", "WINDOWS-BAD-SYMLINK", "POSIX-MKDIR",
427                "POSIX-BLOCKING-LOCK",
428                "POSIX-ACL-OPLOCK",
429                "POSIX-ACL-SHAREROOT",
430                "POSIX-LS-WILDCARD",
431                "POSIX-LS-SINGLE",
432                "POSIX-READLINK",
433                "POSIX-STAT",
434                "POSIX-SYMLINK-PARENT",
435                "POSIX-SYMLINK-CHMOD",
436                "POSIX-DIR-DEFAULT-ACL",
437                "POSIX-SYMLINK-RENAME",
438                "POSIX-SYMLINK-GETPATHINFO",
439                "POSIX-SYMLINK-SETPATHINFO",
440               ]
441
442 for t in posix_tests:
443     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"])
444     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"])
445
446 local_tests = [
447     "LOCAL-SUBSTITUTE",
448     "LOCAL-GENCACHE",
449     "LOCAL-BASE64",
450     "LOCAL-RBTREE",
451     "LOCAL-MEMCACHE",
452     "LOCAL-STREAM-NAME",
453     "LOCAL-STR-MATCH-MSWILD",
454     "LOCAL-STR-MATCH-REGEX-SUB1",
455     "LOCAL-string_to_sid",
456     "LOCAL-sid_to_string",
457     "LOCAL-binary_to_sid",
458     "LOCAL-DBTRANS",
459     "LOCAL-TEVENT-POLL",
460     "LOCAL-CONVERT-STRING",
461     "LOCAL-CONV-AUTH-INFO",
462     "LOCAL-IDMAP-TDB-COMMON",
463     "LOCAL-MESSAGING-READ1",
464     "LOCAL-MESSAGING-READ2",
465     "LOCAL-MESSAGING-READ3",
466     "LOCAL-MESSAGING-READ4",
467     "LOCAL-MESSAGING-FDPASS1",
468     "LOCAL-MESSAGING-FDPASS2",
469     "LOCAL-MESSAGING-FDPASS2a",
470     "LOCAL-MESSAGING-FDPASS2b",
471     "LOCAL-MESSAGING-SEND-ALL",
472     "LOCAL-PTHREADPOOL-TEVENT",
473     "LOCAL-CANONICALIZE-PATH",
474     "LOCAL-DBWRAP-WATCH1",
475     "LOCAL-DBWRAP-WATCH2",
476     "LOCAL-DBWRAP-WATCH3",
477     "LOCAL-DBWRAP-WATCH4",
478     "LOCAL-DBWRAP-DO-LOCKED1",
479     "LOCAL-G-LOCK1",
480     "LOCAL-G-LOCK2",
481     "LOCAL-G-LOCK3",
482     "LOCAL-G-LOCK4",
483     "LOCAL-G-LOCK4A",
484     "LOCAL-G-LOCK5",
485     "LOCAL-G-LOCK6",
486     "LOCAL-G-LOCK7",
487     "LOCAL-G-LOCK8",
488     "LOCAL-NAMEMAP-CACHE1",
489     "LOCAL-IDMAP-CACHE1",
490     "LOCAL-hex_encode_buf",
491     "LOCAL-remove_duplicate_addrs2"]
492
493 for t in local_tests:
494     plantestsuite("samba3.smbtorture_s3.%s" % t, "none", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//foo/bar', '""', '""', smbtorture3, ""])
495
496 plantestsuite("samba.vfstest.stream_depot", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/stream-depot/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
497 plantestsuite("samba.vfstest.xattr-tdb-1", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/xattr-tdb-1/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
498 plantestsuite("samba.vfstest.acl", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/vfstest-acl/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
499 plantestsuite("samba.vfstest.catia", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/vfstest-catia/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
500 plantestsuite(
501     "samba.vfstest.full_audit_segfault",
502     "nt4_dc:local",
503     [os.path.join(samba3srcdir,
504                   "script/tests/full_audit_segfault/run.sh"),
505      binpath("vfstest"),
506      "$PREFIX",
507      configuration])
508
509 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"])
510 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"])
511 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"])
512 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"])
513 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"])
514 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"])
515
516 plantestsuite("samba3.blackbox.smbclient_usernamemap", "ad_member_idmap_nss:local", [os.path.join(samba3srcdir, "script/tests/test_usernamemap.sh"), '$SERVER', smbclient3])
517
518 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])
519 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"]:
520     if "NT1" in options or "LANMAN2" in options:
521         env = "nt4_dc_smb1_done"
522     else:
523         env = "nt4_dc"
524     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])
525
526 for env in ["nt4_dc", "nt4_member", "ad_member", "ad_dc", "ad_dc_ntvfs", "s4member", "fl2000dc"]:
527     plantestsuite("samba3.blackbox.smbclient_machine_auth.plain", "%s:local" % env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_machine_auth.sh"), '$SERVER', smbclient3, configuration])
528     smb1_env = env
529     if smb1_env == "ad_dc" or smb1_env == "nt4_dc":
530         smb1_env = smb1_env + "_smb1_done"
531     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])
532     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])
533
534
535 plantestsuite("samba3.blackbox.smbclient_log_basename", "ad_dc", [os.path.join(samba3srcdir, "script/tests/test_smbclient_log_basename.sh"), '$SERVER', smbclient3, '$PREFIX', configuration])
536
537 for options in ["--option=clientntlmv2auth=no", "--option=clientusespnego=no --option=clientntlmv2auth=no", "--option=clientusespnego=no --option=clientntlmv2auth=no -mNT1", ""]:
538     # don't attempt to run SMB1 tests in nt4_member or ad_member
539     # as these test envs don't support SMB1, use nt4_dc instead
540     environs = ["nt4_member", "ad_member"]
541     if "NT1" in options or "LANMAN2" in options:
542         environs = ["nt4_dc_smb1_done"]
543     for env in environs:
544         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])
545         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])
546
547 for env in ["nt4_member", "ad_member"]:
548     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])
549     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])
550     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])
551     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])
552     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])
553     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])
554
555 env = "ad_dc_smb1"
556 plantestsuite("samba3.blackbox.smbspool", env, [os.path.join(samba3srcdir, "script/tests/test_smbspool.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', env])
557
558 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'])
559
560 for env in ["ad_member:local", "nt4_dc:local"]:
561     plantestsuite("samba3.blackbox.smbpasswd", env, [os.path.join(samba3srcdir, "script/tests/test_smbpasswd.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD'])
562
563 env = "nt4_dc"
564 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])
565
566 for env in ["nt4_member", "ad_member"]:
567     plantestsuite("samba3.blackbox.net_cred_change", "%s:local" % env, [os.path.join(samba3srcdir, "script/tests/test_net_cred_change.sh"), configuration])
568
569 env = "ad_member"
570 t = "--krb5auth=$DOMAIN/$DC_USERNAME%$DC_PASSWORD"
571 plantestsuite("samba3.wbinfo_simple.%s" % t, "%s:local" % env, [os.path.join(srcdir(), "nsswitch/tests/test_wbinfo_simple.sh"), t])
572 plantestsuite("samba3.wbinfo_name_lookup", env,
573               [os.path.join(srcdir(),
574                             "nsswitch/tests/test_wbinfo_name_lookup.sh"),
575                '$DOMAIN', '$REALM', '$DC_USERNAME'])
576
577 env = "ad_member"
578 plantestsuite("samba3.wbinfo_user_info_cached", env,
579               [os.path.join(srcdir(),
580                             "nsswitch/tests/test_wbinfo_user_info_cached.sh"),
581                '$DOMAIN', '$REALM', 'joe', 'Secret007', '"Samba Users"', env])
582 plantestsuite("samba3.wbinfo_user_info_cached.trustdom", env,
583               [os.path.join(srcdir(),
584                             "nsswitch/tests/test_wbinfo_user_info_cached.sh"),
585                '$TRUST_F_BOTH_DOMAIN', '$TRUST_F_BOTH_REALM', 'joe', 'Secret007', '"Samba Users"', env])
586
587 env = "ad_member:local"
588 plantestsuite("samba3.wbinfo_user_info", env,
589               [os.path.join(srcdir(),
590                             "nsswitch/tests/test_wbinfo_user_info.sh"),
591                '$DOMAIN', '$REALM', '$DOMAIN', 'alice', 'alice', 'jane', 'jane.doe', env])
592
593 env = "fl2008r2dc:local"
594 plantestsuite("samba3.wbinfo_user_info", env,
595               [os.path.join(srcdir(),
596                             "nsswitch/tests/test_wbinfo_user_info.sh"),
597                '$TRUST_DOMAIN', '$TRUST_REALM', '$DOMAIN', 'alice', 'alice', 'jane', 'jane.doe', env])
598
599 env = "nt4_member:local"
600 plantestsuite("samba3.wbinfo_sids_to_xids", env,
601               [os.path.join(srcdir(),
602                             "nsswitch/tests/test_wbinfo_sids_to_xids.sh")])
603 plantestsuite(
604     "samba.wbinfo_lookuprids_cache",
605     env,
606     [os.path.join(samba3srcdir,
607                   "script/tests/test_wbinfo_lookuprids_cache.sh")])
608
609 env = "ad_member"
610 t = "WBCLIENT-MULTI-PING"
611 plantestsuite("samba3.smbtorture_s3.%s" % t, env, [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//foo/bar', '""', '""', smbtorture3, ""])
612 plantestsuite("samba3.substitutions", env, [os.path.join(samba3srcdir, "script/tests/test_substitutions.sh"), "$SERVER", "alice", "Secret007", "$PREFIX"])
613
614 for env in ["maptoguest", "simpleserver"]:
615     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"])
616
617 env = "maptoguest"
618 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"])
619 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])
620 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])
621
622 # plain
623 env = "nt4_dc_smb1_done"
624 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"])
625 env = "nt4_dc"
626 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"])
627
628 for env in ["nt4_member", "ad_member"]:
629     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"])
630     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"])
631
632 env = "nt4_dc_smb1_done"
633 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"])
634 env = "nt4_dc"
635 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"])
636
637 for env in ["nt4_member", "ad_member"]:
638     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"])
639     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"])
640
641 env = "nt4_dc_smb1_done"
642 # encrypted
643 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"])
644 env = "nt4_dc"
645 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"])
646
647 for env in ["fileserver"]:
648     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"])
649     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"'])
650     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"])
651     plantestsuite("samba3.blackbox.dfree_command.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_dfree_command.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, "SMB3"])
652     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"])
653     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"])
654     plantestsuite("samba3.blackbox.smbcquotas", env, [os.path.join(samba3srcdir, "script/tests/test_smbcquota.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbcquotas])
655     plantestsuite("samba3.blackbox.valid_users", env, [os.path.join(samba3srcdir, "script/tests/test_valid_users.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3])
656     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])
657     plantestsuite("samba3.blackbox.dropbox", env, [os.path.join(samba3srcdir, "script/tests/test_dropbox.sh"), '$SERVER', '$DOMAIN', 'gooduser', '$PASSWORD', '$PREFIX', env, smbclient3])
658     plantestsuite("samba3.blackbox.offline", env, [os.path.join(samba3srcdir, "script/tests/test_offline.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/offline', smbclient3])
659     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'])
660     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'])
661     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, smbclient3])
662     plantestsuite("samba3.blackbox.smbclient.forceuser_validusers", env, [os.path.join(samba3srcdir, "script/tests/test_forceuser_validusers.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3])
663     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])
664     plantestsuite("samba3.blackbox.netshareenum", env, [os.path.join(samba3srcdir, "script/tests/test_shareenum.sh"), '$SERVER', '$USERNAME', '$PASSWORD', rpcclient])
665     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'])
666     plantestsuite("samba3.blackbox.acl_xattr.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_acl_xattr.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, '-mSMB3'])
667     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])
668     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'])
669     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'])
670     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'])
671     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'])
672     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'])
673     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'])
674     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'])
675     plantestsuite("samba3.blackbox.large_acl.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_large_acl.sh"), '$SERVER', '$USERNAME', '$PASSWORD', smbclient3, smbcacls, '-m', 'SMB3'])
676     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'])
677     plantestsuite("samba3.blackbox.delete_stream", env, [os.path.join(samba3srcdir, "script/tests/test_delete_stream.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, net, 'acl_streams_xattr'])
678     plantestsuite("samba3.blackbox.homes", env, [os.path.join(samba3srcdir, "script/tests/test_homes.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', '$PREFIX', smbclient3, configuration])
679     plantestsuite("samba3.blackbox.force_group_change", env,
680                 [os.path.join(samba3srcdir, "script/tests/test_force_group_change.sh"),
681                 '$SERVER', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3, smbcontrol])
682     plantestsuite("samba3.blackbox.zero-data", env,
683                   [os.path.join(samba3srcdir, "script/tests/test_zero_data.sh"),
684                    '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH'])
685     plantestsuite("samba3.blackbox.timestamps", env,
686                   [os.path.join(samba3srcdir, "script/tests/test_timestamps.sh"),
687                    '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3])
688     plantestsuite("samba3.blackbox.volumeserialnumber", env,
689                   [os.path.join(samba3srcdir, "script/tests/test_volume_serial_number.sh"),
690                    '$SERVER_IP', '$USERNAME', '$PASSWORD', 'volumeserialnumber', smbclient3])
691     plantestsuite("samba3.blackbox.smb1_system_security", env + "_smb1_done",
692                   [os.path.join(samba3srcdir, "script/tests/test_smb1_system_security.sh"),
693                    '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbtorture3, net, 'tmp'])
694     plantestsuite("samba3.blackbox.sacl_get_set", env,
695                   [os.path.join(samba3srcdir, "script/tests/test_sacl_set_get.sh"),
696                    '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbtorture3, net, 'tmp'])
697     plantestsuite("samba3.blackbox.NT1.shadow_copy_torture", env + "_smb1_done",
698                   [os.path.join(samba3srcdir, "script/tests/test_smb1_shadow_copy_torture.sh"),
699                    '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/shadow', smbtorture4])
700     plantestsuite("samba3.blackbox.smbclient_iconv.SMB2", env,
701                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_iconv.sh"),
702                    '$SERVER', '$SERVER_IP', 'bad_iconv', '$USERNAME', '$PASSWORD', smbclient3])
703     plantestsuite("samba3.blackbox.smbclient_iconv.NT1", env + "_smb1_done",
704                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_iconv.sh"),
705                    '$SERVER', '$SERVER_IP', 'bad_iconv', '$USERNAME', '$PASSWORD', smbclient3, '-mNT1'])
706     plantestsuite("samba3.blackbox.smbclient_iconv.CORE", env + "_smb1_done",
707                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_iconv.sh"),
708                    '$SERVER', '$SERVER_IP', 'bad_iconv', '$USERNAME', '$PASSWORD', smbclient3, '-mCORE'])
709     plantestsuite("samba3.blackbox.test_veto_rmdir", env,
710                   [os.path.join(samba3srcdir, "script/tests/test_veto_rmdir.sh"),
711                   '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/veto', smbclient3])
712     plantestsuite("samba3.blackbox.test_dangle_rmdir", env,
713                   [os.path.join(samba3srcdir, "script/tests/test_delete_veto_files_only_rmdir.sh"),
714                   '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/veto', smbclient3])
715     plantestsuite("samba3.blackbox.test_list_servers.NT1",
716                   env + "_smb1_done",
717                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_list_servers.sh"),
718                   '$SERVER',
719                   '$SERVER_IP',
720                   '$USERNAME',
721                   '$PASSWORD',
722                   smbclient3,
723                   "-mSMB3"])
724     plantestsuite("samba3.blackbox.test_list_servers.SMB2",
725                   env,
726                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_list_servers.sh"),
727                   '$SERVER',
728                   '$SERVER_IP',
729                   '$USERNAME',
730                   '$PASSWORD',
731                   smbclient3,
732                   "-mSMB3"])
733
734     plantestsuite("samba3.blackbox.test_symlink_traversal.SMB2", env,
735                   [os.path.join(samba3srcdir, "script/tests/test_symlink_traversal_smb2.sh"),
736                   '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/local_symlinks',
737                   '$PREFIX', smbclient3])
738
739     plantestsuite("samba3.blackbox.test_symlink_traversal.SMB1", env + "_smb1_done",
740                   [os.path.join(samba3srcdir, "script/tests/test_symlink_traversal_smb1.sh"),
741                   '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/local_symlinks',
742                   '$PREFIX', smbclient3])
743
744     plantestsuite("samba3.blackbox.test_symlink_traversal.SMB1.posix", env + "_smb1_done",
745                   [os.path.join(samba3srcdir, "script/tests/test_symlink_traversal_smb1_posix.sh"),
746                   '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/local_symlinks',
747                   '$PREFIX', smbclient3])
748
749     plantestsuite("samba3.blackbox.test_symlink_rename.SMB1.posix", env + "_smb1_done",
750                   [os.path.join(samba3srcdir, "script/tests/test_symlink_rename_smb1_posix.sh"),
751                   '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/local_symlinks',
752                   '$PREFIX', smbclient3])
753
754     plantestsuite("samba3.blackbox.test_veto_files", env,
755                   [os.path.join(samba3srcdir, "script/tests/test_veto_files.sh"),
756                   '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/veto', smbclient3])
757
758     #
759     # tar command tests
760     #
761
762     # Test smbclient/tarmode
763     plantestsuite("samba3.blackbox.smbclient_tarmode.NT1", env + "_smb1_done",
764                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.sh"),
765                    '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD',
766                    '$LOCAL_PATH/tarmode/smbclient_tar', '$PREFIX', smbclient3, configuration, "-mNT1"])
767     plantestsuite("samba3.blackbox.smbclient_tarmode.SMB3", env,
768                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.sh"),
769                    '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD',
770                    '$LOCAL_PATH/tarmode/smbclient_tar', '$PREFIX', smbclient3, configuration, "-mSMB3"])
771
772     # Test suite for new smbclient/tar with libarchive (GSoC 13)
773     plantestsuite("samba3.blackbox.smbclient_tar.NT1", env + "_smb1_done",
774                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.pl"),
775                    '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tarmode2',
776                    '-u', '$USERNAME', '-p', '$PASSWORD', '-l', '$LOCAL_PATH/tarmode2',
777                    '-d', 'smbclient_tar.NT1', '-b', smbclient3,
778                    '--subunit', '--', configuration, '-mNT1'])
779     plantestsuite("samba3.blackbox.smbclient_tar.SMB3", env,
780                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.pl"),
781                    '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tarmode2',
782                    '-u', '$USERNAME', '-p', '$PASSWORD', '-l', '$LOCAL_PATH/tarmode2',
783                    '-d', 'smbclient_tar.SMB3', '-b', smbclient3,
784                    '--subunit', '--', configuration, '-mSMB3'])
785     plantestsuite("samba3.blackbox.fifo", env,
786                   [os.path.join(samba3srcdir, "script/tests/test_fifo.sh"),
787                   '$SERVER', '$DOMAIN', 'gooduser', '$PASSWORD', '$PREFIX', env, smbclient3])
788     plantestsuite("samba3.blackbox.test_full_audit_success_badname", env,
789                   [os.path.join(samba3srcdir, "script/tests/test_bad_auditnames.sh"),
790                   '$SERVER', 'full_audit_success_bad_name', '$USERNAME', '$PASSWORD', smbclient3])
791     plantestsuite("samba3.blackbox.test_full_audit_fail_badname", env,
792                   [os.path.join(samba3srcdir, "script/tests/test_bad_auditnames.sh"),
793                   '$SERVER', 'full_audit_fail_bad_name', '$USERNAME', '$PASSWORD', smbclient3])
794     plantestsuite("samba3.blackbox.fruit.resource_stream", env,
795                   [os.path.join(samba3srcdir, "script/tests/test_fruit_resource_stream.sh"),
796                   '$SERVER', 'fruit_resource_stream', '$USERNAME', '$PASSWORD',
797                   '$LOCAL_PATH/fruit_resource_stream', smbclient3])
798
799 for env in ["fileserver:local"]:
800     plantestsuite("samba3.blackbox.net_usershare", env, [os.path.join(samba3srcdir, "script/tests/test_net_usershare.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbclient3])
801
802     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"])
803     plantestsuite("samba3.blackbox.net_registry_import", env, [os.path.join(samba3srcdir, "script/tests/test_net_registry_import.sh"), '$SERVER', '$LOCAL_PATH', '$USERNAME', '$PASSWORD'])
804
805 plantestsuite("samba3.blackbox.server_addresses",
806               "simpleserver",
807               [os.path.join(samba3srcdir,
808                             "script/tests/test_server_addresses.sh")])
809
810 # TODO encrypted against member, with member creds, and with DC creds
811 plantestsuite("samba3.blackbox.net.misc NT1", "ad_dc_smb1_done:local",
812               [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
813                scriptdir, "$SMB_CONF_PATH", net, configuration, "NT1"])
814 plantestsuite("samba3.blackbox.net.misc SMB3", "ad_dc:local",
815               [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
816                scriptdir, "$SMB_CONF_PATH", net, configuration, "SMB3"])
817 plantestsuite("samba3.blackbox.net.local.registry", "nt4_dc:local",
818               [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
819                scriptdir, "$SMB_CONF_PATH", net, configuration])
820 plantestsuite("samba3.blackbox.net.registry.check", "nt4_dc:local",
821               [os.path.join(samba3srcdir, "script/tests/test_net_registry_check.sh"),
822                scriptdir, "$SMB_CONF_PATH", net, configuration, dbwrap_tool])
823 plantestsuite("samba3.blackbox.net.rpc.registry", "nt4_dc",
824               [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
825                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
826
827 plantestsuite("samba3.blackbox.net.local.registry.roundtrip", "nt4_dc:local",
828               [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
829                scriptdir, "$SMB_CONF_PATH", net, configuration])
830 plantestsuite("samba3.blackbox.net.rpc.registry.roundtrip", "nt4_dc",
831               [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
832                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
833
834 plantestsuite("samba3.blackbox.net.local.conf", "nt4_dc:local",
835               [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
836                scriptdir, "$SMB_CONF_PATH", net, configuration])
837 plantestsuite("samba3.blackbox.net.rpc.conf", "nt4_dc",
838               [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
839                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
840
841
842 plantestsuite("samba3.blackbox.testparm", "nt4_dc:local",
843               [os.path.join(samba3srcdir, "script/tests/test_testparm_s3.sh"),
844                "$LOCAL_PATH"])
845
846 plantestsuite(
847     "samba3.pthreadpool", "none",
848     [os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
849
850 if with_pthreadpool and have_ldwrap:
851     plantestsuite("samba3.pthreadpool_cmocka", "none",
852                   [os.path.join(bindir(), "pthreadpooltest_cmocka")])
853
854 if with_pthreadpool:
855     plantestsuite("samba3.libwbclient_threads",
856                   "nt4_member",
857                   [os.path.join(samba3srcdir,
858                                 "script/tests/test_libwbclient_threads.sh"),
859                    "$DOMAIN", "$DC_USERNAME"])
860
861 plantestsuite("samba3.test_nfs4_acl", "none",
862               [os.path.join(bindir(), "test_nfs4_acls"),
863                "$SMB_CONF_PATH"])
864
865 plantestsuite("samba3.test_vfs_full_audit", "none",
866               [os.path.join(bindir(), "test_vfs_full_audit"),
867                "$SMB_CONF_PATH"])
868
869 plantestsuite("samba3.test_vfs_posixacl", "none",
870               [os.path.join(bindir(), "test_vfs_posixacl"),
871                "$SMB_CONF_PATH"])
872
873 if is_module_enabled("vfs_gpfs"):
874     plantestsuite("samba3.test_vfs_gpfs", "none",
875                   [os.path.join(bindir(), "test_vfs_gpfs")])
876
877 plantestsuite(
878     "samba3.resolvconf", "none",
879     [os.path.join(samba3srcdir, "script/tests/test_resolvconf.sh")])
880
881 plantestsuite("samba3.tevent_glib_glue", "none",
882     [os.path.join(samba3srcdir, "script/tests/test_tevent_glib_glue.sh")])
883
884 plantestsuite("samba3.async_req", "nt4_dc",
885               [os.path.join(samba3srcdir, "script/tests/test_async_req.sh")])
886
887 # smbtorture4 tests
888
889 base = ["base.attr", "base.charset", "base.chkpath", "base.createx_access", "base.defer_open", "base.delaywrite", "base.delete",
890         "base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
891         "base.disconnect", "base.fdpass", "base.lock",
892         "base.mangle", "base.negnowait", "base.ntdeny1",
893         "base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
894         "base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
895         "base.xcopy", "base.samba3error"]
896
897 raw = ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
898        "raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock",
899        "raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
900        "raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
901        "raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename", "raw.session",
902        "raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
903        "raw.samba3rootdirfid", "raw.samba3rootdirfid2", "raw.sfileinfo.end-of-file",
904        "raw.bench-oplock", "raw.bench-lock", "raw.bench-open", "raw.bench-tcon",
905        "raw.samba3checkfsp", "raw.samba3closeerr", "raw.samba3oplocklogoff", "raw.samba3badnameblob"]
906
907 smb2 = smbtorture4_testsuites("smb2.")
908
909 rpc = ["rpc.authcontext",
910        "rpc.samba3.bind",
911        "rpc.samba3.srvsvc",
912        "rpc.samba3.sharesec",
913        "rpc.samba3.spoolss",
914        "rpc.samba3.wkssvc",
915        "rpc.samba3.winreg",
916        "rpc.samba3.getaliasmembership-0",
917        "rpc.samba3.netlogon",
918        "rpc.samba3.sessionkey",
919        "rpc.samba3.getusername",
920        "rpc.samba3.smb1-pipe-name",
921        "rpc.samba3.smb2-pipe-name",
922        "rpc.samba3.smb-reauth1",
923        "rpc.samba3.smb-reauth2",
924        "rpc.samba3.lsa_over_netlogon",
925        "rpc.samba3.pipes_supported_interfaces",
926        "rpc.svcctl",
927        "rpc.ntsvcs",
928        "rpc.winreg",
929        "rpc.eventlog",
930        "rpc.spoolss.printserver",
931        "rpc.spoolss.win",
932        "rpc.spoolss.notify",
933        "rpc.spoolss.printer",
934        "rpc.spoolss.driver",
935        "rpc.lsa",
936        "rpc.lsa-getuser",
937        "rpc.lsa.lookupsids",
938        "rpc.lsa.lookupnames",
939        "rpc.lsa.privileges",
940        "rpc.lsa.secrets",
941        "rpc.mdssvc",
942        "rpc.samr",
943        "rpc.samr.users",
944        "rpc.samr.users.privileges",
945        "rpc.samr.passwords.default",
946        "rpc.samr.passwords.pwdlastset",
947        "rpc.samr.passwords.lockout",
948        "rpc.samr.passwords.badpwdcount",
949        "rpc.samr.large-dc",
950        "rpc.samr.machine.auth",
951        "rpc.samr.priv",
952        "rpc.samr.passwords.validate",
953        "rpc.samr.handletype",
954        "rpc.netlogon.admin",
955        "rpc.netlogon.zerologon",
956        "rpc.schannel",
957        "rpc.schannel2",
958        "rpc.bench-schannel1",
959        "rpc.schannel_anon_setpw",
960        "rpc.join",
961        "rpc.bind",
962        "rpc.initshutdown",
963        "rpc.wkssvc",
964        "rpc.srvsvc"]
965
966 local = ["local.nss"]
967
968 idmap = ["idmap.rfc2307", "idmap.alloc", "idmap.rid", "idmap.ad"]
969
970 rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
971
972 unix = ["unix.info2", "unix.whoami"]
973
974 nbt = ["nbt.dgram"]
975
976 vfs = [
977     "vfs.fruit",
978     "vfs.acl_xattr",
979     "vfs.fruit_netatalk",
980     "vfs.fruit_file_id",
981     "vfs.fruit_timemachine",
982     "vfs.fruit_conversion",
983     "vfs.unfruit",
984 ]
985
986 tests = base + raw + smb2 + rpc + unix + local + rap + nbt + idmap + vfs
987
988 for t in tests:
989     if t == "base.delaywrite" or t == "base.deny1" or t == "base.deny2":
990         plansmbtorture4testsuite(t, "fileserver_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD --maximum-runtime=900')
991     elif t == "base.createx_access":
992         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD -k yes --maximum-runtime=900')
993     elif t == "rap.sam":
994         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
995         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
996     elif t == "winbind.pac":
997         plansmbtorture4testsuite(t, "ad_member:local", '//$SERVER/tmp --realm=$REALM --machine-pass --option=torture:addc=$DC_SERVER', description="machine account")
998     elif t == "unix.whoami":
999         plansmbtorture4testsuite(t, "nt4_member:local", '//$SERVER/tmp --machine-pass', description="machine account")
1000         plansmbtorture4testsuite(t, "ad_dc_smb1:local", '//$SERVER/tmp --machine-pass', description="machine account")
1001         plansmbtorture4testsuite(t, "ad_member:local", '//$SERVER/tmp --machine-pass --option=torture:addc=$DC_SERVER', description="machine account")
1002         plansmbtorture4testsuite(t, "ad_dc_smb1:local", '//$SERVER/tmp --machine-pass --option=torture:addc=$DC_SERVER', description="machine account")
1003         for env in ["nt4_dc_smb1", "nt4_member"]:
1004             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
1005             plansmbtorture4testsuite(t, env, '//$SERVER/tmpguest -U%', description='anonymous connection')
1006         for env in ["ad_dc_smb1", "ad_member"]:
1007             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$DC_USERNAME@$REALM%$DC_PASSWORD --option=torture:addc=$DC_SERVER')
1008             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -k yes -U$DC_USERNAME@$REALM%$DC_PASSWORD --option=torture:addc=$DC_SERVER', description='kerberos connection')
1009             plansmbtorture4testsuite(t, env, '//$SERVER/tmpguest -U% --option=torture:addc=$DC_SERVER', description='anonymous connection')
1010             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -k no -U$DC_USERNAME@$REALM%$DC_PASSWORD', description='ntlm user@realm')
1011     elif t == "raw.samba3posixtimedlock":
1012         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc_smb1/share')
1013         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/brl_delay_inject1 -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc_smb1/share',
1014                                  description="brl_delay_inject1")
1015         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/brl_delay_inject2 -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc_smb1/share',
1016                                  description="brl_delay_inject2")
1017         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/ad_dc_smb1/share')
1018     elif t == "smb2.samba3misc":
1019         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
1020         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/brl_delay_inject1 -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share',
1021                                  description="brl_delay_inject1")
1022         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/brl_delay_inject2 -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share',
1023                                  description="brl_delay_inject2")
1024         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/ad_dc/share')
1025     elif t == "raw.chkpath":
1026         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
1027         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
1028     elif t == "raw.samba3hide" or t == "raw.samba3checkfsp" or t == "raw.samba3closeerr":
1029         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1030         plansmbtorture4testsuite(t, "fileserver_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1031         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
1032     elif t == "raw.session":
1033         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'plain')
1034         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmpenc -U$USERNAME%$PASSWORD', 'enc')
1035         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -k no -U$USERNAME%$PASSWORD', 'ntlm')
1036         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -k yes -U$USERNAME%$PASSWORD', 'krb5')
1037     elif t == "smb2.session":
1038         alice_creds = "--option='torture:user2name=alice' --option='torture:user2password=Secret007'"
1039         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'plain')
1040         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpenc -U$USERNAME%$PASSWORD', 'enc')
1041         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -k no -U$USERNAME%$PASSWORD ' + alice_creds, 'ntlm')
1042         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -k yes -U$USERNAME%$PASSWORD ' + alice_creds, 'krb5')
1043         # Certain tests fail when run against ad_member with MIT kerberos because the private krb5.conf overrides the provisioned lib/krb5.conf,
1044         # ad_member_idmap_rid sets "create krb5.conf = no"
1045         plansmbtorture4testsuite(t, "ad_member_idmap_rid", '//$SERVER/tmp -k yes -U$DC_USERNAME@$REALM%$DC_PASSWORD', 'krb5')
1046     elif t == "rpc.lsa":
1047         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'over ncacn_np ')
1048         plansmbtorture4testsuite(t, "nt4_dc", 'ncacn_ip_tcp:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
1049     elif t.startswith("rpc.lsa."):
1050         # This avoids the rpc.lsa.* tests runing under ncacn_ip_tcp:
1051         # (there is rpc.lsa.secrets fails due to OpenPolicy2 for example)
1052         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1053     elif t == "rpc.mdssvc":
1054         plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1055     elif t == "smb2.durable-open" or t == "smb2.durable-v2-open" or t == "smb2.replay" or t == "smb2.durable-v2-delay":
1056         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/durable -U$USERNAME%$PASSWORD')
1057         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/durable -U$USERNAME%$PASSWORD')
1058     elif t == "base.rw1":
1059         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1060         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/valid-users-tmp -U$USERNAME%$PASSWORD')
1061         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/write-list-tmp -U$USERNAME%$PASSWORD')
1062         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
1063     elif t == "idmap.rfc2307":
1064         plantestsuite(t, "ad_member_rfc2307",
1065                       [os.path.join(samba3srcdir,
1066                                     "../nsswitch/tests/test_idmap_rfc2307.sh"),
1067                        '$DOMAIN',
1068                        'Administrator', '2000000',
1069                        'Guest', '2000001',
1070                        '"Domain Users"', '2000002',
1071                        'DnsAdmins', '2000003',
1072                        '2000005', '35',
1073                        'ou=idmap,dc=samba,dc=example,dc=com',
1074                        '$DC_SERVER', '$DC_USERNAME', '$DC_PASSWORD'])
1075     elif t == "idmap.alloc":
1076         plantestsuite(t, "ad_member_rfc2307", [os.path.join(samba3srcdir, "../nsswitch/tests/test_idmap_nss.sh"), '$DOMAIN'])
1077     elif t == "idmap.rid":
1078         plantestsuite(t, "ad_member_idmap_rid", [os.path.join(samba3srcdir, "../nsswitch/tests/test_idmap_rid.sh"), '$DOMAIN', '2000000'])
1079         plantestsuite(t,
1080                       "admem_idmap_autorid",
1081                       [os.path.join(samba3srcdir,
1082                                     "../nsswitch/tests/test_idmap_rid.sh"),
1083                        '$DOMAIN',
1084                        '2000000'])
1085     elif t == "idmap.ad":
1086         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'])
1087     elif t == "raw.acls":
1088         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1089         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_simple_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-simple-40')
1090         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_special_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-special-40')
1091         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_simple_41 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-simple-41')
1092         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_xdr_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-xdr-40')
1093         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_xdr_41 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-xdr-41')
1094         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_nfs_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-nfs-40')
1095         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_nfs_41 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-nfs-41')
1096         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
1097     elif t == "smb2.ioctl":
1098         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/fs_specific -U$USERNAME%$PASSWORD', 'fs_specific')
1099         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1100         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
1101     elif t == "smb2.ioctl-on-stream":
1102         plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1103     elif t == "smb2.lock":
1104         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
1105         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1106     elif t == "raw.lock" or t == "base.lock":
1107         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1108     elif t == "raw.read":
1109         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1110         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
1111         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
1112     elif t == "raw.search":
1113         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1114 # test the dirsort module.
1115         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmpsort -U$USERNAME%$PASSWORD')
1116         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
1117     elif t == "vfs.fruit":
1118         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')
1119         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')
1120         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')
1121         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')
1122     elif t == "vfs.fruit_netatalk":
1123         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_xattr -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
1124     elif t == "vfs.fruit_timemachine":
1125         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_timemachine -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
1126     elif t == "vfs.fruit_file_id":
1127         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_zero_fileid -U$USERNAME%$PASSWORD')
1128     elif t == "vfs.fruit_conversion":
1129         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')
1130         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')
1131     elif t == "vfs.unfruit":
1132         creds = '-U$USERNAME%$PASSWORD'
1133         share2 = '--option=torture:share2=tmp'
1134         netopt = '--option=torture:net=%s' % net
1135         shareopt = '--option=torture:sharename'
1136
1137         plansmbtorture4testsuite(t, "nt4_dc:local", '//$SERVER_IP/vfs_fruit %s %s %s %s=%s' % (creds, share2, netopt, shareopt, 'vfs_fruit'), 'metadata_netatalk')
1138         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')
1139         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')
1140     elif t == "rpc.schannel_anon_setpw":
1141         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$%', description="anonymous password set")
1142         plansmbtorture4testsuite(t, "nt4_dc_schannel", '//$SERVER_IP/tmp -U$%', description="anonymous password set (schannel enforced server-side)")
1143         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$%', description="anonymous password set")
1144     elif t == "local.nss":
1145         for env in ["nt4_dc:local", "ad_member:local", "nt4_member:local", "ad_dc:local"]:
1146             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$USERNAME%$PASSWORD')
1147     elif t == "smb2.change_notify_disabled":
1148         plansmbtorture4testsuite(t, "simpleserver", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
1149     elif t == "smb2.notify" or t == "raw.notify" or t == "smb2.oplock" or t == "raw.oplock":
1150         tmp_env = "nt4_dc"
1151         if t == "raw.notify" or t == "raw.oplock":
1152             tmp_env = "nt4_dc_smb1"
1153         # These tests are a little slower so don't duplicate them with ad_dc
1154         plansmbtorture4testsuite(t, tmp_env, '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --client-protection=sign')
1155     elif t == "smb2.dosmode":
1156         plansmbtorture4testsuite(t, "simpleserver", '//$SERVER/dosmode -U$USERNAME%$PASSWORD')
1157     elif t == "smb2.kernel-oplocks":
1158         if have_linux_kernel_oplocks:
1159             plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER/kernel_oplocks -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
1160     elif t == "smb2.notify-inotify":
1161         if have_inotify:
1162             plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1163     elif t == "vfs.acl_xattr":
1164         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1165     elif t == "smb2.compound_find":
1166         plansmbtorture4testsuite(t, "fileserver", '//$SERVER/compound_find -U$USERNAME%$PASSWORD')
1167         plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1168     elif t == "smb2.compound":
1169         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1170         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
1171         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
1172     elif t == "smb2.ea":
1173         plansmbtorture4testsuite(t, "fileserver", '//$SERVER/ea_acl_xattr --option=torture:acl_xattr_name=hackme -U$USERNAME%$PASSWORD')
1174     elif t == "rpc.samba3.netlogon" or t == "rpc.samba3.sessionkey":
1175         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:wksname=samba3rpctest')
1176         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD --option=torture:wksname=samba3rpctest')
1177     elif t == "smb2.streams":
1178         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1179         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
1180         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/streams_xattr -U$USERNAME%$PASSWORD', 'streams_xattr')
1181     elif t == "smb2.aio_delay":
1182         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio_delay_inject -U$USERNAME%$PASSWORD')
1183     elif t == "smb2.delete-on-close-perms":
1184         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1185         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/delete_readonly -U$USERNAME%$PASSWORD --option=torture:delete_readonly=true')
1186         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
1187     elif t == "smb2.fileid":
1188         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_xattr -U$USERNAME%$PASSWORD')
1189     elif t == "smb2.acls_non_canonical":
1190         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/acls_non_canonical -U$USERNAME%$PASSWORD')
1191     elif t == "smb2.async_dosmode":
1192         plansmbtorture4testsuite("smb2.async_dosmode",
1193                                  "simpleserver",
1194                                  "//$SERVER_IP/async_dosmode_shadow_copy2 -U$USERNAME%$PASSWORD")
1195     elif t == "smb2.rename":
1196         plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1197     elif t == "smb2.twrp":
1198         # This is being driven by samba3.blackbox.shadow_copy_torture
1199         pass
1200     elif t == "smb2.create_no_streams":
1201         plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/nfs4acl_simple_40 -U$USERNAME%$PASSWORD')
1202     elif t == "rpc.wkssvc":
1203         plansmbtorture4testsuite(t, "ad_member", '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
1204     elif t == "rpc.srvsvc":
1205         plansmbtorture4testsuite(t, "ad_member", '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
1206         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
1207     elif t == "rpc.samba3.lsa_over_netlogon":
1208         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1209     elif t == "rpc.samba3.pipes_supported_interfaces":
1210         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1211         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1212     elif t == "rpc.spoolss.notify":
1213         plansmbtorture4testsuite(t, "ad_member", '//$SERVER_IP/tmp -U$DC_USERNAME%$DC_PASSWORD')
1214     elif (t in base and t != "base.charset") \
1215         or (t in rap and t != "rap.printing") \
1216         or (t in unix) \
1217         or (t in ["rpc.authcontext",
1218                   "rpc.join",
1219                   "rpc.samba3.bind",
1220                   "rpc.samba3.getusername",
1221                   "rpc.samba3.sharesec",
1222                   "rpc.samba3.smb1-pipe-name",
1223                   "rpc.samba3.smb-reauth1",
1224                   "rpc.samba3.smb-reauth2",
1225                   "rpc.samba3.spoolss",
1226                   "rpc.samba3.wkssvc",]) \
1227         or (t in ["raw.close",
1228                   "raw.composite",
1229                   "raw.eas",
1230                   "raw.mkdir",
1231                   "raw.open",
1232                   "raw.rename",
1233                   "raw.samba3badnameblob",
1234                   "raw.samba3badpath",
1235                   "raw.samba3caseinsensitive",
1236                   "raw.samba3oplocklogoff",
1237                   "raw.samba3posixtimedlock",
1238                   "raw.samba3rootdirfid",
1239                   "raw.samba3rootdirfid2",
1240                   "raw.seek",
1241                   "raw.sfileinfo.bug",
1242                   "raw.sfileinfo.end-of-file",
1243                   "raw.sfileinfo.rename",
1244                   "raw.streams",
1245                   "raw.unlink",
1246                   "raw.write",]) :
1247         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1248         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
1249     elif t in ["base.mangle", "base.tcon", "raw.mkdir"]:
1250         plansmbtorture4testsuite(t, "nt4_dc_smb1_done", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1251         plansmbtorture4testsuite(t, "ad_dc_smb1_done", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
1252     elif t == "rpc.samr.passwords.validate":
1253         plansmbtorture4testsuite(t, "nt4_dc", 'ncacn_ip_tcp:$SERVER_IP[seal] -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
1254     elif t == "rpc.samr.users.privileges":
1255         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:nt4_dc=true')
1256     elif t == "rpc.samr" or t.startswith("rpc.samr."):
1257         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1258     else:
1259         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
1260         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
1261
1262 plantestsuite(
1263     "idmap_ad.ticket_expiry",
1264     "ad_member_idmap_ad:local",
1265     [os.path.join(samba3srcdir, "../nsswitch/tests/test_ticket_expiry.sh"),
1266      '$DOMAIN'])
1267
1268 plansmbtorture4testsuite(
1269     "notifyd",
1270     "fileserver:local",
1271     '//foo/bar -U%')
1272
1273 plansmbtorture4testsuite(
1274     "smb2.streams",
1275     "simpleserver",
1276     '//$SERVER/external_streams_depot -U$USERNAME%$PASSWORD')
1277
1278 test = 'rpc.lsa.lookupsids'
1279 auth_options = ["", "ntlm", "spnego", "spnego,ntlm", "spnego,smb1", "spnego,smb2"]
1280 signseal_options = ["", ",connect", ",packet", ",sign", ",seal"]
1281 endianness_options = ["", ",bigendian"]
1282 for s in signseal_options:
1283     for e in endianness_options:
1284         for a in auth_options:
1285             binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
1286             options = binding_string + " -U$USERNAME%$PASSWORD"
1287             if "smb1" in a:
1288                 plansmbtorture4testsuite(test, "nt4_dc_smb1_done", options, 'over ncacn_np with [%s%s%s] ' % (a, s, e))
1289             else:
1290                 plansmbtorture4testsuite(test, "nt4_dc", options, 'over ncacn_np with [%s%s%s] ' % (a, s, e))
1291             plantestsuite(
1292                 f'samba3.blackbox.rpcclient over ncacn_np with [{a}{s}{e}] ',
1293                 "nt4_dc:local",
1294                 [os.path.join(samba3srcdir, "script/tests/test_rpcclient.sh"),
1295                  "none",
1296                  options + " -c getusername",
1297                  configuration])
1298             plantestsuite(
1299                 f'samba3.blackbox.rpcclient over ncalrpc with [{a}{s}{e}] ',
1300                 "nt4_dc:local",
1301                 [os.path.join(samba3srcdir, "script/tests/test_rpcclient.sh"),
1302                  "none",
1303                  f'ncalrpc:[{a}{s}{e}] -c epmmap',
1304                  configuration])
1305             if s != ",connect":
1306                 plantestsuite(
1307                     f'samba3.blackbox.rpcclient over ncacn_ip_tcp with [{a}{s}{e}] ',
1308                     "nt4_dc:local",
1309                     [os.path.join(samba3srcdir, "script/tests/test_rpcclient.sh"),
1310                      "none",
1311                      f'ncacn_ip_tcp:"$SERVER_IP"[{a}{s}{e}] -c epmmap -U"$USERNAME"%"$PASSWORD"',
1312                      configuration])
1313
1314     # We should try more combinations in future, but this is all
1315     # the pre-calculated credentials cache supports at the moment
1316     #
1317     # As the ktest env requires SMB3_00 we need to use "smb2" until
1318     # dcerpc client code in smbtorture support autonegotiation
1319     # of any smb dialect.
1320     e = ""
1321     a = "smb2"
1322     binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
1323     options = binding_string + " --use-krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
1324     plansmbtorture4testsuite(test, "ktest", options, 'krb5 with old ccache ncacn_np with [%s%s%s] ' % (a, s, e))
1325
1326     options = binding_string + " --use-krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
1327     plansmbtorture4testsuite(test, "ktest", options, 'krb5 ncacn_np with [%s%s%s] ' % (a, s, e))
1328
1329     auth_options2 = ["krb5", "spnego,krb5"]
1330     for a in auth_options2:
1331         binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
1332
1333         plantestsuite(
1334             f'samba3.blackbox.rpcclient krb5 ncacn_np with [{a}{s}{e}] ',
1335             "ktest:local",
1336             [os.path.join(samba3srcdir, "script/tests/test_rpcclient.sh"),
1337              "$PREFIX/ktest/krb5_ccache-3",
1338              binding_string,
1339              "--use-krb5-ccache=$PREFIX/ktest/krb5_ccache-3 -c getusername",
1340              configuration])
1341
1342 plantestsuite("samba3.blackbox.rpcclient_samlogon", "ad_member:local", [os.path.join(samba3srcdir, "script/tests/test_rpcclient_samlogon.sh"),
1343                                                                         "$DC_USERNAME", "$DC_PASSWORD", "ncacn_np:$DC_SERVER", configuration])
1344 plantestsuite("samba3.blackbox.sharesec", "simpleserver:local",
1345               [os.path.join(samba3srcdir, "script/tests/test_sharesec.sh"),
1346                configuration, os.path.join(bindir(), "sharesec"),
1347                os.path.join(bindir(), "net"), "tmp"])
1348
1349 plantestsuite("samba3.blackbox.close-denied-share", "simpleserver:local",
1350               [os.path.join(samba3srcdir,
1351                             "script/tests/test_close_denied_share.sh"),
1352                configuration,
1353                os.path.join(bindir(), "sharesec"),
1354                os.path.join(bindir(), "smbclient"),
1355                os.path.join(bindir(), "smbcontrol"),
1356                '$SERVER_IP',
1357                "tmp"])
1358
1359 plantestsuite("samba3.blackbox.force-close-share", "simpleserver:local",
1360               [os.path.join(samba3srcdir,
1361                             "script/tests/test_force_close_share.sh"),
1362                configuration,
1363                os.path.join(bindir(), "smbclient"),
1364                os.path.join(bindir(), "smbcontrol"),
1365                '$SERVER_IP',
1366                "aio_delay_inject",
1367                '$PREFIX/force-close-share'])
1368
1369 plantestsuite("samba3.blackbox.open-eintr", "simpleserver:local",
1370               [os.path.join(samba3srcdir,
1371                             "script/tests/test_open_eintr.sh"),
1372                configuration,
1373                os.path.join(bindir(), "smbclient"),
1374                os.path.join(bindir(), "smbcontrol"),
1375                '$SERVER_IP',
1376                "error_inject"])
1377
1378 plantestsuite("samba3.blackbox.chdir-cache", "simpleserver:local",
1379               [os.path.join(samba3srcdir,
1380                             "script/tests/test_chdir_cache.sh"),
1381                configuration,
1382                os.path.join(bindir(), "smbclient"),
1383                os.path.join(bindir(), "smbcontrol"),
1384                '$SERVER_IP',
1385                "error_inject"])
1386
1387 plantestsuite("samba3.blackbox.netfileenum", "simpleserver:local",
1388               [os.path.join(samba3srcdir,
1389                             "script/tests/test_netfileenum.sh"),
1390                os.path.join(bindir(), "smbclient"),
1391                os.path.join(bindir(), "rpcclient"),
1392                os.path.join(bindir(), "net"),
1393                '$SERVER_IP',
1394                'tmp'])
1395
1396 plantestsuite("samba3.blackbox.netshareenum_username", "fileserver",
1397               [os.path.join(samba3srcdir,
1398                             "script/tests/test_user_in_sharelist.sh"),
1399                os.path.join(bindir(), "rpcclient"),
1400                '$SERVER_IP'])
1401
1402 plantestsuite("samba3.blackbox.net_tdb", "simpleserver:local",
1403               [os.path.join(samba3srcdir, "script/tests/test_net_tdb.sh"),
1404                smbclient3, '$SERVER', 'tmp', '$USERNAME', '$PASSWORD',
1405                configuration, '$LOCAL_PATH', '$LOCK_DIR'])
1406
1407 plantestsuite("samba3.blackbox.aio-outstanding", "simpleserver:local",
1408               [os.path.join(samba3srcdir,
1409                             "script/tests/test_aio_outstanding.sh"),
1410                configuration,
1411                os.path.join(bindir(), "smbclient"),
1412                '$SERVER_IP',
1413                "aio_delay_inject"])
1414
1415 plantestsuite("samba3.blackbox.deadtime", "simpleserver:local",
1416               [os.path.join(samba3srcdir, "script/tests/test_deadtime.sh"),
1417                '$SERVER_IP'])
1418
1419 plantestsuite("samba3.blackbox.smbd_error", "simpleserver:local",
1420               [os.path.join(samba3srcdir, "script/tests/test_smbd_error.sh")])
1421
1422 plantestsuite("samba3.blackbox.smbd_no_krb5", "ad_member:local",
1423               [os.path.join(samba3srcdir, "script/tests/test_smbd_no_krb5.sh"),
1424                smbclient3, '$SERVER', "$DC_USERNAME", "$DC_PASSWORD", "$PREFIX"])
1425
1426 plantestsuite("samba3.blackbox.winbind_ignore_domain", "ad_member_idmap_ad:local",
1427               [os.path.join(samba3srcdir, "script/tests/test_winbind_ignore_domains.sh")])
1428
1429 plantestsuite("samba3.blackbox.durable_v2_delay", "simpleserver:local",
1430               [os.path.join(samba3srcdir, "script/tests/test_durable_handle_reconnect.sh")])
1431
1432 plantestsuite("samba3.blackbox.net_cache_samlogon", "ad_member:local",
1433               [os.path.join(samba3srcdir, "script/tests/test_net_cache_samlogon.sh"),
1434                '$SERVER', 'tmp', '$DC_USERNAME', '$DC_PASSWORD'])
1435
1436 plantestsuite("samba3.blackbox.net_rpc_share_allowedusers", "nt4_dc",
1437               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_share_allowedusers.sh"),
1438                "$SERVER", "$USERNAME", "$PASSWORD", "$PREFIX/net_rpc_share_allowedusers",
1439                configuration])
1440
1441 plantestsuite("samba3.blackbox.net_dom_join_fail_dc", "nt4_dc",
1442               [os.path.join(samba3srcdir, "script/tests/test_net_dom_join_fail_dc.sh"),
1443                "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_dom_join_fail_dc",
1444                configuration])
1445 plantestsuite("samba3.blackbox.net_rpc_join", "nt4_dc",
1446               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_join.sh"),
1447                "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_rpc_join",
1448                configuration])
1449 plantestsuite("samba3.blackbox.net_rpc_oldjoin", "nt4_dc:local",
1450               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_oldjoin.sh"),
1451                "$SERVER", "$PREFIX/net_rpc_oldjoin",
1452                "$SMB_CONF_PATH"])
1453 plantestsuite("samba3.blackbox.net_rpc_join_creds", "nt4_dc",
1454               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_join_creds.sh"),
1455                "$DOMAIN", "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_rpc_join_creds",
1456                configuration])
1457
1458 plantestsuite("samba3.blackbox.rpcclient_srvsvc", "simpleserver",
1459               [os.path.join(samba3srcdir, "script/tests/test_rpcclientsrvsvc.sh"),
1460                "$USERNAME", "$PASSWORD", "$SERVER",
1461                os.path.join(bindir(), "rpcclient"), "tmp"])
1462
1463 plantestsuite("samba3.blackbox.rpcclient_lookup", "simpleserver",
1464               [os.path.join(samba3srcdir, "script/tests/test_rpcclient_lookup.sh"),
1465                "$USERNAME", "$PASSWORD", "$SERVER",
1466                os.path.join(bindir(), "rpcclient")])
1467
1468 plantestsuite("samba3.blackbox.rpcclient_dfs", "fileserver:local",
1469               [os.path.join(samba3srcdir, "script/tests/test_rpcclient_dfs.sh"),
1470                "$USERNAME", "$PASSWORD", "$SERVER",
1471                os.path.join(bindir(), "rpcclient")])
1472
1473 plantestsuite("samba3.blackbox.rpcclient.pw-nt-hash", "simpleserver",
1474               [os.path.join(samba3srcdir, "script/tests/test_rpcclient_pw_nt_hash.sh"),
1475                "$USERNAME", "$PASSWORD", "$SERVER",
1476                os.path.join(bindir(), "rpcclient")])
1477
1478 plantestsuite("samba3.blackbox.smbclient.encryption_off", "simpleserver",
1479               [os.path.join(samba3srcdir, "script/tests/test_smbclient_encryption_off.sh"),
1480                "$USERNAME", "$PASSWORD", "$SERVER",
1481                smbclient3])
1482
1483 plantestsuite("samba3.blackbox.smbXsrv_client_dead_rec", "fileserver:local",
1484               [os.path.join(samba3srcdir,
1485                             "script/tests/test_smbXsrv_client_dead_rec.sh"),
1486                configuration,
1487                '$SERVER_IP',
1488                "tmp"])
1489
1490 plantestsuite("samba3.blackbox.smbXsrv_client_cross_node", "clusteredmember:local",
1491               [os.path.join(samba3srcdir,
1492                             "script/tests/test_smbXsrv_client_cross_node.sh"),
1493                configuration,
1494                'ctdb0', 'ctdb1',
1495                "tmp"])
1496
1497 env = 'fileserver'
1498 plantestsuite("samba3.blackbox.virus_scanner", "%s:local" % (env),
1499               [os.path.join(samba3srcdir,
1500                             "script/tests/test_virus_scanner.sh"),
1501                '$SERVER_IP',
1502                "virusfilter",
1503                '$LOCAL_PATH',
1504                smbclient3])
1505
1506 for env in ['fileserver', 'simpleserver']:
1507     plantestsuite("samba3.blackbox.smbclient.encryption", env,
1508                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_encryption.sh"),
1509                    "$USERNAME", "$PASSWORD", "$SERVER",
1510                    smbclient3, env])
1511
1512 plantestsuite("samba3.blackbox.smbclient.kerberos", 'ad_dc',
1513               [os.path.join(samba3srcdir,
1514                             "script/tests/test_smbclient_kerberos.sh"),
1515                "alice",
1516                "$REALM",
1517                "Secret007",
1518                "$SERVER",
1519                smbclient3,
1520                env])
1521 for env in ['ad_dc_fips', 'ad_member_fips']:
1522     plantestsuite("samba3.blackbox.smbclient.kerberos", env,
1523                   [os.path.join(samba3srcdir,
1524                                 "script/tests/test_smbclient_kerberos.sh"),
1525                    "alice",
1526                    "$REALM",
1527                    "Secret007",
1528                    "$SERVER",
1529                    smbclient3,
1530                    env],
1531                   environ={'GNUTLS_FORCE_FIPS_MODE': '1',
1532                            'OPENSSL_FORCE_FIPS_MODE': '1'})
1533
1534 plantestsuite("samba3.blackbox.rpcclient_netsessenum", "ad_member",
1535               [os.path.join(samba3srcdir,
1536                             "script/tests/test_rpcclient_netsessenum.sh"),
1537                "$DOMAIN", "$DC_USERNAME", "$DC_PASSWORD", "$SERVER",
1538                os.path.join(bindir(), "rpcclient"), smbtorture3, "tmp"])
1539
1540 # The ktest environment uses:
1541 # server min protocol = SMB3_00
1542 # client max protocol = SMB3
1543 options_list = ["", "--client-protection=encrypt"]
1544 for options in options_list:
1545     plantestsuite("samba3.blackbox.smbclient_krb5 old ccache %s" % options, "ktest:local",
1546                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
1547                    "$PREFIX/ktest/krb5_ccache-2",
1548                    smbclient3, "$SERVER", options, configuration])
1549
1550     plantestsuite("samba3.blackbox.smbclient_krb5 new ccache %s" % options, "ktest:local",
1551                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
1552                    "$PREFIX/ktest/krb5_ccache-3",
1553                    smbclient3, "$SERVER", options, configuration])
1554
1555     plantestsuite("samba3.blackbox.smbclient_large_file %s krb5" % options, "ktest:local",
1556                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_large_file.sh"),
1557                    "$PREFIX/ktest/krb5_ccache-3",
1558                    smbclient3, "$SERVER", "$PREFIX", options, "--use-krb5-ccache=$PREFIX/ktest/krb5_ccache-3 " + configuration])
1559
1560 options_list = ["-mNT1", "-mNT1 --client-protection=encrypt", "-mSMB3", "-mSMB3 --client-protection=encrypt"]
1561 for options in options_list:
1562     env = "nt4_dc"
1563     if "NT1" in options:
1564         env = "nt4_dc_smb1_done"
1565     plantestsuite("samba3.blackbox.smbclient_large_file %s NTLM" % options, "%s:local" % env,
1566                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_large_file.sh"),
1567                    "none",
1568                    smbclient3, "$SERVER", "$PREFIX", options, "-U$USERNAME%$PASSWORD " + configuration])
1569
1570 for alias in ["foo", "bar"]:
1571     plantestsuite("samba3.blackbox.smbclient_netbios_aliases [%s]" % alias, "ad_member:local",
1572                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_netbios_aliases.sh"),
1573                    smbclient3, alias, "$DC_USERNAME", "$DC_PASSWORD", "$PREFIX",
1574                    configuration])
1575
1576 for e in endianness_options:
1577     for a in auth_options:
1578         for s in signseal_options:
1579             binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
1580             options = binding_string + " -U$USERNAME%$PASSWORD"
1581             plansmbtorture4testsuite(test, "nt4_dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))
1582
1583 plansmbtorture4testsuite('rpc.epmapper', 'nt4_dc:local', 'ncalrpc: -U$USERNAME%$PASSWORD', 'over ncalrpc')
1584 plansmbtorture4testsuite('rpc.fsrvp', 'nt4_dc:local', 'ncacn_np:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_np')
1585
1586 for env in ["ad_member_idmap_rid:local", "maptoguest:local"]:
1587     plantestsuite("samba3.blackbox.guest", env,
1588                   [os.path.join(samba3srcdir, "script/tests/test_guest_auth.sh"),
1589                    '$SERVER', smbclient3, smbcontrol, net, configuration])
1590
1591 plantestsuite("samba3.blackbox.smbclient-mget",
1592               "fileserver",
1593               [os.path.join(samba3srcdir, "script/tests/test_smbclient_mget.sh"),
1594                smbclient3,
1595                "$SERVER",
1596                "tmp",
1597                "$USERNAME",
1598                "$PASSWORD",
1599                "valid_users"])
1600
1601 t = "readdir-timestamp"
1602 plantestsuite(
1603     "samba3.smbtorture_s3.plain.%s" % t,
1604     "clusteredmember",
1605     [os.path.join(samba3srcdir,
1606                   "script/tests/test_smbtorture_s3.sh"),
1607      t,
1608      '//foo/bar',
1609      '$DOMAIN\\\\$DC_USERNAME',
1610      '$DC_PASSWORD',
1611      smbtorture3,
1612      "",
1613      "-b $PREFIX/clusteredmember/unclists/tmp.txt -N 5 -o 10"])
1614
1615 plantestsuite(
1616     "samba3.net_machine_account",
1617     "clusteredmember",
1618     [os.path.join(samba3srcdir,
1619                   "script/tests/test_net_machine_account.sh"),
1620      "bin/net",
1621      "$SERVERCONFFILE",
1622      "$SERVER_IP"])
1623
1624 plantestsuite(
1625     "samba3.net_lookup_ldap",
1626     "ad_dc:local",
1627     [os.path.join(samba3srcdir,
1628                   "script/tests/test_net_lookup.sh"),
1629      '$DC_SERVER',
1630      '$DC_USERNAME',
1631      '$DC_PASSWORD',
1632      "bin/net",
1633      "bin/samba-tool",
1634      '$DNSNAME'])
1635
1636 plantestsuite("samba3.blackbox.force-user-unlink",
1637               "maptoguest:local",
1638               [os.path.join(samba3srcdir,
1639                             "script/tests/test_force_user_unlink.sh")])
1640
1641 def planclusteredmembertestsuite(tname, prefix):
1642     '''Define a clustered test for the clusteredmember environment'''
1643
1644     tshare = 'tmp'
1645
1646     autharg = '-U${DOMAIN}/${DC_USERNAME}%${DC_PASSWORD}'
1647     namearg = 'clustered.%s' % tname
1648     modnamearg = 'samba3.%s' % namearg
1649     extraargs = ''
1650
1651     prefix = os.path.join(prefix, 'clusteredmember')
1652     unclist = os.path.join(prefix, 'unclists/%s.txt' % tshare)
1653
1654     unclistarg = '--unclist=%s' % unclist
1655     sharearg = '//$SERVER_IP/%s' % tshare
1656
1657     return selftesthelpers.plansmbtorture4testsuite(
1658         namearg,
1659         'clusteredmember',
1660         [extraargs, unclistarg, sharearg, autharg, tname],
1661         target='samba3',
1662         modname=modnamearg)
1663
1664
1665 CLUSTERED_TESTS = [ 'smb2.deny.deny2' ]
1666
1667 for test in CLUSTERED_TESTS:
1668     planclusteredmembertestsuite(test, "$PREFIX")
1669
1670 CLUSTERED_LOCAL_TESTS = [
1671     "ctdbd-conn1",
1672     "local-dbwrap-ctdb1"
1673 ]
1674
1675 for t in CLUSTERED_LOCAL_TESTS:
1676     plantestsuite(
1677         "samba3.%s" % t,
1678         "clusteredmember:local",
1679         [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"),
1680          t,
1681          '//foo/bar',
1682          '""',
1683          '""',
1684          smbtorture3,
1685          "-N 1000 -o 2000"])
1686
1687 planpythontestsuite("fileserver", "samba.tests.smb3unix")