smbd: Fix a typo
[Samba.git] / selftest / tests.py
blob8ff635f2777c401bdbacd49c8137252d54d7e94f
1 #!/usr/bin/python
2 # This script generates a list of testsuites that should be run as part of
3 # the Samba 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, 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/knownfail. This makes it
12 # very easy to see what functionality is still missing in Samba and makes
13 # it possible to run the testsuite against other servers, such as
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
22 from selftesthelpers import bindir, srcdir, python
23 from selftesthelpers import planpythontestsuite, samba4srcdir
24 from selftesthelpers import plantestsuite, bbdir
25 from selftesthelpers import configuration, valgrindify
26 from selftesthelpers import skiptestsuite
28 try:
29 config_h = os.environ["CONFIG_H"]
30 except KeyError:
31 samba4bindir = bindir()
32 config_h = os.path.join(samba4bindir, "default/include/config.h")
34 # check available features
35 config_hash = dict()
36 f = open(config_h, 'r')
37 try:
38 lines = f.readlines()
39 config_hash = dict((x[0], ' '.join(x[1:]))
40 for x in map(lambda line: line.strip().split(' ')[1:],
41 list(filter(lambda line: (line[0:7] == '#define') and (len(line.split(' ')) > 2), lines))))
42 finally:
43 f.close()
45 have_man_pages_support = ("XSLTPROC_MANPAGES" in config_hash)
46 with_pam = ("WITH_PAM" in config_hash)
47 with_elasticsearch_backend = ("HAVE_SPOTLIGHT_BACKEND_ES" in config_hash)
48 pam_wrapper_so_path = config_hash.get("LIBPAM_WRAPPER_SO_PATH")
49 pam_set_items_so_path = config_hash.get("PAM_SET_ITEMS_SO_PATH")
51 planpythontestsuite("none", "samba.tests.source")
52 if have_man_pages_support:
53 planpythontestsuite("none", "samba.tests.docs")
55 try:
56 import testscenarios
57 except ImportError:
58 skiptestsuite("subunit", "testscenarios not available")
59 else:
60 planpythontestsuite("none", "subunit.tests.test_suite")
61 planpythontestsuite("none", "samba.tests.blackbox.ndrdump")
62 planpythontestsuite("none", "samba.tests.blackbox.check_output")
63 planpythontestsuite("none", "api", name="ldb.python", extra_path=['lib/ldb/tests/python'])
64 planpythontestsuite("none", "samba.tests.credentials")
65 planpythontestsuite("none", "samba.tests.registry")
66 planpythontestsuite("ad_dc_ntvfs:local", "samba.tests.auth")
67 planpythontestsuite("none", "samba.tests.get_opt")
68 planpythontestsuite("none", "samba.tests.cred_opt")
69 planpythontestsuite("none", "samba.tests.security")
70 planpythontestsuite("none", "samba.tests.dcerpc.misc")
71 planpythontestsuite("none", "samba.tests.dcerpc.integer")
72 planpythontestsuite("none", "samba.tests.param")
73 planpythontestsuite("none", "samba.tests.upgrade")
74 planpythontestsuite("none", "samba.tests.core")
75 planpythontestsuite("none", "samba.tests.common")
76 planpythontestsuite("none", "samba.tests.provision")
77 planpythontestsuite("none", "samba.tests.password_quality")
78 planpythontestsuite("none", "samba.tests.strings")
79 planpythontestsuite("none", "samba.tests.netcmd")
80 planpythontestsuite("none", "samba.tests.dcerpc.rpc_talloc")
81 planpythontestsuite("none", "samba.tests.dcerpc.array")
82 planpythontestsuite("none", "samba.tests.dcerpc.string_tests")
83 planpythontestsuite("none", "samba.tests.hostconfig")
84 planpythontestsuite("ad_dc_ntvfs:local", "samba.tests.messaging")
85 planpythontestsuite("none", "samba.tests.s3param")
86 planpythontestsuite("none", "samba.tests.s3passdb")
87 planpythontestsuite("none", "samba.tests.s3registry")
88 planpythontestsuite("none", "samba.tests.s3windb")
89 planpythontestsuite("none", "samba.tests.s3idmapdb")
90 planpythontestsuite("none", "samba.tests.samba3sam")
91 planpythontestsuite("none", "samba.tests.dsdb_api")
92 planpythontestsuite(
93 "none", "wafsamba.tests.test_suite",
94 extra_path=[os.path.join(samba4srcdir, "..", "buildtools"),
95 os.path.join(samba4srcdir, "..", "third_party", "waf")])
96 planpythontestsuite("fileserver", "samba.tests.smbd_fuzztest")
97 planpythontestsuite("nt4_dc_smb1", "samba.tests.dcerpc.binding")
98 planpythontestsuite('ad_dc:local', "samba.tests.dcerpc.samr_change_password")
99 planpythontestsuite('ad_dc_fips:local',
100 "samba.tests.dcerpc.samr_change_password",
101 environ={'GNUTLS_FORCE_FIPS_MODE': '1',
102 'OPENSSL_FORCE_FIPS_MODE': '1'})
105 def cmdline(script, *args):
107 Prefix PYTHON env var and append --configurefile option to abs script path.
109 script.sh arg1 arg2
111 PYTHON=python /path/to/bbdir/script.sh arg1 arg2 \
112 --configurefile $SMB_CONF_FILE
114 return [
115 "PYTHON=%s" % python,
116 os.path.join(bbdir, script),
117 ] + list(args) + [configuration]
120 plantestsuite(
121 "samba4.blackbox.demote-saveddb", "none",
122 cmdline('demote-saveddb.sh', '$PREFIX_ABS/demote'))
124 plantestsuite(
125 "samba4.blackbox.dbcheck.alpha13", "none",
126 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
127 'alpha13'))
129 # same test as above but skip member link checks
130 plantestsuite(
131 "samba4.blackbox.dbcheck.alpha13.quick", "none",
132 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
133 'alpha13', '--quick-membership-checks'))
135 plantestsuite(
136 "samba4.blackbox.dbcheck.release-4-0-0", "none",
137 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
138 'release-4-0-0'))
140 # same test as above but skip member link checks
141 plantestsuite(
142 "samba4.blackbox.dbcheck.release-4-0-0.quick", "none",
143 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
144 'release-4-0-0', '--quick-membership-checks'))
146 plantestsuite(
147 "samba4.blackbox.dbcheck.release-4-1-0rc3", "none",
148 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
149 'release-4-1-0rc3'))
151 # same test as above but skip member link checks
152 plantestsuite(
153 "samba4.blackbox.dbcheck.release-4-1-0rc3.quick", "none",
154 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
155 'release-4-1-0rc3', '--quick-membership-checks'))
157 plantestsuite(
158 "samba4.blackbox.dbcheck.release-4-1-6-partial-object", "none",
159 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
160 'release-4-1-6-partial-object'))
162 # same test as above but skip member link checks
163 plantestsuite(
164 "samba4.blackbox.dbcheck.release-4-1-6-partial-object.quick", "none",
165 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
166 'release-4-1-6-partial-object', '--quick-membership-checks'))
168 plantestsuite(
169 "samba4.blackbox.dbcheck.release-4-5-0-pre1", "none",
170 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
171 'release-4-5-0-pre1'))
173 # same test as above but skip member link checks
174 plantestsuite(
175 "samba4.blackbox.dbcheck.release-4-5-0-pre1.quick", "none",
176 cmdline('dbcheck-oldrelease.sh', '$PREFIX_ABS/provision',
177 'release-4-5-0-pre1', '--quick-membership-checks'))
179 plantestsuite(
180 "samba4.blackbox.upgradeprovision.alpha13", "none",
181 cmdline('upgradeprovision-oldrelease.sh', '$PREFIX_ABS/provision',
182 'alpha13'))
184 plantestsuite(
185 "samba4.blackbox.upgradeprovision.release-4-0-0", "none",
186 cmdline('upgradeprovision-oldrelease.sh', '$PREFIX_ABS/provision',
187 'release-4-0-0'))
189 plantestsuite(
190 "samba4.blackbox.tombstones-expunge.release-4-5-0-pre1", "none",
191 cmdline('tombstones-expunge.sh', '$PREFIX_ABS/provision',
192 'release-4-5-0-pre1'))
194 plantestsuite(
195 "samba4.blackbox.dbcheck-links.release-4-5-0-pre1", "none",
196 cmdline('dbcheck-links.sh', '$PREFIX_ABS/provision',
197 'release-4-5-0-pre1'))
199 plantestsuite(
200 "samba4.blackbox.runtime-links.release-4-5-0-pre1", "none",
201 cmdline('runtime-links.sh', '$PREFIX_ABS/provision',
202 'release-4-5-0-pre1'))
204 plantestsuite(
205 "samba4.blackbox.schemaupgrade", "none",
206 cmdline('schemaupgrade.sh', '$PREFIX_ABS/provision'))
208 plantestsuite(
209 "samba4.blackbox.functionalprep", "none",
210 cmdline('functionalprep.sh', '$PREFIX_ABS/provision'))
212 planpythontestsuite("none", "samba.tests.upgradeprovision")
213 planpythontestsuite("none", "samba.tests.xattr")
214 planpythontestsuite("none", "samba.tests.ntacls")
215 planpythontestsuite("none", "samba.tests.policy")
216 planpythontestsuite("none", "samba.tests.kcc.graph")
217 planpythontestsuite("none", "samba.tests.kcc.graph_utils")
218 planpythontestsuite("none", "samba.tests.kcc.ldif_import_export")
219 planpythontestsuite("none", "samba.tests.graph")
220 plantestsuite("wafsamba.duplicate_symbols", "none", [os.path.join(srcdir(), "buildtools/wafsamba/test_duplicate_symbol.sh")])
221 planpythontestsuite("none", "samba.tests.glue")
222 planpythontestsuite("none", "samba.tests.tdb_util")
223 planpythontestsuite("none", "samba.tests.samdb")
224 planpythontestsuite("none", "samba.tests.samdb_api")
225 planpythontestsuite("none", "samba.tests.ndr")
227 if with_pam:
228 env = "ad_member"
229 options = [
231 "description": "krb5",
232 "pam_options": "krb5_auth krb5_ccache_type=FILE",
235 "description": "default",
236 "pam_options": "",
239 for o in options:
240 description = o["description"]
241 pam_options = "'%s'" % o["pam_options"]
243 plantestsuite("samba.tests.pam_winbind(local+%s)" % description, env,
244 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
245 valgrindify(python), pam_wrapper_so_path,
246 "$SERVER", "$USERNAME", "$PASSWORD",
247 pam_options])
248 plantestsuite("samba.tests.pam_winbind(domain1+%s)" % description, env,
249 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
250 valgrindify(python), pam_wrapper_so_path,
251 "$DOMAIN", "$DC_USERNAME", "$DC_PASSWORD",
252 pam_options])
253 plantestsuite("samba.tests.pam_winbind(domain2+%s)" % description, env,
254 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
255 valgrindify(python), pam_wrapper_so_path,
256 "$REALM", "$DC_USERNAME", "$DC_PASSWORD",
257 pam_options])
258 plantestsuite("samba.tests.pam_winbind(domain3+%s)" % description, env,
259 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
260 valgrindify(python), pam_wrapper_so_path,
261 "''", "${DC_USERNAME}@${DOMAIN}", "$DC_PASSWORD",
262 pam_options])
263 plantestsuite("samba.tests.pam_winbind(domain4+%s)" % description, env,
264 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
265 valgrindify(python), pam_wrapper_so_path,
266 "''", "${DC_USERNAME}@${REALM}", "$DC_PASSWORD",
267 pam_options])
268 plantestsuite("samba.tests.pam_winbind(domain5+%s)" % description, env,
269 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
270 valgrindify(python), pam_wrapper_so_path,
271 "$REALM", "${DC_USERNAME}@${DOMAIN}", "$DC_PASSWORD",
272 pam_options])
273 plantestsuite("samba.tests.pam_winbind(domain6+%s)" % description, env,
274 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
275 valgrindify(python), pam_wrapper_so_path,
276 "$DOMAIN", "${DC_USERNAME}@${REALM}", "$DC_PASSWORD",
277 pam_options])
278 plantestsuite("samba.tests.pam_winbind(trust_f_both1+%s)" % description, env,
279 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
280 valgrindify(python), pam_wrapper_so_path,
281 "$TRUST_F_BOTH_DOMAIN",
282 "$TRUST_F_BOTH_USERNAME",
283 "$TRUST_F_BOTH_PASSWORD",
284 pam_options])
285 plantestsuite("samba.tests.pam_winbind(trust_f_both2+%s)" % description, env,
286 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
287 valgrindify(python), pam_wrapper_so_path,
288 "$TRUST_F_BOTH_REALM",
289 "$TRUST_F_BOTH_USERNAME",
290 "$TRUST_F_BOTH_PASSWORD",
291 pam_options])
292 plantestsuite("samba.tests.pam_winbind(trust_f_both3+%s)" % description, env,
293 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
294 valgrindify(python), pam_wrapper_so_path,
295 "''",
296 "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_DOMAIN}",
297 "$TRUST_F_BOTH_PASSWORD",
298 pam_options])
299 plantestsuite("samba.tests.pam_winbind(trust_f_both4+%s)" % description, env,
300 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
301 valgrindify(python), pam_wrapper_so_path,
302 "''",
303 "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_REALM}",
304 "$TRUST_F_BOTH_PASSWORD",
305 pam_options])
306 plantestsuite("samba.tests.pam_winbind(trust_f_both5+%s)" % description, env,
307 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
308 valgrindify(python), pam_wrapper_so_path,
309 "${TRUST_F_BOTH_REALM}",
310 "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_DOMAIN}",
311 "$TRUST_F_BOTH_PASSWORD",
312 pam_options])
313 plantestsuite("samba.tests.pam_winbind(trust_f_both6+%s)" % description, env,
314 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
315 valgrindify(python), pam_wrapper_so_path,
316 "${TRUST_F_BOTH_DOMAIN}",
317 "${TRUST_F_BOTH_USERNAME}@${TRUST_F_BOTH_REALM}",
318 "$TRUST_F_BOTH_PASSWORD",
319 pam_options])
320 plantestsuite("samba.tests.pam_winbind(trust_e_both1+%s)" % description, env,
321 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
322 valgrindify(python), pam_wrapper_so_path,
323 "$TRUST_E_BOTH_DOMAIN",
324 "$TRUST_E_BOTH_USERNAME",
325 "$TRUST_E_BOTH_PASSWORD",
326 pam_options])
327 plantestsuite("samba.tests.pam_winbind(trust_e_both2+%s)" % description, env,
328 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
329 valgrindify(python), pam_wrapper_so_path,
330 "$TRUST_E_BOTH_REALM",
331 "$TRUST_E_BOTH_USERNAME",
332 "$TRUST_E_BOTH_PASSWORD",
333 pam_options])
334 plantestsuite("samba.tests.pam_winbind(trust_e_both3+%s)" % description, env,
335 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
336 valgrindify(python), pam_wrapper_so_path,
337 "''",
338 "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_DOMAIN}",
339 "$TRUST_E_BOTH_PASSWORD",
340 pam_options])
341 plantestsuite("samba.tests.pam_winbind(trust_e_both4+%s)" % description, env,
342 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
343 valgrindify(python), pam_wrapper_so_path,
344 "''",
345 "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_REALM}",
346 "$TRUST_E_BOTH_PASSWORD",
347 pam_options])
348 plantestsuite("samba.tests.pam_winbind(trust_e_both5+%s)" % description, env,
349 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
350 valgrindify(python), pam_wrapper_so_path,
351 "${TRUST_E_BOTH_REALM}",
352 "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_DOMAIN}",
353 "$TRUST_E_BOTH_PASSWORD",
354 pam_options])
355 plantestsuite("samba.tests.pam_winbind(trust_e_both6+%s)" % description, env,
356 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind.sh"),
357 valgrindify(python), pam_wrapper_so_path,
358 "${TRUST_E_BOTH_DOMAIN}",
359 "${TRUST_E_BOTH_USERNAME}@${TRUST_E_BOTH_REALM}",
360 "$TRUST_E_BOTH_PASSWORD",
361 pam_options])
363 for authtok_options in ["", "use_authtok", "try_authtok"]:
364 _pam_options = "'%s %s'" % (o["pam_options"], authtok_options)
365 _description = "%s %s" % (description, authtok_options)
366 plantestsuite("samba.tests.pam_winbind_chauthtok(domain+%s)" % _description, env,
367 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind_chauthtok.sh"),
368 valgrindify(python), pam_wrapper_so_path, pam_set_items_so_path,
369 "$DOMAIN", "TestPamOptionsUser", "oldp@ssword0", "newp@ssword0",
370 _pam_options, 'yes',
371 "$DC_SERVER", "$DC_USERNAME", "$DC_PASSWORD"])
373 plantestsuite("samba.tests.pam_winbind_warn_pwd_expire(domain+%s)" % description, env,
374 [os.path.join(srcdir(), "python/samba/tests/test_pam_winbind_warn_pwd_expire.sh"),
375 valgrindify(python), pam_wrapper_so_path,
376 "$DOMAIN", "alice", "Secret007",
377 pam_options])
380 plantestsuite("samba.unittests.krb5samba", "none",
381 [os.path.join(bindir(), "default/testsuite/unittests/test_krb5samba")])
382 plantestsuite("samba.unittests.sambafs_srv_pipe", "none",
383 [os.path.join(bindir(), "default/testsuite/unittests/test_sambafs_srv_pipe")])
384 plantestsuite("samba.unittests.lib_util_modules", "none",
385 [os.path.join(bindir(), "default/testsuite/unittests/test_lib_util_modules")])
386 plantestsuite("samba.unittests.background_send",
387 "none",
388 [os.path.join(
389 bindir(),
390 "default/testsuite/unittests/test_background_send"),
391 "$SMB_CONF_PATH"])
393 plantestsuite("samba.unittests.smb1cli_session", "none",
394 [os.path.join(bindir(), "default/libcli/smb/test_smb1cli_session")])
395 plantestsuite("samba.unittests.smb_util_translate", "none",
396 [os.path.join(bindir(), "default/libcli/smb/test_util_translate")])
398 plantestsuite("samba.unittests.talloc_keep_secret", "none",
399 [os.path.join(bindir(), "default/lib/util/test_talloc_keep_secret")])
401 plantestsuite("samba.unittests.tldap", "none",
402 [os.path.join(bindir(), "default/source3/test_tldap")])
403 plantestsuite("samba.unittests.rfc1738", "none",
404 [os.path.join(bindir(), "default/lib/util/test_rfc1738")])
405 plantestsuite("samba.unittests.kerberos", "none",
406 [os.path.join(bindir(), "test_kerberos")])
407 plantestsuite("samba.unittests.ms_fnmatch", "none",
408 [os.path.join(bindir(), "default/lib/util/test_ms_fnmatch")])
409 plantestsuite("samba.unittests.byteorder", "none",
410 [os.path.join(bindir(), "default/lib/util/test_byteorder")])
411 plantestsuite("samba.unittests.bytearray", "none",
412 [os.path.join(bindir(), "default/lib/util/test_bytearray")])
413 plantestsuite("samba.unittests.byteorder_verify", "none",
414 [os.path.join(bindir(), "default/lib/util/test_byteorder_verify")])
415 plantestsuite("samba.unittests.util_paths", "none",
416 [os.path.join(bindir(), "default/lib/util/test_util_paths")])
417 plantestsuite("samba.unittests.util", "none",
418 [os.path.join(bindir(), "default/lib/util/test_util")])
419 plantestsuite("samba.unittests.memcache", "none",
420 [os.path.join(bindir(), "default/lib/util/test_memcache")])
421 plantestsuite("samba.unittests.sys_rw", "none",
422 [os.path.join(bindir(), "default/lib/util/test_sys_rw")])
423 plantestsuite("samba.unittests.ntlm_check", "none",
424 [os.path.join(bindir(), "default/libcli/auth/test_ntlm_check")])
425 plantestsuite("samba.unittests.gnutls", "none",
426 [os.path.join(bindir(), "default/libcli/auth/test_gnutls")])
427 plantestsuite("samba.unittests.rc4_passwd_buffer", "none",
428 [os.path.join(bindir(), "default/libcli/auth/test_rc4_passwd_buffer")])
429 plantestsuite("samba.unittests.schannel", "none",
430 [os.path.join(bindir(), "default/libcli/auth/test_schannel")])
431 plantestsuite("samba.unittests.test_registry_regfio", "none",
432 [os.path.join(bindir(), "default/source3/test_registry_regfio")])
433 plantestsuite("samba.unittests.test_oLschema2ldif", "none",
434 [os.path.join(bindir(), "default/source4/utils/oLschema2ldif/test_oLschema2ldif")])
435 if with_elasticsearch_backend:
436 plantestsuite("samba.unittests.mdsparser_es", "none",
437 [os.path.join(bindir(), "default/source3/test_mdsparser_es")] + [configuration])
438 plantestsuite("samba.unittests.mdsparser_es_failures", "none",
439 [os.path.join(bindir(), "default/source3/test_mdsparser_es"),
440 " --option=elasticsearch:testmappingfailures=yes",
441 " --option=elasticsearch:ignoreunknownattribute=yes",
442 " --option=elasticsearch:ignoreunknowntype=yes"] +
443 [configuration])
444 plantestsuite("samba.unittests.credentials", "none",
445 [os.path.join(bindir(), "default/auth/credentials/test_creds")])
446 plantestsuite("samba.unittests.tsocket_bsd_addr", "none",
447 [os.path.join(bindir(), "default/lib/tsocket/test_tsocket_bsd_addr")])