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",
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 ["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"])
116 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
])
118 for env
in ["member"]:
119 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
])
122 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"])
124 for env
in ["member"]:
125 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"])
129 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"])
131 #TODO encrypted against member, with member creds, and with DC creds
132 plantestsuite("samba3.blackbox.net.misc", "s3dc:local", [os
.path
.join(samba3srcdir
, "script/tests/test_net_misc.sh"),
133 scriptdir
, "$SMB_CONF_PATH", configuration
])
134 plantestsuite("samba3.blackbox.net.local.registry", "s3dc:local", [os
.path
.join(samba3srcdir
, "script/tests/test_net_registry.sh"),
135 scriptdir
, "$SMB_CONF_PATH", configuration
])
136 plantestsuite("samba3.blackbox.net.rpc.registry", "s3dc:local", [os
.path
.join(samba3srcdir
, "script/tests/test_net_registry.sh"),
137 scriptdir
, "$SMB_CONF_PATH", configuration
, 'rpc'])
139 plantestsuite("samba3.blackbox.net.local.registry.roundtrip", "s3dc:local", [os
.path
.join(samba3srcdir
, "script/tests/test_net_registry_roundtrip.sh"),
140 scriptdir
, "$SMB_CONF_PATH", configuration
])
141 plantestsuite("samba3.blackbox.testparm", "s3dc:local", [os
.path
.join(samba3srcdir
, "script/tests/test_testparm_s3.sh"),
145 "samba3.pthreadpool", "s3dc",
146 [os
.path
.join(samba3srcdir
, "script/tests/test_pthreadpool.sh")])
150 base
= ["base.attr", "base.charset", "base.chkpath", "base.defer_open", "base.delaywrite", "base.delete",
151 "base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
152 "base.disconnect", "base.fdpass", "base.lock",
153 "base.mangle", "base.negnowait", "base.ntdeny1",
154 "base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
155 "base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
156 "base.xcopy", "base.samba3error"]
158 raw
= ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
159 "raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock"
160 "raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
161 "raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
162 "raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename",
163 "raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
164 "raw.samba3rootdirfid", "raw.sfileinfo.end-of-file",
165 "raw.bench-oplock", "raw.bench-lock", "raw.bench-open", "raw.bench-tcon",
166 "raw.samba3checkfsp", "raw.samba3closeerr", "raw.samba3oplocklogoff"]
168 smb2
= ["smb2.lock", "smb2.read", "smb2.compound", "smb2.connect", "smb2.scan", "smb2.scanfind",
171 rpc
= ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
172 "rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
173 "rpc.samba3.getaliasmembership-0",
174 "rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
175 "rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
176 "rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
177 "rpc.spoolss.driver",
178 "rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
179 "rpc.lsa.privileges",
180 "rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
181 "rpc.samr.passwords.pwdlastset", "rpc.samr.large-dc", "rpc.samr.machine.auth",
182 "rpc.netlogon.admin",
183 "rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.join", "rpc.bind", "rpc.epmapper"]
185 local
= ["local.nss-wrapper", "local.ndr"]
187 winbind
= ["winbind.struct", "winbind.wbclient"]
189 rap
= ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
191 unix
= ["unix.info2", "unix.whoami"]
195 libsmbclient
= ["libsmbclient"]
197 tests
= base
+ raw
+ smb2
+ rpc
+ unix
+ local
+ winbind
+ rap
+ nbt
+ libsmbclient
199 sub
= subprocess
.Popen("%s --version 2> /dev/null" % smb4torture
, stdout
=subprocess
.PIPE
, stdin
=subprocess
.PIPE
, shell
=True)
202 if sub
.returncode
== 0:
204 if t
== "base.delaywrite":
205 plansmbtorturetestsuite(t
, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --maximum-runtime=900')
207 plansmbtorturetestsuite(t
, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
208 elif t
== "unix.whoami":
209 plansmbtorturetestsuite(t
, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD')
210 elif t
== "raw.samba3posixtimedlock":
211 plansmbtorturetestsuite(t
, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/s3dc/share')
212 elif t
== "raw.chkpath":
213 plansmbtorturetestsuite(t
, "s3dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
215 plansmbtorturetestsuite(t
, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
218 test
= 'rpc.lsa.lookupsids'
219 auth_options
= ["", "ntlm", "spnego" ]
220 signseal_options
= ["", ",connect", ",sign", ",seal"]
221 smb_options
= ["", ",smb2"]
222 endianness_options
= ["", ",bigendian"]
223 for z
in smb_options
:
224 for s
in signseal_options
:
225 for e
in endianness_options
:
226 for a
in auth_options
:
227 binding_string
= "ncacn_np:$SERVER[%s%s%s%s]" % (a
, s
, z
, e
)
228 options
= binding_string
+ " -U$USERNAME%$PASSWORD"
229 plansmbtorturetestsuite(test
, "s3dc", options
, 'over ncacn_np with [%s%s%s%s] ' % (a
, s
, z
, e
))
231 # We should try more combinations in future, but this is all
232 # the pre-calculated credentials cache supports at the moment
235 binding_string
= "ncacn_np:$SERVER[%s%s%s%s]" % (a
, s
, z
, e
)
236 options
= binding_string
+ " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
237 plansmbtorturetestsuite(test
, "ktest", options
, 'over kerberos with old ccache ncacn_np with [%s%s%s%s] ' % (a
, s
, z
, e
))
239 options
= binding_string
+ " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
240 plansmbtorturetestsuite(test
, "ktest", options
, 'over kerberos ncacn_np with [%s%s%s%s] ' % (a
, s
, z
, e
))
244 for e
in endianness_options
:
245 for a
in auth_options
:
246 for s
in signseal_options
:
247 binding_string
= "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a
, s
, e
)
248 options
= binding_string
+ " -U$USERNAME%$PASSWORD"
249 plansmbtorturetestsuite(test
, "s3dc", options
, 'over ncacn_ip_tcp with [%s%s%s] ' % (a
, s
, e
))