s3-selftest: enable RPC-LSA-SECRETS against s3.
[Samba/gebeck_regimport.git] / source3 / selftest / tests.py
blobad4fc77d63cfd0f48ff5dcb2b593efab0fa68e74
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",
60 "GETADDRINFO", "POSIX", "UID-REGRESSION-TEST", "SHORTNAME-TEST",
61 "LOCAL-BASE64", "LOCAL-GENCACHE", "POSIX-APPEND",
62 "CASE-INSENSITIVE-CREATE", "SMB2-BASIC",
63 "BAD-NBT-SESSION",
64 "LOCAL-string_to_sid", "LOCAL-CONVERT-STRING" ]
66 for t in tests:
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",
71 "--own-domain",
72 "--all-domains",
73 "--trusted-domains",
74 "--domain-info=BUILTIN",
75 "--domain-info=$DOMAIN",
76 "--online-status",
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",
84 "--domain-groups",
85 "--name-to-sid=$USERNAME",
86 "--name-to-sid=$DOMAIN\\\\$USERNAME",
87 #Didn't pass yet# "--user-info=$USERNAME",
88 "--user-groups=$DOMAIN\\\\$USERNAME",
89 "--allocate-uid",
90 "--allocate-gid"]
92 for t in tests:
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])
96 plantestsuite(
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"])
114 env = "maptoguest"
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"])
117 # plain
118 for env in ["s3dc"]:
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])
124 for env in ["s3dc"]:
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"])
130 # encrypted
131 for env in ["s3dc"]:
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:local", [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.testparm", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_testparm_s3.sh"),
145 "$LOCAL_PATH"])
147 plantestsuite(
148 "samba3.pthreadpool", "s3dc",
149 [os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
151 #smbtorture4 tests
153 base = ["base.attr", "base.charset", "base.chkpath", "base.defer_open", "base.delaywrite", "base.delete",
154 "base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
155 "base.disconnect", "base.fdpass", "base.lock",
156 "base.mangle", "base.negnowait", "base.ntdeny1",
157 "base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
158 "base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
159 "base.xcopy", "base.samba3error"]
161 raw = ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
162 "raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock"
163 "raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
164 "raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
165 "raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename",
166 "raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
167 "raw.samba3rootdirfid", "raw.sfileinfo.end-of-file",
168 "raw.bench-oplock", "raw.bench-lock", "raw.bench-open", "raw.bench-tcon",
169 "raw.samba3checkfsp", "raw.samba3closeerr", "raw.samba3oplocklogoff"]
171 smb2 = ["smb2.lock", "smb2.read", "smb2.compound", "smb2.connect", "smb2.scan", "smb2.scanfind",
172 "smb2.bench-oplock"]
174 rpc = ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
175 "rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
176 "rpc.samba3.getaliasmembership-0",
177 "rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
178 "rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
179 "rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
180 "rpc.spoolss.driver",
181 "rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
182 "rpc.lsa.privileges", "rpc.lsa.secrets",
183 "rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
184 "rpc.samr.passwords.pwdlastset", "rpc.samr.large-dc", "rpc.samr.machine.auth",
185 "rpc.netlogon.admin",
186 "rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.join", "rpc.bind", "rpc.epmapper"]
188 local = ["local.nss-wrapper", "local.ndr"]
190 winbind = ["winbind.struct", "winbind.wbclient"]
192 rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
194 unix = ["unix.info2", "unix.whoami"]
196 nbt = ["nbt.dgram" ]
198 libsmbclient = ["libsmbclient"]
200 tests= base + raw + smb2 + rpc + unix + local + winbind + rap + nbt + libsmbclient
202 sub = subprocess.Popen("%s --version 2> /dev/null" % smb4torture, stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)
203 sub.communicate("")
205 if sub.returncode == 0:
206 for t in tests:
207 if t == "base.delaywrite":
208 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --maximum-runtime=900')
209 elif t == "rap.sam":
210 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
211 elif t == "unix.whoami":
212 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD')
213 elif t == "raw.samba3posixtimedlock":
214 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/s3dc/share')
215 elif t == "raw.chkpath":
216 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
217 else:
218 plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
221 test = 'rpc.lsa.lookupsids'
222 auth_options = ["", "ntlm", "spnego" ]
223 signseal_options = ["", ",connect", ",sign", ",seal"]
224 smb_options = ["", ",smb2"]
225 endianness_options = ["", ",bigendian"]
226 for z in smb_options:
227 for s in signseal_options:
228 for e in endianness_options:
229 for a in auth_options:
230 binding_string = "ncacn_np:$SERVER[%s%s%s%s]" % (a, s, z, e)
231 options = binding_string + " -U$USERNAME%$PASSWORD"
232 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
234 # We should try more combinations in future, but this is all
235 # the pre-calculated credentials cache supports at the moment
236 e = ""
237 a = ""
238 binding_string = "ncacn_np:$SERVER[%s%s%s%s]" % (a, s, z, e)
239 options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
240 plansmbtorturetestsuite(test, "ktest", options, 'over kerberos with old ccache ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
242 options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
243 plansmbtorturetestsuite(test, "ktest", options, 'over kerberos ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
247 for e in endianness_options:
248 for a in auth_options:
249 for s in signseal_options:
250 binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
251 options = binding_string + " -U$USERNAME%$PASSWORD"
252 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))