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