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