s3/selftest: Use variable for test env rather than hardcoding
[samba.git] / source3 / selftest / tests.py
1 #!/usr/bin/python
2 # This script generates a list of testsuites that should be run as part of
3 # the Samba 3 test suite.
4
5 # The output of this script is parsed by selftest.pl, which then decides
6 # which of the tests to actually run. It will, for example, skip all tests
7 # listed in selftest/skip or only run a subset during "make quicktest".
8
9 # The idea is that this script outputs all of the tests of Samba 3, not
10 # just those that are known to pass, and list those that should be skipped
11 # or are known to fail in selftest/skip or selftest/samba3-knownfail. This makes it
12 # very easy to see what functionality is still missing in Samba 3 and makes
13 # it possible to run the testsuite against other servers, such as Samba 4 or
14 # Windows that have a different set of features.
15
16 # The syntax for a testsuite is "-- TEST --" on a single line, followed
17 # by the name of the test, the environment it needs and the command to run, all
18 # three separated by newlines. All other lines in the output are considered
19 # comments.
20
21 import os
22 import sys
23 sys.path.insert(0, os.path.normpath(os.path.join(os.path.dirname(__file__), "../../selftest")))
24 import selftesthelpers
25 from selftesthelpers import bindir, srcdir, scriptdir, binpath
26 from selftesthelpers import plantestsuite, samba3srcdir
27 from selftesthelpers import smbtorture3, configuration, smbclient3, smbtorture4
28 from selftesthelpers import net, wbinfo, dbwrap_tool, rpcclient, python
29 from selftesthelpers import smbget, smbcacls, smbcquotas, ntlm_auth3
30 from selftesthelpers import valgrindify, smbtorture4_testsuites
31 from selftesthelpers import smbtorture4_options
32 from selftesthelpers import smbcontrol
33 from selftesthelpers import smbstatus
34 smbtorture4_options.extend([
35     '--option=torture:sharedelay=100000',
36    '--option=torture:writetimeupdatedelay=500000',
37 ])
38
39
40 def plansmbtorture4testsuite(name, env, options, description=''):
41     if description == '':
42         modname = "samba3.%s" % (name, )
43     else:
44         modname = "samba3.%s %s" % (name, description)
45
46     selftesthelpers.plansmbtorture4testsuite(
47         name, env, options, target='samba3', modname=modname)
48
49
50 # find config.h
51 try:
52     config_h = os.environ["CONFIG_H"]
53 except KeyError:
54     samba4bindir = bindir()
55     config_h = os.path.join(samba4bindir, "default/include/config.h")
56
57 # check available features
58 config_hash = dict()
59 f = open(config_h, 'r')
60 try:
61     lines = f.readlines()
62     config_hash = dict((x[0], ' '.join(x[1:]))
63                        for x in map(lambda line: line.strip().split(' ')[1:],
64                                     filter(lambda line: (line[0:7] == '#define') and (len(line.split(' ')) > 2), lines)))
65 finally:
66     f.close()
67
68 have_linux_kernel_oplocks = ("HAVE_KERNEL_OPLOCKS_LINUX" in config_hash)
69 have_inotify = ("HAVE_INOTIFY" in config_hash)
70 have_ldwrap = ("HAVE_LDWRAP" in config_hash)
71 with_pthreadpool = ("WITH_PTHREADPOOL" in config_hash)
72
73
74 plantestsuite("samba3.blackbox.success", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_success.sh")])
75 plantestsuite("samba3.blackbox.failure", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_failure.sh")])
76
77 plantestsuite("samba3.local_s3", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_local_s3.sh")])
78
79 plantestsuite("samba3.blackbox.registry.upgrade", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_registry_upgrade.sh"), net, dbwrap_tool])
80
81 fileserver_tests = [
82          "FDPASS", "LOCK1", "LOCK2", "LOCK3", "LOCK4", "LOCK5", "LOCK6", "LOCK7",
83          "LOCK9A", "LOCK9B",
84          "LOCK10",
85          "LOCK11",
86          "LOCK12",
87          "LOCK13",
88          "UNLINK", "BROWSE", "ATTR", "TRANS2", "TORTURE",
89          "OPLOCK1", "OPLOCK2", "OPLOCK4", "STREAMERROR",
90          "DIR", "DIR1", "DIR-CREATETIME", "TCON", "TCONDEV", "RW1", "RW2", "RW3", "LARGE_READX", "RW-SIGNING",
91          "OPEN", "XCOPY", "RENAME", "DELETE", "DELETE-LN", "WILDDELETE", "PROPERTIES", "W2K",
92          "TCON2", "IOCTL", "CHKPATH", "FDSESS", "CHAIN1", "CHAIN2", "OWNER-RIGHTS",
93          "CHAIN3", "PIDHIGH", "CLI_SPLICE",
94          "UID-REGRESSION-TEST", "SHORTNAME-TEST",
95          "CASE-INSENSITIVE-CREATE", "SMB2-BASIC", "NTTRANS-FSCTL", "SMB2-NEGPROT",
96          "SMB2-SESSION-REAUTH", "SMB2-SESSION-RECONNECT", "SMB2-FTRUNCATE",
97          "SMB2-ANONYMOUS", "SMB2-DIR-FSYNC",
98          "SMB2-PATH-SLASH",
99          "CLEANUP1",
100          "CLEANUP2",
101          "CLEANUP4",
102          "DELETE-STREAM",
103          "BAD-NBT-SESSION"]
104
105 for t in fileserver_tests:
106     fileserver_env = "fileserver_smb1"
107     if "SMB2" in t:
108         fileserver_env = "fileserver"
109     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"])
110     plantestsuite("samba3.smbtorture_s3.crypt_client.%s" % t, "nt4_dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', smbtorture3, "-e", "-l $LOCAL_PATH"])
111     if t == "TORTURE":
112         # this is a negative test to verify that the server rejects
113         # access without encryption
114         plantestsuite("samba3.smbtorture_s3.crypt_server.%s" % t, "nt4_dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmpenc', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
115     if t == "CLI_SPLICE":
116         # We must test this against the SMB1 fallback.
117         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"])
118     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"])
119
120 t = "TLDAP"
121 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"])
122
123 t = "OPLOCK5"
124 plantestsuite("samba3.smbtorture_s3.plain.%s" % t,
125               "fileserver_smb1",
126               [os.path.join(samba3srcdir,
127                             "script/tests/test_smbtorture_s3.sh"),
128                t,
129                '//$SERVER/tmp',
130                '$USERNAME',
131                '$PASSWORD',
132                smbtorture3,
133                "",
134                "-l $LOCAL_PATH",
135                "-mNT1"])
136 #
137 # RENAME-ACCESS needs to run against a special share - acl_xattr_ign_sysacl_windows
138 #
139 plantestsuite("samba3.smbtorture_s3.plain.%s" % "RENAME-ACCESS", "nt4_dc", [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"])
140 plantestsuite("samba3.smbtorture_s3.crypt_client.%s" % "RENAME-ACCESS", "nt4_dc", [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"])
141 # non-crypt only
142
143 tests = ["OPLOCK-CANCEL"]
144 for t in tests:
145     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"])
146
147 env = "nt4_dc"
148 tests = ["MANGLE-ILLEGAL"]
149 for t in tests:
150     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"])
151
152 tests = ["RW1", "RW2", "RW3", "SMB2-BASIC"]
153 for t in tests:
154     plantestsuite("samba3.smbtorture_s3.vfs_aio_pthread(simpleserver).%s" % t, "simpleserver", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/vfs_aio_pthread', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
155     plantestsuite("samba3.smbtorture_s3.vfs_aio_fork(simpleserver).%s" % t, "simpleserver", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/vfs_aio_fork', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
156
157 plantestsuite("samba3.smbtorture_s3.hidenewfiles(simpleserver)",
158               "simpleserver",
159               [os.path.join(samba3srcdir,
160                             "script/tests/test_smbtorture_s3.sh"),
161                'hide-new-files-timeout',
162                '//$SERVER_IP/hidenewfiles',
163                '$USERNAME',
164                '$PASSWORD',
165                smbtorture3,
166                "",
167                "-l $LOCAL_PATH"])
168
169 shares = [
170     "vfs_aio_pthread_async_dosmode_default1",
171     "vfs_aio_pthread_async_dosmode_default2",
172     "vfs_aio_pthread_async_dosmode_force_sync1",
173     "vfs_aio_pthread_async_dosmode_force_sync2"
174 ]
175 for s in shares:
176     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"])
177     t = "smb2.compound_find"
178     plansmbtorture4testsuite(t, "simpleserver", "//%s/%s %s" % ('$SERVER_IP', s, ' -U$USERNAME%$PASSWORD'), description=s)
179
180 posix_tests = ["POSIX", "POSIX-APPEND", "POSIX-SYMLINK-ACL", "POSIX-SYMLINK-EA", "POSIX-OFD-LOCK",
181                "POSIX-STREAM-DELETE", "WINDOWS-BAD-SYMLINK", "POSIX-MKDIR",
182                "POSIX-BLOCKING-LOCK",
183                "POSIX-ACL-OPLOCK",
184                "POSIX-ACL-SHAREROOT",
185               ]
186
187 for t in posix_tests:
188     plantestsuite("samba3.smbtorture_s3.plain.%s" % t, "nt4_dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/posix_share', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
189     plantestsuite("samba3.smbtorture_s3.crypt.%s" % t, "nt4_dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/posix_share', '$USERNAME', '$PASSWORD', smbtorture3, "-e", "-l $LOCAL_PATH"])
190     plantestsuite("samba3.smbtorture_s3.plain.%s" % t, "ad_dc_ntvfs", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/posix_share', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
191
192 local_tests = [
193     "LOCAL-SUBSTITUTE",
194     "LOCAL-GENCACHE",
195     "LOCAL-BASE64",
196     "LOCAL-RBTREE",
197     "LOCAL-MEMCACHE",
198     "LOCAL-STREAM-NAME",
199     "LOCAL-string_to_sid",
200     "LOCAL-sid_to_string",
201     "LOCAL-binary_to_sid",
202     "LOCAL-DBTRANS",
203     "LOCAL-TEVENT-POLL",
204     "LOCAL-CONVERT-STRING",
205     "LOCAL-CONV-AUTH-INFO",
206     "LOCAL-IDMAP-TDB-COMMON",
207     "LOCAL-MESSAGING-READ1",
208     "LOCAL-MESSAGING-READ2",
209     "LOCAL-MESSAGING-READ3",
210     "LOCAL-MESSAGING-READ4",
211     "LOCAL-MESSAGING-FDPASS1",
212     "LOCAL-MESSAGING-FDPASS2",
213     "LOCAL-MESSAGING-FDPASS2a",
214     "LOCAL-MESSAGING-FDPASS2b",
215     "LOCAL-MESSAGING-SEND-ALL",
216     "LOCAL-PTHREADPOOL-TEVENT",
217     "LOCAL-CANONICALIZE-PATH",
218     "LOCAL-DBWRAP-WATCH1",
219     "LOCAL-DBWRAP-WATCH2",
220     "LOCAL-DBWRAP-WATCH3",
221     "LOCAL-DBWRAP-WATCH4",
222     "LOCAL-DBWRAP-DO-LOCKED1",
223     "LOCAL-G-LOCK1",
224     "LOCAL-G-LOCK2",
225     "LOCAL-G-LOCK3",
226     "LOCAL-G-LOCK4",
227     "LOCAL-G-LOCK4A",
228     "LOCAL-G-LOCK5",
229     "LOCAL-G-LOCK6",
230     "LOCAL-G-LOCK7",
231     "LOCAL-NAMEMAP-CACHE1",
232     "LOCAL-IDMAP-CACHE1",
233     "LOCAL-hex_encode_buf",
234     "LOCAL-remove_duplicate_addrs2"]
235
236 for t in local_tests:
237     plantestsuite("samba3.smbtorture_s3.%s" % t, "none", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//foo/bar', '""', '""', smbtorture3, ""])
238
239 plantestsuite("samba.vfstest.stream_depot", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/stream-depot/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
240 plantestsuite("samba.vfstest.xattr-tdb-1", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/xattr-tdb-1/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
241 plantestsuite("samba.vfstest.acl", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/vfstest-acl/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
242 plantestsuite("samba.vfstest.catia", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/vfstest-catia/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
243
244 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"])
245 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"])
246 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"])
247 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"])
248 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"])
249
250 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])
251 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"]:
252     if "NT1" in options or "LANMAN2" in options:
253         env = "nt4_dc_smb1_done"
254     else:
255         env = "nt4_dc"
256     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])
257
258 for env in ["nt4_dc", "nt4_member", "ad_member", "ad_dc", "ad_dc_ntvfs", "s4member", "fl2000dc"]:
259     plantestsuite("samba3.blackbox.smbclient_machine_auth.plain", "%s:local" % env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_machine_auth.sh"), '$SERVER', smbclient3, configuration])
260     smb1_env = env
261     if smb1_env == "ad_dc" or smb1_env == "nt4_dc":
262         smb1_env = smb1_env + "_smb1_done"
263     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])
264     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])
265
266 for options in ["--option=clientntlmv2auth=no", "--option=clientusespnego=no --option=clientntlmv2auth=no", "--option=clientusespnego=no --option=clientntlmv2auth=no -mNT1", ""]:
267     for env in ["nt4_member", "ad_member"]:
268         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])
269         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])
270
271 for env in ["nt4_member", "ad_member"]:
272     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])
273     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])
274     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])
275     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])
276     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])
277     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])
278
279 env = "ad_dc_smb1"
280 plantestsuite("samba3.blackbox.smbspool", env, [os.path.join(samba3srcdir, "script/tests/test_smbspool.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', env])
281
282 for env in ["ad_member:local", "nt4_dc:local"]:
283     plantestsuite("samba3.blackbox.smbpasswd", env, [os.path.join(samba3srcdir, "script/tests/test_smbpasswd.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD'])
284
285 env = "nt4_dc"
286 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])
287
288 for env in ["nt4_member", "ad_member"]:
289     plantestsuite("samba3.blackbox.net_cred_change", "%s:local" % env, [os.path.join(samba3srcdir, "script/tests/test_net_cred_change.sh"), configuration])
290
291 env = "ad_member"
292 t = "--krb5auth=$DOMAIN/$DC_USERNAME%$DC_PASSWORD"
293 plantestsuite("samba3.wbinfo_simple.%s" % t, "%s:local" % env, [os.path.join(srcdir(), "nsswitch/tests/test_wbinfo_simple.sh"), t])
294 plantestsuite("samba3.wbinfo_name_lookup", env,
295               [os.path.join(srcdir(),
296                             "nsswitch/tests/test_wbinfo_name_lookup.sh"),
297                '$DOMAIN', '$REALM', '$DC_USERNAME'])
298
299 env = "ad_member"
300 plantestsuite("samba3.wbinfo_user_info_cached", env,
301               [os.path.join(srcdir(),
302                             "nsswitch/tests/test_wbinfo_user_info_cached.sh"),
303                '$DOMAIN', '$REALM', 'joe', 'Secret007', '"Samba Users"', env])
304 plantestsuite("samba3.wbinfo_user_info_cached.trustdom", env,
305               [os.path.join(srcdir(),
306                             "nsswitch/tests/test_wbinfo_user_info_cached.sh"),
307                '$TRUST_F_BOTH_DOMAIN', '$TRUST_F_BOTH_REALM', 'joe', 'Secret007', '"Samba Users"', env])
308
309 env = "ad_member:local"
310 plantestsuite("samba3.wbinfo_user_info", env,
311               [os.path.join(srcdir(),
312                             "nsswitch/tests/test_wbinfo_user_info.sh"),
313                '$DOMAIN', '$REALM', '$DOMAIN', 'alice', 'alice', 'jane', 'jane.doe', env])
314
315 env = "fl2008r2dc:local"
316 plantestsuite("samba3.wbinfo_user_info", env,
317               [os.path.join(srcdir(),
318                             "nsswitch/tests/test_wbinfo_user_info.sh"),
319                '$TRUST_DOMAIN', '$TRUST_REALM', '$DOMAIN', 'alice', 'alice', 'jane', 'jane.doe', env])
320
321 env = "nt4_member:local"
322 plantestsuite("samba3.wbinfo_sids_to_xids", env,
323               [os.path.join(srcdir(),
324                             "nsswitch/tests/test_wbinfo_sids_to_xids.sh")])
325
326 env = "ad_member"
327 t = "WBCLIENT-MULTI-PING"
328 plantestsuite("samba3.smbtorture_s3.%s" % t, env, [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//foo/bar', '""', '""', smbtorture3, ""])
329 plantestsuite("samba3.substitutions", env, [os.path.join(samba3srcdir, "script/tests/test_substitutions.sh"), "$SERVER", "alice", "Secret007", "$PREFIX"])
330
331 for env in ["maptoguest", "simpleserver"]:
332     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"])
333
334 env = "maptoguest"
335 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"])
336 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])
337 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])
338
339 # plain
340 env = "nt4_dc_smb1_done"
341 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"])
342 env = "nt4_dc"
343 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"])
344
345 for env in ["nt4_member", "ad_member"]:
346     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"])
347     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"])
348
349 env = "nt4_dc_smb1_done"
350 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", "--signing=required"])
351 env = "nt4_dc"
352 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", "--signing=required"])
353
354 for env in ["nt4_member", "ad_member"]:
355     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", "--signing=required"])
356     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", "--signing=required"])
357
358 env = "nt4_dc_smb1_done"
359 # encrypted
360 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", "-e"])
361 env = "nt4_dc"
362 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", "-e"])
363
364 for env in ["fileserver"]:
365     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"])
366     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"'])
367     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"])
368     plantestsuite("samba3.blackbox.dfree_command.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_dfree_command.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, "SMB3"])
369     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"])
370     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"])
371     plantestsuite("samba3.blackbox.smbcquotas", env, [os.path.join(samba3srcdir, "script/tests/test_smbcquota.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbcquotas])
372     plantestsuite("samba3.blackbox.valid_users", env, [os.path.join(samba3srcdir, "script/tests/test_valid_users.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3])
373     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])
374     plantestsuite("samba3.blackbox.dropbox", env, [os.path.join(samba3srcdir, "script/tests/test_dropbox.sh"), '$SERVER', '$DOMAIN', 'gooduser', '$PASSWORD', '$PREFIX', env, smbclient3])
375     plantestsuite("samba3.blackbox.offline", env, [os.path.join(samba3srcdir, "script/tests/test_offline.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/offline', smbclient3])
376     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'])
377     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'])
378     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])
379     plantestsuite("samba3.blackbox.smbclient.forceuser_validusers", env, [os.path.join(samba3srcdir, "script/tests/test_forceuser_validusers.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3])
380     plantestsuite("samba3.blackbox.smbget", env, [os.path.join(samba3srcdir, "script/tests/test_smbget.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', 'smbget_user', '$PASSWORD', '$LOCAL_PATH/smbget', smbget])
381     plantestsuite("samba3.blackbox.netshareenum", env, [os.path.join(samba3srcdir, "script/tests/test_shareenum.sh"), '$SERVER', '$USERNAME', '$PASSWORD', rpcclient])
382     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'])
383     plantestsuite("samba3.blackbox.acl_xattr.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_acl_xattr.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, '-mSMB3'])
384     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])
385     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'])
386     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'])
387     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'])
388     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'])
389     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'])
390     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'])
391     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'])
392     plantestsuite("samba3.blackbox.large_acl.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_large_acl.sh"), '$SERVER', '$USERNAME', '$PASSWORD', smbclient3, smbcacls, '-m', 'SMB3'])
393     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'])
394     plantestsuite("samba3.blackbox.homes", env, [os.path.join(samba3srcdir, "script/tests/test_homes.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', '$PREFIX', smbclient3, configuration])
395     plantestsuite("samba3.blackbox.force_group_change", env,
396                 [os.path.join(samba3srcdir, "script/tests/test_force_group_change.sh"),
397                 '$SERVER', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3, smbcontrol])
398     plantestsuite("samba3.blackbox.zero-data", env,
399                   [os.path.join(samba3srcdir, "script/tests/test_zero_data.sh"),
400                    '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH'])
401     plantestsuite("samba3.blackbox.timestamps", env,
402                   [os.path.join(samba3srcdir, "script/tests/test_timestamps.sh"),
403                    '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3])
404
405     #
406     # tar command tests
407     #
408
409     # Test smbclient/tarmode
410     plantestsuite("samba3.blackbox.smbclient_tarmode.NT1", env + "_smb1_done",
411                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.sh"),
412                    '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD',
413                    '$LOCAL_PATH/tarmode', '$PREFIX', smbclient3, configuration, "-mNT1"])
414     plantestsuite("samba3.blackbox.smbclient_tarmode.SMB3", env,
415                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.sh"),
416                    '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD',
417                    '$LOCAL_PATH/tarmode', '$PREFIX', smbclient3, configuration, "-mSMB3"])
418
419     # Test suite for new smbclient/tar with libarchive (GSoC 13)
420     plantestsuite("samba3.blackbox.smbclient_tar.NT1", env + "_smb1_done",
421                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.pl"),
422                    '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tmp',
423                    '-u', '$USERNAME', '-p', '$PASSWORD', '-l', '$LOCAL_PATH/tarmode',
424                    '-d', '$PREFIX', '-b', smbclient3,
425                    '--subunit', '--', configuration, '-mNT1'])
426     plantestsuite("samba3.blackbox.smbclient_tar.SMB3", env,
427                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.pl"),
428                    '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tmp',
429                    '-u', '$USERNAME', '-p', '$PASSWORD', '-l', '$LOCAL_PATH/tarmode',
430                    '-d', '$PREFIX', '-b', smbclient3,
431                    '--subunit', '--', configuration, '-mSMB3'])
432
433 for env in ["fileserver:local"]:
434     plantestsuite("samba3.blackbox.net_usershare", env, [os.path.join(samba3srcdir, "script/tests/test_net_usershare.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbclient3])
435
436     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"])
437     plantestsuite("samba3.blackbox.net_registry_import", env, [os.path.join(samba3srcdir, "script/tests/test_net_registry_import.sh"), '$SERVER', '$LOCAL_PATH', '$USERNAME', '$PASSWORD'])
438
439 # TODO encrypted against member, with member creds, and with DC creds
440 plantestsuite("samba3.blackbox.net.misc NT1", "ad_dc_smb1_done:local",
441               [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
442                scriptdir, "$SMB_CONF_PATH", net, configuration, "NT1"])
443 plantestsuite("samba3.blackbox.net.misc SMB3", "ad_dc:local",
444               [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
445                scriptdir, "$SMB_CONF_PATH", net, configuration, "SMB3"])
446 plantestsuite("samba3.blackbox.net.local.registry", "nt4_dc:local",
447               [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
448                scriptdir, "$SMB_CONF_PATH", net, configuration])
449 plantestsuite("samba3.blackbox.net.registry.check", "nt4_dc:local",
450               [os.path.join(samba3srcdir, "script/tests/test_net_registry_check.sh"),
451                scriptdir, "$SMB_CONF_PATH", net, configuration, dbwrap_tool])
452 plantestsuite("samba3.blackbox.net.rpc.registry", "nt4_dc",
453               [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
454                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
455
456 plantestsuite("samba3.blackbox.net.local.registry.roundtrip", "nt4_dc:local",
457               [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
458                scriptdir, "$SMB_CONF_PATH", net, configuration])
459 plantestsuite("samba3.blackbox.net.rpc.registry.roundtrip", "nt4_dc",
460               [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
461                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
462
463 plantestsuite("samba3.blackbox.net.local.conf", "nt4_dc:local",
464               [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
465                scriptdir, "$SMB_CONF_PATH", net, configuration])
466 plantestsuite("samba3.blackbox.net.rpc.conf", "nt4_dc",
467               [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
468                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
469
470
471 plantestsuite("samba3.blackbox.testparm", "nt4_dc:local",
472               [os.path.join(samba3srcdir, "script/tests/test_testparm_s3.sh"),
473                "$LOCAL_PATH"])
474
475 plantestsuite(
476     "samba3.pthreadpool", "none",
477     [os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
478
479 if with_pthreadpool and have_ldwrap:
480     plantestsuite("samba3.pthreadpool_cmocka", "none",
481                   [os.path.join(bindir(), "pthreadpooltest_cmocka")])
482
483 if with_pthreadpool:
484     plantestsuite("samba3.libwbclient_threads",
485                   "nt4_member",
486                   [os.path.join(samba3srcdir,
487                                 "script/tests/test_libwbclient_threads.sh"),
488                    "$DOMAIN", "$DC_USERNAME"])
489
490 plantestsuite("samba3.test_nfs4_acl", "none",
491               [os.path.join(bindir(), "test_nfs4_acls"),
492                "$SMB_CONF_PATH"])
493
494 plantestsuite(
495     "samba3.resolvconf", "none",
496     [os.path.join(samba3srcdir, "script/tests/test_resolvconf.sh")])
497
498 plantestsuite("samba3.tevent_glib_glue", "none",
499     [os.path.join(samba3srcdir, "script/tests/test_tevent_glib_glue.sh")])
500
501 plantestsuite("samba3.async_req", "nt4_dc",
502               [os.path.join(samba3srcdir, "script/tests/test_async_req.sh")])
503
504 # smbtorture4 tests
505
506 base = ["base.attr", "base.charset", "base.chkpath", "base.createx_access", "base.defer_open", "base.delaywrite", "base.delete",
507         "base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
508         "base.disconnect", "base.fdpass", "base.lock",
509         "base.mangle", "base.negnowait", "base.ntdeny1",
510         "base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
511         "base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
512         "base.xcopy", "base.samba3error"]
513
514 raw = ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
515        "raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock",
516        "raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
517        "raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
518        "raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename", "raw.session",
519        "raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
520        "raw.samba3rootdirfid", "raw.sfileinfo.end-of-file",
521        "raw.bench-oplock", "raw.bench-lock", "raw.bench-open", "raw.bench-tcon",
522        "raw.samba3checkfsp", "raw.samba3closeerr", "raw.samba3oplocklogoff", "raw.samba3badnameblob"]
523
524 smb2 = smbtorture4_testsuites("smb2.")
525
526 rpc = ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
527        "rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
528        "rpc.samba3.getaliasmembership-0",
529        "rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
530        "rpc.samba3.smb1-pipe-name", "rpc.samba3.smb2-pipe-name",
531        "rpc.samba3.smb-reauth1", "rpc.samba3.smb-reauth2",
532        "rpc.samba3.lsa_over_netlogon", "rpc.samba3.pipes_supported_interfaces",
533        "rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
534        "rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
535        "rpc.spoolss.driver",
536        "rpc.lsa", "rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
537        "rpc.lsa.privileges", "rpc.lsa.secrets",
538        "rpc.mdssvc",
539        "rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
540        "rpc.samr.passwords.pwdlastset", "rpc.samr.passwords.lockout", "rpc.samr.passwords.badpwdcount", "rpc.samr.large-dc", "rpc.samr.machine.auth",
541        "rpc.samr.priv", "rpc.samr.passwords.validate",
542        "rpc.netlogon.admin",
543        "rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.schannel_anon_setpw", "rpc.join", "rpc.bind",
544        "rpc.initshutdown", "rpc.wkssvc", "rpc.srvsvc"]
545
546 local = ["local.nss"]
547
548 idmap = ["idmap.rfc2307", "idmap.alloc", "idmap.rid", "idmap.ad"]
549
550 rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
551
552 unix = ["unix.info2", "unix.whoami"]
553
554 nbt = ["nbt.dgram"]
555
556 vfs = [
557     "vfs.fruit",
558     "vfs.acl_xattr",
559     "vfs.fruit_netatalk",
560     "vfs.fruit_file_id",
561     "vfs.fruit_timemachine",
562     "vfs.fruit_conversion",
563     "vfs.unfruit",
564 ]
565
566 tests = base + raw + smb2 + rpc + unix + local + rap + nbt + idmap + vfs
567
568 for t in tests:
569     if t == "base.delaywrite" or t == "base.deny1" or t == "base.deny2":
570         plansmbtorture4testsuite(t, "fileserver_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD --maximum-runtime=900')
571     elif t == "base.createx_access":
572         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD -k yes --maximum-runtime=900')
573     elif t == "rap.sam":
574         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
575         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
576     elif t == "winbind.pac":
577         plansmbtorture4testsuite(t, "ad_member:local", '//$SERVER/tmp --realm=$REALM --machine-pass --option=torture:addc=$DC_SERVER', description="machine account")
578     elif t == "unix.whoami":
579         plansmbtorture4testsuite(t, "nt4_member:local", '//$SERVER/tmp --machine-pass', description="machine account")
580         plansmbtorture4testsuite(t, "ad_member:local", '//$SERVER/tmp --machine-pass --option=torture:addc=$DC_SERVER', description="machine account")
581         for env in ["nt4_dc", "nt4_member"]:
582             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
583             plansmbtorture4testsuite(t, env, '//$SERVER/tmpguest -U%', description='anonymous connection')
584         for env in ["ad_dc_smb1", "ad_member"]:
585             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$DC_USERNAME@$REALM%$DC_PASSWORD --option=torture:addc=$DC_SERVER')
586             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -k yes -U$DC_USERNAME@$REALM%$DC_PASSWORD --option=torture:addc=$DC_SERVER', description='kerberos connection')
587             plansmbtorture4testsuite(t, env, '//$SERVER/tmpguest -U% --option=torture:addc=$DC_SERVER', description='anonymous connection')
588             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -k no -U$DC_USERNAME@$REALM%$DC_PASSWORD', description='ntlm user@realm')
589     elif t == "raw.samba3posixtimedlock" or t == "smb2.samba3misc":
590         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
591         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/brl_delay_inject1 -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share',
592                                  description="brl_delay_inject1")
593         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/brl_delay_inject2 -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share',
594                                  description="brl_delay_inject2")
595         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/ad_dc/share')
596     elif t == "raw.chkpath":
597         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
598         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
599     elif t == "raw.samba3hide" or t == "raw.samba3checkfsp" or t == "raw.samba3closeerr":
600         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
601         plansmbtorture4testsuite(t, "simpleserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
602         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
603     elif t == "raw.session":
604         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'plain')
605         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpenc -U$USERNAME%$PASSWORD', 'enc')
606         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -k no -U$USERNAME%$PASSWORD', 'ntlm')
607         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -k yes -U$USERNAME%$PASSWORD', 'krb5')
608     elif t == "smb2.session":
609         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'plain')
610         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpenc -U$USERNAME%$PASSWORD', 'enc')
611         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -k no -U$USERNAME%$PASSWORD', 'ntlm')
612         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -k yes -U$USERNAME%$PASSWORD', 'krb5')
613         # Certain tests fail when run against ad_member with MIT kerberos because the private krb5.conf overrides the provisioned lib/krb5.conf,
614         # ad_member_idmap_rid sets "create krb5.conf = no"
615         plansmbtorture4testsuite(t, "ad_member_idmap_rid", '//$SERVER/tmp -k yes -U$DC_USERNAME@$REALM%$DC_PASSWORD', 'krb5')
616     elif t == "rpc.lsa":
617         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'over ncacn_np ')
618         plansmbtorture4testsuite(t, "nt4_dc", 'ncacn_ip_tcp:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
619         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'over ncacn_np ')
620         plansmbtorture4testsuite(t, "ad_dc", 'ncacn_ip_tcp:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
621     elif t == "rpc.mdssvc":
622         plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:no_spotlight_localdir=$SELFTEST_PREFIX/fileserver/share')
623     elif t == "rpc.samr.passwords.validate":
624         plansmbtorture4testsuite(t, "nt4_dc", 'ncacn_ip_tcp:$SERVER_IP[seal] -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
625         plansmbtorture4testsuite(t, "ad_dc", 'ncacn_ip_tcp:$SERVER_IP[seal] -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
626     elif t == "smb2.durable-open" or t == "smb2.durable-v2-open" or t == "smb2.replay" or t == "smb2.durable-v2-delay":
627         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/durable -U$USERNAME%$PASSWORD')
628         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/durable -U$USERNAME%$PASSWORD')
629     elif t == "base.rw1":
630         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
631         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/valid-users-tmp -U$USERNAME%$PASSWORD')
632         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/write-list-tmp -U$USERNAME%$PASSWORD')
633         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
634     elif t == "idmap.rfc2307":
635         plantestsuite(t, "ad_member_rfc2307",
636                       [os.path.join(samba3srcdir,
637                                     "../nsswitch/tests/test_idmap_rfc2307.sh"),
638                        '$DOMAIN',
639                        'Administrator', '2000000',
640                        'Guest', '2000001',
641                        '"Domain Users"', '2000002',
642                        'DnsAdmins', '2000003',
643                        '2000005', '35',
644                        'ou=idmap,dc=samba,dc=example,dc=com',
645                        '$DC_SERVER', '$DC_USERNAME', '$DC_PASSWORD'])
646     elif t == "idmap.alloc":
647         plantestsuite(t, "ad_member_rfc2307", [os.path.join(samba3srcdir, "../nsswitch/tests/test_idmap_nss.sh"), '$DOMAIN'])
648     elif t == "idmap.rid":
649         plantestsuite(t, "ad_member_idmap_rid", [os.path.join(samba3srcdir, "../nsswitch/tests/test_idmap_rid.sh"), '$DOMAIN', '2000000'])
650     elif t == "idmap.ad":
651         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'])
652     elif t == "raw.acls":
653         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
654         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_simple_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-simple-40')
655         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_special_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-special-40')
656         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_simple_41 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-simple-41')
657         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_xdr_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-xdr-40')
658         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_xdr_41 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-xdr-41')
659         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_nfs_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-nfs-40')
660         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_nfs_41 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-nfs-41')
661         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
662     elif t == "smb2.ioctl":
663         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/fs_specific -U$USERNAME%$PASSWORD', 'fs_specific')
664         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
665         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
666     elif t == "smb2.lock":
667         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
668         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
669     elif t == "raw.lock" or t == "base.lock":
670         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
671     elif t == "raw.read":
672         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
673         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
674         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
675     elif t == "raw.search":
676         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
677 # test the dirsort module.
678         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpsort -U$USERNAME%$PASSWORD')
679         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
680     elif t == "vfs.fruit":
681         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')
682         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')
683         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')
684         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')
685     elif t == "vfs.fruit_netatalk":
686         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_xattr -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
687     elif t == "vfs.fruit_timemachine":
688         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_timemachine -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
689     elif t == "vfs.fruit_file_id":
690         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_zero_fileid -U$USERNAME%$PASSWORD')
691     elif t == "vfs.fruit_conversion":
692         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')
693         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')
694     elif t == "vfs.unfruit":
695         creds = '-U$USERNAME%$PASSWORD'
696         share2 = '--option=torture:share2=tmp'
697         netopt = '--option=torture:net=%s' % net
698         shareopt = '--option=torture:sharename'
699
700         plansmbtorture4testsuite(t, "nt4_dc:local", '//$SERVER_IP/vfs_fruit %s %s %s %s=%s' % (creds, share2, netopt, shareopt, 'vfs_fruit'), 'metadata_netatalk')
701         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')
702         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')
703     elif t == "rpc.schannel_anon_setpw":
704         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$%', description="anonymous password set")
705         plansmbtorture4testsuite(t, "nt4_dc_schannel", '//$SERVER_IP/tmp -U$%', description="anonymous password set (schannel enforced server-side)")
706         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$%', description="anonymous password set")
707     elif t == "local.nss":
708         for env in ["nt4_dc:local", "ad_member:local", "nt4_member:local", "ad_dc:local"]:
709             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$USERNAME%$PASSWORD')
710     elif t == "smb2.change_notify_disabled":
711         plansmbtorture4testsuite(t, "simpleserver", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
712     elif t == "smb2.notify" or t == "raw.notify" or t == "smb2.oplock" or t == "raw.oplock":
713         tmp_env = "nt4_dc"
714         # These tests are a little slower so don't duplicate them with ad_dc
715         plansmbtorture4testsuite(t, tmp_env, '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --signing=required')
716     elif t == "smb2.dosmode":
717         plansmbtorture4testsuite(t, "simpleserver", '//$SERVER/dosmode -U$USERNAME%$PASSWORD')
718     elif t == "smb2.kernel-oplocks":
719         if have_linux_kernel_oplocks:
720             plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER/kernel_oplocks -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
721     elif t == "smb2.notify-inotify":
722         if have_inotify:
723             plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
724     elif t == "vfs.acl_xattr":
725         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
726     elif t == "smb2.compound_find":
727         plansmbtorture4testsuite(t, "fileserver", '//$SERVER/compound_find -U$USERNAME%$PASSWORD')
728         plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
729     elif t == "rpc.samr.users.privileges":
730         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:nt4_dc=true')
731         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
732     elif t == "smb2.compound":
733         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
734         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
735         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
736     elif t == "rpc.samba3.netlogon" or t == "rpc.samba3.sessionkey":
737         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:wksname=samba3rpctest')
738         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD --option=torture:wksname=samba3rpctest')
739     elif t == "smb2.streams":
740         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
741         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
742         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/streams_xattr -U$USERNAME%$PASSWORD', 'streams_xattr')
743     elif t == "smb2.aio_delay":
744         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio_delay_inject -U$USERNAME%$PASSWORD')
745     elif t == "smb2.delete-on-close-perms":
746         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
747         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/delete_readonly -U$USERNAME%$PASSWORD --option=torture:delete_readonly=true')
748         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
749     elif t == "smb2.fileid":
750         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_xattr -U$USERNAME%$PASSWORD')
751     elif t == "rpc.wkssvc":
752         plansmbtorture4testsuite(t, "ad_member", '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
753     elif t == "rpc.srvsvc":
754         plansmbtorture4testsuite(t, "ad_member", '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
755         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
756     elif t == "rpc.samba3.lsa_over_netlogon":
757         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
758     elif t == "rpc.samba3.pipes_supported_interfaces":
759         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
760         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
761     elif t == "rpc.spoolss.notify":
762         plansmbtorture4testsuite(t, "ad_member", '//$SERVER_IP/tmp -U$DC_USERNAME%$DC_PASSWORD')
763     elif (t in base and t != "base.charset") \
764         or (t in rap and t != "rap.printing") \
765         or (t in unix) \
766         or (t in ["rpc.authcontext",
767                   "rpc.join",
768                   "rpc.samba3.bind",
769                   "rpc.samba3.getusername",
770                   "rpc.samba3.sharesec",
771                   "rpc.samba3.smb1-pipe-name",
772                   "rpc.samba3.smb-reauth1",
773                   "rpc.samba3.smb-reauth2",
774                   "rpc.samba3.spoolss",
775                   "rpc.samba3.wkssvc",]) \
776         or (t in ["raw.close",
777                   "raw.composite",
778                   "raw.eas",
779                   "raw.mkdir",
780                   "raw.open",
781                   "raw.rename",
782                   "raw.samba3badnameblob",
783                   "raw.samba3badpath",
784                   "raw.samba3caseinsensitive",
785                   "raw.samba3oplocklogoff",
786                   "raw.samba3posixtimedlock",
787                   "raw.samba3rootdirfid",
788                   "raw.seek",
789                   "raw.sfileinfo.bug",
790                   "raw.sfileinfo.end-of-file",
791                   "raw.sfileinfo.rename",
792                   "raw.streams",
793                   "raw.unlink",
794                   "raw.write",]) :
795         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
796         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
797     else:
798         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
799         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
800
801
802 test = 'rpc.lsa.lookupsids'
803 auth_options = ["", "ntlm", "spnego", "spnego,ntlm", "spnego,smb1", "spnego,smb2"]
804 signseal_options = ["", ",connect", ",packet", ",sign", ",seal"]
805 endianness_options = ["", ",bigendian"]
806 for s in signseal_options:
807     for e in endianness_options:
808         for a in auth_options:
809             binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
810             options = binding_string + " -U$USERNAME%$PASSWORD"
811             plansmbtorture4testsuite(test, "nt4_dc", options, 'over ncacn_np with [%s%s%s] ' % (a, s, e))
812             plantestsuite("samba3.blackbox.rpcclient over ncacn_np with [%s%s%s] " % (a, s, e), "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_rpcclient.sh"),
813                                                                                                                  "none", options, configuration])
814
815     # We should try more combinations in future, but this is all
816     # the pre-calculated credentials cache supports at the moment
817     #
818     # As the ktest env requires SMB3_00 we need to use "smb2" until
819     # dcerpc client code in smbtorture support autonegotiation
820     # of any smb dialect.
821     e = ""
822     a = "smb2"
823     binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
824     options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
825     plansmbtorture4testsuite(test, "ktest", options, 'krb5 with old ccache ncacn_np with [%s%s%s] ' % (a, s, e))
826
827     options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
828     plansmbtorture4testsuite(test, "ktest", options, 'krb5 ncacn_np with [%s%s%s] ' % (a, s, e))
829
830     auth_options2 = ["krb5", "spnego,krb5"]
831     for a in auth_options2:
832         binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
833
834         plantestsuite("samba3.blackbox.rpcclient krb5 ncacn_np with [%s%s%s] " % (a, s, e), "ktest:local", [os.path.join(samba3srcdir, "script/tests/test_rpcclient.sh"),
835                                                                                                             "$PREFIX/ktest/krb5_ccache-3", binding_string, "-k", configuration])
836
837 plantestsuite("samba3.blackbox.rpcclient_samlogon", "ad_member:local", [os.path.join(samba3srcdir, "script/tests/test_rpcclient_samlogon.sh"),
838                                                                         "$DC_USERNAME", "$DC_PASSWORD", "ncacn_np:$DC_SERVER", configuration])
839 plantestsuite("samba3.blackbox.sharesec", "simpleserver:local",
840               [os.path.join(samba3srcdir, "script/tests/test_sharesec.sh"),
841                configuration, os.path.join(bindir(), "sharesec"),
842                os.path.join(bindir(), "net"), "tmp"])
843
844 plantestsuite("samba3.blackbox.close-denied-share", "simpleserver:local",
845               [os.path.join(samba3srcdir,
846                             "script/tests/test_close_denied_share.sh"),
847                configuration,
848                os.path.join(bindir(), "sharesec"),
849                os.path.join(bindir(), "smbclient"),
850                os.path.join(bindir(), "smbcontrol"),
851                '$SERVER_IP',
852                "tmp"])
853
854 plantestsuite("samba3.blackbox.force-close-share", "simpleserver:local",
855               [os.path.join(samba3srcdir,
856                             "script/tests/test_force_close_share.sh"),
857                configuration,
858                os.path.join(bindir(), "smbclient"),
859                os.path.join(bindir(), "smbcontrol"),
860                '$SERVER_IP',
861                "aio_delay_inject"])
862
863 plantestsuite("samba3.blackbox.open-eintr", "simpleserver:local",
864               [os.path.join(samba3srcdir,
865                             "script/tests/test_open_eintr.sh"),
866                configuration,
867                os.path.join(bindir(), "smbclient"),
868                os.path.join(bindir(), "smbcontrol"),
869                '$SERVER_IP',
870                "error_inject"])
871
872 plantestsuite("samba3.blackbox.net_tdb", "simpleserver:local",
873               [os.path.join(samba3srcdir, "script/tests/test_net_tdb.sh"),
874                smbclient3, '$SERVER', 'tmp', '$USERNAME', '$PASSWORD',
875                configuration, '$LOCAL_PATH', '$LOCK_DIR'])
876
877 plantestsuite("samba3.blackbox.smbd_error", "simpleserver:local",
878               [os.path.join(samba3srcdir, "script/tests/test_smbd_error.sh")])
879
880 plantestsuite("samba3.blackbox.smbd_no_krb5", "ad_member:local",
881               [os.path.join(samba3srcdir, "script/tests/test_smbd_no_krb5.sh"),
882                smbclient3, '$SERVER', "$DC_USERNAME", "$DC_PASSWORD", "$PREFIX"])
883
884 plantestsuite("samba3.blackbox.durable_v2_delay", "simpleserver:local",
885               [os.path.join(samba3srcdir, "script/tests/test_durable_handle_reconnect.sh")])
886
887 plantestsuite("samba3.blackbox.net_cache_samlogon", "ad_member:local",
888               [os.path.join(samba3srcdir, "script/tests/test_net_cache_samlogon.sh"),
889                '$SERVER', 'tmp', '$DC_USERNAME', '$DC_PASSWORD'])
890
891 plantestsuite("samba3.blackbox.net_rpc_share_allowedusers", "nt4_dc",
892               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_share_allowedusers.sh"),
893                "$SERVER", "$USERNAME", "$PASSWORD", "$PREFIX/net_rpc_share_allowedusers",
894                configuration])
895
896 plantestsuite("samba3.blackbox.net_dom_join_fail_dc", "nt4_dc",
897               [os.path.join(samba3srcdir, "script/tests/test_net_dom_join_fail_dc.sh"),
898                "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_dom_join_fail_dc",
899                configuration])
900 plantestsuite("samba3.blackbox.net_rpc_join", "nt4_dc",
901               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_join.sh"),
902                "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_rpc_join",
903                configuration])
904 plantestsuite("samba3.blackbox.net_rpc_oldjoin", "nt4_dc:local",
905               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_oldjoin.sh"),
906                "$SERVER", "$PREFIX/net_rpc_oldjoin",
907                "$SMB_CONF_PATH"])
908 plantestsuite("samba3.blackbox.net_rpc_join_creds", "nt4_dc",
909               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_join_creds.sh"),
910                "$DOMAIN", "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_rpc_join_creds",
911                configuration])
912
913 plantestsuite("samba3.blackbox.rpcclient_srvsvc", "simpleserver",
914               [os.path.join(samba3srcdir, "script/tests/test_rpcclientsrvsvc.sh"),
915                "$USERNAME", "$PASSWORD", "$SERVER",
916                os.path.join(bindir(), "rpcclient"), "tmp"])
917
918 plantestsuite("samba3.blackbox.rpcclient_lookup", "simpleserver",
919               [os.path.join(samba3srcdir, "script/tests/test_rpcclient_lookup.sh"),
920                "$USERNAME", "$PASSWORD", "$SERVER",
921                os.path.join(bindir(), "rpcclient")])
922
923 plantestsuite("samba3.blackbox.rpcclient.pw-nt-hash", "simpleserver",
924               [os.path.join(samba3srcdir, "script/tests/test_rpcclient_pw_nt_hash.sh"),
925                "$USERNAME", "$PASSWORD", "$SERVER",
926                os.path.join(bindir(), "rpcclient")])
927
928 plantestsuite("samba3.blackbox.smbclient.encryption_off", "simpleserver",
929               [os.path.join(samba3srcdir, "script/tests/test_smbclient_encryption_off.sh"),
930                "$USERNAME", "$PASSWORD", "$SERVER",
931                smbclient3])
932
933 plantestsuite("samba3.blackbox.rpcclient_netsessenum", "ad_member",
934               [os.path.join(samba3srcdir,
935                             "script/tests/test_rpcclient_netsessenum.sh"),
936                "$DOMAIN", "$DC_USERNAME", "$DC_PASSWORD", "$SERVER",
937                os.path.join(bindir(), "rpcclient"), smbtorture3, "tmp"])
938
939 # The ktest environment uses:
940 # server min protocol = SMB3_00
941 # client max protocol = SMB3
942 options_list = ["", "-e"]
943 for options in options_list:
944     plantestsuite("samba3.blackbox.smbclient_krb5 old ccache %s" % options, "ktest:local",
945                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
946                    "$PREFIX/ktest/krb5_ccache-2",
947                    smbclient3, "$SERVER", options, configuration])
948
949     plantestsuite("samba3.blackbox.smbclient_krb5 new ccache %s" % options, "ktest:local",
950                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
951                    "$PREFIX/ktest/krb5_ccache-3",
952                    smbclient3, "$SERVER", options, configuration])
953
954     plantestsuite("samba3.blackbox.smbclient_large_file %s krb5" % options, "ktest:local",
955                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_large_file.sh"),
956                    "$PREFIX/ktest/krb5_ccache-3",
957                    smbclient3, "$SERVER", "$PREFIX", options, "-k " + configuration])
958
959 options_list = ["-mNT1", "-mNT1 -e", "-mSMB3", "-mSMB3 -e"]
960 for options in options_list:
961     env = "nt4_dc"
962     if "NT1" in options:
963         env = "nt4_dc_smb1_done"
964     plantestsuite("samba3.blackbox.smbclient_large_file %s NTLM" % options, "%s:local" % env,
965                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_large_file.sh"),
966                    "none",
967                    smbclient3, "$SERVER", "$PREFIX", options, "-U$USERNAME%$PASSWORD " + configuration])
968
969 for alias in ["foo", "bar"]:
970     plantestsuite("samba3.blackbox.smbclient_netbios_aliases [%s]" % alias, "ad_member:local",
971                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_netbios_aliases.sh"),
972                    smbclient3, alias, "$DC_USERNAME", "$DC_PASSWORD", "$PREFIX", options, configuration])
973
974 for e in endianness_options:
975     for a in auth_options:
976         for s in signseal_options:
977             binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
978             options = binding_string + " -U$USERNAME%$PASSWORD"
979             plansmbtorture4testsuite(test, "nt4_dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))
980
981 plansmbtorture4testsuite('rpc.epmapper', 'nt4_dc:local', 'ncalrpc: -U$USERNAME%$PASSWORD', 'over ncalrpc')
982 plansmbtorture4testsuite('rpc.fsrvp', 'nt4_dc:local', 'ncacn_np:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_np')
983
984 for env in ["ad_member_idmap_rid:local", "maptoguest:local"]:
985     plantestsuite("samba3.blackbox.guest", env,
986                   [os.path.join(samba3srcdir, "script/tests/test_guest_auth.sh"),
987                    '$SERVER', smbclient3, smbcontrol, net, configuration])
988
989 plantestsuite("samba3.blackbox.itime", "ad_dc", [os.path.join(samba3srcdir, "script/tests/test_itime.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3, 'xattr'])
990
991
992 def planclusteredmembertestsuite(tname, prefix):
993     '''Define a clustered test for the clusteredmember environment'''
994
995     tshare = 'tmp'
996
997     autharg = '-U${DOMAIN}/${DC_USERNAME}%${DC_PASSWORD}'
998     namearg = 'clustered.%s' % tname
999     modnamearg = 'samba3.%s' % namearg
1000     extraargs = ''
1001
1002     prefix = os.path.join(prefix, 'clusteredmember_smb1')
1003     unclist = os.path.join(prefix, 'unclists/%s.txt' % tshare)
1004
1005     unclistarg = '--unclist=%s' % unclist
1006     sharearg = '//$SERVER_IP/%s' % tshare
1007
1008     return selftesthelpers.plansmbtorture4testsuite(
1009         namearg,
1010         'clusteredmember_smb1',
1011         [extraargs, unclistarg, sharearg, autharg, tname],
1012         target='samba3',
1013         modname=modnamearg)
1014
1015
1016 CLUSTERED_TESTS = [ 'base.ntdeny2' ]
1017
1018 for test in CLUSTERED_TESTS:
1019     planclusteredmembertestsuite(test, "$PREFIX")