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