s3/selftest: Move samba3.blackbox.smbclient_s3.NT1.crypt to nt4_dc_smb1
[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":
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 for env in ["nt4_dc"]:
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     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"])
343
344 for env in ["nt4_member", "ad_member"]:
345     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"])
346     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"])
347
348 for env in ["nt4_dc"]:
349     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"])
350     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"])
351
352 for env in ["nt4_member", "ad_member"]:
353     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"])
354     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"])
355
356 env = "nt4_dc_smb1_done"
357 # encrypted
358 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"])
359 env = "nt4_dc"
360 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"])
361
362 for env in ["fileserver"]:
363     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"])
364     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"'])
365     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"])
366     plantestsuite("samba3.blackbox.dfree_command.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_dfree_command.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, "SMB3"])
367     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"])
368     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"])
369     plantestsuite("samba3.blackbox.smbcquotas", env, [os.path.join(samba3srcdir, "script/tests/test_smbcquota.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbcquotas])
370     plantestsuite("samba3.blackbox.valid_users", env, [os.path.join(samba3srcdir, "script/tests/test_valid_users.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3])
371     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])
372     plantestsuite("samba3.blackbox.dropbox", env, [os.path.join(samba3srcdir, "script/tests/test_dropbox.sh"), '$SERVER', '$DOMAIN', 'gooduser', '$PASSWORD', '$PREFIX', env, smbclient3])
373     plantestsuite("samba3.blackbox.offline", env, [os.path.join(samba3srcdir, "script/tests/test_offline.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/offline', smbclient3])
374     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'])
375     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'])
376     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])
377     plantestsuite("samba3.blackbox.smbclient.forceuser_validusers", env, [os.path.join(samba3srcdir, "script/tests/test_forceuser_validusers.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3])
378     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])
379     plantestsuite("samba3.blackbox.netshareenum", env, [os.path.join(samba3srcdir, "script/tests/test_shareenum.sh"), '$SERVER', '$USERNAME', '$PASSWORD', rpcclient])
380     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'])
381     plantestsuite("samba3.blackbox.acl_xattr.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_acl_xattr.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, '-mSMB3'])
382     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])
383     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'])
384     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'])
385     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'])
386     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'])
387     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'])
388     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'])
389     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'])
390     plantestsuite("samba3.blackbox.large_acl.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_large_acl.sh"), '$SERVER', '$USERNAME', '$PASSWORD', smbclient3, smbcacls, '-m', 'SMB3'])
391     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'])
392     plantestsuite("samba3.blackbox.homes", env, [os.path.join(samba3srcdir, "script/tests/test_homes.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', '$PREFIX', smbclient3, configuration])
393     plantestsuite("samba3.blackbox.force_group_change", env,
394                 [os.path.join(samba3srcdir, "script/tests/test_force_group_change.sh"),
395                 '$SERVER', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3, smbcontrol])
396     plantestsuite("samba3.blackbox.zero-data", env,
397                   [os.path.join(samba3srcdir, "script/tests/test_zero_data.sh"),
398                    '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH'])
399     plantestsuite("samba3.blackbox.timestamps", env,
400                   [os.path.join(samba3srcdir, "script/tests/test_timestamps.sh"),
401                    '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3])
402
403     #
404     # tar command tests
405     #
406
407     # Test smbclient/tarmode
408     plantestsuite("samba3.blackbox.smbclient_tarmode.NT1", env + "_smb1_done",
409                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.sh"),
410                    '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD',
411                    '$LOCAL_PATH/tarmode', '$PREFIX', smbclient3, configuration, "-mNT1"])
412     plantestsuite("samba3.blackbox.smbclient_tarmode.SMB3", env,
413                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.sh"),
414                    '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD',
415                    '$LOCAL_PATH/tarmode', '$PREFIX', smbclient3, configuration, "-mSMB3"])
416
417     # Test suite for new smbclient/tar with libarchive (GSoC 13)
418     plantestsuite("samba3.blackbox.smbclient_tar.NT1", env + "_smb1_done",
419                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.pl"),
420                    '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tmp',
421                    '-u', '$USERNAME', '-p', '$PASSWORD', '-l', '$LOCAL_PATH/tarmode',
422                    '-d', '$PREFIX', '-b', smbclient3,
423                    '--subunit', '--', configuration, '-mNT1'])
424     plantestsuite("samba3.blackbox.smbclient_tar.SMB3", env,
425                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.pl"),
426                    '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tmp',
427                    '-u', '$USERNAME', '-p', '$PASSWORD', '-l', '$LOCAL_PATH/tarmode',
428                    '-d', '$PREFIX', '-b', smbclient3,
429                    '--subunit', '--', configuration, '-mSMB3'])
430
431 for env in ["fileserver:local"]:
432     plantestsuite("samba3.blackbox.net_usershare", env, [os.path.join(samba3srcdir, "script/tests/test_net_usershare.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbclient3])
433
434     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"])
435     plantestsuite("samba3.blackbox.net_registry_import", env, [os.path.join(samba3srcdir, "script/tests/test_net_registry_import.sh"), '$SERVER', '$LOCAL_PATH', '$USERNAME', '$PASSWORD'])
436
437 # TODO encrypted against member, with member creds, and with DC creds
438 plantestsuite("samba3.blackbox.net.misc NT1", "ad_dc_smb1_done:local",
439               [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
440                scriptdir, "$SMB_CONF_PATH", net, configuration, "NT1"])
441 plantestsuite("samba3.blackbox.net.misc SMB3", "ad_dc:local",
442               [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
443                scriptdir, "$SMB_CONF_PATH", net, configuration, "SMB3"])
444 plantestsuite("samba3.blackbox.net.local.registry", "nt4_dc:local",
445               [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
446                scriptdir, "$SMB_CONF_PATH", net, configuration])
447 plantestsuite("samba3.blackbox.net.registry.check", "nt4_dc:local",
448               [os.path.join(samba3srcdir, "script/tests/test_net_registry_check.sh"),
449                scriptdir, "$SMB_CONF_PATH", net, configuration, dbwrap_tool])
450 plantestsuite("samba3.blackbox.net.rpc.registry", "nt4_dc",
451               [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
452                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
453
454 plantestsuite("samba3.blackbox.net.local.registry.roundtrip", "nt4_dc:local",
455               [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
456                scriptdir, "$SMB_CONF_PATH", net, configuration])
457 plantestsuite("samba3.blackbox.net.rpc.registry.roundtrip", "nt4_dc",
458               [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
459                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
460
461 plantestsuite("samba3.blackbox.net.local.conf", "nt4_dc:local",
462               [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
463                scriptdir, "$SMB_CONF_PATH", net, configuration])
464 plantestsuite("samba3.blackbox.net.rpc.conf", "nt4_dc",
465               [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
466                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
467
468
469 plantestsuite("samba3.blackbox.testparm", "nt4_dc:local",
470               [os.path.join(samba3srcdir, "script/tests/test_testparm_s3.sh"),
471                "$LOCAL_PATH"])
472
473 plantestsuite(
474     "samba3.pthreadpool", "none",
475     [os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
476
477 if with_pthreadpool and have_ldwrap:
478     plantestsuite("samba3.pthreadpool_cmocka", "none",
479                   [os.path.join(bindir(), "pthreadpooltest_cmocka")])
480
481 if with_pthreadpool:
482     plantestsuite("samba3.libwbclient_threads",
483                   "nt4_member",
484                   [os.path.join(samba3srcdir,
485                                 "script/tests/test_libwbclient_threads.sh"),
486                    "$DOMAIN", "$DC_USERNAME"])
487
488 plantestsuite("samba3.test_nfs4_acl", "none",
489               [os.path.join(bindir(), "test_nfs4_acls"),
490                "$SMB_CONF_PATH"])
491
492 plantestsuite(
493     "samba3.resolvconf", "none",
494     [os.path.join(samba3srcdir, "script/tests/test_resolvconf.sh")])
495
496 plantestsuite("samba3.tevent_glib_glue", "none",
497     [os.path.join(samba3srcdir, "script/tests/test_tevent_glib_glue.sh")])
498
499 plantestsuite("samba3.async_req", "nt4_dc",
500               [os.path.join(samba3srcdir, "script/tests/test_async_req.sh")])
501
502 # smbtorture4 tests
503
504 base = ["base.attr", "base.charset", "base.chkpath", "base.createx_access", "base.defer_open", "base.delaywrite", "base.delete",
505         "base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
506         "base.disconnect", "base.fdpass", "base.lock",
507         "base.mangle", "base.negnowait", "base.ntdeny1",
508         "base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
509         "base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
510         "base.xcopy", "base.samba3error"]
511
512 raw = ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
513        "raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock",
514        "raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
515        "raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
516        "raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename", "raw.session",
517        "raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
518        "raw.samba3rootdirfid", "raw.sfileinfo.end-of-file",
519        "raw.bench-oplock", "raw.bench-lock", "raw.bench-open", "raw.bench-tcon",
520        "raw.samba3checkfsp", "raw.samba3closeerr", "raw.samba3oplocklogoff", "raw.samba3badnameblob"]
521
522 smb2 = smbtorture4_testsuites("smb2.")
523
524 rpc = ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
525        "rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
526        "rpc.samba3.getaliasmembership-0",
527        "rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
528        "rpc.samba3.smb1-pipe-name", "rpc.samba3.smb2-pipe-name",
529        "rpc.samba3.smb-reauth1", "rpc.samba3.smb-reauth2",
530        "rpc.samba3.lsa_over_netlogon", "rpc.samba3.pipes_supported_interfaces",
531        "rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
532        "rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
533        "rpc.spoolss.driver",
534        "rpc.lsa", "rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
535        "rpc.lsa.privileges", "rpc.lsa.secrets",
536        "rpc.mdssvc",
537        "rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
538        "rpc.samr.passwords.pwdlastset", "rpc.samr.passwords.lockout", "rpc.samr.passwords.badpwdcount", "rpc.samr.large-dc", "rpc.samr.machine.auth",
539        "rpc.samr.priv", "rpc.samr.passwords.validate",
540        "rpc.netlogon.admin",
541        "rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.schannel_anon_setpw", "rpc.join", "rpc.bind",
542        "rpc.initshutdown", "rpc.wkssvc", "rpc.srvsvc"]
543
544 local = ["local.nss"]
545
546 idmap = ["idmap.rfc2307", "idmap.alloc", "idmap.rid", "idmap.ad"]
547
548 rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
549
550 unix = ["unix.info2", "unix.whoami"]
551
552 nbt = ["nbt.dgram"]
553
554 vfs = [
555     "vfs.fruit",
556     "vfs.acl_xattr",
557     "vfs.fruit_netatalk",
558     "vfs.fruit_file_id",
559     "vfs.fruit_timemachine",
560     "vfs.fruit_conversion",
561     "vfs.unfruit",
562 ]
563
564 tests = base + raw + smb2 + rpc + unix + local + rap + nbt + idmap + vfs
565
566 for t in tests:
567     if t == "base.delaywrite" or t == "base.deny1" or t == "base.deny2":
568         plansmbtorture4testsuite(t, "fileserver_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD --maximum-runtime=900')
569     elif t == "base.createx_access":
570         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD -k yes --maximum-runtime=900')
571     elif t == "rap.sam":
572         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
573         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
574     elif t == "winbind.pac":
575         plansmbtorture4testsuite(t, "ad_member:local", '//$SERVER/tmp --realm=$REALM --machine-pass --option=torture:addc=$DC_SERVER', description="machine account")
576     elif t == "unix.whoami":
577         plansmbtorture4testsuite(t, "nt4_member:local", '//$SERVER/tmp --machine-pass', description="machine account")
578         plansmbtorture4testsuite(t, "ad_member:local", '//$SERVER/tmp --machine-pass --option=torture:addc=$DC_SERVER', description="machine account")
579         for env in ["nt4_dc", "nt4_member"]:
580             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
581             plansmbtorture4testsuite(t, env, '//$SERVER/tmpguest -U%', description='anonymous connection')
582         for env in ["ad_dc_smb1", "ad_member"]:
583             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$DC_USERNAME@$REALM%$DC_PASSWORD --option=torture:addc=$DC_SERVER')
584             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -k yes -U$DC_USERNAME@$REALM%$DC_PASSWORD --option=torture:addc=$DC_SERVER', description='kerberos connection')
585             plansmbtorture4testsuite(t, env, '//$SERVER/tmpguest -U% --option=torture:addc=$DC_SERVER', description='anonymous connection')
586             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -k no -U$DC_USERNAME@$REALM%$DC_PASSWORD', description='ntlm user@realm')
587     elif t == "raw.samba3posixtimedlock" or t == "smb2.samba3misc":
588         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
589         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/brl_delay_inject1 -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share',
590                                  description="brl_delay_inject1")
591         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/brl_delay_inject2 -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share',
592                                  description="brl_delay_inject2")
593         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/ad_dc/share')
594     elif t == "raw.chkpath":
595         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
596         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
597     elif t == "raw.samba3hide" or t == "raw.samba3checkfsp" or t == "raw.samba3closeerr":
598         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
599         plansmbtorture4testsuite(t, "simpleserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
600         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
601     elif t == "raw.session":
602         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'plain')
603         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpenc -U$USERNAME%$PASSWORD', 'enc')
604         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -k no -U$USERNAME%$PASSWORD', 'ntlm')
605         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -k yes -U$USERNAME%$PASSWORD', 'krb5')
606     elif t == "smb2.session":
607         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'plain')
608         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpenc -U$USERNAME%$PASSWORD', 'enc')
609         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -k no -U$USERNAME%$PASSWORD', 'ntlm')
610         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -k yes -U$USERNAME%$PASSWORD', 'krb5')
611         # Certain tests fail when run against ad_member with MIT kerberos because the private krb5.conf overrides the provisioned lib/krb5.conf,
612         # ad_member_idmap_rid sets "create krb5.conf = no"
613         plansmbtorture4testsuite(t, "ad_member_idmap_rid", '//$SERVER/tmp -k yes -U$DC_USERNAME@$REALM%$DC_PASSWORD', 'krb5')
614     elif t == "rpc.lsa":
615         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'over ncacn_np ')
616         plansmbtorture4testsuite(t, "nt4_dc", 'ncacn_ip_tcp:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
617         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'over ncacn_np ')
618         plansmbtorture4testsuite(t, "ad_dc", 'ncacn_ip_tcp:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
619     elif t == "rpc.mdssvc":
620         plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:no_spotlight_localdir=$SELFTEST_PREFIX/fileserver/share')
621     elif t == "rpc.samr.passwords.validate":
622         plansmbtorture4testsuite(t, "nt4_dc", 'ncacn_ip_tcp:$SERVER_IP[seal] -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
623         plansmbtorture4testsuite(t, "ad_dc", 'ncacn_ip_tcp:$SERVER_IP[seal] -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
624     elif t == "smb2.durable-open" or t == "smb2.durable-v2-open" or t == "smb2.replay" or t == "smb2.durable-v2-delay":
625         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/durable -U$USERNAME%$PASSWORD')
626         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/durable -U$USERNAME%$PASSWORD')
627     elif t == "base.rw1":
628         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
629         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/valid-users-tmp -U$USERNAME%$PASSWORD')
630         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/write-list-tmp -U$USERNAME%$PASSWORD')
631         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
632     elif t == "idmap.rfc2307":
633         plantestsuite(t, "ad_member_rfc2307",
634                       [os.path.join(samba3srcdir,
635                                     "../nsswitch/tests/test_idmap_rfc2307.sh"),
636                        '$DOMAIN',
637                        'Administrator', '2000000',
638                        'Guest', '2000001',
639                        '"Domain Users"', '2000002',
640                        'DnsAdmins', '2000003',
641                        '2000005', '35',
642                        'ou=idmap,dc=samba,dc=example,dc=com',
643                        '$DC_SERVER', '$DC_USERNAME', '$DC_PASSWORD'])
644     elif t == "idmap.alloc":
645         plantestsuite(t, "ad_member_rfc2307", [os.path.join(samba3srcdir, "../nsswitch/tests/test_idmap_nss.sh"), '$DOMAIN'])
646     elif t == "idmap.rid":
647         plantestsuite(t, "ad_member_idmap_rid", [os.path.join(samba3srcdir, "../nsswitch/tests/test_idmap_rid.sh"), '$DOMAIN', '2000000'])
648     elif t == "idmap.ad":
649         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'])
650     elif t == "raw.acls":
651         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
652         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/nfs4acl_simple_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-simple-40')
653         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/nfs4acl_special_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-special-40')
654         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/nfs4acl_simple_41 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-simple-41')
655         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/nfs4acl_xdr_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-xdr-40')
656         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/nfs4acl_xdr_41 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-xdr-41')
657         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/nfs4acl_nfs_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-nfs-40')
658         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/nfs4acl_nfs_41 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-nfs-41')
659         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
660     elif t == "smb2.ioctl":
661         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/fs_specific -U$USERNAME%$PASSWORD', 'fs_specific')
662         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
663         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
664     elif t == "smb2.lock":
665         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
666         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
667     elif t == "raw.lock" or t == "base.lock":
668         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
669     elif t == "raw.read":
670         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
671         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
672         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
673     elif t == "raw.search":
674         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
675 # test the dirsort module.
676         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpsort -U$USERNAME%$PASSWORD')
677         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
678     elif t == "vfs.fruit":
679         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')
680         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')
681         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')
682         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')
683     elif t == "vfs.fruit_netatalk":
684         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_xattr -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
685     elif t == "vfs.fruit_timemachine":
686         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_timemachine -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
687     elif t == "vfs.fruit_file_id":
688         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_zero_fileid -U$USERNAME%$PASSWORD')
689     elif t == "vfs.fruit_conversion":
690         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')
691         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')
692     elif t == "vfs.unfruit":
693         creds = '-U$USERNAME%$PASSWORD'
694         share2 = '--option=torture:share2=tmp'
695         netopt = '--option=torture:net=%s' % net
696         shareopt = '--option=torture:sharename'
697
698         plansmbtorture4testsuite(t, "nt4_dc:local", '//$SERVER_IP/vfs_fruit %s %s %s %s=%s' % (creds, share2, netopt, shareopt, 'vfs_fruit'), 'metadata_netatalk')
699         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')
700         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')
701     elif t == "rpc.schannel_anon_setpw":
702         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$%', description="anonymous password set")
703         plansmbtorture4testsuite(t, "nt4_dc_schannel", '//$SERVER_IP/tmp -U$%', description="anonymous password set (schannel enforced server-side)")
704         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$%', description="anonymous password set")
705     elif t == "local.nss":
706         for env in ["nt4_dc:local", "ad_member:local", "nt4_member:local", "ad_dc:local"]:
707             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$USERNAME%$PASSWORD')
708     elif t == "smb2.change_notify_disabled":
709         plansmbtorture4testsuite(t, "simpleserver", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
710     elif t == "smb2.notify" or t == "raw.notify" or t == "smb2.oplock" or t == "raw.oplock":
711         # These tests are a little slower so don't duplicate them with ad_dc
712         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --signing=required')
713     elif t == "smb2.dosmode":
714         plansmbtorture4testsuite(t, "simpleserver", '//$SERVER/dosmode -U$USERNAME%$PASSWORD')
715     elif t == "smb2.kernel-oplocks":
716         if have_linux_kernel_oplocks:
717             plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER/kernel_oplocks -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
718     elif t == "smb2.notify-inotify":
719         if have_inotify:
720             plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
721     elif t == "vfs.acl_xattr":
722         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
723     elif t == "smb2.compound_find":
724         plansmbtorture4testsuite(t, "fileserver", '//$SERVER/compound_find -U$USERNAME%$PASSWORD')
725         plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
726     elif t == "rpc.samr.users.privileges":
727         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:nt4_dc=true')
728         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
729     elif t == "smb2.compound":
730         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
731         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
732         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
733     elif t == "rpc.samba3.netlogon" or t == "rpc.samba3.sessionkey":
734         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:wksname=samba3rpctest')
735         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD --option=torture:wksname=samba3rpctest')
736     elif t == "smb2.streams":
737         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
738         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
739         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/streams_xattr -U$USERNAME%$PASSWORD', 'streams_xattr')
740     elif t == "smb2.aio_delay":
741         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio_delay_inject -U$USERNAME%$PASSWORD')
742     elif t == "smb2.delete-on-close-perms":
743         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
744         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/delete_readonly -U$USERNAME%$PASSWORD --option=torture:delete_readonly=true')
745         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
746     elif t == "smb2.fileid":
747         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_xattr -U$USERNAME%$PASSWORD')
748     elif t == "rpc.wkssvc":
749         plansmbtorture4testsuite(t, "ad_member", '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
750     elif t == "rpc.srvsvc":
751         plansmbtorture4testsuite(t, "ad_member", '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
752         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
753     elif t == "rpc.samba3.lsa_over_netlogon":
754         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
755     elif t == "rpc.samba3.pipes_supported_interfaces":
756         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
757         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
758     elif t == "rpc.spoolss.notify":
759         plansmbtorture4testsuite(t, "ad_member", '//$SERVER_IP/tmp -U$DC_USERNAME%$DC_PASSWORD')
760     elif (t in base and t != "base.charset") \
761         or (t in rap and t != "rap.printing") \
762         or (t in unix) \
763         or (t in ["rpc.authcontext",
764                   "rpc.join",
765                   "rpc.samba3.bind",
766                   "rpc.samba3.getusername",
767                   "rpc.samba3.sharesec",
768                   "rpc.samba3.smb1-pipe-name",
769                   "rpc.samba3.smb-reauth1",
770                   "rpc.samba3.smb-reauth2",
771                   "rpc.samba3.spoolss",
772                   "rpc.samba3.wkssvc",]) \
773         or (t in ["raw.close",
774                   "raw.composite",
775                   "raw.eas",
776                   "raw.mkdir",
777                   "raw.open",
778                   "raw.rename",
779                   "raw.samba3badnameblob",
780                   "raw.samba3badpath",
781                   "raw.samba3caseinsensitive",
782                   "raw.samba3oplocklogoff",
783                   "raw.samba3posixtimedlock",
784                   "raw.samba3rootdirfid",
785                   "raw.seek",
786                   "raw.sfileinfo.bug",
787                   "raw.sfileinfo.end-of-file",
788                   "raw.sfileinfo.rename",
789                   "raw.streams",
790                   "raw.unlink",
791                   "raw.write",]) :
792         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
793         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
794     else:
795         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
796         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
797
798
799 test = 'rpc.lsa.lookupsids'
800 auth_options = ["", "ntlm", "spnego", "spnego,ntlm", "spnego,smb1", "spnego,smb2"]
801 signseal_options = ["", ",connect", ",packet", ",sign", ",seal"]
802 endianness_options = ["", ",bigendian"]
803 for s in signseal_options:
804     for e in endianness_options:
805         for a in auth_options:
806             binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
807             options = binding_string + " -U$USERNAME%$PASSWORD"
808             plansmbtorture4testsuite(test, "nt4_dc", options, 'over ncacn_np with [%s%s%s] ' % (a, s, e))
809             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"),
810                                                                                                                  "none", options, configuration])
811
812     # We should try more combinations in future, but this is all
813     # the pre-calculated credentials cache supports at the moment
814     #
815     # As the ktest env requires SMB3_00 we need to use "smb2" until
816     # dcerpc client code in smbtorture support autonegotiation
817     # of any smb dialect.
818     e = ""
819     a = "smb2"
820     binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
821     options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
822     plansmbtorture4testsuite(test, "ktest", options, 'krb5 with old ccache ncacn_np with [%s%s%s] ' % (a, s, e))
823
824     options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
825     plansmbtorture4testsuite(test, "ktest", options, 'krb5 ncacn_np with [%s%s%s] ' % (a, s, e))
826
827     auth_options2 = ["krb5", "spnego,krb5"]
828     for a in auth_options2:
829         binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
830
831         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"),
832                                                                                                             "$PREFIX/ktest/krb5_ccache-3", binding_string, "-k", configuration])
833
834 plantestsuite("samba3.blackbox.rpcclient_samlogon", "ad_member:local", [os.path.join(samba3srcdir, "script/tests/test_rpcclient_samlogon.sh"),
835                                                                         "$DC_USERNAME", "$DC_PASSWORD", "ncacn_np:$DC_SERVER", configuration])
836 plantestsuite("samba3.blackbox.sharesec", "simpleserver:local",
837               [os.path.join(samba3srcdir, "script/tests/test_sharesec.sh"),
838                configuration, os.path.join(bindir(), "sharesec"),
839                os.path.join(bindir(), "net"), "tmp"])
840
841 plantestsuite("samba3.blackbox.close-denied-share", "simpleserver:local",
842               [os.path.join(samba3srcdir,
843                             "script/tests/test_close_denied_share.sh"),
844                configuration,
845                os.path.join(bindir(), "sharesec"),
846                os.path.join(bindir(), "smbclient"),
847                os.path.join(bindir(), "smbcontrol"),
848                '$SERVER_IP',
849                "tmp"])
850
851 plantestsuite("samba3.blackbox.force-close-share", "simpleserver:local",
852               [os.path.join(samba3srcdir,
853                             "script/tests/test_force_close_share.sh"),
854                configuration,
855                os.path.join(bindir(), "smbclient"),
856                os.path.join(bindir(), "smbcontrol"),
857                '$SERVER_IP',
858                "aio_delay_inject"])
859
860 plantestsuite("samba3.blackbox.open-eintr", "simpleserver:local",
861               [os.path.join(samba3srcdir,
862                             "script/tests/test_open_eintr.sh"),
863                configuration,
864                os.path.join(bindir(), "smbclient"),
865                os.path.join(bindir(), "smbcontrol"),
866                '$SERVER_IP',
867                "error_inject"])
868
869 plantestsuite("samba3.blackbox.net_tdb", "simpleserver:local",
870               [os.path.join(samba3srcdir, "script/tests/test_net_tdb.sh"),
871                smbclient3, '$SERVER', 'tmp', '$USERNAME', '$PASSWORD',
872                configuration, '$LOCAL_PATH', '$LOCK_DIR'])
873
874 plantestsuite("samba3.blackbox.smbd_error", "simpleserver:local",
875               [os.path.join(samba3srcdir, "script/tests/test_smbd_error.sh")])
876
877 plantestsuite("samba3.blackbox.smbd_no_krb5", "ad_member:local",
878               [os.path.join(samba3srcdir, "script/tests/test_smbd_no_krb5.sh"),
879                smbclient3, '$SERVER', "$DC_USERNAME", "$DC_PASSWORD", "$PREFIX"])
880
881 plantestsuite("samba3.blackbox.durable_v2_delay", "simpleserver:local",
882               [os.path.join(samba3srcdir, "script/tests/test_durable_handle_reconnect.sh")])
883
884 plantestsuite("samba3.blackbox.net_cache_samlogon", "ad_member:local",
885               [os.path.join(samba3srcdir, "script/tests/test_net_cache_samlogon.sh"),
886                '$SERVER', 'tmp', '$DC_USERNAME', '$DC_PASSWORD'])
887
888 plantestsuite("samba3.blackbox.net_rpc_share_allowedusers", "nt4_dc",
889               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_share_allowedusers.sh"),
890                "$SERVER", "$USERNAME", "$PASSWORD", "$PREFIX/net_rpc_share_allowedusers",
891                configuration])
892
893 plantestsuite("samba3.blackbox.net_dom_join_fail_dc", "nt4_dc",
894               [os.path.join(samba3srcdir, "script/tests/test_net_dom_join_fail_dc.sh"),
895                "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_dom_join_fail_dc",
896                configuration])
897 plantestsuite("samba3.blackbox.net_rpc_join", "nt4_dc",
898               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_join.sh"),
899                "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_rpc_join",
900                configuration])
901 plantestsuite("samba3.blackbox.net_rpc_oldjoin", "nt4_dc:local",
902               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_oldjoin.sh"),
903                "$SERVER", "$PREFIX/net_rpc_oldjoin",
904                "$SMB_CONF_PATH"])
905 plantestsuite("samba3.blackbox.net_rpc_join_creds", "nt4_dc",
906               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_join_creds.sh"),
907                "$DOMAIN", "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_rpc_join_creds",
908                configuration])
909
910 plantestsuite("samba3.blackbox.rpcclient_srvsvc", "simpleserver",
911               [os.path.join(samba3srcdir, "script/tests/test_rpcclientsrvsvc.sh"),
912                "$USERNAME", "$PASSWORD", "$SERVER",
913                os.path.join(bindir(), "rpcclient"), "tmp"])
914
915 plantestsuite("samba3.blackbox.rpcclient_lookup", "simpleserver",
916               [os.path.join(samba3srcdir, "script/tests/test_rpcclient_lookup.sh"),
917                "$USERNAME", "$PASSWORD", "$SERVER",
918                os.path.join(bindir(), "rpcclient")])
919
920 plantestsuite("samba3.blackbox.rpcclient.pw-nt-hash", "simpleserver",
921               [os.path.join(samba3srcdir, "script/tests/test_rpcclient_pw_nt_hash.sh"),
922                "$USERNAME", "$PASSWORD", "$SERVER",
923                os.path.join(bindir(), "rpcclient")])
924
925 plantestsuite("samba3.blackbox.smbclient.encryption_off", "simpleserver",
926               [os.path.join(samba3srcdir, "script/tests/test_smbclient_encryption_off.sh"),
927                "$USERNAME", "$PASSWORD", "$SERVER",
928                smbclient3])
929
930 plantestsuite("samba3.blackbox.rpcclient_netsessenum", "ad_member",
931               [os.path.join(samba3srcdir,
932                             "script/tests/test_rpcclient_netsessenum.sh"),
933                "$DOMAIN", "$DC_USERNAME", "$DC_PASSWORD", "$SERVER",
934                os.path.join(bindir(), "rpcclient"), smbtorture3, "tmp"])
935
936 # The ktest environment uses:
937 # server min protocol = SMB3_00
938 # client max protocol = SMB3
939 options_list = ["", "-e"]
940 for options in options_list:
941     plantestsuite("samba3.blackbox.smbclient_krb5 old ccache %s" % options, "ktest:local",
942                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
943                    "$PREFIX/ktest/krb5_ccache-2",
944                    smbclient3, "$SERVER", options, configuration])
945
946     plantestsuite("samba3.blackbox.smbclient_krb5 new ccache %s" % options, "ktest:local",
947                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
948                    "$PREFIX/ktest/krb5_ccache-3",
949                    smbclient3, "$SERVER", options, configuration])
950
951     plantestsuite("samba3.blackbox.smbclient_large_file %s krb5" % options, "ktest:local",
952                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_large_file.sh"),
953                    "$PREFIX/ktest/krb5_ccache-3",
954                    smbclient3, "$SERVER", "$PREFIX", options, "-k " + configuration])
955
956 options_list = ["-mNT1", "-mNT1 -e", "-mSMB3", "-mSMB3 -e"]
957 for options in options_list:
958     plantestsuite("samba3.blackbox.smbclient_large_file %s NTLM" % options, "nt4_dc:local",
959                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_large_file.sh"),
960                    "none",
961                    smbclient3, "$SERVER", "$PREFIX", options, "-U$USERNAME%$PASSWORD " + configuration])
962
963 for alias in ["foo", "bar"]:
964     plantestsuite("samba3.blackbox.smbclient_netbios_aliases [%s]" % alias, "ad_member:local",
965                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_netbios_aliases.sh"),
966                    smbclient3, alias, "$DC_USERNAME", "$DC_PASSWORD", "$PREFIX", options, configuration])
967
968 for e in endianness_options:
969     for a in auth_options:
970         for s in signseal_options:
971             binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
972             options = binding_string + " -U$USERNAME%$PASSWORD"
973             plansmbtorture4testsuite(test, "nt4_dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))
974
975 plansmbtorture4testsuite('rpc.epmapper', 'nt4_dc:local', 'ncalrpc: -U$USERNAME%$PASSWORD', 'over ncalrpc')
976 plansmbtorture4testsuite('rpc.fsrvp', 'nt4_dc:local', 'ncacn_np:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_np')
977
978 for env in ["ad_member_idmap_rid:local", "maptoguest:local"]:
979     plantestsuite("samba3.blackbox.guest", env,
980                   [os.path.join(samba3srcdir, "script/tests/test_guest_auth.sh"),
981                    '$SERVER', smbclient3, smbcontrol, net, configuration])
982
983 plantestsuite("samba3.blackbox.itime", "ad_dc", [os.path.join(samba3srcdir, "script/tests/test_itime.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3, 'xattr'])
984
985
986 def planclusteredmembertestsuite(tname, prefix):
987     '''Define a clustered test for the clusteredmember environment'''
988
989     tshare = 'tmp'
990
991     autharg = '-U${DOMAIN}/${DC_USERNAME}%${DC_PASSWORD}'
992     namearg = 'clustered.%s' % tname
993     modnamearg = 'samba3.%s' % namearg
994     extraargs = ''
995
996     prefix = os.path.join(prefix, 'clusteredmember_smb1')
997     unclist = os.path.join(prefix, 'unclists/%s.txt' % tshare)
998
999     unclistarg = '--unclist=%s' % unclist
1000     sharearg = '//$SERVER_IP/%s' % tshare
1001
1002     return selftesthelpers.plansmbtorture4testsuite(
1003         namearg,
1004         'clusteredmember_smb1',
1005         [extraargs, unclistarg, sharearg, autharg, tname],
1006         target='samba3',
1007         modname=modnamearg)
1008
1009
1010 CLUSTERED_TESTS = [ 'base.ntdeny2' ]
1011
1012 for test in CLUSTERED_TESTS:
1013     planclusteredmembertestsuite(test, "$PREFIX")