selftest: Require libarchive for --enable-selftest
[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_linux_kernel_oplocks = ("HAVE_KERNEL_OPLOCKS_LINUX" in config_hash)
58 have_inotify = ("HAVE_INOTIFY" in config_hash)
59 have_ldwrap = ("HAVE_LDWRAP" in config_hash)
60 with_pthreadpool = ("WITH_PTHREADPOOL" in config_hash)
61
62
63 plantestsuite("samba3.blackbox.success", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_success.sh")])
64 plantestsuite("samba3.blackbox.failure", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_failure.sh")])
65
66 plantestsuite("samba3.local_s3", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_local_s3.sh")])
67
68 plantestsuite("samba3.blackbox.registry.upgrade", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_registry_upgrade.sh"), net, dbwrap_tool])
69
70 tests = ["FDPASS", "LOCK1", "LOCK2", "LOCK3", "LOCK4", "LOCK5", "LOCK6", "LOCK7", "LOCK9",
71         "UNLINK", "BROWSE", "ATTR", "TRANS2", "TORTURE",
72         "OPLOCK1", "OPLOCK2", "OPLOCK4", "STREAMERROR",
73         "DIR", "DIR1", "DIR-CREATETIME", "TCON", "TCONDEV", "RW1", "RW2", "RW3", "LARGE_READX", "RW-SIGNING",
74         "OPEN", "XCOPY", "RENAME", "DELETE", "DELETE-LN", "WILDDELETE", "PROPERTIES", "W2K",
75         "TCON2", "IOCTL", "CHKPATH", "FDSESS", "CHAIN1", "CHAIN2", "OWNER-RIGHTS",
76         "CHAIN3", "PIDHIGH",
77         "UID-REGRESSION-TEST", "SHORTNAME-TEST",
78         "CASE-INSENSITIVE-CREATE", "SMB2-BASIC", "NTTRANS-FSCTL", "SMB2-NEGPROT",
79         "SMB2-SESSION-REAUTH", "SMB2-SESSION-RECONNECT", "SMB2-FTRUNCATE",
80         "SMB2-ANONYMOUS",
81         "CLEANUP1",
82         "CLEANUP2",
83         "CLEANUP4",
84         "BAD-NBT-SESSION"]
85
86 for t in tests:
87     plantestsuite("samba3.smbtorture_s3.plain(fileserver).%s" % t, "fileserver", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
88     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"])
89     if t == "TORTURE":
90         # this is a negative test to verify that the server rejects
91         # access without encryption
92         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"])
93     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"])
94
95 t = "TLDAP"
96 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"])
97
98 #
99 # RENAME-ACCESS needs to run against a special share - acl_xattr_ign_sysacl_windows
100 #
101 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"])
102 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"])
103 # non-crypt only
104
105 tests = ["OPLOCK-CANCEL"]
106 for t in tests:
107     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"])
108
109 env = "nt4_dc"
110 tests = ["MANGLE-ILLEGAL"]
111 for t in tests:
112     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"])
113
114 tests = ["RW1", "RW2", "RW3", "SMB2-BASIC"]
115 for t in tests:
116     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"])
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 plantestsuite("samba3.wbinfo_name_lookup", env,
214               [ os.path.join(srcdir(),
215                             "nsswitch/tests/test_wbinfo_name_lookup.sh"),
216                 '$DOMAIN', '$REALM', '$DC_USERNAME' ])
217
218 env = "ad_member:local"
219 plantestsuite("samba3.wbinfo_user_info", env,
220               [ os.path.join(srcdir(),
221                             "nsswitch/tests/test_wbinfo_user_info.sh"),
222                 '$DOMAIN', '$REALM', 'alice', 'alice', 'jane', 'jane.doe' ])
223
224 env = "fl2008r2dc:local"
225 plantestsuite("samba3.wbinfo_user_info", env,
226               [ os.path.join(srcdir(),
227                             "nsswitch/tests/test_wbinfo_user_info.sh"),
228                 '$TRUST_DOMAIN', '$TRUST_REALM', 'alice', 'alice', 'jane', 'jane.doe' ])
229
230 env = "ad_member"
231 t = "WBCLIENT-MULTI-PING"
232 plantestsuite("samba3.smbtorture_s3.%s" % t, env, [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//foo/bar', '""', '""', smbtorture3, ""])
233 plantestsuite("samba3.substitutions", env, [os.path.join(samba3srcdir, "script/tests/test_substitutions.sh"), "$SERVER", "alice", "Secret007", "$PREFIX"])
234
235 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])
236
237 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])
238
239
240 for env in ["maptoguest", "simpleserver"]:
241     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"])
242
243 env = "maptoguest"
244 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"])
245 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])
246
247 # plain
248 for env in ["nt4_dc"]:
249     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"])
250     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"])
251
252 for env in ["nt4_member", "ad_member"]:
253     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"])
254     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"])
255
256 for env in ["nt4_dc"]:
257     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"])
258     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"])
259
260 for env in ["nt4_member", "ad_member"]:
261     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"])
262     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"])
263
264 for env in ["nt4_dc"]:
265     # encrypted
266     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"])
267     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"])
268
269 for env in ["fileserver"]:
270     plantestsuite("samba3.blackbox.preserve_case (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_preserve_case.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3])
271     plantestsuite("samba3.blackbox.dfree_command (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_dfree_command.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3])
272     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])
273     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])
274     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])
275     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'])
276     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'])
277     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])
278     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])
279     plantestsuite("samba3.blackbox.netshareenum (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_shareenum.sh"), '$SERVER', '$USERNAME', '$PASSWORD', rpcclient])
280     plantestsuite("samba3.blackbox.acl_xattr.NT1", env, [os.path.join(samba3srcdir, "script/tests/test_acl_xattr.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, '-mNT1'])
281     plantestsuite("samba3.blackbox.acl_xattr.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_acl_xattr.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, '-mSMB3'])
282     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])
283     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'])
284     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'])
285     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'])
286     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'])
287     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'])
288     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'])
289     plantestsuite("samba3.blackbox.large_acl.NT1", env, [os.path.join(samba3srcdir, "script/tests/test_large_acl.sh"), '$SERVER', '$USERNAME', '$PASSWORD', smbclient3, smbcacls, '-m', 'NT1'])
290     plantestsuite("samba3.blackbox.large_acl.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_large_acl.sh"), '$SERVER', '$USERNAME', '$PASSWORD', smbclient3, smbcacls, '-m', 'SMB3'])
291     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'])
292
293     #
294     # tar command tests
295     #
296
297     # Test smbclient/tarmode
298     plantestsuite("samba3.blackbox.smbclient_tarmode.NT1", env,
299                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.sh"),
300                    '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD',
301                    '$LOCAL_PATH/tarmode', '$PREFIX', smbclient3, configuration, "-mNT1"])
302     plantestsuite("samba3.blackbox.smbclient_tarmode.SMB3", env,
303                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.sh"),
304                    '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD',
305                    '$LOCAL_PATH/tarmode', '$PREFIX', smbclient3, configuration, "-mSMB3"])
306
307     # Test suite for new smbclient/tar with libarchive (GSoC 13)
308     plantestsuite("samba3.blackbox.smbclient_tar.NT1", env,
309                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.pl"),
310                    '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tmp',
311                    '-u', '$USERNAME', '-p', '$PASSWORD', '-l', '$LOCAL_PATH/tarmode',
312                    '-d', '$PREFIX', '-b', smbclient3,
313                    '--subunit', '--', configuration, '-mNT1'])
314     plantestsuite("samba3.blackbox.smbclient_tar.SMB3", env,
315                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.pl"),
316                    '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tmp',
317                    '-u', '$USERNAME', '-p', '$PASSWORD', '-l', '$LOCAL_PATH/tarmode',
318                    '-d', '$PREFIX', '-b', smbclient3,
319                    '--subunit', '--', configuration, '-mSMB3'])
320
321 plantestsuite("samba3.blackbox.net_usershare", "fileserver:local", [os.path.join(samba3srcdir, "script/tests/test_net_usershare.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbclient3])
322
323 #TODO encrypted against member, with member creds, and with DC creds
324 plantestsuite("samba3.blackbox.net.misc", "nt4_dc:local",
325               [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
326                scriptdir, "$SMB_CONF_PATH", net, configuration])
327 plantestsuite("samba3.blackbox.net.local.registry", "nt4_dc:local",
328               [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
329                scriptdir, "$SMB_CONF_PATH", net, configuration])
330 plantestsuite("samba3.blackbox.net.registry.check", "nt4_dc:local",
331               [os.path.join(samba3srcdir, "script/tests/test_net_registry_check.sh"),
332                scriptdir, "$SMB_CONF_PATH", net, configuration, dbwrap_tool])
333 plantestsuite("samba3.blackbox.net.rpc.registry", "nt4_dc",
334               [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
335                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
336
337 plantestsuite("samba3.blackbox.net.local.registry.roundtrip", "nt4_dc:local",
338               [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
339                scriptdir, "$SMB_CONF_PATH", net, configuration])
340 plantestsuite("samba3.blackbox.net.rpc.registry.roundtrip", "nt4_dc",
341               [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
342                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
343
344 plantestsuite("samba3.blackbox.net.local.conf", "nt4_dc:local",
345               [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
346                scriptdir, "$SMB_CONF_PATH", net, configuration])
347 plantestsuite("samba3.blackbox.net.rpc.conf", "nt4_dc",
348               [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
349                scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
350
351
352 plantestsuite("samba3.blackbox.testparm", "nt4_dc:local",
353               [os.path.join(samba3srcdir, "script/tests/test_testparm_s3.sh"),
354                "$LOCAL_PATH"])
355
356 plantestsuite(
357     "samba3.pthreadpool", "none",
358     [os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
359
360 if with_pthreadpool and have_ldwrap:
361     plantestsuite("samba3.pthreadpool_cmocka", "none",
362                   [os.path.join(bindir(), "pthreadpooltest_cmocka")])
363
364 plantestsuite("samba3.async_req", "nt4_dc",
365               [os.path.join(samba3srcdir, "script/tests/test_async_req.sh")])
366
367 #smbtorture4 tests
368
369 base = ["base.attr", "base.charset", "base.chkpath", "base.createx_access", "base.defer_open", "base.delaywrite", "base.delete",
370         "base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
371         "base.disconnect", "base.fdpass", "base.lock",
372         "base.mangle", "base.negnowait", "base.ntdeny1",
373         "base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
374         "base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
375         "base.xcopy", "base.samba3error"]
376
377 raw = ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
378        "raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock",
379        "raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
380        "raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
381        "raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename", "raw.session",
382        "raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
383        "raw.samba3rootdirfid", "raw.sfileinfo.end-of-file",
384        "raw.bench-oplock", "raw.bench-lock", "raw.bench-open", "raw.bench-tcon",
385        "raw.samba3checkfsp", "raw.samba3closeerr", "raw.samba3oplocklogoff", "raw.samba3badnameblob"]
386
387 smb2 = smbtorture4_testsuites("smb2.")
388
389 rpc = ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
390        "rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
391        "rpc.samba3.getaliasmembership-0",
392        "rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
393        "rpc.samba3.smb1-pipe-name", "rpc.samba3.smb2-pipe-name",
394        "rpc.samba3.smb-reauth1", "rpc.samba3.smb-reauth2",
395        "rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
396        "rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
397        "rpc.spoolss.driver",
398        "rpc.lsa", "rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
399        "rpc.lsa.privileges", "rpc.lsa.secrets",
400        "rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
401        "rpc.samr.passwords.pwdlastset", "rpc.samr.passwords.lockout", "rpc.samr.passwords.badpwdcount", "rpc.samr.large-dc", "rpc.samr.machine.auth",
402        "rpc.samr.priv", "rpc.samr.passwords.validate",
403        "rpc.netlogon.admin",
404        "rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.schannel_anon_setpw", "rpc.join", "rpc.bind"]
405
406 local = ["local.nss"]
407
408 idmap = ["idmap.rfc2307", "idmap.alloc", "idmap.rid", "idmap.ad"]
409
410 rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
411
412 unix = ["unix.info2", "unix.whoami"]
413
414 nbt = ["nbt.dgram" ]
415
416 libsmbclient = ["libsmbclient"]
417
418 vfs = ["vfs.fruit", "vfs.acl_xattr", "vfs.fruit_netatalk", "vfs.fruit_file_id", "vfs.fruit_timemachine"]
419
420 tests= base + raw + smb2 + rpc + unix + local + rap + nbt + libsmbclient + idmap + vfs
421
422 for t in tests:
423     if t == "base.delaywrite" or t == "base.deny1" or t == "base.deny2":
424         plansmbtorture4testsuite(t, "fileserver", '//$SERVER/tmp -U$USERNAME%$PASSWORD --maximum-runtime=900')
425     elif t == "base.createx_access":
426         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD -k yes --maximum-runtime=900')
427     elif t == "rap.sam":
428         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
429         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
430     elif t == "winbind.pac":
431         plansmbtorture4testsuite(t, "ad_member:local", '//$SERVER/tmp --realm=$REALM --machine-pass --option=torture:addc=$DC_SERVER', description="machine account")
432     elif t == "unix.whoami":
433         plansmbtorture4testsuite(t, "nt4_member:local", '//$SERVER/tmp --machine-pass', description="machine account")
434         plansmbtorture4testsuite(t, "ad_member:local", '//$SERVER/tmp --machine-pass --option=torture:addc=$DC_SERVER', description="machine account")
435         for env in ["nt4_dc", "nt4_member"]:
436             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
437             plansmbtorture4testsuite(t, env, '//$SERVER/tmpguest -U%', description='anonymous connection')
438         for env in ["ad_dc", "ad_member"]:
439             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$DC_USERNAME@$REALM%$DC_PASSWORD --option=torture:addc=$DC_SERVER')
440             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -k yes -U$DC_USERNAME@$REALM%$DC_PASSWORD --option=torture:addc=$DC_SERVER', description='kerberos connection')
441             plansmbtorture4testsuite(t, env, '//$SERVER/tmpguest -U% --option=torture:addc=$DC_SERVER', description='anonymous connection')
442             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -k no -U$DC_USERNAME@$REALM%$DC_PASSWORD', description='ntlm user@realm')
443     elif t == "raw.samba3posixtimedlock":
444         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
445         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/ad_dc/share')
446     elif t == "raw.chkpath":
447         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
448         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
449     elif t == "raw.samba3hide" or t == "raw.samba3checkfsp" or t ==  "raw.samba3closeerr":
450         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
451         plansmbtorture4testsuite(t, "simpleserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
452         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
453     elif t == "raw.session" or t == "smb2.session":
454         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'plain')
455         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpenc -U$USERNAME%$PASSWORD', 'enc')
456         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -k no -U$USERNAME%$PASSWORD', 'ntlm')
457         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -k yes -U$USERNAME%$PASSWORD', 'krb5')
458     elif t == "rpc.lsa":
459         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'over ncacn_np ')
460         plansmbtorture4testsuite(t, "nt4_dc", 'ncacn_ip_tcp:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
461         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'over ncacn_np ')
462         plansmbtorture4testsuite(t, "ad_dc", 'ncacn_ip_tcp:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
463     elif t == "rpc.samr.passwords.validate":
464         plansmbtorture4testsuite(t, "nt4_dc", 'ncacn_ip_tcp:$SERVER_IP[seal] -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
465         plansmbtorture4testsuite(t, "ad_dc", 'ncacn_ip_tcp:$SERVER_IP[seal] -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
466     elif t == "smb2.durable-open" or t == "smb2.durable-v2-open" or t == "smb2.replay":
467         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/durable -U$USERNAME%$PASSWORD')
468         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/durable -U$USERNAME%$PASSWORD')
469     elif t == "base.rw1":
470         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
471         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/valid-users-tmp -U$USERNAME%$PASSWORD')
472         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/write-list-tmp -U$USERNAME%$PASSWORD')
473         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
474     elif t == "idmap.rfc2307":
475         plantestsuite(t, "ad_member_rfc2307",
476                       [os.path.join(samba3srcdir,
477                                     "../nsswitch/tests/test_idmap_rfc2307.sh"),
478                        '$DOMAIN',
479                        'Administrator', '2000000',
480                        'Guest', '2000001',
481                        '"Domain Users"', '2000002',
482                        'DnsAdmins', '2000003',
483                        '2000005', '35',
484                        'ou=idmap,dc=samba,dc=example,dc=com',
485                        '$DC_SERVER', '$DC_USERNAME', '$DC_PASSWORD'])
486     elif t == "idmap.alloc":
487         plantestsuite(t, "ad_member_rfc2307", [os.path.join(samba3srcdir, "../nsswitch/tests/test_idmap_nss.sh"), '$DOMAIN'])
488     elif t == "idmap.rid":
489         plantestsuite(t, "ad_member_idmap_rid", [os.path.join(samba3srcdir, "../nsswitch/tests/test_idmap_rid.sh"), '$DOMAIN', '2000000'])
490     elif t == "idmap.ad":
491         plantestsuite(t, "ad_member_idmap_ad", [os.path.join(samba3srcdir, "../nsswitch/tests/test_idmap_ad.sh"), '$DOMAIN', '$DC_SERVER', '$DC_PASSWORD'])
492     elif t == "raw.acls":
493         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
494         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/nfs4acl_simple_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-simple-40')
495         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/nfs4acl_special_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-special-40')
496         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/nfs4acl_simple_41 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-simple-41')
497         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/nfs4acl_xdr_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-xdr-40')
498         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/nfs4acl_xdr_41 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-xdr-41')
499         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
500     elif t == "smb2.ioctl":
501         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/fs_specific -U$USERNAME%$PASSWORD', 'fs_specific')
502         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
503         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
504     elif t == "smb2.lock":
505         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
506         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
507     elif t == "raw.lock" or t == "base.lock":
508         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
509     elif t == "raw.read":
510         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
511         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
512         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
513     elif t == "raw.search":
514         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
515 # test the dirsort module.
516         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpsort -U$USERNAME%$PASSWORD')
517         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
518     elif t == "vfs.fruit":
519         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')
520         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')
521         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')
522     elif t == "vfs.fruit_netatalk":
523         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_xattr -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
524     elif t == "vfs.fruit_timemachine":
525         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_timemachine -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
526     elif t == "vfs.fruit_file_id":
527         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit -U$USERNAME%$PASSWORD')
528     elif t == "rpc.schannel_anon_setpw":
529         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$%', description="anonymous password set")
530         plansmbtorture4testsuite(t, "nt4_dc_schannel", '//$SERVER_IP/tmp -U$%', description="anonymous password set (schannel enforced server-side)")
531         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$%', description="anonymous password set")
532     elif t == "local.nss":
533         for env in ["nt4_dc:local", "ad_member:local", "nt4_member:local", "ad_dc:local"]:
534             plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$USERNAME%$PASSWORD')
535     elif t == "smb2.change_notify_disabled":
536         plansmbtorture4testsuite(t, "simpleserver", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
537     elif t == "smb2.notify" or t == "raw.notify" or t == "smb2.oplock" or t == "raw.oplock":
538         # These tests are a little slower so don't duplicate them with ad_dc
539         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --signing=required')
540     elif t == "smb2.dosmode":
541         plansmbtorture4testsuite(t, "simpleserver", '//$SERVER/dosmode -U$USERNAME%$PASSWORD')
542     elif t == "smb2.kernel-oplocks":
543         if have_linux_kernel_oplocks:
544             plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER/kernel_oplocks -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
545     elif t == "smb2.notify-inotify":
546         if have_inotify:
547             plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
548     elif t == "vfs.acl_xattr":
549         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
550     elif t == "smb2.compound_find":
551         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER/compound_find -U$USERNAME%$PASSWORD')
552         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
553         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
554     elif t == "rpc.samr.users.privileges":
555         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:nt4_dc=true')
556         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
557     elif t == "smb2.compound":
558         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
559         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
560         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
561     elif t == "rpc.samba3.netlogon" or t == "rpc.samba3.sessionkey":
562         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:wksname=samba3rpctest')
563         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD --option=torture:wksname=samba3rpctest')
564     elif t == "libsmbclient":
565         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%%$PASSWORD '
566                                     '--option=torture:smburl=smb://$USERNAME:$PASSWORD@$SERVER/tmp '
567                                     '--option=torture:replace_smbconf=%s' % os.path.join(srcdir(), "testdata/samba3/smb_new.conf"))
568         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%%$PASSWORD '
569                                     '--option=torture:smburl=smb://$USERNAME:$PASSWORD@$SERVER/tmp '
570                                     '--option=torture:replace_smbconf=%s' % os.path.join(srcdir(), "testdata/samba3/smb_new.conf"))
571     else:
572         plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
573         plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
574
575
576 test = 'rpc.lsa.lookupsids'
577 auth_options = ["", "ntlm", "spnego", "spnego,ntlm" ]
578 signseal_options = ["", ",connect", ",packet", ",sign", ",seal"]
579 endianness_options = ["", ",bigendian"]
580 for s in signseal_options:
581     for e in endianness_options:
582         for a in auth_options:
583             binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
584             options = binding_string + " -U$USERNAME%$PASSWORD"
585             plansmbtorture4testsuite(test, "nt4_dc", options, 'over ncacn_np with [%s%s%s] ' % (a, s, e))
586             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"),
587                                                              "none", options, configuration])
588
589     # We should try more combinations in future, but this is all
590     # the pre-calculated credentials cache supports at the moment
591     #
592     # As the ktest env requires SMB3_00 we need to use "smb2" until
593     # dcerpc client code in smbtorture support autonegotiation
594     # of any smb dialect.
595     e = ""
596     a = "smb2"
597     binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
598     options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
599     plansmbtorture4testsuite(test, "ktest", options, 'krb5 with old ccache ncacn_np with [%s%s%s] ' % (a, s, e))
600
601     options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
602     plansmbtorture4testsuite(test, "ktest", options, 'krb5 ncacn_np with [%s%s%s] ' % (a, s, e))
603
604     auth_options2 = ["krb5", "spnego,krb5"]
605     for a in auth_options2:
606         binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
607
608         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"),
609                                                                                                                               "$PREFIX/ktest/krb5_ccache-3", binding_string, "-k", configuration])
610
611 plantestsuite("samba3.blackbox.rpcclient_samlogon", "ad_member:local", [os.path.join(samba3srcdir, "script/tests/test_rpcclient_samlogon.sh"),
612                                                                        "$DC_USERNAME", "$DC_PASSWORD", "ncacn_np:$DC_SERVER", configuration])
613 plantestsuite("samba3.blackbox.sharesec", "simpleserver:local",
614               [os.path.join(samba3srcdir, "script/tests/test_sharesec.sh"),
615                configuration, os.path.join(bindir(), "sharesec"), "tmp"])
616
617 plantestsuite("samba3.blackbox.net_tdb", "simpleserver:local",
618               [ os.path.join(samba3srcdir, "script/tests/test_net_tdb.sh"),
619                 smbclient3, '$SERVER', 'tmp', '$USERNAME', '$PASSWORD',
620                 configuration, '$LOCAL_PATH', '$LOCK_DIR' ])
621
622 plantestsuite("samba3.blackbox.smbd_error", "simpleserver:local",
623               [ os.path.join(samba3srcdir, "script/tests/test_smbd_error.sh") ])
624
625 plantestsuite("samba3.blackbox.net_cache_samlogon", "ad_member:local",
626               [ os.path.join(samba3srcdir, "script/tests/test_net_cache_samlogon.sh"),
627                 '$SERVER', 'tmp', '$DC_USERNAME', '$DC_PASSWORD'])
628
629 plantestsuite("samba3.blackbox.net_dom_join_fail_dc", "nt4_dc",
630               [os.path.join(samba3srcdir, "script/tests/test_net_dom_join_fail_dc.sh"),
631                "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_dom_join_fail_dc",
632                configuration])
633 plantestsuite("samba3.blackbox.net_rpc_join", "nt4_dc",
634               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_join.sh"),
635                "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_rpc_join",
636                configuration])
637 plantestsuite("samba3.blackbox.net_rpc_oldjoin", "nt4_dc:local",
638               [os.path.join(samba3srcdir, "script/tests/test_net_rpc_oldjoin.sh"),
639                "$SERVER", "$PREFIX/net_rpc_oldjoin",
640                "$SMB_CONF_PATH"])
641
642 plantestsuite("samba3.blackbox.rpcclient_srvsvc", "simpleserver",
643               [os.path.join(samba3srcdir, "script/tests/test_rpcclientsrvsvc.sh"),
644                "$USERNAME", "$PASSWORD", "$SERVER",
645                os.path.join(bindir(), "rpcclient"), "tmp"])
646
647 plantestsuite("samba3.blackbox.rpcclient.pw-nt-hash", "simpleserver",
648               [os.path.join(samba3srcdir, "script/tests/test_rpcclient_pw_nt_hash.sh"),
649                "$USERNAME", "$PASSWORD", "$SERVER",
650                os.path.join(bindir(), "rpcclient")])
651
652 plantestsuite("samba3.blackbox.smbclient.encryption_off", "simpleserver",
653               [os.path.join(samba3srcdir, "script/tests/test_smbclient_encryption_off.sh"),
654                "$USERNAME", "$PASSWORD", "$SERVER",
655                smbclient3])
656
657 plantestsuite("samba3.blackbox.rpcclient_netsessenum", "ad_member",
658               [os.path.join(samba3srcdir,
659                             "script/tests/test_rpcclient_netsessenum.sh"),
660                "$DOMAIN", "$DC_USERNAME", "$DC_PASSWORD", "$SERVER",
661                os.path.join(bindir(), "rpcclient"), smbtorture3, "tmp"])
662
663 # The ktest environment uses:
664 # server min protocol = SMB3_00
665 # client max protocol = SMB3
666 options_list = ["", "-e"]
667 for options in options_list:
668     plantestsuite("samba3.blackbox.smbclient_krb5 old ccache %s" % options, "ktest:local",
669                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
670                    "$PREFIX/ktest/krb5_ccache-2",
671                    smbclient3, "$SERVER", options, configuration])
672
673     plantestsuite("samba3.blackbox.smbclient_krb5 new ccache %s" % options, "ktest:local",
674                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
675                    "$PREFIX/ktest/krb5_ccache-3",
676                    smbclient3, "$SERVER", options, configuration])
677
678     plantestsuite("samba3.blackbox.smbclient_large_file %s krb5" % options, "ktest:local",
679                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_large_file.sh"),
680                    "$PREFIX/ktest/krb5_ccache-3",
681                    smbclient3, "$SERVER", "$PREFIX", options, "-k " + configuration])
682
683 options_list = ["-mNT1", "-mNT1 -e", "-mSMB3", "-mSMB3 -e"]
684 for options in options_list:
685     plantestsuite("samba3.blackbox.smbclient_large_file %s NTLM" % options, "nt4_dc:local",
686                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_large_file.sh"),
687                    "none",
688                    smbclient3, "$SERVER", "$PREFIX", options, "-U$USERNAME%$PASSWORD " + configuration])
689
690 for alias in ["foo", "bar"]:
691     plantestsuite("samba3.blackbox.smbclient_netbios_aliases [%s]" % alias, "ad_member:local",
692                   [os.path.join(samba3srcdir, "script/tests/test_smbclient_netbios_aliases.sh"),
693                    smbclient3, alias, "$DC_USERNAME", "$DC_PASSWORD", "$PREFIX", options, configuration])
694
695 for e in endianness_options:
696     for a in auth_options:
697         for s in signseal_options:
698             binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
699             options = binding_string + " -U$USERNAME%$PASSWORD"
700             plansmbtorture4testsuite(test, "nt4_dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))
701
702 plansmbtorture4testsuite('rpc.epmapper', 'nt4_dc:local', 'ncalrpc: -U$USERNAME%$PASSWORD', 'over ncalrpc')
703 plansmbtorture4testsuite('rpc.fsrvp', 'nt4_dc:local', 'ncacn_np:$SERVER_IP[/pipe/FssagentRpc] -U$USERNAME%$PASSWORD', 'over ncacn_np')