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=$SELFTEST_TARGET", "--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", "OPLOCK3", "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
"LOCAL-string_to_sid" ]
65
plantestsuite("samba3.smbtorture_s3.plain(dc).%s" % t, "s3dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', "", "-l $LOCAL_PATH"])
66
plantestsuite("samba3.smbtorture_s3.crypt(dc).%s" % t, "s3dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', "-e", "-l $LOCAL_PATH"])
68
tests=["--ping", "--separator",
72
"--domain-info=BUILTIN",
73
"--domain-info=$DOMAIN",
75
"--online-status --domain=BUILTIN",
76
"--online-status --domain=$DOMAIN",
77
"--check-secret --domain=$DOMAIN",
78
"--change-secret --domain=$DOMAIN",
79
"--check-secret --domain=$DOMAIN",
80
"--online-status --domain=$DOMAIN",
81
#Didn't pass yet# "--domain-users",
83
"--name-to-sid=$USERNAME",
84
"--name-to-sid=$DOMAIN\\\\$USERNAME",
85
#Didn't pass yet# "--user-info=$USERNAME",
86
"--user-groups=$DOMAIN\\\\$USERNAME",
91
plantestsuite("samba3.wbinfo_s3.(s3dc:local).%s" % t, "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_wbinfo_s3.sh"), t])
92
plantestsuite("samba3.wbinfo_s3.(member:local).%s" % t, "member:local", [os.path.join(samba3srcdir, "script/tests/test_wbinfo_s3.sh"), t])
95
"samba3.wbinfo_sids2xids.(member:local)", "member:local",
96
[os.path.join(samba3srcdir, "script/tests/test_wbinfo_sids2xids.sh")])
98
plantestsuite("samba3.ntlm_auth.(s3dc:local)", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_ntlm_auth_s3.sh"), valgrindify(python), samba3srcdir, configuration])
100
for env in ["s3dc", "member"]:
101
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', configuration])
103
for env in ["secserver"]:
104
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', configuration + " --option=clientntlmv2auth=no"])
106
for env in ["member"]:
107
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', configuration])
109
for env in ["secshare", "secserver"]:
110
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', configuration + " --option=clientntlmv2auth=no --option=clientlanmanauth=yes"])
114
plantestsuite("samba3.blackbox.smbclient_s3.plain (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', configuration])
116
for env in ["member"]:
117
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\\\\$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', configuration])
120
plantestsuite("samba3.blackbox.smbclient_s3.sign (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DC_USERNAME', '$DC_PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', configuration, "--signing=required"])
122
for env in ["member"]:
123
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\\\\$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', configuration, "--signing=required"])
127
plantestsuite("samba3.blackbox.smbclient_s3.crypt (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', configuration, "-e"])
129
#TODO encrypted against member, with member creds, and with DC creds
130
plantestsuite("samba3.blackbox.net.misc", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_misc.sh"),
131
scriptdir, "$SMB_CONF_PATH", configuration])
132
plantestsuite("samba3.blackbox.net.local.registry", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
133
scriptdir, "$SMB_CONF_PATH", configuration])
134
plantestsuite("samba3.blackbox.net.rpc.registry", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
135
scriptdir, "$SMB_CONF_PATH", configuration, 'rpc'])
137
plantestsuite("samba3.blackbox.net.local.registry.roundtrip", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
138
scriptdir, "$SMB_CONF_PATH", configuration])
139
plantestsuite("samba3.blackbox.testparm", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_testparm_s3.sh"),
143
"samba3.pthreadpool", "s3dc",
144
[os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
148
base = ["base.attr", "base.charset", "base.chkpath", "base.defer_open", "base.delaywrite", "base.delete",
149
"base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
150
"base.disconnect", "base.fdpass", "base.lock",
151
"base.mangle", "base.negnowait", "base.ntdeny1",
152
"base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
153
"base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
154
"base.xcopy", "base.samba3error"]
156
raw = ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
157
"raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock"
158
"raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
159
"raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
160
"raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename",
161
"raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
162
"raw.samba3rootdirfid", "raw.sfileinfo.end-of-file"]
164
smb2 = ["smb2.lock", "smb2.read", "smb2.compound", "smb2.connect", "smb2.scan", "smb2.scanfind",
167
rpc = ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
168
"rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
169
"rpc.samba3.getaliasmembership-0",
170
"rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
171
"rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
172
"rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
173
"rpc.spoolss.driver",
174
"rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
175
"rpc.lsa.privileges",
176
"rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
177
"rpc.samr.passwords.pwdlastset", "rpc.samr.large-dc", "rpc.samr.machine.auth",
178
"rpc.netlogon.admin",
179
"rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.join", "rpc.bind", "rpc.epmapper"]
181
local = ["local.nss-wrapper", "local.ndr"]
183
winbind = ["winbind.struct", "winbind.wbclient"]
185
rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
187
unix = ["unix.info2", "unix.whoami"]
191
tests= base + raw + smb2 + rpc + unix + local + winbind + rap + nbt
193
sub = subprocess.Popen("%s --version 2> /dev/null" % smb4torture, stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)
196
if sub.returncode == 0:
198
if t == "base.delaywrite":
199
plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --maximum-runtime=900')
200
elif t == "unix.whoami":
201
plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD')
202
elif t == "raw.samba3posixtimedlock":
203
plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/dc/share')
205
plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
207
if t == "raw.chkpath":
208
plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
210
test = 'rpc.lsa.lookupsids'
211
auth_options = ["", "ntlm", "spnego" ]
212
signseal_options = ["", ",connect", ",sign", ",seal"]
213
smb_options = ["", ",smb2"]
214
endianness_options = ["", ",bigendian"]
215
for z in smb_options:
216
for e in endianness_options:
217
for a in auth_options:
218
for s in signseal_options:
219
binding_string = "ncacn_np:$SERVER_IP[%s%s%s%s]" % (a, s, z, e)
220
options = binding_string + " -U$USERNAME%$PASSWORD"
221
plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
222
for e in endianness_options:
223
for a in auth_options:
224
for s in signseal_options:
225
binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
226
options = binding_string + " -U$USERNAME%$PASSWORD"
227
plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))