fda3be137707f3309eb5b846385e48c63a62152a
[nivanova/samba-autobuild/.git] / source3 / selftest / tests.py
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.
4
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".
8
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.
15
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.
20
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
25
26 smb4torture = binpath("smbtorture4")
27 samba3srcdir = srcdir() + "/source3"
28 configuration = "--configfile=$SMB_CONF_PATH"
29 scriptdir=os.path.join(samba3srcdir, "../script/tests")
30
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']
36
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)
43
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)
48
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")])
51
52 plantestsuite("samba3.local_s3", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_local_s3.sh")])
53
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",
63         "BAD-NBT-SESSION",
64         "LOCAL-string_to_sid", "LOCAL-CONVERT-STRING" ]
65
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"])
69
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"]
91
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])
95
96 plantestsuite(
97     "samba3.wbinfo_sids2xids.(member:local)", "member:local",
98     [os.path.join(samba3srcdir, "script/tests/test_wbinfo_sids2xids.sh")])
99
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])
101
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])
104
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"])
107
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])
110
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"])
113
114 # plain
115 for env in ["s3dc"]:
116     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', binpath('smbclient3'), configuration])
117
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\\\\$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', binpath('smbclient3'), configuration])
120
121 for env in ["s3dc"]:
122     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', binpath('smbclient3'), configuration, "--signing=required"])
123
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\\\\$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', binpath('smbclient3'), configuration, "--signing=required"])
126
127 # encrypted
128 for env in ["s3dc"]:
129     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', binpath('smbclient3'), configuration, "-e"])
130
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'])
138
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"),
142                                                        "$LOCAL_PATH"])
143
144 plantestsuite(
145     "samba3.pthreadpool", "s3dc",
146     [os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
147
148 #smbtorture4 tests
149
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"]
157
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
166 smb2 = ["smb2.lock", "smb2.read", "smb2.compound", "smb2.connect", "smb2.scan", "smb2.scanfind",
167         "smb2.bench-oplock"]
168
169 rpc = ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
170        "rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
171        "rpc.samba3.getaliasmembership-0",
172        "rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
173        "rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
174        "rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
175        "rpc.spoolss.driver",
176        "rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
177        "rpc.lsa.privileges", 
178        "rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
179        "rpc.samr.passwords.pwdlastset", "rpc.samr.large-dc", "rpc.samr.machine.auth",
180        "rpc.netlogon.admin",
181        "rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.join", "rpc.bind", "rpc.epmapper"]
182
183 local = ["local.nss-wrapper", "local.ndr"]
184
185 winbind = ["winbind.struct", "winbind.wbclient"]
186
187 rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
188
189 unix = ["unix.info2", "unix.whoami"]
190
191 nbt = ["nbt.dgram" ]
192
193 tests= base + raw + smb2 + rpc + unix + local + winbind + rap + nbt
194
195 sub = subprocess.Popen("%s --version 2> /dev/null" % smb4torture, stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)
196 sub.communicate("")
197
198 if sub.returncode == 0:
199     for t in tests:
200         if t == "base.delaywrite":
201             plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --maximum-runtime=900')
202         elif t == "rap.sam":
203             plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
204         elif t == "unix.whoami":
205             plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD')
206         elif t == "raw.samba3posixtimedlock":
207             plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/s3dc/share')
208         elif t == "raw.chkpath":
209             plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
210         else:
211             plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
212
213
214     test = 'rpc.lsa.lookupsids'
215     auth_options = ["", "ntlm", "spnego" ]
216     signseal_options = ["", ",connect", ",sign", ",seal"]
217     smb_options = ["", ",smb2"]
218     endianness_options = ["", ",bigendian"]
219     for z in smb_options:
220         for s in signseal_options:
221             for e in endianness_options:
222                 for a in auth_options:
223                     binding_string = "ncacn_np:$SERVER[%s%s%s%s]" % (a, s, z, e)
224                     options = binding_string + " -U$USERNAME%$PASSWORD"
225                     plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
226
227             # We should try more combinations in future, but this is all
228             # the pre-calculated credentials cache supports at the moment
229             e = ""
230             a = ""
231             binding_string = "ncacn_np:$SERVER[%s%s%s%s]" % (a, s, z, e)
232             options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
233             plansmbtorturetestsuite(test, "ktest", options, 'over kerberos with old ccache ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
234
235             options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
236             plansmbtorturetestsuite(test, "ktest", options, 'over kerberos ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
237
238
239
240     for e in endianness_options:
241         for a in auth_options:
242             for s in signseal_options:
243                 binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
244                 options = binding_string + " -U$USERNAME%$PASSWORD"
245                 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))