2 # This script generates a list of testsuites that should be run as part of
3 # the Samba 3 test suite.
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".
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.
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
24 sys.path.insert(0, os.path.normpath(os.path.join(os.path.dirname(__file__), "../../selftest")))
25 import selftesthelpers
26 from selftesthelpers import bindir, srcdir, scriptdir, binpath
27 from selftesthelpers import plantestsuite, samba3srcdir
28 from selftesthelpers import smbtorture3, configuration, smbclient3, smbtorture4
29 from selftesthelpers import net, wbinfo, dbwrap_tool, rpcclient, python
30 from selftesthelpers import smbget, smbcacls, smbcquotas, ntlm_auth3
31 from selftesthelpers import valgrindify, smbtorture4_testsuites
32 from selftesthelpers import smbtorture4_options
33 from selftesthelpers import smbcontrol
34 from selftesthelpers import smbstatus
35 smbtorture4_options.extend([
36 '--option=torture:sharedelay=100000',
37 '--option=torture:writetimeupdatedelay=500000',
41 def plansmbtorture4testsuite(name, env, options, description=''):
43 modname = "samba3.%s" % (name, )
45 modname = "samba3.%s %s" % (name, description)
47 selftesthelpers.plansmbtorture4testsuite(
48 name, env, options, target='samba3', modname=modname)
50 def compare_versions(version1, version2):
51 for i in range(max(len(version1),len(version2))):
52 v1 = version1[i] if i < len(version1) else 0
53 v2 = version2[i] if i < len(version2) else 0
62 config_h = os.environ["CONFIG_H"]
64 samba4bindir = bindir()
65 config_h = os.path.join(samba4bindir, "default/include/config.h")
67 # check available features
69 f = open(config_h, 'r')
72 config_hash = dict((x[0], ' '.join(x[1:]))
73 for x in map(lambda line: line.strip().split(' ')[1:],
74 filter(lambda line: (line[0:7] == '#define') and (len(line.split(' ')) > 2), lines)))
78 if config_hash["SYSTEM_UNAME_SYSNAME"] == '"Linux"':
79 m = re.search(r'(\d+).(\d+).(\d+)', config_hash["SYSTEM_UNAME_RELEASE"])
81 linux_kernel_version = [int(m.group(1)), int(m.group(2)), int(m.group(3))]
83 have_linux_kernel_oplocks = False
84 if "HAVE_KERNEL_OPLOCKS_LINUX" in config_hash:
85 if compare_versions(linux_kernel_version, [5,3,1]) >= 0:
86 have_linux_kernel_oplocks = True
88 have_inotify = ("HAVE_INOTIFY" in config_hash)
89 have_ldwrap = ("HAVE_LDWRAP" in config_hash)
90 with_pthreadpool = ("WITH_PTHREADPOOL" in config_hash)
92 def is_module_enabled(module):
93 if module in config_hash["STRING_SHARED_MODULES"]:
95 if module in config_hash["STRING_STATIC_MODULES"]:
99 plantestsuite("samba3.blackbox.success", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_success.sh")])
100 plantestsuite("samba3.blackbox.failure", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_failure.sh")])
102 plantestsuite("samba3.local_s3", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_local_s3.sh")])
104 plantestsuite("samba3.blackbox.registry.upgrade", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/test_registry_upgrade.sh"), net, dbwrap_tool])
107 "FDPASS", "LOCK1", "LOCK2", "LOCK3", "LOCK4", "LOCK5", "LOCK6", "LOCK7",
113 "UNLINK", "BROWSE", "ATTR", "TRANS2", "TORTURE",
114 "OPLOCK1", "OPLOCK2", "OPLOCK4", "STREAMERROR",
115 "DIR", "DIR1", "DIR-CREATETIME", "TCON", "TCONDEV", "RW1", "RW2", "RW3", "LARGE_READX", "RW-SIGNING",
116 "OPEN", "XCOPY", "RENAME", "DELETE", "DELETE-LN", "WILDDELETE", "PROPERTIES", "W2K",
117 "TCON2", "IOCTL", "CHKPATH", "FDSESS", "CHAIN1", "CHAIN2", "OWNER-RIGHTS",
118 "CHAIN3", "PIDHIGH", "CLI_SPLICE",
119 "UID-REGRESSION-TEST", "SHORTNAME-TEST",
120 "CASE-INSENSITIVE-CREATE", "SMB2-BASIC", "NTTRANS-FSCTL", "SMB2-NEGPROT",
121 "SMB2-SESSION-REAUTH", "SMB2-SESSION-RECONNECT", "SMB2-FTRUNCATE",
122 "SMB2-ANONYMOUS", "SMB2-DIR-FSYNC",
130 "SMB1-WILD-MANGLE-UNLINK",
131 "SMB1-WILD-MANGLE-RENAME"]
133 for t in fileserver_tests:
134 fileserver_env = "fileserver_smb1"
136 fileserver_env = "fileserver"
137 plantestsuite("samba3.smbtorture_s3.plain.%s" % t, fileserver_env, [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
138 plantestsuite("samba3.smbtorture_s3.crypt_client.%s" % t, "nt4_dc_smb1", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', smbtorture3, "-e", "-l $LOCAL_PATH"])
140 # this is a negative test to verify that the server rejects
141 # access without encryption
142 plantestsuite("samba3.smbtorture_s3.crypt_server.%s" % t, "nt4_dc_smb1", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmpenc', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
143 if t == "CLI_SPLICE":
144 # We must test this against the SMB1 fallback.
145 plantestsuite("samba3.smbtorture_s3.plain.%s" % t, "fileserver_smb1", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH", "-mNT1"])
146 plantestsuite("samba3.smbtorture_s3.plain.%s" % t, "ad_dc_ntvfs", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
149 plantestsuite("samba3.smbtorture_s3.plain.%s" % t, "ad_dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER/tmp', '$DC_USERNAME', '$DC_PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
151 if have_linux_kernel_oplocks:
153 plantestsuite("samba3.smbtorture_s3.plain.%s" % t,
155 [os.path.join(samba3srcdir,
156 "script/tests/test_smbtorture_s3.sh"),
166 # RENAME-ACCESS needs to run against a special share - acl_xattr_ign_sysacl_windows
168 plantestsuite("samba3.smbtorture_s3.plain.%s" % "RENAME-ACCESS", "nt4_dc_smb1", [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"])
169 plantestsuite("samba3.smbtorture_s3.crypt_client.%s" % "RENAME-ACCESS", "nt4_dc_smb1", [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"])
172 tests = ["OPLOCK-CANCEL"]
174 plantestsuite("samba3.smbtorture_s3.plain.%s" % t, "nt4_dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
177 tests = ["MANGLE-ILLEGAL"]
179 plantestsuite("samba3.smbtorture_s3.plain.%s" % t, env, [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/mangle_illegal', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
181 tests = ["RW1", "RW2", "RW3", "SMB2-BASIC"]
183 if t == "SMB2-BASIC":
186 env = "fileserver_smb1"
188 plantestsuite("samba3.smbtorture_s3.vfs_aio_pthread(%s).%s" % (env, t), env, [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/vfs_aio_pthread', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
189 plantestsuite("samba3.smbtorture_s3.vfs_aio_fork(%s).%s" % (env, t), env, [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/vfs_aio_fork', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
191 plantestsuite("samba3.smbtorture_s3.hidenewfiles(fileserver_smb1)",
193 [os.path.join(samba3srcdir,
194 "script/tests/test_smbtorture_s3.sh"),
195 'hide-new-files-timeout',
196 '//$SERVER_IP/hidenewfiles',
204 # MSDFS attribute tests.
206 plantestsuite("samba3.smbtorture_s3.smb2.MSDFS-ATTRIBUTE",
208 [os.path.join(samba3srcdir,
209 "script/tests/test_smbtorture_s3.sh"),
211 '//$SERVER_IP/msdfs-share',
218 plantestsuite("samba3.smbtorture_s3.smb1.MSDFS-ATTRIBUTE",
220 [os.path.join(samba3srcdir,
221 "script/tests/test_smbtorture_s3.sh"),
223 '//$SERVER_IP/msdfs-share',
231 "vfs_aio_pthread_async_dosmode_default1",
232 "vfs_aio_pthread_async_dosmode_default2",
233 "vfs_aio_pthread_async_dosmode_force_sync1",
234 "vfs_aio_pthread_async_dosmode_force_sync2"
237 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"])
238 t = "smb2.compound_find"
239 plansmbtorture4testsuite(t, "simpleserver", "//%s/%s %s" % ('$SERVER_IP', s, ' -U$USERNAME%$PASSWORD'), description=s)
241 posix_tests = ["POSIX", "POSIX-APPEND", "POSIX-SYMLINK-ACL", "POSIX-SYMLINK-EA", "POSIX-OFD-LOCK",
242 "POSIX-STREAM-DELETE", "WINDOWS-BAD-SYMLINK", "POSIX-MKDIR",
243 "POSIX-BLOCKING-LOCK",
245 "POSIX-ACL-SHAREROOT",
252 for t in posix_tests:
253 plantestsuite("samba3.smbtorture_s3.plain.%s" % t, "nt4_dc_smb1", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/posix_share', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
254 plantestsuite("samba3.smbtorture_s3.crypt.%s" % t, "nt4_dc_smb1", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/posix_share', '$USERNAME', '$PASSWORD', smbtorture3, "-e", "-l $LOCAL_PATH"])
263 "LOCAL-string_to_sid",
264 "LOCAL-sid_to_string",
265 "LOCAL-binary_to_sid",
268 "LOCAL-CONVERT-STRING",
269 "LOCAL-CONV-AUTH-INFO",
270 "LOCAL-IDMAP-TDB-COMMON",
271 "LOCAL-MESSAGING-READ1",
272 "LOCAL-MESSAGING-READ2",
273 "LOCAL-MESSAGING-READ3",
274 "LOCAL-MESSAGING-READ4",
275 "LOCAL-MESSAGING-FDPASS1",
276 "LOCAL-MESSAGING-FDPASS2",
277 "LOCAL-MESSAGING-FDPASS2a",
278 "LOCAL-MESSAGING-FDPASS2b",
279 "LOCAL-MESSAGING-SEND-ALL",
280 "LOCAL-PTHREADPOOL-TEVENT",
281 "LOCAL-CANONICALIZE-PATH",
282 "LOCAL-DBWRAP-WATCH1",
283 "LOCAL-DBWRAP-WATCH2",
284 "LOCAL-DBWRAP-WATCH3",
285 "LOCAL-DBWRAP-WATCH4",
286 "LOCAL-DBWRAP-DO-LOCKED1",
296 "LOCAL-NAMEMAP-CACHE1",
297 "LOCAL-IDMAP-CACHE1",
298 "LOCAL-hex_encode_buf",
299 "LOCAL-remove_duplicate_addrs2"]
301 for t in local_tests:
302 plantestsuite("samba3.smbtorture_s3.%s" % t, "none", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//foo/bar', '""', '""', smbtorture3, ""])
304 plantestsuite("samba.vfstest.stream_depot", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/stream-depot/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
305 plantestsuite("samba.vfstest.xattr-tdb-1", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/xattr-tdb-1/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
306 plantestsuite("samba.vfstest.acl", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/vfstest-acl/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
307 plantestsuite("samba.vfstest.catia", "nt4_dc:local", [os.path.join(samba3srcdir, "script/tests/vfstest-catia/run.sh"), binpath("vfstest"), "$PREFIX", configuration])
309 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"])
310 plantestsuite("samba3.blackbox.smbclient_basic.NT1", "nt4_dc_smb1", [os.path.join(samba3srcdir, "script/tests/test_smbclient_basic.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration, "-mNT1"])
311 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"])
312 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"])
313 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"])
314 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"])
316 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])
317 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"]:
318 if "NT1" in options or "LANMAN2" in options:
319 env = "nt4_dc_smb1_done"
322 plantestsuite("samba3.blackbox.smbclient_auth.plain.%s" % (options), env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration, options])
324 for env in ["nt4_dc", "nt4_member", "ad_member", "ad_dc", "ad_dc_ntvfs", "s4member", "fl2000dc"]:
325 plantestsuite("samba3.blackbox.smbclient_machine_auth.plain", "%s:local" % env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_machine_auth.sh"), '$SERVER', smbclient3, configuration])
327 if smb1_env == "ad_dc" or smb1_env == "nt4_dc":
328 smb1_env = smb1_env + "_smb1_done"
329 plantestsuite("samba3.blackbox.smbclient_ntlm.plain NT1", smb1_env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_ntlm.sh"), '$SERVER', '$DC_USERNAME', '$DC_PASSWORD', "never", smbclient3, "NT1", configuration])
330 plantestsuite("samba3.blackbox.smbclient_ntlm.plain SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_ntlm.sh"), '$SERVER', '$DC_USERNAME', '$DC_PASSWORD', "never", smbclient3, "SMB3", configuration])
333 plantestsuite("samba3.blackbox.smbclient_log_basename", "ad_dc", [os.path.join(samba3srcdir, "script/tests/test_smbclient_log_basename.sh"), '$SERVER', smbclient3, '$PREFIX', configuration])
335 for options in ["--option=clientntlmv2auth=no", "--option=clientusespnego=no --option=clientntlmv2auth=no", "--option=clientusespnego=no --option=clientntlmv2auth=no -mNT1", ""]:
336 # don't attempt to run SMB1 tests in nt4_member or ad_member
337 # as these test envs don't support SMB1, use nt4_dc instead
338 environs = ["nt4_member", "ad_member"]
339 if "NT1" in options or "LANMAN2" in options:
340 environs = ["nt4_dc_smb1_done"]
342 plantestsuite("samba3.blackbox.smbclient_auth.plain.%s" % (options), env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration, options])
343 plantestsuite("samba3.blackbox.smbclient_auth.plain.%s.member_creds" % (options), env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$SERVER/$USERNAME', '$PASSWORD', smbclient3, configuration, options])
345 for env in ["nt4_member", "ad_member"]:
346 plantestsuite("samba3.blackbox.smbclient_auth.empty_domain.domain_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '/$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration, options])
347 plantestsuite("samba3.blackbox.smbclient_auth.empty_domain.member_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '/$USERNAME', '$PASSWORD', smbclient3, configuration, options])
348 plantestsuite("samba3.blackbox.smbclient_auth.dot_domain.domain_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', './$DC_USERNAME', '$DC_PASSWORD', smbclient3, configuration, options])
349 plantestsuite("samba3.blackbox.smbclient_auth.dot_domain.member_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', './$USERNAME', '$PASSWORD', smbclient3, configuration, options])
350 plantestsuite("samba3.blackbox.smbclient_auth.upn.domain_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME@$REALM', '$DC_PASSWORD', smbclient3, configuration, options])
351 plantestsuite("samba3.blackbox.smbclient_auth.upn.member_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$USERNAME@$SERVER', '$PASSWORD', smbclient3, configuration, options])
354 plantestsuite("samba3.blackbox.smbspool", env, [os.path.join(samba3srcdir, "script/tests/test_smbspool.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', env])
356 plantestsuite("samba3.blackbox.printing_var_exp", "nt4_dc", [os.path.join(samba3srcdir, "script/tests/test_printing_var_exp.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD'])
358 for env in ["ad_member:local", "nt4_dc:local"]:
359 plantestsuite("samba3.blackbox.smbpasswd", env, [os.path.join(samba3srcdir, "script/tests/test_smbpasswd.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD'])
362 plantestsuite("samba3.blackbox.smbclient_auth.plain.ipv6", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IPV6', '$SERVER/$USERNAME', '$PASSWORD', smbclient3, configuration])
364 for env in ["nt4_member", "ad_member"]:
365 plantestsuite("samba3.blackbox.net_cred_change", "%s:local" % env, [os.path.join(samba3srcdir, "script/tests/test_net_cred_change.sh"), configuration])
368 t = "--krb5auth=$DOMAIN/$DC_USERNAME%$DC_PASSWORD"
369 plantestsuite("samba3.wbinfo_simple.%s" % t, "%s:local" % env, [os.path.join(srcdir(), "nsswitch/tests/test_wbinfo_simple.sh"), t])
370 plantestsuite("samba3.wbinfo_name_lookup", env,
371 [os.path.join(srcdir(),
372 "nsswitch/tests/test_wbinfo_name_lookup.sh"),
373 '$DOMAIN', '$REALM', '$DC_USERNAME'])
376 plantestsuite("samba3.wbinfo_user_info_cached", env,
377 [os.path.join(srcdir(),
378 "nsswitch/tests/test_wbinfo_user_info_cached.sh"),
379 '$DOMAIN', '$REALM', 'joe', 'Secret007', '"Samba Users"', env])
380 plantestsuite("samba3.wbinfo_user_info_cached.trustdom", env,
381 [os.path.join(srcdir(),
382 "nsswitch/tests/test_wbinfo_user_info_cached.sh"),
383 '$TRUST_F_BOTH_DOMAIN', '$TRUST_F_BOTH_REALM', 'joe', 'Secret007', '"Samba Users"', env])
385 env = "ad_member:local"
386 plantestsuite("samba3.wbinfo_user_info", env,
387 [os.path.join(srcdir(),
388 "nsswitch/tests/test_wbinfo_user_info.sh"),
389 '$DOMAIN', '$REALM', '$DOMAIN', 'alice', 'alice', 'jane', 'jane.doe', env])
391 env = "fl2008r2dc:local"
392 plantestsuite("samba3.wbinfo_user_info", env,
393 [os.path.join(srcdir(),
394 "nsswitch/tests/test_wbinfo_user_info.sh"),
395 '$TRUST_DOMAIN', '$TRUST_REALM', '$DOMAIN', 'alice', 'alice', 'jane', 'jane.doe', env])
397 env = "nt4_member:local"
398 plantestsuite("samba3.wbinfo_sids_to_xids", env,
399 [os.path.join(srcdir(),
400 "nsswitch/tests/test_wbinfo_sids_to_xids.sh")])
402 "samba.wbinfo_lookuprids_cache",
404 [os.path.join(samba3srcdir,
405 "script/tests/test_wbinfo_lookuprids_cache.sh")])
408 t = "WBCLIENT-MULTI-PING"
409 plantestsuite("samba3.smbtorture_s3.%s" % t, env, [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//foo/bar', '""', '""', smbtorture3, ""])
410 plantestsuite("samba3.substitutions", env, [os.path.join(samba3srcdir, "script/tests/test_substitutions.sh"), "$SERVER", "alice", "Secret007", "$PREFIX"])
412 for env in ["maptoguest", "simpleserver"]:
413 plantestsuite("samba3.blackbox.smbclient_auth.plain.local_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbclient3, configuration + " --option=clientntlmv2auth=no --option=clientlanmanauth=yes"])
416 plantestsuite("samba3.blackbox.smbclient_auth.plain.bad_username", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', 'notmy$USERNAME', '$PASSWORD', smbclient3, configuration + " --option=clientntlmv2auth=no --option=clientlanmanauth=yes"])
417 plantestsuite("samba3.blackbox.smbclient_ntlm.plain.NT1", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_ntlm.sh"), '$SERVER', '$USERNAME', '$PASSWORD', "baduser", smbclient3, "NT1", configuration])
418 plantestsuite("samba3.blackbox.smbclient_ntlm.plain.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_ntlm.sh"), '$SERVER', '$USERNAME', '$PASSWORD', "baduser", smbclient3, "SMB3", configuration])
421 env = "nt4_dc_smb1_done"
422 plantestsuite("samba3.blackbox.smbclient_s3.NT1.plain", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "NT1"])
424 plantestsuite("samba3.blackbox.smbclient_s3.SMB3.plain", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "SMB3"])
426 for env in ["nt4_member", "ad_member"]:
427 plantestsuite("samba3.blackbox.smbclient_s3.NT1.plain.member_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$SERVER', '$SERVER/$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "NT1"])
428 plantestsuite("samba3.blackbox.smbclient_s3.SMB3.plain.member_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$SERVER', '$SERVER/$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "SMB3"])
430 env = "nt4_dc_smb1_done"
431 plantestsuite("samba3.blackbox.smbclient_s3.NT1.sign", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "NT1", "--signing=required"])
433 plantestsuite("samba3.blackbox.smbclient_s3.SMB3.sign", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "SMB3", "--signing=required"])
435 for env in ["nt4_member", "ad_member"]:
436 plantestsuite("samba3.blackbox.smbclient_s3.NT1.sign.member_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$SERVER', '$SERVER/$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "NT1", "--signing=required"])
437 plantestsuite("samba3.blackbox.smbclient_s3.SMB3.sign.member_creds", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$SERVER', '$SERVER/$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "SMB3", "--signing=required"])
439 env = "nt4_dc_smb1_done"
441 plantestsuite("samba3.blackbox.smbclient_s3.NT1.crypt", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "NT1", "-e"])
443 plantestsuite("samba3.blackbox.smbclient_s3.SMB3.crypt", env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "SMB3", "-e"])
445 for env in ["fileserver"]:
446 plantestsuite("samba3.blackbox.preserve_case.NT1", env + "_smb1_done", [os.path.join(samba3srcdir, "script/tests/test_preserve_case.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, "NT1"])
447 plantestsuite("samba3.blackbox.preserve_case.SMB2+", env, [os.path.join(samba3srcdir, "script/tests/test_preserve_case.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, '"SMB2 SMB3"'])
448 plantestsuite("samba3.blackbox.dfree_command.NT1", env + "_smb1_done", [os.path.join(samba3srcdir, "script/tests/test_dfree_command.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, "NT1"])
449 plantestsuite("samba3.blackbox.dfree_command.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_dfree_command.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, "SMB3"])
450 plantestsuite("samba3.blackbox.dfree_quota.NT1", env + "_smb1_done", [os.path.join(samba3srcdir, "script/tests/test_dfree_quota.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3, smbcquotas, smbcacls, "NT1"])
451 plantestsuite("samba3.blackbox.dfree_quota.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_dfree_quota.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3, smbcquotas, smbcacls, "SMB3"])
452 plantestsuite("samba3.blackbox.smbcquotas", env, [os.path.join(samba3srcdir, "script/tests/test_smbcquota.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbcquotas])
453 plantestsuite("samba3.blackbox.valid_users", env, [os.path.join(samba3srcdir, "script/tests/test_valid_users.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3])
454 plantestsuite("samba3.blackbox.force_create_mode", env, [os.path.join(samba3srcdir, "script/tests/test_force_create_mode.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', env, smbclient3])
455 plantestsuite("samba3.blackbox.dropbox", env, [os.path.join(samba3srcdir, "script/tests/test_dropbox.sh"), '$SERVER', '$DOMAIN', 'gooduser', '$PASSWORD', '$PREFIX', env, smbclient3])
456 plantestsuite("samba3.blackbox.offline", env, [os.path.join(samba3srcdir, "script/tests/test_offline.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/offline', smbclient3])
457 plantestsuite("samba3.blackbox.shadow_copy2.NT1", env + "_smb1_done", [os.path.join(samba3srcdir, "script/tests/test_shadow_copy.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/shadow', smbclient3, '-m', 'NT1'])
458 plantestsuite("samba3.blackbox.shadow_copy2.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_shadow_copy.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/shadow', smbclient3, '-m', 'SMB3'])
459 plantestsuite("samba3.blackbox.shadow_copy_torture", env, [os.path.join(samba3srcdir, "script/tests/test_shadow_copy_torture.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/shadow', smbtorture4])
460 plantestsuite("samba3.blackbox.smbclient.forceuser_validusers", env, [os.path.join(samba3srcdir, "script/tests/test_forceuser_validusers.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3])
461 plantestsuite("samba3.blackbox.smbget", env, [os.path.join(samba3srcdir, "script/tests/test_smbget.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', 'smbget_user', '$PASSWORD', '$LOCAL_PATH/smbget', smbget])
462 plantestsuite("samba3.blackbox.netshareenum", env, [os.path.join(samba3srcdir, "script/tests/test_shareenum.sh"), '$SERVER', '$USERNAME', '$PASSWORD', rpcclient])
463 plantestsuite("samba3.blackbox.acl_xattr.NT1", env + "_smb1_done", [os.path.join(samba3srcdir, "script/tests/test_acl_xattr.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, '-mNT1'])
464 plantestsuite("samba3.blackbox.acl_xattr.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_acl_xattr.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, '-mSMB3'])
465 plantestsuite("samba3.blackbox.smb2.not_casesensitive", env, [os.path.join(samba3srcdir, "script/tests/test_smb2_not_casesensitive.sh"), '//$SERVER/tmp', '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3])
466 plantestsuite("samba3.blackbox.inherit_owner.default.NT1", env + "_smb1_done", [os.path.join(samba3srcdir, "script/tests/test_inherit_owner.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, net, 'tmp', '0', '0', '-m', 'NT1'])
467 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'])
468 plantestsuite("samba3.blackbox.inherit_owner.full.NT1", env + "_smb1_done", [os.path.join(samba3srcdir, "script/tests/test_inherit_owner.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, net, 'inherit_owner', '1', '1', '-m', 'NT1'])
469 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'])
470 plantestsuite("samba3.blackbox.inherit_owner.unix.NT1", env + "_smb1_done", [os.path.join(samba3srcdir, "script/tests/test_inherit_owner.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3, smbcacls, net, 'inherit_owner_u', '0', '1', '-m', 'NT1'])
471 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'])
472 plantestsuite("samba3.blackbox.large_acl.NT1", env + "_smb1_done", [os.path.join(samba3srcdir, "script/tests/test_large_acl.sh"), '$SERVER', '$USERNAME', '$PASSWORD', smbclient3, smbcacls, '-m', 'NT1'])
473 plantestsuite("samba3.blackbox.large_acl.SMB3", env, [os.path.join(samba3srcdir, "script/tests/test_large_acl.sh"), '$SERVER', '$USERNAME', '$PASSWORD', smbclient3, smbcacls, '-m', 'SMB3'])
474 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'])
475 plantestsuite("samba3.blackbox.homes", env, [os.path.join(samba3srcdir, "script/tests/test_homes.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', '$PREFIX', smbclient3, configuration])
476 plantestsuite("samba3.blackbox.force_group_change", env,
477 [os.path.join(samba3srcdir, "script/tests/test_force_group_change.sh"),
478 '$SERVER', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3, smbcontrol])
479 plantestsuite("samba3.blackbox.zero-data", env,
480 [os.path.join(samba3srcdir, "script/tests/test_zero_data.sh"),
481 '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH'])
482 plantestsuite("samba3.blackbox.timestamps", env,
483 [os.path.join(samba3srcdir, "script/tests/test_timestamps.sh"),
484 '$SERVER_IP', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3])
485 plantestsuite("samba3.blackbox.smb1_system_security", env + "_smb1_done",
486 [os.path.join(samba3srcdir, "script/tests/test_smb1_system_security.sh"),
487 '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbtorture3, net, 'tmp'])
488 plantestsuite("samba3.blackbox.sacl_get_set", env,
489 [os.path.join(samba3srcdir, "script/tests/test_sacl_set_get.sh"),
490 '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbtorture3, net, 'tmp'])
491 plantestsuite("samba3.blackbox.NT1.shadow_copy_torture", env + "_smb1_done",
492 [os.path.join(samba3srcdir, "script/tests/test_smb1_shadow_copy_torture.sh"),
493 '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$LOCAL_PATH/shadow', smbtorture4])
494 plantestsuite("samba3.blackbox.smbclient_iconv.SMB2", env,
495 [os.path.join(samba3srcdir, "script/tests/test_smbclient_iconv.sh"),
496 '$SERVER', '$SERVER_IP', 'bad_iconv', '$USERNAME', '$PASSWORD', smbclient3])
497 plantestsuite("samba3.blackbox.smbclient_iconv.NT1", env + "_smb1_done",
498 [os.path.join(samba3srcdir, "script/tests/test_smbclient_iconv.sh"),
499 '$SERVER', '$SERVER_IP', 'bad_iconv', '$USERNAME', '$PASSWORD', smbclient3, '-mNT1'])
500 plantestsuite("samba3.blackbox.smbclient_iconv.CORE", env + "_smb1_done",
501 [os.path.join(samba3srcdir, "script/tests/test_smbclient_iconv.sh"),
502 '$SERVER', '$SERVER_IP', 'bad_iconv', '$USERNAME', '$PASSWORD', smbclient3, '-mCORE'])
508 # Test smbclient/tarmode
509 plantestsuite("samba3.blackbox.smbclient_tarmode.NT1", env + "_smb1_done",
510 [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.sh"),
511 '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD',
512 '$LOCAL_PATH/tarmode/smbclient_tar', '$PREFIX', smbclient3, configuration, "-mNT1"])
513 plantestsuite("samba3.blackbox.smbclient_tarmode.SMB3", env,
514 [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.sh"),
515 '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD',
516 '$LOCAL_PATH/tarmode/smbclient_tar', '$PREFIX', smbclient3, configuration, "-mSMB3"])
518 # Test suite for new smbclient/tar with libarchive (GSoC 13)
519 plantestsuite("samba3.blackbox.smbclient_tar.NT1", env + "_smb1_done",
520 [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.pl"),
521 '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tarmode2',
522 '-u', '$USERNAME', '-p', '$PASSWORD', '-l', '$LOCAL_PATH/tarmode2',
523 '-d', 'smbclient_tar.NT1', '-b', smbclient3,
524 '--subunit', '--', configuration, '-mNT1'])
525 plantestsuite("samba3.blackbox.smbclient_tar.SMB3", env,
526 [os.path.join(samba3srcdir, "script/tests/test_smbclient_tarmode.pl"),
527 '-n', '$SERVER', '-i', '$SERVER_IP', '-s', 'tarmode2',
528 '-u', '$USERNAME', '-p', '$PASSWORD', '-l', '$LOCAL_PATH/tarmode2',
529 '-d', 'smbclient_tar.SMB3', '-b', smbclient3,
530 '--subunit', '--', configuration, '-mSMB3'])
532 for env in ["fileserver:local"]:
533 plantestsuite("samba3.blackbox.net_usershare", env, [os.path.join(samba3srcdir, "script/tests/test_net_usershare.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbclient3])
535 plantestsuite("samba3.blackbox.smbstatus", env, [os.path.join(samba3srcdir, "script/tests/test_smbstatus.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, smbstatus, configuration, "SMB3"])
536 plantestsuite("samba3.blackbox.net_registry_import", env, [os.path.join(samba3srcdir, "script/tests/test_net_registry_import.sh"), '$SERVER', '$LOCAL_PATH', '$USERNAME', '$PASSWORD'])
538 # TODO encrypted against member, with member creds, and with DC creds
539 plantestsuite("samba3.blackbox.net.misc NT1", "ad_dc_smb1_done:local",
540 [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
541 scriptdir, "$SMB_CONF_PATH", net, configuration, "NT1"])
542 plantestsuite("samba3.blackbox.net.misc SMB3", "ad_dc:local",
543 [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
544 scriptdir, "$SMB_CONF_PATH", net, configuration, "SMB3"])
545 plantestsuite("samba3.blackbox.net.local.registry", "nt4_dc:local",
546 [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
547 scriptdir, "$SMB_CONF_PATH", net, configuration])
548 plantestsuite("samba3.blackbox.net.registry.check", "nt4_dc:local",
549 [os.path.join(samba3srcdir, "script/tests/test_net_registry_check.sh"),
550 scriptdir, "$SMB_CONF_PATH", net, configuration, dbwrap_tool])
551 plantestsuite("samba3.blackbox.net.rpc.registry", "nt4_dc",
552 [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
553 scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
555 plantestsuite("samba3.blackbox.net.local.registry.roundtrip", "nt4_dc:local",
556 [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
557 scriptdir, "$SMB_CONF_PATH", net, configuration])
558 plantestsuite("samba3.blackbox.net.rpc.registry.roundtrip", "nt4_dc",
559 [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
560 scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
562 plantestsuite("samba3.blackbox.net.local.conf", "nt4_dc:local",
563 [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
564 scriptdir, "$SMB_CONF_PATH", net, configuration])
565 plantestsuite("samba3.blackbox.net.rpc.conf", "nt4_dc",
566 [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
567 scriptdir, "$SMB_CONF_PATH", net, configuration, 'rpc'])
570 plantestsuite("samba3.blackbox.testparm", "nt4_dc:local",
571 [os.path.join(samba3srcdir, "script/tests/test_testparm_s3.sh"),
575 "samba3.pthreadpool", "none",
576 [os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
578 if with_pthreadpool and have_ldwrap:
579 plantestsuite("samba3.pthreadpool_cmocka", "none",
580 [os.path.join(bindir(), "pthreadpooltest_cmocka")])
583 plantestsuite("samba3.libwbclient_threads",
585 [os.path.join(samba3srcdir,
586 "script/tests/test_libwbclient_threads.sh"),
587 "$DOMAIN", "$DC_USERNAME"])
589 plantestsuite("samba3.test_nfs4_acl", "none",
590 [os.path.join(bindir(), "test_nfs4_acls"),
593 plantestsuite("samba3.test_vfs_full_audit", "none",
594 [os.path.join(bindir(), "test_vfs_full_audit"),
597 plantestsuite("samba3.test_vfs_posixacl", "none",
598 [os.path.join(bindir(), "test_vfs_posixacl"),
601 if is_module_enabled("vfs_gpfs"):
602 plantestsuite("samba3.test_vfs_gpfs", "none",
603 [os.path.join(bindir(), "test_vfs_gpfs")])
606 "samba3.resolvconf", "none",
607 [os.path.join(samba3srcdir, "script/tests/test_resolvconf.sh")])
609 plantestsuite("samba3.tevent_glib_glue", "none",
610 [os.path.join(samba3srcdir, "script/tests/test_tevent_glib_glue.sh")])
612 plantestsuite("samba3.async_req", "nt4_dc",
613 [os.path.join(samba3srcdir, "script/tests/test_async_req.sh")])
617 base = ["base.attr", "base.charset", "base.chkpath", "base.createx_access", "base.defer_open", "base.delaywrite", "base.delete",
618 "base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
619 "base.disconnect", "base.fdpass", "base.lock",
620 "base.mangle", "base.negnowait", "base.ntdeny1",
621 "base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
622 "base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
623 "base.xcopy", "base.samba3error"]
625 raw = ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
626 "raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock",
627 "raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
628 "raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
629 "raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename", "raw.session",
630 "raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
631 "raw.samba3rootdirfid", "raw.samba3rootdirfid2", "raw.sfileinfo.end-of-file",
632 "raw.bench-oplock", "raw.bench-lock", "raw.bench-open", "raw.bench-tcon",
633 "raw.samba3checkfsp", "raw.samba3closeerr", "raw.samba3oplocklogoff", "raw.samba3badnameblob"]
635 smb2 = smbtorture4_testsuites("smb2.")
637 rpc = ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
638 "rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
639 "rpc.samba3.getaliasmembership-0",
640 "rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
641 "rpc.samba3.smb1-pipe-name", "rpc.samba3.smb2-pipe-name",
642 "rpc.samba3.smb-reauth1", "rpc.samba3.smb-reauth2",
643 "rpc.samba3.lsa_over_netlogon", "rpc.samba3.pipes_supported_interfaces",
644 "rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
645 "rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
646 "rpc.spoolss.driver",
647 "rpc.lsa", "rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
648 "rpc.lsa.privileges", "rpc.lsa.secrets",
650 "rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
651 "rpc.samr.passwords.pwdlastset", "rpc.samr.passwords.lockout", "rpc.samr.passwords.badpwdcount", "rpc.samr.large-dc", "rpc.samr.machine.auth",
652 "rpc.samr.priv", "rpc.samr.passwords.validate", "rpc.samr.handletype",
653 "rpc.netlogon.admin",
654 "rpc.netlogon.zerologon",
655 "rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.schannel_anon_setpw", "rpc.join", "rpc.bind",
656 "rpc.initshutdown", "rpc.wkssvc", "rpc.srvsvc"]
658 local = ["local.nss"]
660 idmap = ["idmap.rfc2307", "idmap.alloc", "idmap.rid", "idmap.ad"]
662 rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
664 unix = ["unix.info2", "unix.whoami"]
671 "vfs.fruit_netatalk",
673 "vfs.fruit_timemachine",
674 "vfs.fruit_conversion",
678 tests = base + raw + smb2 + rpc + unix + local + rap + nbt + idmap + vfs
681 if t == "base.delaywrite" or t == "base.deny1" or t == "base.deny2":
682 plansmbtorture4testsuite(t, "fileserver_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD --maximum-runtime=900')
683 elif t == "base.createx_access":
684 plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD -k yes --maximum-runtime=900')
686 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
687 plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
688 elif t == "winbind.pac":
689 plansmbtorture4testsuite(t, "ad_member:local", '//$SERVER/tmp --realm=$REALM --machine-pass --option=torture:addc=$DC_SERVER', description="machine account")
690 elif t == "unix.whoami":
691 plansmbtorture4testsuite(t, "nt4_member:local", '//$SERVER/tmp --machine-pass', description="machine account")
692 plansmbtorture4testsuite(t, "ad_dc_smb1:local", '//$SERVER/tmp --machine-pass', description="machine account")
693 plansmbtorture4testsuite(t, "ad_member:local", '//$SERVER/tmp --machine-pass --option=torture:addc=$DC_SERVER', description="machine account")
694 plansmbtorture4testsuite(t, "ad_dc_smb1:local", '//$SERVER/tmp --machine-pass --option=torture:addc=$DC_SERVER', description="machine account")
695 for env in ["nt4_dc_smb1", "nt4_member"]:
696 plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
697 plansmbtorture4testsuite(t, env, '//$SERVER/tmpguest -U%', description='anonymous connection')
698 for env in ["ad_dc_smb1", "ad_member"]:
699 plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$DC_USERNAME@$REALM%$DC_PASSWORD --option=torture:addc=$DC_SERVER')
700 plansmbtorture4testsuite(t, env, '//$SERVER/tmp -k yes -U$DC_USERNAME@$REALM%$DC_PASSWORD --option=torture:addc=$DC_SERVER', description='kerberos connection')
701 plansmbtorture4testsuite(t, env, '//$SERVER/tmpguest -U% --option=torture:addc=$DC_SERVER', description='anonymous connection')
702 plansmbtorture4testsuite(t, env, '//$SERVER/tmp -k no -U$DC_USERNAME@$REALM%$DC_PASSWORD', description='ntlm user@realm')
703 elif t == "raw.samba3posixtimedlock":
704 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc_smb1/share')
705 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/brl_delay_inject1 -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc_smb1/share',
706 description="brl_delay_inject1")
707 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/brl_delay_inject2 -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc_smb1/share',
708 description="brl_delay_inject2")
709 plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/ad_dc_smb1/share')
710 elif t == "smb2.samba3misc":
711 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
712 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/brl_delay_inject1 -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share',
713 description="brl_delay_inject1")
714 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/brl_delay_inject2 -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share',
715 description="brl_delay_inject2")
716 plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/ad_dc/share')
717 elif t == "raw.chkpath":
718 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
719 plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
720 elif t == "raw.samba3hide" or t == "raw.samba3checkfsp" or t == "raw.samba3closeerr":
721 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
722 plansmbtorture4testsuite(t, "fileserver_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
723 plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
724 elif t == "raw.session":
725 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'plain')
726 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmpenc -U$USERNAME%$PASSWORD', 'enc')
727 plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -k no -U$USERNAME%$PASSWORD', 'ntlm')
728 plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -k yes -U$USERNAME%$PASSWORD', 'krb5')
729 elif t == "smb2.session":
730 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'plain')
731 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmpenc -U$USERNAME%$PASSWORD', 'enc')
732 plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -k no -U$USERNAME%$PASSWORD', 'ntlm')
733 plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -k yes -U$USERNAME%$PASSWORD', 'krb5')
734 # Certain tests fail when run against ad_member with MIT kerberos because the private krb5.conf overrides the provisioned lib/krb5.conf,
735 # ad_member_idmap_rid sets "create krb5.conf = no"
736 plansmbtorture4testsuite(t, "ad_member_idmap_rid", '//$SERVER/tmp -k yes -U$DC_USERNAME@$REALM%$DC_PASSWORD', 'krb5')
738 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'over ncacn_np ')
739 plansmbtorture4testsuite(t, "nt4_dc", 'ncacn_ip_tcp:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
740 plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'over ncacn_np ')
741 plansmbtorture4testsuite(t, "ad_dc", 'ncacn_ip_tcp:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
742 elif t == "rpc.mdssvc":
743 plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:no_spotlight_localdir=$SELFTEST_PREFIX/fileserver/share')
744 elif t == "rpc.samr.passwords.validate":
745 plansmbtorture4testsuite(t, "nt4_dc", 'ncacn_ip_tcp:$SERVER_IP[seal] -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
746 plansmbtorture4testsuite(t, "ad_dc", 'ncacn_ip_tcp:$SERVER_IP[seal] -U$USERNAME%$PASSWORD', 'over ncacn_ip_tcp ')
747 elif t == "smb2.durable-open" or t == "smb2.durable-v2-open" or t == "smb2.replay" or t == "smb2.durable-v2-delay":
748 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/durable -U$USERNAME%$PASSWORD')
749 plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/durable -U$USERNAME%$PASSWORD')
750 elif t == "base.rw1":
751 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
752 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/valid-users-tmp -U$USERNAME%$PASSWORD')
753 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/write-list-tmp -U$USERNAME%$PASSWORD')
754 plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
755 elif t == "idmap.rfc2307":
756 plantestsuite(t, "ad_member_rfc2307",
757 [os.path.join(samba3srcdir,
758 "../nsswitch/tests/test_idmap_rfc2307.sh"),
760 'Administrator', '2000000',
762 '"Domain Users"', '2000002',
763 'DnsAdmins', '2000003',
765 'ou=idmap,dc=samba,dc=example,dc=com',
766 '$DC_SERVER', '$DC_USERNAME', '$DC_PASSWORD'])
767 elif t == "idmap.alloc":
768 plantestsuite(t, "ad_member_rfc2307", [os.path.join(samba3srcdir, "../nsswitch/tests/test_idmap_nss.sh"), '$DOMAIN'])
769 elif t == "idmap.rid":
770 plantestsuite(t, "ad_member_idmap_rid", [os.path.join(samba3srcdir, "../nsswitch/tests/test_idmap_rid.sh"), '$DOMAIN', '2000000'])
771 elif t == "idmap.ad":
772 plantestsuite(t, "ad_member_idmap_ad", [os.path.join(samba3srcdir, "../nsswitch/tests/test_idmap_ad.sh"), '$DOMAIN', '$DC_SERVER', '$DC_PASSWORD', '$TRUST_DOMAIN', '$TRUST_SERVER', '$TRUST_PASSWORD'])
773 elif t == "raw.acls":
774 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
775 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_simple_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-simple-40')
776 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_special_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-special-40')
777 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_simple_41 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-simple-41')
778 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_xdr_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-xdr-40')
779 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_xdr_41 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-xdr-41')
780 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_nfs_40 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-nfs-40')
781 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/nfs4acl_nfs_41 -U$USERNAME%$PASSWORD', description='nfs4acl_xattr-nfs-41')
782 plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
783 elif t == "smb2.ioctl":
784 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/fs_specific -U$USERNAME%$PASSWORD', 'fs_specific')
785 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
786 plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
787 elif t == "smb2.lock":
788 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
789 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
790 elif t == "raw.lock" or t == "base.lock":
791 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
792 elif t == "raw.read":
793 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
794 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
795 plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
796 elif t == "raw.search":
797 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
798 # test the dirsort module.
799 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmpsort -U$USERNAME%$PASSWORD')
800 plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
801 elif t == "vfs.fruit":
802 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')
803 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')
804 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')
805 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_delete_empty_adfiles -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share --option=torture:share2=vfs_wo_fruit', 'fruit_delete_empty_adfiles')
806 elif t == "vfs.fruit_netatalk":
807 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_xattr -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
808 elif t == "vfs.fruit_timemachine":
809 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_timemachine -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
810 elif t == "vfs.fruit_file_id":
811 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_zero_fileid -U$USERNAME%$PASSWORD')
812 elif t == "vfs.fruit_conversion":
813 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:share2=vfs_fruit_wipe_intentionally_left_blank_rfork --option=torture:delete_empty_adfiles=false', 'wipe_intentionally_left_blank_rfork')
814 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:share2=vfs_fruit_delete_empty_adfiles --option=torture:delete_empty_adfiles=true', 'delete_empty_adfiles')
815 elif t == "vfs.unfruit":
816 creds = '-U$USERNAME%$PASSWORD'
817 share2 = '--option=torture:share2=tmp'
818 netopt = '--option=torture:net=%s' % net
819 shareopt = '--option=torture:sharename'
821 plansmbtorture4testsuite(t, "nt4_dc:local", '//$SERVER_IP/vfs_fruit %s %s %s %s=%s' % (creds, share2, netopt, shareopt, 'vfs_fruit'), 'metadata_netatalk')
822 plansmbtorture4testsuite(t, "nt4_dc:local", '//$SERVER_IP/vfs_fruit_metadata_stream %s %s %s %s=%s' % (creds, share2, netopt, shareopt, 'vfs_fruit_metadata_stream'), 'metadata_stream')
823 plansmbtorture4testsuite(t, "nt4_dc:local", '//$SERVER_IP/vfs_fruit_stream_depot %s %s %s %s=%s' % (creds, share2, netopt, shareopt, 'vfs_fruit_stream_depot'), 'streams_depot')
824 elif t == "rpc.schannel_anon_setpw":
825 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$%', description="anonymous password set")
826 plansmbtorture4testsuite(t, "nt4_dc_schannel", '//$SERVER_IP/tmp -U$%', description="anonymous password set (schannel enforced server-side)")
827 plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$%', description="anonymous password set")
828 elif t == "local.nss":
829 for env in ["nt4_dc:local", "ad_member:local", "nt4_member:local", "ad_dc:local"]:
830 plansmbtorture4testsuite(t, env, '//$SERVER/tmp -U$USERNAME%$PASSWORD')
831 elif t == "smb2.change_notify_disabled":
832 plansmbtorture4testsuite(t, "simpleserver", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
833 elif t == "smb2.notify" or t == "raw.notify" or t == "smb2.oplock" or t == "raw.oplock":
835 if t == "raw.notify" or t == "raw.oplock":
836 tmp_env = "nt4_dc_smb1"
837 # These tests are a little slower so don't duplicate them with ad_dc
838 plansmbtorture4testsuite(t, tmp_env, '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --signing=required')
839 elif t == "smb2.dosmode":
840 plansmbtorture4testsuite(t, "simpleserver", '//$SERVER/dosmode -U$USERNAME%$PASSWORD')
841 elif t == "smb2.kernel-oplocks":
842 if have_linux_kernel_oplocks:
843 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER/kernel_oplocks -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/nt4_dc/share')
844 elif t == "smb2.notify-inotify":
846 plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
847 elif t == "vfs.acl_xattr":
848 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
849 elif t == "smb2.compound_find":
850 plansmbtorture4testsuite(t, "fileserver", '//$SERVER/compound_find -U$USERNAME%$PASSWORD')
851 plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
852 elif t == "rpc.samr.users.privileges":
853 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:nt4_dc=true')
854 plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
855 elif t == "smb2.compound":
856 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
857 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio -U$USERNAME%$PASSWORD', 'aio')
858 plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
859 elif t == "rpc.samba3.netlogon" or t == "rpc.samba3.sessionkey":
860 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=torture:wksname=samba3rpctest')
861 plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD --option=torture:wksname=samba3rpctest')
862 elif t == "smb2.streams":
863 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
864 plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
865 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/streams_xattr -U$USERNAME%$PASSWORD', 'streams_xattr')
866 elif t == "smb2.aio_delay":
867 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/aio_delay_inject -U$USERNAME%$PASSWORD')
868 elif t == "smb2.delete-on-close-perms":
869 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
870 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/delete_readonly -U$USERNAME%$PASSWORD --option=torture:delete_readonly=true')
871 plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
872 elif t == "smb2.fileid":
873 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/vfs_fruit_xattr -U$USERNAME%$PASSWORD')
874 elif t == "rpc.wkssvc":
875 plansmbtorture4testsuite(t, "ad_member", '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
876 elif t == "rpc.srvsvc":
877 plansmbtorture4testsuite(t, "ad_member", '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
878 plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
879 elif t == "rpc.samba3.lsa_over_netlogon":
880 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
881 elif t == "rpc.samba3.pipes_supported_interfaces":
882 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
883 plansmbtorture4testsuite(t, "ad_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
884 elif t == "rpc.spoolss.notify":
885 plansmbtorture4testsuite(t, "ad_member", '//$SERVER_IP/tmp -U$DC_USERNAME%$DC_PASSWORD')
886 elif (t in base and t != "base.charset") \
887 or (t in rap and t != "rap.printing") \
889 or (t in ["rpc.authcontext",
892 "rpc.samba3.getusername",
893 "rpc.samba3.sharesec",
894 "rpc.samba3.smb1-pipe-name",
895 "rpc.samba3.smb-reauth1",
896 "rpc.samba3.smb-reauth2",
897 "rpc.samba3.spoolss",
898 "rpc.samba3.wkssvc",]) \
899 or (t in ["raw.close",
905 "raw.samba3badnameblob",
907 "raw.samba3caseinsensitive",
908 "raw.samba3oplocklogoff",
909 "raw.samba3posixtimedlock",
910 "raw.samba3rootdirfid",
911 "raw.samba3rootdirfid2",
914 "raw.sfileinfo.end-of-file",
915 "raw.sfileinfo.rename",
919 plansmbtorture4testsuite(t, "nt4_dc_smb1", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
920 plansmbtorture4testsuite(t, "ad_dc_smb1", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
921 elif t in ["base.mangle", "base.tcon", "raw.mkdir"]:
922 plansmbtorture4testsuite(t, "nt4_dc_smb1_done", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
923 plansmbtorture4testsuite(t, "ad_dc_smb1_done", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
925 plansmbtorture4testsuite(t, "nt4_dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
926 plansmbtorture4testsuite(t, "ad_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD')
929 "idmap_ad.ticket_expiry",
930 "ad_member_idmap_ad:local",
931 [os.path.join(samba3srcdir, "../nsswitch/tests/test_ticket_expiry.sh"),
934 plansmbtorture4testsuite(
939 test = 'rpc.lsa.lookupsids'
940 auth_options = ["", "ntlm", "spnego", "spnego,ntlm", "spnego,smb1", "spnego,smb2"]
941 signseal_options = ["", ",connect", ",packet", ",sign", ",seal"]
942 endianness_options = ["", ",bigendian"]
943 for s in signseal_options:
944 for e in endianness_options:
945 for a in auth_options:
946 binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
947 options = binding_string + " -U$USERNAME%$PASSWORD"
949 plansmbtorture4testsuite(test, "nt4_dc_smb1_done", options, 'over ncacn_np with [%s%s%s] ' % (a, s, e))
951 plansmbtorture4testsuite(test, "nt4_dc", options, 'over ncacn_np with [%s%s%s] ' % (a, s, e))
952 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"),
953 "none", options, configuration])
955 # We should try more combinations in future, but this is all
956 # the pre-calculated credentials cache supports at the moment
958 # As the ktest env requires SMB3_00 we need to use "smb2" until
959 # dcerpc client code in smbtorture support autonegotiation
960 # of any smb dialect.
963 binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
964 options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
965 plansmbtorture4testsuite(test, "ktest", options, 'krb5 with old ccache ncacn_np with [%s%s%s] ' % (a, s, e))
967 options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
968 plansmbtorture4testsuite(test, "ktest", options, 'krb5 ncacn_np with [%s%s%s] ' % (a, s, e))
970 auth_options2 = ["krb5", "spnego,krb5"]
971 for a in auth_options2:
972 binding_string = "ncacn_np:$SERVER[%s%s%s]" % (a, s, e)
974 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"),
975 "$PREFIX/ktest/krb5_ccache-3", binding_string, "-k", configuration])
977 plantestsuite("samba3.blackbox.rpcclient_samlogon", "ad_member:local", [os.path.join(samba3srcdir, "script/tests/test_rpcclient_samlogon.sh"),
978 "$DC_USERNAME", "$DC_PASSWORD", "ncacn_np:$DC_SERVER", configuration])
979 plantestsuite("samba3.blackbox.sharesec", "simpleserver:local",
980 [os.path.join(samba3srcdir, "script/tests/test_sharesec.sh"),
981 configuration, os.path.join(bindir(), "sharesec"),
982 os.path.join(bindir(), "net"), "tmp"])
984 plantestsuite("samba3.blackbox.close-denied-share", "simpleserver:local",
985 [os.path.join(samba3srcdir,
986 "script/tests/test_close_denied_share.sh"),
988 os.path.join(bindir(), "sharesec"),
989 os.path.join(bindir(), "smbclient"),
990 os.path.join(bindir(), "smbcontrol"),
994 plantestsuite("samba3.blackbox.force-close-share", "simpleserver:local",
995 [os.path.join(samba3srcdir,
996 "script/tests/test_force_close_share.sh"),
998 os.path.join(bindir(), "smbclient"),
999 os.path.join(bindir(), "smbcontrol"),
1002 '$PREFIX/force-close-share'])
1004 plantestsuite("samba3.blackbox.open-eintr", "simpleserver:local",
1005 [os.path.join(samba3srcdir,
1006 "script/tests/test_open_eintr.sh"),
1008 os.path.join(bindir(), "smbclient"),
1009 os.path.join(bindir(), "smbcontrol"),
1013 plantestsuite("samba3.blackbox.netfileenum", "simpleserver:local",
1014 [os.path.join(samba3srcdir,
1015 "script/tests/test_netfileenum.sh"),
1016 os.path.join(bindir(), "smbclient"),
1017 os.path.join(bindir(), "rpcclient"),
1018 os.path.join(bindir(), "net"),
1022 plantestsuite("samba3.blackbox.net_tdb", "simpleserver:local",
1023 [os.path.join(samba3srcdir, "script/tests/test_net_tdb.sh"),
1024 smbclient3, '$SERVER', 'tmp', '$USERNAME', '$PASSWORD',
1025 configuration, '$LOCAL_PATH', '$LOCK_DIR'])
1027 plantestsuite("samba3.blackbox.aio-outstanding", "simpleserver:local",
1028 [os.path.join(samba3srcdir,
1029 "script/tests/test_aio_outstanding.sh"),
1031 os.path.join(bindir(), "smbclient"),
1033 "aio_delay_inject"])
1035 plantestsuite("samba3.blackbox.smbd_error", "simpleserver:local",
1036 [os.path.join(samba3srcdir, "script/tests/test_smbd_error.sh")])
1038 plantestsuite("samba3.blackbox.smbd_no_krb5", "ad_member:local",
1039 [os.path.join(samba3srcdir, "script/tests/test_smbd_no_krb5.sh"),
1040 smbclient3, '$SERVER', "$DC_USERNAME", "$DC_PASSWORD", "$PREFIX"])
1042 plantestsuite("samba3.blackbox.winbind_ignore_domain", "ad_member_idmap_ad:local",
1043 [os.path.join(samba3srcdir, "script/tests/test_winbind_ignore_domains.sh")])
1045 plantestsuite("samba3.blackbox.durable_v2_delay", "simpleserver:local",
1046 [os.path.join(samba3srcdir, "script/tests/test_durable_handle_reconnect.sh")])
1048 plantestsuite("samba3.blackbox.net_cache_samlogon", "ad_member:local",
1049 [os.path.join(samba3srcdir, "script/tests/test_net_cache_samlogon.sh"),
1050 '$SERVER', 'tmp', '$DC_USERNAME', '$DC_PASSWORD'])
1052 plantestsuite("samba3.blackbox.net_rpc_share_allowedusers", "nt4_dc",
1053 [os.path.join(samba3srcdir, "script/tests/test_net_rpc_share_allowedusers.sh"),
1054 "$SERVER", "$USERNAME", "$PASSWORD", "$PREFIX/net_rpc_share_allowedusers",
1057 plantestsuite("samba3.blackbox.net_dom_join_fail_dc", "nt4_dc",
1058 [os.path.join(samba3srcdir, "script/tests/test_net_dom_join_fail_dc.sh"),
1059 "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_dom_join_fail_dc",
1061 plantestsuite("samba3.blackbox.net_rpc_join", "nt4_dc",
1062 [os.path.join(samba3srcdir, "script/tests/test_net_rpc_join.sh"),
1063 "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_rpc_join",
1065 plantestsuite("samba3.blackbox.net_rpc_oldjoin", "nt4_dc:local",
1066 [os.path.join(samba3srcdir, "script/tests/test_net_rpc_oldjoin.sh"),
1067 "$SERVER", "$PREFIX/net_rpc_oldjoin",
1069 plantestsuite("samba3.blackbox.net_rpc_join_creds", "nt4_dc",
1070 [os.path.join(samba3srcdir, "script/tests/test_net_rpc_join_creds.sh"),
1071 "$DOMAIN", "$USERNAME", "$PASSWORD", "$SERVER", "$PREFIX/net_rpc_join_creds",
1074 plantestsuite("samba3.blackbox.rpcclient_srvsvc", "simpleserver",
1075 [os.path.join(samba3srcdir, "script/tests/test_rpcclientsrvsvc.sh"),
1076 "$USERNAME", "$PASSWORD", "$SERVER",
1077 os.path.join(bindir(), "rpcclient"), "tmp"])
1079 plantestsuite("samba3.blackbox.rpcclient_lookup", "simpleserver",
1080 [os.path.join(samba3srcdir, "script/tests/test_rpcclient_lookup.sh"),
1081 "$USERNAME", "$PASSWORD", "$SERVER",
1082 os.path.join(bindir(), "rpcclient")])
1084 plantestsuite("samba3.blackbox.rpcclient.pw-nt-hash", "simpleserver",
1085 [os.path.join(samba3srcdir, "script/tests/test_rpcclient_pw_nt_hash.sh"),
1086 "$USERNAME", "$PASSWORD", "$SERVER",
1087 os.path.join(bindir(), "rpcclient")])
1089 plantestsuite("samba3.blackbox.smbclient.encryption_off", "simpleserver",
1090 [os.path.join(samba3srcdir, "script/tests/test_smbclient_encryption_off.sh"),
1091 "$USERNAME", "$PASSWORD", "$SERVER",
1094 for env in ['fileserver', 'simpleserver']:
1095 plantestsuite("samba3.blackbox.smbclient.encryption", env,
1096 [os.path.join(samba3srcdir, "script/tests/test_smbclient_encryption.sh"),
1097 "$USERNAME", "$PASSWORD", "$SERVER",
1100 plantestsuite("samba3.blackbox.rpcclient_netsessenum", "ad_member",
1101 [os.path.join(samba3srcdir,
1102 "script/tests/test_rpcclient_netsessenum.sh"),
1103 "$DOMAIN", "$DC_USERNAME", "$DC_PASSWORD", "$SERVER",
1104 os.path.join(bindir(), "rpcclient"), smbtorture3, "tmp"])
1106 # The ktest environment uses:
1107 # server min protocol = SMB3_00
1108 # client max protocol = SMB3
1109 options_list = ["", "-e"]
1110 for options in options_list:
1111 plantestsuite("samba3.blackbox.smbclient_krb5 old ccache %s" % options, "ktest:local",
1112 [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
1113 "$PREFIX/ktest/krb5_ccache-2",
1114 smbclient3, "$SERVER", options, configuration])
1116 plantestsuite("samba3.blackbox.smbclient_krb5 new ccache %s" % options, "ktest:local",
1117 [os.path.join(samba3srcdir, "script/tests/test_smbclient_krb5.sh"),
1118 "$PREFIX/ktest/krb5_ccache-3",
1119 smbclient3, "$SERVER", options, configuration])
1121 plantestsuite("samba3.blackbox.smbclient_large_file %s krb5" % options, "ktest:local",
1122 [os.path.join(samba3srcdir, "script/tests/test_smbclient_large_file.sh"),
1123 "$PREFIX/ktest/krb5_ccache-3",
1124 smbclient3, "$SERVER", "$PREFIX", options, "-k " + configuration])
1126 options_list = ["-mNT1", "-mNT1 -e", "-mSMB3", "-mSMB3 -e"]
1127 for options in options_list:
1129 if "NT1" in options:
1130 env = "nt4_dc_smb1_done"
1131 plantestsuite("samba3.blackbox.smbclient_large_file %s NTLM" % options, "%s:local" % env,
1132 [os.path.join(samba3srcdir, "script/tests/test_smbclient_large_file.sh"),
1134 smbclient3, "$SERVER", "$PREFIX", options, "-U$USERNAME%$PASSWORD " + configuration])
1136 for alias in ["foo", "bar"]:
1137 plantestsuite("samba3.blackbox.smbclient_netbios_aliases [%s]" % alias, "ad_member:local",
1138 [os.path.join(samba3srcdir, "script/tests/test_smbclient_netbios_aliases.sh"),
1139 smbclient3, alias, "$DC_USERNAME", "$DC_PASSWORD", "$PREFIX", options, configuration])
1141 for e in endianness_options:
1142 for a in auth_options:
1143 for s in signseal_options:
1144 binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
1145 options = binding_string + " -U$USERNAME%$PASSWORD"
1146 plansmbtorture4testsuite(test, "nt4_dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))
1148 plansmbtorture4testsuite('rpc.epmapper', 'nt4_dc:local', 'ncalrpc: -U$USERNAME%$PASSWORD', 'over ncalrpc')
1149 plansmbtorture4testsuite('rpc.fsrvp', 'nt4_dc:local', 'ncacn_np:$SERVER_IP -U$USERNAME%$PASSWORD', 'over ncacn_np')
1151 for env in ["ad_member_idmap_rid:local", "maptoguest:local"]:
1152 plantestsuite("samba3.blackbox.guest", env,
1153 [os.path.join(samba3srcdir, "script/tests/test_guest_auth.sh"),
1154 '$SERVER', smbclient3, smbcontrol, net, configuration])
1156 plantestsuite("samba3.blackbox.itime", "ad_dc", [os.path.join(samba3srcdir, "script/tests/test_itime.sh"), '$SERVER', '$USERNAME', '$PASSWORD', '$LOCAL_PATH', smbclient3, 'xattr'])
1158 plantestsuite("samba3.blackbox.smbclient-mget",
1160 [os.path.join(samba3srcdir, "script/tests/test_smbclient_mget.sh"),
1168 t = "readdir-timestamp"
1170 "samba3.smbtorture_s3.plain.%s" % t,
1172 [os.path.join(samba3srcdir,
1173 "script/tests/test_smbtorture_s3.sh"),
1176 '$DOMAIN\\\\$DC_USERNAME',
1180 "-b $PREFIX/clusteredmember/unclists/tmp.txt -N 5 -o 10"])
1183 "samba3.net_lookup_ldap",
1185 [os.path.join(samba3srcdir,
1186 "script/tests/test_net_lookup.sh"),
1194 plantestsuite("samba3.blackbox.force-user-unlink",
1196 [os.path.join(samba3srcdir,
1197 "script/tests/test_force_user_unlink.sh")])
1199 def planclusteredmembertestsuite(tname, prefix):
1200 '''Define a clustered test for the clusteredmember environment'''
1204 autharg = '-U${DOMAIN}/${DC_USERNAME}%${DC_PASSWORD}'
1205 namearg = 'clustered.%s' % tname
1206 modnamearg = 'samba3.%s' % namearg
1209 prefix = os.path.join(prefix, 'clusteredmember')
1210 unclist = os.path.join(prefix, 'unclists/%s.txt' % tshare)
1212 unclistarg = '--unclist=%s' % unclist
1213 sharearg = '//$SERVER_IP/%s' % tshare
1215 return selftesthelpers.plansmbtorture4testsuite(
1218 [extraargs, unclistarg, sharearg, autharg, tname],
1223 CLUSTERED_TESTS = [ 'smb2.deny.deny2' ]
1225 for test in CLUSTERED_TESTS:
1226 planclusteredmembertestsuite(test, "$PREFIX")
1228 CLUSTERED_LOCAL_TESTS = [
1230 "local-dbwrap-ctdb1"
1233 for t in CLUSTERED_LOCAL_TESTS:
1236 "clusteredmember:local",
1237 [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"),