s3-test: Added net conf tests to tests.py
[samba.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", "CHAIN2",
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" ]
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 ["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"])
113
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"])
116
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])
120
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])
123
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"])
126
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"])
129
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"])
133
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", [os.path.join(samba3srcdir, "script/tests/test_net_registry.sh"),
140                                                        scriptdir, "$SMB_CONF_PATH", configuration, 'rpc'])
141
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.net.rpc.registry.roundtrip", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_registry_roundtrip.sh"),
145                                                        scriptdir, "$SMB_CONF_PATH", configuration, 'rpc'])
146
147 plantestsuite("samba3.blackbox.net.local.conf", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
148                                                        scriptdir, "$SMB_CONF_PATH", configuration,])
149 plantestsuite("samba3.blackbox.net.rpc.conf", "s3dc", [os.path.join(samba3srcdir, "script/tests/test_net_conf.sh"),
150                                                        scriptdir, "$SMB_CONF_PATH", configuration, 'rpc'])
151
152
153 plantestsuite("samba3.blackbox.testparm", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_testparm_s3.sh"),
154                                                        "$LOCAL_PATH"])
155
156 plantestsuite(
157     "samba3.pthreadpool", "s3dc",
158     [os.path.join(samba3srcdir, "script/tests/test_pthreadpool.sh")])
159
160 #smbtorture4 tests
161
162 base = ["base.attr", "base.charset", "base.chkpath", "base.defer_open", "base.delaywrite", "base.delete",
163         "base.deny1", "base.deny2", "base.deny3", "base.denydos", "base.dir1", "base.dir2",
164         "base.disconnect", "base.fdpass", "base.lock",
165         "base.mangle", "base.negnowait", "base.ntdeny1",
166         "base.ntdeny2", "base.open", "base.openattr", "base.properties", "base.rename", "base.rw1",
167         "base.secleak", "base.tcon", "base.tcondev", "base.trans2", "base.unlink", "base.vuid",
168         "base.xcopy", "base.samba3error"]
169
170 raw = ["raw.acls", "raw.chkpath", "raw.close", "raw.composite", "raw.context", "raw.eas",
171        "raw.ioctl", "raw.lock", "raw.mkdir", "raw.mux", "raw.notify", "raw.open", "raw.oplock"
172        "raw.qfileinfo", "raw.qfsinfo", "raw.read", "raw.rename", "raw.search", "raw.seek",
173        "raw.sfileinfo.base", "raw.sfileinfo.bug", "raw.streams", "raw.unlink", "raw.write",
174        "raw.samba3hide", "raw.samba3badpath", "raw.sfileinfo.rename",
175        "raw.samba3caseinsensitive", "raw.samba3posixtimedlock",
176        "raw.samba3rootdirfid", "raw.sfileinfo.end-of-file",
177        "raw.bench-oplock", "raw.bench-lock", "raw.bench-open", "raw.bench-tcon",
178        "raw.samba3checkfsp", "raw.samba3closeerr", "raw.samba3oplocklogoff"]
179
180 smb2 = ["smb2.lock", "smb2.read", "smb2.compound", "smb2.connect", "smb2.scan", "smb2.scanfind",
181         "smb2.bench-oplock"]
182
183 rpc = ["rpc.authcontext", "rpc.samba3.bind", "rpc.samba3.srvsvc", "rpc.samba3.sharesec",
184        "rpc.samba3.spoolss", "rpc.samba3.wkssvc", "rpc.samba3.winreg",
185        "rpc.samba3.getaliasmembership-0",
186        "rpc.samba3.netlogon", "rpc.samba3.sessionkey", "rpc.samba3.getusername",
187        "rpc.svcctl", "rpc.ntsvcs", "rpc.winreg", "rpc.eventlog",
188        "rpc.spoolss.printserver", "rpc.spoolss.win", "rpc.spoolss.notify", "rpc.spoolss.printer",
189        "rpc.spoolss.driver",
190        "rpc.lsa", "rpc.lsa-getuser", "rpc.lsa.lookupsids", "rpc.lsa.lookupnames",
191        "rpc.lsa.privileges", "rpc.lsa.secrets",
192        "rpc.samr", "rpc.samr.users", "rpc.samr.users.privileges", "rpc.samr.passwords",
193        "rpc.samr.passwords.pwdlastset", "rpc.samr.large-dc", "rpc.samr.machine.auth",
194        "rpc.netlogon.admin",
195        "rpc.schannel", "rpc.schannel2", "rpc.bench-schannel1", "rpc.join", "rpc.bind"]
196
197 local = ["local.nss-wrapper", "local.ndr"]
198
199 winbind = ["winbind.struct", "winbind.wbclient"]
200
201 rap = ["rap.basic", "rap.rpc", "rap.printing", "rap.sam"]
202
203 unix = ["unix.info2", "unix.whoami"]
204
205 nbt = ["nbt.dgram" ]
206
207 libsmbclient = ["libsmbclient"]
208
209 tests= base + raw + smb2 + rpc + unix + local + winbind + rap + nbt + libsmbclient
210
211 sub = subprocess.Popen("%s --version 2> /dev/null" % smb4torture, stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)
212 sub.communicate("")
213
214 if sub.returncode == 0:
215     for t in tests:
216         if t == "base.delaywrite":
217             plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --maximum-runtime=900')
218         elif t == "rap.sam":
219             plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD --option=doscharset=ISO-8859-1')
220         elif t == "unix.whoami":
221             plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD')
222         elif t == "raw.samba3posixtimedlock":
223             plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpguest -U$USERNAME%$PASSWORD --option=torture:localdir=$SELFTEST_PREFIX/s3dc/share')
224         elif t == "raw.chkpath":
225             plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD')
226         else:
227             plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD')
228
229
230     test = 'rpc.lsa.lookupsids'
231     auth_options = ["", "ntlm", "spnego" ]
232     signseal_options = ["", ",connect", ",sign", ",seal"]
233     smb_options = ["", ",smb2"]
234     endianness_options = ["", ",bigendian"]
235     for z in smb_options:
236         for s in signseal_options:
237             for e in endianness_options:
238                 for a in auth_options:
239                     binding_string = "ncacn_np:$SERVER[%s%s%s%s]" % (a, s, z, e)
240                     options = binding_string + " -U$USERNAME%$PASSWORD"
241                     plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
242
243             # We should try more combinations in future, but this is all
244             # the pre-calculated credentials cache supports at the moment
245             e = ""
246             a = ""
247             binding_string = "ncacn_np:$SERVER[%s%s%s%s]" % (a, s, z, e)
248             options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-2"
249             plansmbtorturetestsuite(test, "ktest", options, 'over kerberos with old ccache ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
250
251             options = binding_string + " -k yes --krb5-ccache=$PREFIX/ktest/krb5_ccache-3"
252             plansmbtorturetestsuite(test, "ktest", options, 'over kerberos ncacn_np with [%s%s%s%s] ' % (a, s, z, e))
253
254
255
256     for e in endianness_options:
257         for a in auth_options:
258             for s in signseal_options:
259                 binding_string = "ncacn_ip_tcp:$SERVER_IP[%s%s%s]" % (a, s, e)
260                 options = binding_string + " -U$USERNAME%$PASSWORD"
261                 plansmbtorturetestsuite(test, "s3dc", options, 'over ncacn_ip_tcp with [%s%s%s] ' % (a, s, e))
262
263     test = 'rpc.epmapper'
264     env = 's3dc:local'
265     binding_string = 'ncalrpc:'
266     options = binding_string + " -U$USERNAME%$PASSWORD"
267
268     plansmbtorturetestsuite(test, env, options, 'over ncalrpc')