s4 dns: Implement RFC-compatible update prescan
[Samba/gebeck_regimport.git] / source3 / selftest / tests.py
blob4442f6b540494f4501c949a07a0cfd20882a4a27
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.
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
19 # comments.
21 import os, sys
22 sys.path.insert(0, os.path.normpath(os.path.join(os.path.dirname(__file__), "../../selftest")))
23 from selftesthelpers import *
24 import subprocess
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 plantestsuite("samba3.blackbox.registry.upgrade", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_registry_upgrade.sh"), binpath('net'), binpath('dbwrap_tool')])
56 tests=[ "FDPASS", "LOCK1", "LOCK2", "LOCK3", "LOCK4", "LOCK5", "LOCK6", "LOCK7", "LOCK9",
57 "UNLINK", "BROWSE", "ATTR", "TRANS2", "TORTURE",
58 "OPLOCK1", "OPLOCK2", "OPLOCK4", "STREAMERROR",
59 "DIR", "DIR1", "DIR-CREATETIME", "TCON", "TCONDEV", "RW1", "RW2", "RW3", "RW-SIGNING",
60 "OPEN", "XCOPY", "RENAME", "DELETE", "DELETE-LN", "PROPERTIES", "W2K",
61 "TCON2", "IOCTL", "CHKPATH", "FDSESS", "LOCAL-SUBSTITUTE", "CHAIN1", "CHAIN2",
62 "GETADDRINFO", "POSIX", "UID-REGRESSION-TEST", "SHORTNAME-TEST",
63 "LOCAL-BASE64", "LOCAL-GENCACHE", "POSIX-APPEND",
64 "CASE-INSENSITIVE-CREATE", "SMB2-BASIC", "NTTRANS-FSCTL", "SMB2-NEGPROT",
65 "BAD-NBT-SESSION"]
67 for t in tests:
68 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"])
69 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"])
71 local_tests=[
72 "LOCAL-SUBSTITUTE",
73 "LOCAL-GENCACHE",
74 "LOCAL-TALLOC-DICT",
75 "LOCAL-BASE64",
76 "LOCAL-RBTREE",
77 "LOCAL-MEMCACHE",
78 "LOCAL-STREAM-NAME",
79 "LOCAL-WBCLIENT",
80 "LOCAL-string_to_sid",
81 "LOCAL-binary_to_sid",
82 "LOCAL-DBTRANS",
83 "LOCAL-TEVENT-SELECT",
84 "LOCAL-CONVERT-STRING",
85 "LOCAL-CONV-AUTH-INFO",
86 "LOCAL-sprintf_append"]
88 for t in local_tests:
89 plantestsuite("samba3.smbtorture_s3.%s" % t, "s3dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', binpath('smbtorture3'), "-e"])
91 tests=["--ping", "--separator",
92 "--own-domain",
93 "--all-domains",
94 "--trusted-domains",
95 "--domain-info=BUILTIN",
96 "--domain-info=$DOMAIN",
97 "--online-status",
98 "--online-status --domain=BUILTIN",
99 "--online-status --domain=$DOMAIN",
100 "--check-secret --domain=$DOMAIN",
101 "--change-secret --domain=$DOMAIN",
102 "--check-secret --domain=$DOMAIN",
103 "--online-status --domain=$DOMAIN",
104 #Didn't pass yet# "--domain-users",
105 "--domain-groups",
106 "--name-to-sid=$USERNAME",
107 "--name-to-sid=$DOMAIN\\\\$USERNAME",
108 #Didn't pass yet# "--user-info=$USERNAME",
109 "--user-groups=$DOMAIN\\\\$USERNAME",
110 "--allocate-uid",
111 "--allocate-gid"]
113 for t in tests:
114 plantestsuite("samba3.wbinfo_s3.(s3dc:local).%s" % t, "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_wbinfo_s3.sh"), t])
115 plantestsuite("samba3.wbinfo_s3.(member:local).%s" % t, "member:local", [os.path.join(samba3srcdir, "script/tests/test_wbinfo_s3.sh"), t])
117 plantestsuite(
118 "samba3.wbinfo_sids2xids.(member:local)", "member:local",
119 [os.path.join(samba3srcdir, "script/tests/test_wbinfo_sids2xids.sh")])
121 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])
123 for env in ["s3dc", "member"]:
124 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])
126 for env in ["secserver"]:
127 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"])
129 for env in ["member"]:
130 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])
132 for env in ["maptoguest", "secshare", "secserver"]:
133 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"])
135 env = "maptoguest"
136 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"])
138 # plain
139 for env in ["s3dc"]:
140 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'), binpath('wbinfo'), configuration])
142 for env in ["member"]:
143 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'), binpath('wbinfo'), configuration])
145 for env in ["s3dc"]:
146 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'), binpath('wbinfo'), configuration, "--signing=required"])
148 for env in ["member"]:
149 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'), binpath('wbinfo'), configuration, "--signing=required"])
151 # encrypted
152 for env in ["s3dc"]:
153 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'), binpath('wbinfo'), configuration, "-e"])
155 #TODO encrypted against member, with member creds, and with DC creds
156 plantestsuite("samba3.blackbox.net.misc", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
157 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration])
158 plantestsuite("samba3.blackbox.net.local.registry", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
159 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration])
160 plantestsuite("samba3.blackbox.net.rpc.registry", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
161 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
163 plantestsuite("samba3.blackbox.net.local.registry.roundtrip", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
164 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration,])
165 plantestsuite("samba3.blackbox.net.rpc.registry.roundtrip", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
166 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
168 plantestsuite("samba3.blackbox.net.local.conf", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
169 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration,])
170 plantestsuite("samba3.blackbox.net.rpc.conf", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
171 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
174 plantestsuite("samba3.blackbox.testparm", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_testparm_s3.sh"),
175 "$LOCAL_PATH"])
177 plantestsuite(
178 "samba3.pthreadpool", "s3dc",
179 [os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
181 #smbtorture4 tests
183 base = ["base.attr", "base.charset", "base.chkpath", "base.defer_open", "base.delaywrite", "base.delete",
184 "base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
185 "base.disconnect", "base.fdpass", "base.lock",
186 "base.mangle", "base.negnowait", "base.ntdeny1",
187 "base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
188 "base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
189 "base.xcopy", "base.samba3error"]
191 raw = ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
192 "raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock"
193 "raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
194 "raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
195 "raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename",
196 "raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
197 "raw.samba3rootdirfid", "raw.sfileinfo.end-of-file",
198 "raw.bench-oplock", "raw.bench-lock", "raw.bench-open", "raw.bench-tcon",
199 "raw.samba3checkfsp", "raw.samba3closeerr", "raw.samba3oplocklogoff"]
201 smb2 = ["smb2.lock", "smb2.read", "smb2.compound", "smb2.connect", "smb2.scan", "smb2.scanfind",
202 "smb2.bench-oplock"]
204 rpc = ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
205 "rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
206 "rpc.samba3.getaliasmembership-0",
207 "rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
208 "rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
209 "rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
210 "rpc.spoolss.driver",
211 "rpc.lsa", "rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
212 "rpc.lsa.privileges", "rpc.lsa.secrets",
213 "rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
214 "rpc.samr.passwords.pwdlastset", "rpc.samr.large-dc", "rpc.samr.machine.auth",
215 "rpc.samr.priv",
216 "rpc.netlogon.admin",
217 "rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.join", "rpc.bind"]
219 local = ["local.nss-wrapper", "local.ndr"]
221 winbind = ["winbind.struct", "winbind.wbclient"]
223 rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
225 unix = ["unix.info2", "unix.whoami"]
227 nbt = ["nbt.dgram" ]
229 libsmbclient = ["libsmbclient"]
231 tests= base + raw + smb2 + rpc + unix + local + winbind + rap + nbt + libsmbclient
233 sub = subprocess.Popen("%s --version 2> /dev/null" % smb4torture, stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)
234 sub.communicate("")
236 if sub.returncode == 0:
237 for t in tests:
238 if t == "base.delaywrite":
239 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --maximum-runtime=900')
240 elif t == "rap.sam":
241 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
242 elif t == "unix.whoami":
243 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD')
244 elif t == "raw.samba3posixtimedlock":
245 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/s3dc/share')
246 elif t == "raw.chkpath":
247 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
248 else:
249 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
252 test = 'rpc.lsa.lookupsids'
253 auth_options = ["", "ntlm", "spnego" ]
254 signseal_options = ["", ",connect", ",sign", ",seal"]
255 smb_options = ["", ",smb2"]
256 endianness_options = ["", ",bigendian"]
257 for z in smb_options:
258 for s in signseal_options:
259 for e in endianness_options:
260 for a in auth_options:
261 binding_string = "ncacn_np:$SERVER[%s%s%s%s]" % (a, s, z, e)
262 options = binding_string + " -U$USERNAME%$PASSWORD"
263 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
265 # We should try more combinations in future, but this is all
266 # the pre-calculated credentials cache supports at the moment
267 e = ""
268 a = ""
269 binding_string = "ncacn_np:$SERVER[%s%s%s%s]" % (a, s, z, e)
270 options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
271 plansmbtorturetestsuite(test, "ktest", options, 'over kerberos with old ccache ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
273 options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
274 plansmbtorturetestsuite(test, "ktest", options, 'over kerberos ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
278 for e in endianness_options:
279 for a in auth_options:
280 for s in signseal_options:
281 binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
282 options = binding_string + " -U$USERNAME%$PASSWORD"
283 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))
285 test = 'rpc.epmapper'
286 env = 's3dc:local'
287 binding_string = 'ncalrpc:'
288 options = binding_string + " -U$USERNAME%$PASSWORD"
290 plansmbtorturetestsuite(test, env, options, 'over ncalrpc')