s3/selftest Move samba.raw.read 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" 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_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
673         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$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         if t == "raw.notify" or t == "raw.oplock":
715             tmp_env = "nt4_dc_smb1"
716         # These tests are a little slower so don't duplicate them with ad_dc
717         plansmbtorture4testsuite(t, tmp_env, '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --signing=required')
718     elif t == "smb2.dosmode":
719         plansmbtorture4testsuite(t, "simpleserver", '//$SERVER/dosmode -U$USERNAME%$PASSWORD')
720     elif t == "smb2.kernel-oplocks":
721         if have_linux_kernel_oplocks:
722             plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER/kernel_oplocks -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
723     elif t == "smb2.notify-inotify":
724         if have_inotify:
725             plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
726     elif t == "vfs.acl_xattr":
727         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
728     elif t == "smb2.compound_find":
729         plansmbtorture4testsuite(t, "fileserver", '//$SERVER/compound_find -U$USERNAME%$PASSWORD')
730         plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
731     elif t == "rpc.samr.users.privileges":
732         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:nt4_dc=true')
733         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
734     elif t == "smb2.compound":
735         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
736         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
737         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
738     elif t == "rpc.samba3.netlogon" or t == "rpc.samba3.sessionkey":
739         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:wksname=samba3rpctest')
740         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD --option=torture:wksname=samba3rpctest')
741     elif t == "smb2.streams":
742         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
743         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
744         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/streams_xattr -U$USERNAME%$PASSWORD', 'streams_xattr')
745     elif t == "smb2.aio_delay":
746         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio_delay_inject -U$USERNAME%$PASSWORD')
747     elif t == "smb2.delete-on-close-perms":
748         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
749         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/delete_readonly -U$USERNAME%$PASSWORD --option=torture:delete_readonly=true')
750         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
751     elif t == "smb2.fileid":
752         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_xattr -U$USERNAME%$PASSWORD')
753     elif t == "rpc.wkssvc":
754         plansmbtorture4testsuite(t, "ad_member", '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
755     elif t == "rpc.srvsvc":
756         plansmbtorture4testsuite(t, "ad_member", '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
757         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
758     elif t == "rpc.samba3.lsa_over_netlogon":
759         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
760     elif t == "rpc.samba3.pipes_supported_interfaces":
761         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
762         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
763     elif t == "rpc.spoolss.notify":
764         plansmbtorture4testsuite(t, "ad_member", '//$SERVER_IP/tmp -U$DC_USERNAME%$DC_PASSWORD')
765     elif (t in base and t != "base.charset") \
766         or (t in rap and t != "rap.printing") \
767         or (t in unix) \
768         or (t in ["rpc.authcontext",
769                   "rpc.join",
770                   "rpc.samba3.bind",
771                   "rpc.samba3.getusername",
772                   "rpc.samba3.sharesec",
773                   "rpc.samba3.smb1-pipe-name",
774                   "rpc.samba3.smb-reauth1",
775                   "rpc.samba3.smb-reauth2",
776                   "rpc.samba3.spoolss",
777                   "rpc.samba3.wkssvc",]) \
778         or (t in ["raw.close",
779                   "raw.composite",
780                   "raw.eas",
781                   "raw.mkdir",
782                   "raw.open",
783                   "raw.rename",
784                   "raw.samba3badnameblob",
785                   "raw.samba3badpath",
786                   "raw.samba3caseinsensitive",
787                   "raw.samba3oplocklogoff",
788                   "raw.samba3posixtimedlock",
789                   "raw.samba3rootdirfid",
790                   "raw.seek",
791                   "raw.sfileinfo.bug",
792                   "raw.sfileinfo.end-of-file",
793                   "raw.sfileinfo.rename",
794                   "raw.streams",
795                   "raw.unlink",
796                   "raw.write",]) :
797         plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
798         plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
799     else:
800         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
801         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
802
803
804 test = 'rpc.lsa.lookupsids'
805 auth_options = ["", "ntlm", "spnego", "spnego,ntlm", "spnego,smb1", "spnego,smb2"]
806 signseal_options = ["", ",connect", ",packet", ",sign", ",seal"]
807 endianness_options = ["", ",bigendian"]
808 for s in signseal_options:
809     for e in endianness_options:
810         for a in auth_options:
811             binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
812             options = binding_string + " -U$USERNAME%$PASSWORD"
813             plansmbtorture4testsuite(test, "nt4_dc", options, 'over ncacn_np with [%s%s%s] ' % (a, s, e))
814             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"),
815                                                                                                                  "none", options, configuration])
816
817     # We should try more combinations in future, but this is all
818     # the pre-calculated credentials cache supports at the moment
819     #
820     # As the ktest env requires SMB3_00 we need to use "smb2" until
821     # dcerpc client code in smbtorture support autonegotiation
822     # of any smb dialect.
823     e = ""
824     a = "smb2"
825     binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
826     options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
827     plansmbtorture4testsuite(test, "ktest", options, 'krb5 with old ccache ncacn_np with [%s%s%s] ' % (a, s, e))
828
829     options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
830     plansmbtorture4testsuite(test, "ktest", options, 'krb5 ncacn_np with [%s%s%s] ' % (a, s, e))
831
832     auth_options2 = ["krb5", "spnego,krb5"]
833     for a in auth_options2:
834         binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
835
836         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"),
837                                                                                                             "$PREFIX/ktest/krb5_ccache-3", binding_string, "-k", configuration])
838
839 plantestsuite("samba3.blackbox.rpcclient_samlogon", "ad_member:local", [os.path.join(samba3srcdir, "script/tests/test_rpcclient_samlogon.sh"),
840                                                                         "$DC_USERNAME", "$DC_PASSWORD", "ncacn_np:$DC_SERVER", configuration])
841 plantestsuite("samba3.blackbox.sharesec", "simpleserver:local",
842               [os.path.join(samba3srcdir, "script/tests/test_sharesec.sh"),
843                configuration, os.path.join(bindir(), "sharesec"),
844                os.path.join(bindir(), "net"), "tmp"])
845
846 plantestsuite("samba3.blackbox.close-denied-share", "simpleserver:local",
847               [os.path.join(samba3srcdir,
848                             "script/tests/test_close_denied_share.sh"),
849                configuration,
850                os.path.join(bindir(), "sharesec"),
851                os.path.join(bindir(), "smbclient"),
852                os.path.join(bindir(), "smbcontrol"),
853                '$SERVER_IP',
854                "tmp"])
855
856 plantestsuite("samba3.blackbox.force-close-share", "simpleserver:local",
857               [os.path.join(samba3srcdir,
858                             "script/tests/test_force_close_share.sh"),
859                configuration,
860                os.path.join(bindir(), "smbclient"),
861                os.path.join(bindir(), "smbcontrol"),
862                '$SERVER_IP',
863                "aio_delay_inject"])
864
865 plantestsuite("samba3.blackbox.open-eintr", "simpleserver:local",
866               [os.path.join(samba3srcdir,
867                             "script/tests/test_open_eintr.sh"),
868                configuration,
869                os.path.join(bindir(), "smbclient"),
870                os.path.join(bindir(), "smbcontrol"),
871                '$SERVER_IP',
872                "error_inject"])
873
874 plantestsuite("samba3.blackbox.net_tdb", "simpleserver:local",
875               [os.path.join(samba3srcdir, "script/tests/test_net_tdb.sh"),
876                smbclient3, '$SERVER', 'tmp', '$USERNAME', '$PASSWORD',
877                configuration, '$LOCAL_PATH', '$LOCK_DIR'])
878
879 plantestsuite("samba3.blackbox.smbd_error", "simpleserver:local",
880               [os.path.join(samba3srcdir, "script/tests/test_smbd_error.sh")])
881
882 plantestsuite("samba3.blackbox.smbd_no_krb5", "ad_member:local",
883               [os.path.join(samba3srcdir, "script/tests/test_smbd_no_krb5.sh"),
884                smbclient3, '$SERVER', "$DC_USERNAME", "$DC_PASSWORD", "$PREFIX"])
885
886 plantestsuite("samba3.blackbox.durable_v2_delay", "simpleserver:local",
887               [os.path.join(samba3srcdir, "script/tests/test_durable_handle_reconnect.sh")])
888
889 plantestsuite("samba3.blackbox.net_cache_samlogon", "ad_member:local",
890               [os.path.join(samba3srcdir, "script/tests/test_net_cache_samlogon.sh"),
891                '$SERVER', 'tmp', '$DC_USERNAME', '$DC_PASSWORD'])
892
893 plantestsuite("samba3.blackbox.net_rpc_share_allowedusers", "nt4_dc",
894               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_share_allowedusers.sh"),
895                "$SERVER", "$USERNAME", "$PASSWORD", "$PREFIX/net_rpc_share_allowedusers",
896                configuration])
897
898 plantestsuite("samba3.blackbox.net_dom_join_fail_dc", "nt4_dc",
899               [os.path.join(samba3srcdir, "script/tests/test_net_dom_join_fail_dc.sh"),
900                "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_dom_join_fail_dc",
901                configuration])
902 plantestsuite("samba3.blackbox.net_rpc_join", "nt4_dc",
903               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_join.sh"),
904                "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_rpc_join",
905                configuration])
906 plantestsuite("samba3.blackbox.net_rpc_oldjoin", "nt4_dc:local",
907               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_oldjoin.sh"),
908                "$SERVER", "$PREFIX/net_rpc_oldjoin",
909                "$SMB_CONF_PATH"])
910 plantestsuite("samba3.blackbox.net_rpc_join_creds", "nt4_dc",
911               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_join_creds.sh"),
912                "$DOMAIN", "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_rpc_join_creds",
913                configuration])
914
915 plantestsuite("samba3.blackbox.rpcclient_srvsvc", "simpleserver",
916               [os.path.join(samba3srcdir, "script/tests/test_rpcclientsrvsvc.sh"),
917                "$USERNAME", "$PASSWORD", "$SERVER",
918                os.path.join(bindir(), "rpcclient"), "tmp"])
919
920 plantestsuite("samba3.blackbox.rpcclient_lookup", "simpleserver",
921               [os.path.join(samba3srcdir, "script/tests/test_rpcclient_lookup.sh"),
922                "$USERNAME", "$PASSWORD", "$SERVER",
923                os.path.join(bindir(), "rpcclient")])
924
925 plantestsuite("samba3.blackbox.rpcclient.pw-nt-hash", "simpleserver",
926               [os.path.join(samba3srcdir, "script/tests/test_rpcclient_pw_nt_hash.sh"),
927                "$USERNAME", "$PASSWORD", "$SERVER",
928                os.path.join(bindir(), "rpcclient")])
929
930 plantestsuite("samba3.blackbox.smbclient.encryption_off", "simpleserver",
931               [os.path.join(samba3srcdir, "script/tests/test_smbclient_encryption_off.sh"),
932                "$USERNAME", "$PASSWORD", "$SERVER",
933                smbclient3])
934
935 plantestsuite("samba3.blackbox.rpcclient_netsessenum", "ad_member",
936               [os.path.join(samba3srcdir,
937                             "script/tests/test_rpcclient_netsessenum.sh"),
938                "$DOMAIN", "$DC_USERNAME", "$DC_PASSWORD", "$SERVER",
939                os.path.join(bindir(), "rpcclient"), smbtorture3, "tmp"])
940
941 # The ktest environment uses:
942 # server min protocol = SMB3_00
943 # client max protocol = SMB3
944 options_list = ["", "-e"]
945 for options in options_list:
946     plantestsuite("samba3.blackbox.smbclient_krb5 old ccache %s" % options, "ktest:local",
947                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
948                    "$PREFIX/ktest/krb5_ccache-2",
949                    smbclient3, "$SERVER", options, configuration])
950
951     plantestsuite("samba3.blackbox.smbclient_krb5 new ccache %s" % options, "ktest:local",
952                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
953                    "$PREFIX/ktest/krb5_ccache-3",
954                    smbclient3, "$SERVER", options, configuration])
955
956     plantestsuite("samba3.blackbox.smbclient_large_file %s krb5" % options, "ktest:local",
957                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_large_file.sh"),
958                    "$PREFIX/ktest/krb5_ccache-3",
959                    smbclient3, "$SERVER", "$PREFIX", options, "-k " + configuration])
960
961 options_list = ["-mNT1", "-mNT1 -e", "-mSMB3", "-mSMB3 -e"]
962 for options in options_list:
963     env = "nt4_dc"
964     if "NT1" in options:
965         env = "nt4_dc_smb1_done"
966     plantestsuite("samba3.blackbox.smbclient_large_file %s NTLM" % options, "%s:local" % env,
967                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_large_file.sh"),
968                    "none",
969                    smbclient3, "$SERVER", "$PREFIX", options, "-U$USERNAME%$PASSWORD " + configuration])
970
971 for alias in ["foo", "bar"]:
972     plantestsuite("samba3.blackbox.smbclient_netbios_aliases [%s]" % alias, "ad_member:local",
973                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_netbios_aliases.sh"),
974                    smbclient3, alias, "$DC_USERNAME", "$DC_PASSWORD", "$PREFIX", options, configuration])
975
976 for e in endianness_options:
977     for a in auth_options:
978         for s in signseal_options:
979             binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
980             options = binding_string + " -U$USERNAME%$PASSWORD"
981             plansmbtorture4testsuite(test, "nt4_dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))
982
983 plansmbtorture4testsuite('rpc.epmapper', 'nt4_dc:local', 'ncalrpc: -U$USERNAME%$PASSWORD', 'over ncalrpc')
984 plansmbtorture4testsuite('rpc.fsrvp', 'nt4_dc:local', 'ncacn_np:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_np')
985
986 for env in ["ad_member_idmap_rid:local", "maptoguest:local"]:
987     plantestsuite("samba3.blackbox.guest", env,
988                   [os.path.join(samba3srcdir, "script/tests/test_guest_auth.sh"),
989                    '$SERVER', smbclient3, smbcontrol, net, configuration])
990
991 plantestsuite("samba3.blackbox.itime", "ad_dc", [os.path.join(samba3srcdir, "script/tests/test_itime.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3, 'xattr'])
992
993
994 def planclusteredmembertestsuite(tname, prefix):
995     '''Define a clustered test for the clusteredmember environment'''
996
997     tshare = 'tmp'
998
999     autharg = '-U${DOMAIN}/${DC_USERNAME}%${DC_PASSWORD}'
1000     namearg = 'clustered.%s' % tname
1001     modnamearg = 'samba3.%s' % namearg
1002     extraargs = ''
1003
1004     prefix = os.path.join(prefix, 'clusteredmember_smb1')
1005     unclist = os.path.join(prefix, 'unclists/%s.txt' % tshare)
1006
1007     unclistarg = '--unclist=%s' % unclist
1008     sharearg = '//$SERVER_IP/%s' % tshare
1009
1010     return selftesthelpers.plansmbtorture4testsuite(
1011         namearg,
1012         'clusteredmember_smb1',
1013         [extraargs, unclistarg, sharearg, autharg, tname],
1014         target='samba3',
1015         modname=modnamearg)
1016
1017
1018 CLUSTERED_TESTS = [ 'base.ntdeny2' ]
1019
1020 for test in CLUSTERED_TESTS:
1021     planclusteredmembertestsuite(test, "$PREFIX")