s4-torture: smb2 copychunk data integrity checks
[Samba/gbeck.git] / source3 / selftest / tests.py
blob02afde58299f25984750c0e59308cdb90566aacb
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 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", "NTTRANS-FSCTL",
63 "BAD-NBT-SESSION"]
65 for t in tests:
66 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"])
67 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"])
69 local_tests=[
70 "LOCAL-SUBSTITUTE",
71 "LOCAL-GENCACHE",
72 "LOCAL-TALLOC-DICT",
73 "LOCAL-BASE64",
74 "LOCAL-RBTREE",
75 "LOCAL-MEMCACHE",
76 "LOCAL-STREAM-NAME",
77 "LOCAL-WBCLIENT",
78 "LOCAL-string_to_sid",
79 "LOCAL-binary_to_sid",
80 "LOCAL-DBTRANS",
81 "LOCAL-TEVENT-SELECT",
82 "LOCAL-CONVERT-STRING",
83 "LOCAL-CONV-AUTH-INFO",
84 "LOCAL-sprintf_append"]
86 for t in local_tests:
87 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"])
89 tests=["--ping", "--separator",
90 "--own-domain",
91 "--all-domains",
92 "--trusted-domains",
93 "--domain-info=BUILTIN",
94 "--domain-info=$DOMAIN",
95 "--online-status",
96 "--online-status --domain=BUILTIN",
97 "--online-status --domain=$DOMAIN",
98 "--check-secret --domain=$DOMAIN",
99 "--change-secret --domain=$DOMAIN",
100 "--check-secret --domain=$DOMAIN",
101 "--online-status --domain=$DOMAIN",
102 #Didn't pass yet# "--domain-users",
103 "--domain-groups",
104 "--name-to-sid=$USERNAME",
105 "--name-to-sid=$DOMAIN\\\\$USERNAME",
106 #Didn't pass yet# "--user-info=$USERNAME",
107 "--user-groups=$DOMAIN\\\\$USERNAME",
108 "--allocate-uid",
109 "--allocate-gid"]
111 for t in tests:
112 plantestsuite("samba3.wbinfo_s3.(s3dc:local).%s" % t, "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_wbinfo_s3.sh"), t])
113 plantestsuite("samba3.wbinfo_s3.(member:local).%s" % t, "member:local", [os.path.join(samba3srcdir, "script/tests/test_wbinfo_s3.sh"), t])
115 plantestsuite(
116 "samba3.wbinfo_sids2xids.(member:local)", "member:local",
117 [os.path.join(samba3srcdir, "script/tests/test_wbinfo_sids2xids.sh")])
119 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])
121 for env in ["s3dc", "member"]:
122 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])
124 for env in ["secserver"]:
125 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"])
127 for env in ["member"]:
128 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])
130 for env in ["maptoguest", "secshare", "secserver"]:
131 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"])
133 env = "maptoguest"
134 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"])
136 # plain
137 for env in ["s3dc"]:
138 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])
140 for env in ["member"]:
141 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])
143 for env in ["s3dc"]:
144 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"])
146 for env in ["member"]:
147 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"])
149 # encrypted
150 for env in ["s3dc"]:
151 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"])
153 #TODO encrypted against member, with member creds, and with DC creds
154 plantestsuite("samba3.blackbox.net.misc", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
155 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration])
156 plantestsuite("samba3.blackbox.net.local.registry", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
157 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration])
158 plantestsuite("samba3.blackbox.net.rpc.registry", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
159 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
161 plantestsuite("samba3.blackbox.net.local.registry.roundtrip", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
162 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration,])
163 plantestsuite("samba3.blackbox.net.rpc.registry.roundtrip", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
164 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
166 plantestsuite("samba3.blackbox.net.local.conf", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
167 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration,])
168 plantestsuite("samba3.blackbox.net.rpc.conf", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
169 scriptdir, "$SMB_CONF_PATH", binpath('net'), configuration, 'rpc'])
172 plantestsuite("samba3.blackbox.testparm", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_testparm_s3.sh"),
173 "$LOCAL_PATH"])
175 plantestsuite(
176 "samba3.pthreadpool", "s3dc",
177 [os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
179 #smbtorture4 tests
181 base = ["base.attr", "base.charset", "base.chkpath", "base.defer_open", "base.delaywrite", "base.delete",
182 "base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
183 "base.disconnect", "base.fdpass", "base.lock",
184 "base.mangle", "base.negnowait", "base.ntdeny1",
185 "base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
186 "base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
187 "base.xcopy", "base.samba3error"]
189 raw = ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
190 "raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock"
191 "raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
192 "raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
193 "raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename",
194 "raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
195 "raw.samba3rootdirfid", "raw.sfileinfo.end-of-file",
196 "raw.bench-oplock", "raw.bench-lock", "raw.bench-open", "raw.bench-tcon",
197 "raw.samba3checkfsp", "raw.samba3closeerr", "raw.samba3oplocklogoff"]
199 smb2 = ["smb2.lock", "smb2.read", "smb2.compound", "smb2.connect", "smb2.scan", "smb2.scanfind",
200 "smb2.bench-oplock"]
202 rpc = ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
203 "rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
204 "rpc.samba3.getaliasmembership-0",
205 "rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
206 "rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
207 "rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
208 "rpc.spoolss.driver",
209 "rpc.lsa", "rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
210 "rpc.lsa.privileges", "rpc.lsa.secrets",
211 "rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
212 "rpc.samr.passwords.pwdlastset", "rpc.samr.large-dc", "rpc.samr.machine.auth",
213 "rpc.samr.priv",
214 "rpc.netlogon.admin",
215 "rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.join", "rpc.bind"]
217 local = ["local.nss-wrapper", "local.ndr"]
219 winbind = ["winbind.struct", "winbind.wbclient"]
221 rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
223 unix = ["unix.info2", "unix.whoami"]
225 nbt = ["nbt.dgram" ]
227 libsmbclient = ["libsmbclient"]
229 tests= base + raw + smb2 + rpc + unix + local + winbind + rap + nbt + libsmbclient
231 sub = subprocess.Popen("%s --version 2> /dev/null" % smb4torture, stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)
232 sub.communicate("")
234 if sub.returncode == 0:
235 for t in tests:
236 if t == "base.delaywrite":
237 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --maximum-runtime=900')
238 elif t == "rap.sam":
239 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
240 elif t == "unix.whoami":
241 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD')
242 elif t == "raw.samba3posixtimedlock":
243 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/s3dc/share')
244 elif t == "raw.chkpath":
245 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
246 else:
247 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
250 test = 'rpc.lsa.lookupsids'
251 auth_options = ["", "ntlm", "spnego" ]
252 signseal_options = ["", ",connect", ",sign", ",seal"]
253 smb_options = ["", ",smb2"]
254 endianness_options = ["", ",bigendian"]
255 for z in smb_options:
256 for s in signseal_options:
257 for e in endianness_options:
258 for a in auth_options:
259 binding_string = "ncacn_np:$SERVER[%s%s%s%s]" % (a, s, z, e)
260 options = binding_string + " -U$USERNAME%$PASSWORD"
261 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
263 # We should try more combinations in future, but this is all
264 # the pre-calculated credentials cache supports at the moment
265 e = ""
266 a = ""
267 binding_string = "ncacn_np:$SERVER[%s%s%s%s]" % (a, s, z, e)
268 options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
269 plansmbtorturetestsuite(test, "ktest", options, 'over kerberos with old ccache ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
271 options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
272 plansmbtorturetestsuite(test, "ktest", options, 'over kerberos ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
276 for e in endianness_options:
277 for a in auth_options:
278 for s in signseal_options:
279 binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
280 options = binding_string + " -U$USERNAME%$PASSWORD"
281 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))
283 test = 'rpc.epmapper'
284 env = 's3dc:local'
285 binding_string = 'ncalrpc:'
286 options = binding_string + " -U$USERNAME%$PASSWORD"
288 plansmbtorturetestsuite(test, env, options, 'over ncalrpc')