selftest: run vfs.fruit_netatalk test against seperate share
[metze/samba/wip.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, sys
22 sys.path.insert(0, os.path.normpath(os.path.join(os.path.dirname(__file__), "../../selftest")))
23 import selftesthelpers
24 from selftesthelpers import *
25 smbtorture4_options.extend([
26    '--option=torture:sharedelay=100000',
27    '--option=torture:writetimeupdatedelay=500000',
28    ])
29
30 def plansmbtorture4testsuite(name, env, options, description=''):
31     if description == '':
32         modname = "samba3.%s" % (name, )
33     else:
34         modname = "samba3.%s %s" % (name, description)
35
36     selftesthelpers.plansmbtorture4testsuite(
37         name, env, options, target='samba3', modname=modname)
38
39 # find config.h
40 try:
41     config_h = os.environ["CONFIG_H"]
42 except KeyError:
43     samba4bindir = bindir()
44     config_h = os.path.join(samba4bindir, "default/include/config.h")
45
46 # check available features
47 config_hash = dict()
48 f = open(config_h, 'r')
49 try:
50     lines = f.readlines()
51     config_hash = dict((x[0], ' '.join(x[1:]))
52             for x in map(lambda line: line.strip().split(' ')[1:],
53                          filter(lambda line: (line[0:7] == '#define') and (len(line.split(' ')) > 2), lines)))
54 finally:
55     f.close()
56
57 have_libarchive = ("HAVE_LIBARCHIVE" in config_hash)
58 have_linux_kernel_oplocks = ("HAVE_KERNEL_OPLOCKS_LINUX" in config_hash)
59 have_inotify = ("HAVE_INOTIFY" in config_hash)
60 have_ldwrap = ("HAVE_LDWRAP" in config_hash)
61 with_pthreadpool = ("WITH_PTHREADPOOL" in config_hash)
62
63
64 plantestsuite("samba3.blackbox.success", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_success.sh")])
65 plantestsuite("samba3.blackbox.failure", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_failure.sh")])
66
67 plantestsuite("samba3.local_s3", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_local_s3.sh")])
68
69 plantestsuite("samba3.blackbox.registry.upgrade", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_registry_upgrade.sh"), net, dbwrap_tool])
70
71 tests = ["FDPASS", "LOCK1", "LOCK2", "LOCK3", "LOCK4", "LOCK5", "LOCK6", "LOCK7", "LOCK9",
72         "UNLINK", "BROWSE", "ATTR", "TRANS2", "TORTURE",
73         "OPLOCK1", "OPLOCK2", "OPLOCK4", "STREAMERROR",
74         "DIR", "DIR1", "DIR-CREATETIME", "TCON", "TCONDEV", "RW1", "RW2", "RW3", "LARGE_READX", "RW-SIGNING",
75         "OPEN", "XCOPY", "RENAME", "DELETE", "DELETE-LN", "WILDDELETE", "PROPERTIES", "W2K",
76         "TCON2", "IOCTL", "CHKPATH", "FDSESS", "CHAIN1", "CHAIN2", "OWNER-RIGHTS",
77         "CHAIN3", "PIDHIGH",
78         "UID-REGRESSION-TEST", "SHORTNAME-TEST",
79         "CASE-INSENSITIVE-CREATE", "SMB2-BASIC", "NTTRANS-FSCTL", "SMB2-NEGPROT",
80         "SMB2-SESSION-REAUTH", "SMB2-SESSION-RECONNECT", "SMB2-FTRUNCATE",
81         "SMB2-ANONYMOUS",
82         "CLEANUP1",
83         "CLEANUP2",
84         "CLEANUP4",
85         "BAD-NBT-SESSION"]
86
87 for t in tests:
88     plantestsuite("samba3.smbtorture_s3.plain(nt4_dc).%s" % t, "nt4_dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
89     plantestsuite("samba3.smbtorture_s3.crypt_client(nt4_dc).%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"])
90     if t == "TORTURE":
91         # this is a negative test to verify that the server rejects
92         # access without encryption
93         plantestsuite("samba3.smbtorture_s3.crypt_server(nt4_dc).%s" % t, "nt4_dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmpenc', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
94     plantestsuite("samba3.smbtorture_s3.plain(ad_dc_ntvfs).%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"])
95
96 t = "TLDAP"
97 plantestsuite("samba3.smbtorture_s3.plain.%s(ad_dc)" % t, "ad_dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER/tmp', '$DC_USERNAME', '$DC_PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
98
99 #
100 # RENAME-ACCESS needs to run against a special share - acl_xattr_ign_sysacl_windows
101 #
102 plantestsuite("samba3.smbtorture_s3.plain(nt4_dc).%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"])
103 plantestsuite("samba3.smbtorture_s3.crypt_client(nt4_dc).%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"])
104 # non-crypt only
105
106 tests = ["OPLOCK-CANCEL"]
107 for t in tests:
108     plantestsuite("samba3.smbtorture_s3.plain(nt4_dc).%s" % t, "nt4_dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
109
110 env = "nt4_dc"
111 tests = ["MANGLE-ILLEGAL"]
112 for t in tests:
113     plantestsuite("samba3.smbtorture_s3.plain(%s).%s" % (env, t), env, [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/mangle_illegal', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
114
115 tests = ["RW1", "RW2", "RW3"]
116 for t in tests:
117     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"])
118
119 posix_tests = ["POSIX", "POSIX-APPEND", "POSIX-SYMLINK-ACL", "POSIX-SYMLINK-EA", "POSIX-OFD-LOCK",
120               "POSIX-STREAM-DELETE", "WINDOWS-BAD-SYMLINK" ]
121
122 for t in posix_tests:
123     plantestsuite("samba3.smbtorture_s3.plain(nt4_dc).%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"])
124     plantestsuite("samba3.smbtorture_s3.crypt(nt4_dc).%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"])
125     plantestsuite("samba3.smbtorture_s3.plain(ad_dc_ntvfs).%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"])
126
127 env = "nt4_dc:local"
128 t = "CLEANUP3"
129 plantestsuite("samba3.smbtorture_s3.plain(%s).%s" % (env, t), env, [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', binpath('smbtorture3'), "", "-l $LOCAL_PATH"])
130
131 local_tests = [
132     "LOCAL-SUBSTITUTE",
133     "LOCAL-GENCACHE",
134     "LOCAL-BASE64",
135     "LOCAL-RBTREE",
136     "LOCAL-MEMCACHE",
137     "LOCAL-STREAM-NAME",
138     "LOCAL-string_to_sid",
139     "LOCAL-sid_to_string",
140     "LOCAL-binary_to_sid",
141     "LOCAL-DBTRANS",
142     "LOCAL-TEVENT-POLL",
143     "LOCAL-CONVERT-STRING",
144     "LOCAL-CONV-AUTH-INFO",
145     "LOCAL-IDMAP-TDB-COMMON",
146     "LOCAL-MESSAGING-READ1",
147     "LOCAL-MESSAGING-READ2",
148     "LOCAL-MESSAGING-READ3",
149     "LOCAL-MESSAGING-READ4",
150     "LOCAL-MESSAGING-FDPASS1",
151     "LOCAL-MESSAGING-FDPASS2",
152     "LOCAL-MESSAGING-FDPASS2a",
153     "LOCAL-MESSAGING-FDPASS2b",
154     "LOCAL-MESSAGING-SEND-ALL",
155     "LOCAL-PTHREADPOOL-TEVENT",
156     "LOCAL-CANONICALIZE-PATH",
157     "LOCAL-DBWRAP-WATCH1",
158     "LOCAL-DBWRAP-WATCH2",
159     "LOCAL-DBWRAP-DO-LOCKED1",
160     "LOCAL-G-LOCK1",
161     "LOCAL-G-LOCK2",
162     "LOCAL-G-LOCK3",
163     "LOCAL-G-LOCK4",
164     "LOCAL-G-LOCK5",
165     "LOCAL-G-LOCK6",
166     "LOCAL-NAMEMAP-CACHE1",
167     "LOCAL-hex_encode_buf",
168     "LOCAL-remove_duplicate_addrs2"]
169
170 for t in local_tests:
171     plantestsuite("samba3.smbtorture_s3.%s" % t, "none", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//foo/bar', '""', '""', smbtorture3, ""])
172
173 plantestsuite("samba.vfstest.stream_depot", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/stream-depot/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
174 plantestsuite("samba.vfstest.xattr-tdb-1", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/xattr-tdb-1/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
175 plantestsuite("samba.vfstest.acl", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/vfstest-acl/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
176 plantestsuite("samba.vfstest.catia", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/vfstest-catia/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
177
178 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"])
179 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"])
180 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"])
181 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"])
182 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"])
183
184 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])
185 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"]:
186     env = "nt4_dc"
187     plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) %s" % (env, options), env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration, options])
188
189 for env in ["nt4_dc", "nt4_member", "ad_member", "ad_dc", "ad_dc_ntvfs", "s4member", "fl2000dc"]:
190     plantestsuite("samba3.blackbox.smbclient_machine_auth.plain (%s:local)" % env, "%s:local" % env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_machine_auth.sh"), '$SERVER', smbclient3, configuration])
191     plantestsuite("samba3.blackbox.smbclient_ntlm.plain (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_ntlm.sh"), '$SERVER', '$DC_USERNAME', '$DC_PASSWORD', "never", smbclient3, configuration])
192
193 for options in ["--option=clientntlmv2auth=no", "--option=clientusespnego=no --option=clientntlmv2auth=no", ""]:
194     for env in ["nt4_member", "ad_member"]:
195         plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) %s" % (env, options), env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration, options])
196         plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) %s member creds" % (env, options), env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$SERVER/$USERNAME', '$PASSWORD', smbclient3, configuration, options])
197
198 env="ad_dc"
199 plantestsuite("samba3.blackbox.smbspool", env, [os.path.join(samba3srcdir, "script/tests/test_smbspool.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', env])
200
201 for env in ["ad_member:local", "nt4_dc:local"]:
202     plantestsuite("samba3.blackbox.smbpasswd", env, [os.path.join(samba3srcdir, "script/tests/test_smbpasswd.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD'])
203
204 env="nt4_dc"
205 plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) ipv6" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IPV6', '$SERVER/$USERNAME', '$PASSWORD', smbclient3, configuration])
206
207 for env in ["nt4_member", "ad_member"]:
208     plantestsuite("samba3.blackbox.net_cred_change.(%s:local)" % env, "%s:local" % env, [os.path.join(samba3srcdir, "script/tests/test_net_cred_change.sh"), configuration])
209
210 env = "ad_member"
211 t = "--krb5auth=$DOMAIN/$DC_USERNAME%$DC_PASSWORD"
212 plantestsuite("samba3.wbinfo_simple.(%s:local).%s" % (env, t), "%s:local" % env, [os.path.join(srcdir(), "nsswitch/tests/test_wbinfo_simple.sh"), t])
213 t = "WBCLIENT-MULTI-PING"
214 plantestsuite("samba3.smbtorture_s3.%s" % t, env, [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//foo/bar', '""', '""', smbtorture3, ""])
215 plantestsuite("samba3.substitutions", env, [os.path.join(samba3srcdir, "script/tests/test_substitutions.sh"), "$SERVER", "alice", "Secret007", "$PREFIX"])
216
217 plantestsuite("samba3.ntlm_auth.krb5 with old ccache(ktest:local)", "ktest:local", [os.path.join(samba3srcdir, "script/tests/test_ntlm_auth_krb5.sh"), valgrindify(python), samba3srcdir, ntlm_auth3, '$PREFIX/ktest/krb5_ccache-2', '$SERVER', configuration])
218
219 plantestsuite("samba3.ntlm_auth.krb5(ktest:local)", "ktest:local", [os.path.join(samba3srcdir, "script/tests/test_ntlm_auth_krb5.sh"), valgrindify(python), samba3srcdir, ntlm_auth3, '$PREFIX/ktest/krb5_ccache-3', '$SERVER', configuration])
220
221
222 for env in ["maptoguest", "simpleserver"]:
223     plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) local creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbclient3, configuration + " --option=clientntlmv2auth=no --option=clientlanmanauth=yes"])
224
225 env = "maptoguest"
226 plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) bad username" % env, 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"])
227 plantestsuite("samba3.blackbox.smbclient_ntlm.plain (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_ntlm.sh"), '$SERVER', '$USERNAME', '$PASSWORD', "baduser", smbclient3, configuration])
228
229 # plain
230 for env in ["nt4_dc"]:
231     plantestsuite("samba3.blackbox.smbclient_s3.NT1.plain (%s)" % env, 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"])
232     plantestsuite("samba3.blackbox.smbclient_s3.SMB3.plain (%s)" % env, 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"])
233
234 for env in ["nt4_member", "ad_member"]:
235     plantestsuite("samba3.blackbox.smbclient_s3.NT1.plain (%s) member creds" % env, 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"])
236     plantestsuite("samba3.blackbox.smbclient_s3.SMB3.plain (%s) member creds" % env, 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"])
237
238 for env in ["nt4_dc"]:
239     plantestsuite("samba3.blackbox.smbclient_s3.NT1.sign (%s)" % env, 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"])
240     plantestsuite("samba3.blackbox.smbclient_s3.SMB3.sign (%s)" % env, 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"])
241
242 for env in ["nt4_member", "ad_member"]:
243     plantestsuite("samba3.blackbox.smbclient_s3.NT1.sign (%s) member creds" % env, 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"])
244     plantestsuite("samba3.blackbox.smbclient_s3.SMB3.sign (%s) member creds" % env, 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"])
245
246 for env in ["nt4_dc"]:
247     # encrypted
248     plantestsuite("samba3.blackbox.smbclient_s3.NT1.crypt (%s)" % env, 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"])
249     plantestsuite("samba3.blackbox.smbclient_s3.SMB3.crypt (%s)" % env, 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"])
250
251 for env in ["fileserver"]:
252     plantestsuite("samba3.blackbox.preserve_case (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_preserve_case.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3])
253     plantestsuite("samba3.blackbox.dfree_command (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_dfree_command.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3])
254     plantestsuite("samba3.blackbox.dfree_quota (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_dfree_quota.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3, smbcquotas, smbcacls])
255     plantestsuite("samba3.blackbox.valid_users (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_valid_users.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3])
256     plantestsuite("samba3.blackbox.offline (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_offline.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/offline', smbclient3])
257     plantestsuite("samba3.blackbox.shadow_copy2 NT1 (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_shadow_copy.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/shadow', smbclient3, '-m', 'NT1'])
258     plantestsuite("samba3.blackbox.shadow_copy2 SMB3 (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_shadow_copy.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/shadow', smbclient3, '-m', 'SMB3'])
259     plantestsuite("samba3.blackbox.smbclient.forceuser_validusers (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_forceuser_validusers.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3])
260     plantestsuite("samba3.blackbox.smbget (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbget.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', 'smbget_user', '$PASSWORD', '$LOCAL_PATH/smbget', smbget])
261     plantestsuite("samba3.blackbox.netshareenum (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_shareenum.sh"), '$SERVER', '$USERNAME', '$PASSWORD', rpcclient])
262     plantestsuite("samba3.blackbox.acl_xattr.NT1", env, [os.path.join(samba3srcdir, "script/tests/test_acl_xattr.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, '-mNT1'])
263     plantestsuite("samba3.blackbox.acl_xattr.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_acl_xattr.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, '-mSMB3'])
264     plantestsuite("samba3.blackbox.smb2.not_casesensitive (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smb2_not_casesensitive.sh"), '//$SERVER/tmp', '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3])
265     plantestsuite("samba3.blackbox.inherit_owner.default.NT1", env, [os.path.join(samba3srcdir, "script/tests/test_inherit_owner.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, net, 'tmp', '0', '0', '-m', 'NT1'])
266     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'])
267     plantestsuite("samba3.blackbox.inherit_owner.full.NT1", env, [os.path.join(samba3srcdir, "script/tests/test_inherit_owner.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, net, 'inherit_owner', '1', '1', '-m', 'NT1'])
268     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'])
269     plantestsuite("samba3.blackbox.inherit_owner.unix.NT1", env, [os.path.join(samba3srcdir, "script/tests/test_inherit_owner.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, net, 'inherit_owner_u', '0', '1', '-m', 'NT1'])
270     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'])
271     plantestsuite("samba3.blackbox.large_acl.NT1", env, [os.path.join(samba3srcdir, "script/tests/test_large_acl.sh"), '$SERVER', '$USERNAME', '$PASSWORD', smbclient3, smbcacls, '-m', 'NT1'])
272     plantestsuite("samba3.blackbox.large_acl.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_large_acl.sh"), '$SERVER', '$USERNAME', '$PASSWORD', smbclient3, smbcacls, '-m', 'SMB3'])
273     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'])
274
275     #
276     # tar command tests
277     #
278
279     # tar command enabled only if built with libarchive
280     if have_libarchive:
281         # Test smbclient/tarmode
282         plantestsuite("samba3.blackbox.smbclient_tarmode.NT1", env,
283                       [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.sh"),
284                        '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD',
285                        '$LOCAL_PATH/tarmode', '$PREFIX', smbclient3, configuration, "-mNT1"])
286         plantestsuite("samba3.blackbox.smbclient_tarmode.SMB3", env,
287                       [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.sh"),
288                        '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD',
289                        '$LOCAL_PATH/tarmode', '$PREFIX', smbclient3, configuration, "-mSMB3"])
290
291         # Test suite for new smbclient/tar with libarchive (GSoC 13)
292         plantestsuite("samba3.blackbox.smbclient_tar.NT1", env,
293                       [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.pl"),
294                        '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tmp',
295                        '-u', '$USERNAME', '-p', '$PASSWORD', '-l', '$LOCAL_PATH/tarmode',
296                        '-d', '$PREFIX', '-b', smbclient3,
297                        '--subunit', '--', configuration, '-mNT1'])
298         plantestsuite("samba3.blackbox.smbclient_tar.SMB3", env,
299                       [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.pl"),
300                        '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tmp',
301                        '-u', '$USERNAME', '-p', '$PASSWORD', '-l', '$LOCAL_PATH/tarmode',
302                        '-d', '$PREFIX', '-b', smbclient3,
303                        '--subunit', '--', configuration, '-mSMB3'])
304
305 plantestsuite("samba3.blackbox.net_usershare", "fileserver:local", [os.path.join(samba3srcdir, "script/tests/test_net_usershare.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbclient3])
306
307 #TODO encrypted against member, with member creds, and with DC creds
308 plantestsuite("samba3.blackbox.net.misc", "nt4_dc:local",
309               [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
310                scriptdir, "$SMB_CONF_PATH", net, configuration])
311 plantestsuite("samba3.blackbox.net.local.registry", "nt4_dc:local",
312               [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
313                scriptdir, "$SMB_CONF_PATH", net, configuration])
314 plantestsuite("samba3.blackbox.net.registry.check", "nt4_dc:local",
315               [os.path.join(samba3srcdir, "script/tests/test_net_registry_check.sh"),
316                scriptdir, "$SMB_CONF_PATH", net, configuration, dbwrap_tool])
317 plantestsuite("samba3.blackbox.net.rpc.registry", "nt4_dc",
318               [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
319                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
320
321 plantestsuite("samba3.blackbox.net.local.registry.roundtrip", "nt4_dc:local",
322               [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
323                scriptdir, "$SMB_CONF_PATH", net, configuration])
324 plantestsuite("samba3.blackbox.net.rpc.registry.roundtrip", "nt4_dc",
325               [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
326                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
327
328 plantestsuite("samba3.blackbox.net.local.conf", "nt4_dc:local",
329               [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
330                scriptdir, "$SMB_CONF_PATH", net, configuration])
331 plantestsuite("samba3.blackbox.net.rpc.conf", "nt4_dc",
332               [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
333                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
334
335
336 plantestsuite("samba3.blackbox.testparm", "nt4_dc:local",
337               [os.path.join(samba3srcdir, "script/tests/test_testparm_s3.sh"),
338                "$LOCAL_PATH"])
339
340 plantestsuite(
341     "samba3.pthreadpool", "none",
342     [os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
343
344 if with_pthreadpool and have_ldwrap:
345     plantestsuite("samba3.pthreadpool_cmocka", "none",
346                   [os.path.join(bindir(), "pthreadpooltest_cmocka")])
347
348 plantestsuite("samba3.async_req", "nt4_dc",
349               [os.path.join(samba3srcdir, "script/tests/test_async_req.sh")])
350
351 #smbtorture4 tests
352
353 base = ["base.attr", "base.charset", "base.chkpath", "base.createx_access", "base.defer_open", "base.delaywrite", "base.delete",
354         "base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
355         "base.disconnect", "base.fdpass", "base.lock",
356         "base.mangle", "base.negnowait", "base.ntdeny1",
357         "base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
358         "base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
359         "base.xcopy", "base.samba3error"]
360
361 raw = ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
362        "raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock",
363        "raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
364        "raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
365        "raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename", "raw.session",
366        "raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
367        "raw.samba3rootdirfid", "raw.sfileinfo.end-of-file",
368        "raw.bench-oplock", "raw.bench-lock", "raw.bench-open", "raw.bench-tcon",
369        "raw.samba3checkfsp", "raw.samba3closeerr", "raw.samba3oplocklogoff", "raw.samba3badnameblob"]
370
371 smb2 = smbtorture4_testsuites("smb2.")
372
373 rpc = ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
374        "rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
375        "rpc.samba3.getaliasmembership-0",
376        "rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
377        "rpc.samba3.smb1-pipe-name", "rpc.samba3.smb2-pipe-name",
378        "rpc.samba3.smb-reauth1", "rpc.samba3.smb-reauth2",
379        "rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
380        "rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
381        "rpc.spoolss.driver",
382        "rpc.lsa", "rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
383        "rpc.lsa.privileges", "rpc.lsa.secrets",
384        "rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
385        "rpc.samr.passwords.pwdlastset", "rpc.samr.passwords.lockout", "rpc.samr.passwords.badpwdcount", "rpc.samr.large-dc", "rpc.samr.machine.auth",
386        "rpc.samr.priv", "rpc.samr.passwords.validate",
387        "rpc.netlogon.admin",
388        "rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.schannel_anon_setpw", "rpc.join", "rpc.bind"]
389
390 local = ["local.nss"]
391
392 idmap = ["idmap.rfc2307", "idmap.alloc", "idmap.rid", "idmap.ad"]
393
394 rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
395
396 unix = ["unix.info2", "unix.whoami"]
397
398 nbt = ["nbt.dgram" ]
399
400 libsmbclient = ["libsmbclient"]
401
402 vfs = ["vfs.fruit", "vfs.acl_xattr", "vfs.fruit_netatalk", "vfs.fruit_file_id", "vfs.fruit_timemachine"]
403
404 tests= base + raw + smb2 + rpc + unix + local + rap + nbt + libsmbclient + idmap + vfs
405
406 for t in tests:
407     if t == "base.delaywrite":
408         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD -k yes --maximum-runtime=900')
409     elif t == "base.createx_access":
410         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD -k yes --maximum-runtime=900')
411     elif t == "rap.sam":
412         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
413         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
414     elif t == "winbind.pac":
415         plansmbtorture4testsuite(t, "ad_member:local", '//$SERVER/tmp --realm=$REALM --machine-pass --option=torture:addc=$DC_SERVER', description="machine account")
416     elif t == "unix.whoami":
417         plansmbtorture4testsuite(t, "nt4_member:local", '//$SERVER/tmp --machine-pass', description="machine account")
418         plansmbtorture4testsuite(t, "ad_member:local", '//$SERVER/tmp --machine-pass --option=torture:addc=$DC_SERVER', description="machine account")
419         for env in ["nt4_dc", "nt4_member"]:
420             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
421             plansmbtorture4testsuite(t, env, '//$SERVER/tmpguest -U%', description='anonymous connection')
422         for env in ["ad_dc", "ad_member"]:
423             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$DC_USERNAME@$REALM%$DC_PASSWORD --option=torture:addc=$DC_SERVER')
424             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -k yes -U$DC_USERNAME@$REALM%$DC_PASSWORD --option=torture:addc=$DC_SERVER', description='kerberos connection')
425             plansmbtorture4testsuite(t, env, '//$SERVER/tmpguest -U% --option=torture:addc=$DC_SERVER', description='anonymous connection')
426             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -k no -U$DC_USERNAME@$REALM%$DC_PASSWORD', description='ntlm user@realm')
427     elif t == "raw.samba3posixtimedlock":
428         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
429         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/ad_dc/share')
430     elif t == "raw.chkpath":
431         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
432         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
433     elif t == "raw.samba3hide" or t == "raw.samba3checkfsp" or t ==  "raw.samba3closeerr":
434         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
435         plansmbtorture4testsuite(t, "simpleserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
436         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
437     elif t == "raw.session" or t == "smb2.session":
438         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'plain')
439         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpenc -U$USERNAME%$PASSWORD', 'enc')
440         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -k no -U$USERNAME%$PASSWORD', 'ntlm')
441         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -k yes -U$USERNAME%$PASSWORD', 'krb5')
442     elif t == "rpc.lsa":
443         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'over ncacn_np ')
444         plansmbtorture4testsuite(t, "nt4_dc", 'ncacn_ip_tcp:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
445         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'over ncacn_np ')
446         plansmbtorture4testsuite(t, "ad_dc", 'ncacn_ip_tcp:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
447     elif t == "rpc.samr.passwords.validate":
448         plansmbtorture4testsuite(t, "nt4_dc", 'ncacn_ip_tcp:$SERVER_IP[seal] -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
449         plansmbtorture4testsuite(t, "ad_dc", 'ncacn_ip_tcp:$SERVER_IP[seal] -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
450     elif t == "smb2.durable-open" or t == "smb2.durable-v2-open" or t == "smb2.replay":
451         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/durable -U$USERNAME%$PASSWORD')
452         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/durable -U$USERNAME%$PASSWORD')
453     elif t == "base.rw1":
454         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
455         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/valid-users-tmp -U$USERNAME%$PASSWORD')
456         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/write-list-tmp -U$USERNAME%$PASSWORD')
457         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
458     elif t == "idmap.rfc2307":
459         plantestsuite(t, "ad_member_rfc2307",
460                       [os.path.join(samba3srcdir,
461                                     "../nsswitch/tests/test_idmap_rfc2307.sh"),
462                        '$DOMAIN',
463                        'Administrator', '2000000',
464                        'Guest', '2000001',
465                        '"Domain Users"', '2000002',
466                        'DnsAdmins', '2000003',
467                        '2000005', '35',
468                        'ou=idmap,dc=samba,dc=example,dc=com',
469                        '$DC_SERVER', '$DC_USERNAME', '$DC_PASSWORD'])
470     elif t == "idmap.alloc":
471         plantestsuite(t, "ad_member_rfc2307", [os.path.join(samba3srcdir, "../nsswitch/tests/test_idmap_nss.sh"), '$DOMAIN'])
472     elif t == "idmap.rid":
473         plantestsuite(t, "ad_member_idmap_rid", [os.path.join(samba3srcdir, "../nsswitch/tests/test_idmap_rid.sh"), '$DOMAIN', '2000000'])
474     elif t == "idmap.ad":
475         plantestsuite(t, "ad_member_idmap_ad", [os.path.join(samba3srcdir, "../nsswitch/tests/test_idmap_ad.sh"), '$DOMAIN', '$DC_SERVER', '$DC_PASSWORD'])
476     elif t == "raw.acls":
477         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
478         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/nfs4acl_simple_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-simple-40')
479         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/nfs4acl_special_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-special-40')
480         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/nfs4acl_simple_41 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-simple-41')
481         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/nfs4acl_xdr_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-xdr-40')
482         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/nfs4acl_xdr_41 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-xdr-41')
483         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
484     elif t == "smb2.ioctl":
485         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/fs_specific -U$USERNAME%$PASSWORD', 'fs_specific')
486         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
487         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
488     elif t == "smb2.lock":
489         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
490         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
491         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
492     elif t == "raw.read":
493         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
494         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
495         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
496     elif t == "raw.search":
497         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
498 # test the dirsort module.
499         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpsort -U$USERNAME%$PASSWORD')
500         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
501     elif t == "vfs.fruit":
502         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')
503         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')
504         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')
505     elif t == "vfs.fruit_netatalk":
506         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_xattr -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
507     elif t == "vfs.fruit_timemachine":
508         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_timemachine -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
509     elif t == "vfs.fruit_file_id":
510         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit -U$USERNAME%$PASSWORD')
511     elif t == "rpc.schannel_anon_setpw":
512         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$%', description="anonymous password set")
513         plansmbtorture4testsuite(t, "nt4_dc_schannel", '//$SERVER_IP/tmp -U$%', description="anonymous password set (schannel enforced server-side)")
514         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$%', description="anonymous password set")
515     elif t == "local.nss":
516         for env in ["nt4_dc:local", "ad_member:local", "nt4_member:local", "ad_dc:local"]:
517             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$USERNAME%$PASSWORD')
518     elif t == "smb2.change_notify_disabled":
519         plansmbtorture4testsuite(t, "simpleserver", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
520     elif t == "smb2.notify":
521         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --signing=required')
522         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD --signing=required')
523     elif t == "smb2.dosmode":
524         plansmbtorture4testsuite(t, "simpleserver", '//$SERVER/dosmode -U$USERNAME%$PASSWORD')
525     elif t == "smb2.kernel-oplocks":
526         if have_linux_kernel_oplocks:
527             plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER/kernel_oplocks -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
528     elif t == "smb2.notify-inotify":
529         if have_inotify:
530             plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
531     elif t == "vfs.acl_xattr":
532         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
533     elif t == "smb2.compound_find":
534         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER/compound_find -U$USERNAME%$PASSWORD')
535         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
536         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
537     elif t == "rpc.samr.users.privileges":
538         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:nt4_dc=true')
539         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
540     elif t == "smb2.compound":
541         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
542         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
543         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
544     elif t == "rpc.samba3.netlogon" or t == "rpc.samba3.sessionkey":
545         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:wksname=samba3rpctest')
546         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD --option=torture:wksname=samba3rpctest')
547     elif t == "libsmbclient":
548         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%%$PASSWORD --option=torture:replace_smbconf=%s' % os.path.join(srcdir(), "testdata/samba3/smb_new.conf"))
549         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%%$PASSWORD --option=torture:replace_smbconf=%s' % os.path.join(srcdir(), "testdata/samba3/smb_new.conf"))
550     else:
551         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
552         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
553
554
555 test = 'rpc.lsa.lookupsids'
556 auth_options = ["", "ntlm", "spnego", "spnego,ntlm" ]
557 signseal_options = ["", ",connect", ",packet", ",sign", ",seal"]
558 endianness_options = ["", ",bigendian"]
559 for s in signseal_options:
560     for e in endianness_options:
561         for a in auth_options:
562             binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
563             options = binding_string + " -U$USERNAME%$PASSWORD"
564             plansmbtorture4testsuite(test, "nt4_dc", options, 'over ncacn_np with [%s%s%s] ' % (a, s, e))
565             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"),
566                                                              "none", options, configuration])
567
568     # We should try more combinations in future, but this is all
569     # the pre-calculated credentials cache supports at the moment
570     #
571     # As the ktest env requires SMB3_00 we need to use "smb2" until
572     # dcerpc client code in smbtorture support autonegotiation
573     # of any smb dialect.
574     e = ""
575     a = "smb2"
576     binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
577     options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
578     plansmbtorture4testsuite(test, "ktest", options, 'krb5 with old ccache ncacn_np with [%s%s%s] ' % (a, s, e))
579
580     options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
581     plansmbtorture4testsuite(test, "ktest", options, 'krb5 ncacn_np with [%s%s%s] ' % (a, s, e))
582
583     auth_options2 = ["krb5", "spnego,krb5"]
584     for a in auth_options2:
585         binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
586
587         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"),
588                                                                                                                               "$PREFIX/ktest/krb5_ccache-3", binding_string, "-k", configuration])
589
590 plantestsuite("samba3.blackbox.rpcclient_samlogon", "ad_member:local", [os.path.join(samba3srcdir, "script/tests/test_rpcclient_samlogon.sh"),
591                                                                        "$DC_USERNAME", "$DC_PASSWORD", "ncacn_np:$DC_SERVER", configuration])
592 plantestsuite("samba3.blackbox.sharesec", "simpleserver:local",
593               [os.path.join(samba3srcdir, "script/tests/test_sharesec.sh"),
594                configuration, os.path.join(bindir(), "sharesec"), "tmp"])
595
596 plantestsuite("samba3.blackbox.net_tdb", "simpleserver:local",
597               [ os.path.join(samba3srcdir, "script/tests/test_net_tdb.sh"),
598                 smbclient3, '$SERVER', 'tmp', '$USERNAME', '$PASSWORD',
599                 configuration, '$LOCAL_PATH', '$LOCK_DIR' ])
600
601 plantestsuite("samba3.blackbox.smbd_error", "simpleserver:local",
602               [ os.path.join(samba3srcdir, "script/tests/test_smbd_error.sh") ])
603
604 plantestsuite("samba3.blackbox.net_cache_samlogon", "ad_member:local",
605               [ os.path.join(samba3srcdir, "script/tests/test_net_cache_samlogon.sh"),
606                 '$SERVER', 'tmp', '$DC_USERNAME', '$DC_PASSWORD'])
607
608 plantestsuite("samba3.blackbox.net_dom_join_fail_dc", "nt4_dc",
609               [os.path.join(samba3srcdir, "script/tests/test_net_dom_join_fail_dc.sh"),
610                "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_dom_join_fail_dc",
611                configuration])
612 plantestsuite("samba3.blackbox.net_rpc_join", "nt4_dc",
613               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_join.sh"),
614                "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_rpc_join",
615                configuration])
616 plantestsuite("samba3.blackbox.net_rpc_oldjoin", "nt4_dc:local",
617               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_oldjoin.sh"),
618                "$SERVER", "$PREFIX/net_rpc_oldjoin",
619                "$SMB_CONF_PATH"])
620
621 plantestsuite("samba3.blackbox.rpcclient_srvsvc", "simpleserver",
622               [os.path.join(samba3srcdir, "script/tests/test_rpcclientsrvsvc.sh"),
623                "$USERNAME", "$PASSWORD", "$SERVER",
624                os.path.join(bindir(), "rpcclient"), "tmp"])
625
626 plantestsuite("samba3.blackbox.rpcclient.pw-nt-hash", "simpleserver",
627               [os.path.join(samba3srcdir, "script/tests/test_rpcclient_pw_nt_hash.sh"),
628                "$USERNAME", "$PASSWORD", "$SERVER",
629                os.path.join(bindir(), "rpcclient")])
630
631 plantestsuite("samba3.blackbox.smbclient.encryption_off", "simpleserver",
632               [os.path.join(samba3srcdir, "script/tests/test_smbclient_encryption_off.sh"),
633                "$USERNAME", "$PASSWORD", "$SERVER",
634                smbclient3])
635
636 # The ktest environment uses:
637 # server min protocol = SMB3_00
638 # client max protocol = SMB3
639 options_list = ["", "-e"]
640 for options in options_list:
641     plantestsuite("samba3.blackbox.smbclient_krb5 old ccache %s" % options, "ktest:local",
642                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
643                    "$PREFIX/ktest/krb5_ccache-2",
644                    smbclient3, "$SERVER", options, configuration])
645
646     plantestsuite("samba3.blackbox.smbclient_krb5 new ccache %s" % options, "ktest:local",
647                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
648                    "$PREFIX/ktest/krb5_ccache-3",
649                    smbclient3, "$SERVER", options, configuration])
650
651     plantestsuite("samba3.blackbox.smbclient_large_file %s krb5" % options, "ktest:local",
652                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_large_file.sh"),
653                    "$PREFIX/ktest/krb5_ccache-3",
654                    smbclient3, "$SERVER", "$PREFIX", options, "-k " + configuration])
655
656 options_list = ["-mNT1", "-mNT1 -e", "-mSMB3", "-mSMB3 -e"]
657 for options in options_list:
658     plantestsuite("samba3.blackbox.smbclient_large_file %s NTLM" % options, "nt4_dc:local",
659                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_large_file.sh"),
660                    "none",
661                    smbclient3, "$SERVER", "$PREFIX", options, "-U$USERNAME%$PASSWORD " + configuration])
662
663 for alias in ["foo", "bar"]:
664     plantestsuite("samba3.blackbox.smbclient_netbios_aliases [%s]" % alias, "ad_member:local",
665                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_netbios_aliases.sh"),
666                    smbclient3, alias, "$DC_USERNAME", "$DC_PASSWORD", "$PREFIX", options, configuration])
667
668 for e in endianness_options:
669     for a in auth_options:
670         for s in signseal_options:
671             binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
672             options = binding_string + " -U$USERNAME%$PASSWORD"
673             plansmbtorture4testsuite(test, "nt4_dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))
674
675 plansmbtorture4testsuite('rpc.epmapper', 'nt4_dc:local', 'ncalrpc: -U$USERNAME%$PASSWORD', 'over ncalrpc')
676 plansmbtorture4testsuite('rpc.fsrvp', 'nt4_dc:local', 'ncacn_np:$SERVER_IP[/pipe/FssagentRpc] -U$USERNAME%$PASSWORD', 'over ncacn_np')