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/samba4-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
22 sys.path.insert(0, os.path.normpath(os.path.join(os.path.dirname(__file__), "../../selftest")))
23 from selftesthelpers import *
26 smb4torture = binpath("smbtorture4")
27 samba3srcdir = srcdir() + "/source3"
28 configuration = "--configfile=$SMB_CONF_PATH"
29 scriptdir=os.path.join(samba3srcdir, "../script/tests")
31 torture_options = [configuration, "--maximum-runtime=$SELFTEST_MAXTIME",
32 "--target=samba3", "--basedir=$SELFTEST_TMPDIR",
33 '--option="torture:winbindd_netbios_name=$SERVER"',
34 '--option="torture:winbindd_netbios_domain=$DOMAIN"',
35 '--option=torture:sharedelay=100000']
37 if not os.getenv("SELFTEST_VERBOSE"):
38 torture_options.append("--option=torture:progress=no")
39 torture_options.append("--format=subunit")
40 if os.getenv("SELFTEST_QUICK"):
41 torture_options.append("--option=torture:quick=yes")
42 smb4torture += " " + " ".join(torture_options)
44 def plansmbtorturetestsuite(name, env, options, description=''):
45 modname = "samba3.posix_s3.%s %s" % (name, description)
46 cmdline = "%s $LISTOPT %s %s" % (valgrindify(smb4torture), options, name)
47 plantestsuite_loadlist(modname, env, cmdline)
49 plantestsuite("samba3.blackbox.success", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_success.sh")])
50 plantestsuite("samba3.blackbox.failure", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_failure.sh")])
52 plantestsuite("samba3.local_s3", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_local_s3.sh")])
54 tests=[ "FDPASS", "LOCK1", "LOCK2", "LOCK3", "LOCK4", "LOCK5", "LOCK6", "LOCK7", "LOCK9",
55 "UNLINK", "BROWSE", "ATTR", "TRANS2", "TORTURE",
56 "OPLOCK1", "OPLOCK2", "OPLOCK4", "STREAMERROR",
57 "DIR", "DIR1", "DIR-CREATETIME", "TCON", "TCONDEV", "RW1", "RW2", "RW3", "RW-SIGNING",
58 "OPEN", "XCOPY", "RENAME", "DELETE", "DELETE-LN", "PROPERTIES", "W2K",
59 "TCON2", "IOCTL", "CHKPATH", "FDSESS", "LOCAL-SUBSTITUTE", "CHAIN1", "CHAIN2",
60 "GETADDRINFO", "POSIX", "UID-REGRESSION-TEST", "SHORTNAME-TEST",
61 "LOCAL-BASE64", "LOCAL-GENCACHE", "POSIX-APPEND",
62 "CASE-INSENSITIVE-CREATE", "SMB2-BASIC",
64 "LOCAL-string_to_sid", "LOCAL-CONVERT-STRING" ]
67 plantestsuite("samba3.smbtorture_s3.plain(s3dc).%s" % t, "s3dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', binpath('smbtorture3'), "", "-l $LOCAL_PATH"])
68 plantestsuite("samba3.smbtorture_s3.crypt(s3dc).%s" % t, "s3dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', binpath('smbtorture3'), "-e", "-l $LOCAL_PATH"])
70 tests=["--ping", "--separator",
74 "--domain-info=BUILTIN",
75 "--domain-info=$DOMAIN",
77 "--online-status --domain=BUILTIN",
78 "--online-status --domain=$DOMAIN",
79 "--check-secret --domain=$DOMAIN",
80 "--change-secret --domain=$DOMAIN",
81 "--check-secret --domain=$DOMAIN",
82 "--online-status --domain=$DOMAIN",
83 #Didn't pass yet# "--domain-users",
85 "--name-to-sid=$USERNAME",
86 "--name-to-sid=$DOMAIN\\\\$USERNAME",
87 #Didn't pass yet# "--user-info=$USERNAME",
88 "--user-groups=$DOMAIN\\\\$USERNAME",
93 plantestsuite("samba3.wbinfo_s3.(s3dc:local).%s" % t, "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_wbinfo_s3.sh"), t])
94 plantestsuite("samba3.wbinfo_s3.(member:local).%s" % t, "member:local", [os.path.join(samba3srcdir, "script/tests/test_wbinfo_s3.sh"), t])
97 "samba3.wbinfo_sids2xids.(member:local)", "member:local",
98 [os.path.join(samba3srcdir, "script/tests/test_wbinfo_sids2xids.sh")])
100 plantestsuite("samba3.ntlm_auth.(s3dc:local)", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_ntlm_auth_s3.sh"), valgrindify(python), samba3srcdir, binpath('ntlm_auth3'), configuration])
102 for env in ["s3dc", "member"]:
103 plantestsuite("samba3.blackbox.smbclient_auth.plain (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', binpath('smbclient3'), configuration])
105 for env in ["secserver"]:
106 plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) domain creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN\\\\$DC_USERNAME', '$DC_PASSWORD', binpath('smbclient3'), configuration + " --option=clientntlmv2auth=no"])
108 for env in ["member"]:
109 plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) member creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$SERVER\\\\$USERNAME', '$PASSWORD', binpath('smbclient3'), configuration])
111 for env in ["maptoguest", "secshare", "secserver"]:
112 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', binpath('smbclient3'), configuration + " --option=clientntlmv2auth=no --option=clientlanmanauth=yes"])
115 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', binpath('smbclient3'), configuration + " --option=clientntlmv2auth=no --option=clientlanmanauth=yes"])
119 plantestsuite("samba3.blackbox.smbclient_s3.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', binpath('smbclient3'), configuration])
121 for env in ["member"]:
122 plantestsuite("samba3.blackbox.smbclient_s3.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', binpath('smbclient3'), configuration])
125 plantestsuite("samba3.blackbox.smbclient_s3.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', binpath('smbclient3'), configuration, "--signing=required"])
127 for env in ["member"]:
128 plantestsuite("samba3.blackbox.smbclient_s3.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', binpath('smbclient3'), configuration, "--signing=required"])
132 plantestsuite("samba3.blackbox.smbclient_s3.crypt (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', binpath('smbclient3'), configuration, "-e"])
134 #TODO encrypted against member, with member creds, and with DC creds
135 plantestsuite("samba3.blackbox.net.misc", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
136 scriptdir, "$SMB_CONF_PATH", configuration])
137 plantestsuite("samba3.blackbox.net.local.registry", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
138 scriptdir, "$SMB_CONF_PATH", configuration])
139 plantestsuite("samba3.blackbox.net.rpc.registry", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
140 scriptdir, "$SMB_CONF_PATH", configuration, 'rpc'])
142 plantestsuite("samba3.blackbox.net.local.registry.roundtrip", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
143 scriptdir, "$SMB_CONF_PATH", configuration,])
144 plantestsuite("samba3.blackbox.net.rpc.registry.roundtrip", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
145 scriptdir, "$SMB_CONF_PATH", configuration, 'rpc'])
147 plantestsuite("samba3.blackbox.net.local.conf", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
148 scriptdir, "$SMB_CONF_PATH", configuration,])
149 plantestsuite("samba3.blackbox.net.rpc.conf", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
150 scriptdir, "$SMB_CONF_PATH", configuration, 'rpc'])
153 plantestsuite("samba3.blackbox.testparm", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_testparm_s3.sh"),
157 "samba3.pthreadpool", "s3dc",
158 [os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
162 base = ["base.attr", "base.charset", "base.chkpath", "base.defer_open", "base.delaywrite", "base.delete",
163 "base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
164 "base.disconnect", "base.fdpass", "base.lock",
165 "base.mangle", "base.negnowait", "base.ntdeny1",
166 "base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
167 "base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
168 "base.xcopy", "base.samba3error"]
170 raw = ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
171 "raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock"
172 "raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
173 "raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
174 "raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename",
175 "raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
176 "raw.samba3rootdirfid", "raw.sfileinfo.end-of-file",
177 "raw.bench-oplock", "raw.bench-lock", "raw.bench-open", "raw.bench-tcon",
178 "raw.samba3checkfsp", "raw.samba3closeerr", "raw.samba3oplocklogoff"]
180 smb2 = ["smb2.lock", "smb2.read", "smb2.compound", "smb2.connect", "smb2.scan", "smb2.scanfind",
183 rpc = ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
184 "rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
185 "rpc.samba3.getaliasmembership-0",
186 "rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
187 "rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
188 "rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
189 "rpc.spoolss.driver",
190 "rpc.lsa", "rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
191 "rpc.lsa.privileges", "rpc.lsa.secrets",
192 "rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
193 "rpc.samr.passwords.pwdlastset", "rpc.samr.large-dc", "rpc.samr.machine.auth",
194 "rpc.netlogon.admin",
195 "rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.join", "rpc.bind"]
197 local = ["local.nss-wrapper", "local.ndr"]
199 winbind = ["winbind.struct", "winbind.wbclient"]
201 rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
203 unix = ["unix.info2", "unix.whoami"]
207 libsmbclient = ["libsmbclient"]
209 tests= base + raw + smb2 + rpc + unix + local + winbind + rap + nbt + libsmbclient
211 sub = subprocess.Popen("%s --version 2> /dev/null" % smb4torture, stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)
214 if sub.returncode == 0:
216 if t == "base.delaywrite":
217 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --maximum-runtime=900')
219 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
220 elif t == "unix.whoami":
221 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD')
222 elif t == "raw.samba3posixtimedlock":
223 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/s3dc/share')
224 elif t == "raw.chkpath":
225 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
227 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
230 test = 'rpc.lsa.lookupsids'
231 auth_options = ["", "ntlm", "spnego" ]
232 signseal_options = ["", ",connect", ",sign", ",seal"]
233 smb_options = ["", ",smb2"]
234 endianness_options = ["", ",bigendian"]
235 for z in smb_options:
236 for s in signseal_options:
237 for e in endianness_options:
238 for a in auth_options:
239 binding_string = "ncacn_np:$SERVER[%s%s%s%s]" % (a, s, z, e)
240 options = binding_string + " -U$USERNAME%$PASSWORD"
241 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
243 # We should try more combinations in future, but this is all
244 # the pre-calculated credentials cache supports at the moment
247 binding_string = "ncacn_np:$SERVER[%s%s%s%s]" % (a, s, z, e)
248 options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
249 plansmbtorturetestsuite(test, "ktest", options, 'over kerberos with old ccache ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
251 options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
252 plansmbtorturetestsuite(test, "ktest", options, 'over kerberos ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
256 for e in endianness_options:
257 for a in auth_options:
258 for s in signseal_options:
259 binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
260 options = binding_string + " -U$USERNAME%$PASSWORD"
261 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))
263 test = 'rpc.epmapper'
265 binding_string = 'ncalrpc:'
266 options = binding_string + " -U$USERNAME%$PASSWORD"
268 plansmbtorturetestsuite(test, env, options, 'over ncalrpc')