Commit Graph

64 Commits

Author SHA1 Message Date
Enji Cooper
159a783fdf Increase the timeout for resolv_test from the default (300 seconds) to
450 seconds

This is required on slower network connections, and on older releases
(stable/10 seems to be slower as far as name resolution goes.. not sure
why yet).

Remove an outdated comment in the Makefile from when I was working on
this code over a year ago on github

MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division
2015-12-23 18:48:32 +00:00
Ed Schouten
459d04a5ee Let tsearch()/tdelete() use an AVL tree.
The existing implementations of POSIX tsearch() and tdelete() don't
attempt to perform any balancing at all. Testing reveals that inserting
100k nodes into a tree sequentially takes approximately one minute on my
system.

Though most other BSDs also don't use any balanced tree internally, C
libraries like glibc and musl do provide better implementations. glibc
uses a red-black tree and musl uses an AVL tree.

Red-black trees have the advantage over AVL trees that they only require
O(1) rotations after insertion and deletion, but have the disadvantage
that the tree has a maximum depth of 2*log2(n) instead of 1.44*log2(n).
My take is that it's better to focus on having a lower maximum depth,
for the reason that in the case of tsearch() the invocation of the
comparator likely dominates the running time.

This change replaces the tsearch() and tdelete() functions by versions
that create an AVL tree. Compared to musl's implementation, this version
is different in two different ways:

- We don't keep track of heights; just balances. This is sufficient.
  This has the advantage that it reduces the number of nodes that are
  being accessed. Storing heights requires us to also access all of the
  siblings along the path.

- Don't use any recursion at all. We know that the tree cannot 2^64
  elements in size, so the height of the tree can never be larger than
  96. Use a 128-bit bitmask to keep track of the path that is computed.
  This allows us to iterate over the same path twice, meaning we can
  apply rotations from top to bottom.

Inserting 100k nodes into a tree now only takes 0.015 seconds. Insertion
seems to be twice as fast as glibc, whereas deletion has about the same
performance. Unlike glibc, it uses a fixed amount of memory.

I also experimented with both recursive and iterative bottom-up
implementations of the same algorithm. This iterative top-down version
performs similar to the recursive bottom-up version in terms of speed
and code size.

For some reason, the iterative bottom-up algorithm was actually 30%
faster for deletion, but has a quadratic memory complexity to keep track
of all the parent pointers.

Reviewed by:	jilles
Obtained from:	https://github.com/NuxiNL/cloudlibc
Differential Revision:	https://reviews.freebsd.org/D4412
2015-12-22 18:12:11 +00:00
Enji Cooper
7d5b6ed91d Iterate down lib/libc/tests/nss...
MFC after: 1 week
X-MFC with: r292323
Sponsored by: EMC / Isilon Storage Division
2015-12-16 08:25:12 +00:00
Enji Cooper
08ca345cfd Integrate tools/regression/lib/libc/nss into the FreeBSD test suite as
lib/libc/tests/nss

- Convert the testcases to ATF
- Do some style(9) cleanups:
-- Sort headers
-- Apply indentation fixes
-- Remove superfluous parentheses
- Explicitly print out debug printfs for use with `kyua {debug,report}`; for
  items that were overly noisy, they've been put behind #ifdef DEBUG
  conditionals
- Fix some format strings

MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division
2015-12-16 08:09:03 +00:00
Enji Cooper
6971646f3e Add Makefile accidentally missed in r292317
MFC after: 1 week
X-MFC with: r292317
Sponsored by: EMC / Isilon Storage Division
2015-12-16 05:19:07 +00:00
Enji Cooper
9ada6f3369 Integrate tools/regression/lib/libc/resolv into the FreeBSD test suite as
lib/libc/tests/resolv

Convert the testcases to ATF

MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division
2015-12-16 05:11:57 +00:00
Enji Cooper
8abd0f3f26 Delete bogus freeing of uninitialized data
MFC after: 3 days
Reported by: cppcheck
Sponsored by: EMC / Isilon Storage Division
2015-12-08 04:51:21 +00:00
Enji Cooper
3e22799178 Add missing va_ends for corresponding va_starts to clean up variable arguments
initialized in _test_fmt(..)

MFC after: 3 days
Reported by: cppcheck
Sponsored by: EMC / Isilon Storage Division
2015-12-08 04:45:44 +00:00
Bryan Drewery
b1e20a1db5 Fix regression in r291738: This really wants -lssp.
The normal LIBADD is ssp_nonshared.  This also had a DPADD on LIBSSP which
does not actually exist, it is blank.

Sponsored by:	EMC / Isilon Storage Division
2015-12-05 18:56:21 +00:00
Enji Cooper
0b6008d017 Initialize errno to 0 in the nul testcase before testing it
For some odd reason stable/10 requires this, otherwise it always fails
the errno == 0 check on line 196.

Sponsored by: EMC / Isilon Storage Division
2015-12-05 04:10:15 +00:00
Bryan Drewery
eacae6dc66 Fix LDADD/DPADD that should be LIBADD.
Sponsored by:	EMC / Isilon Storage Division
2015-12-04 03:17:47 +00:00
Bryan Drewery
c196e3988a Follow-up r291330: h_testbits.h is only needed by xdr_test.
X-MFC-With:	r291330
MFC after:	1 week
Sponsored by:	EMC / Isilon Storage Division
2015-11-25 22:33:25 +00:00
Bryan Drewery
114350b9de Replace DPSRCS that work fine in SRCS.
This is so that 'make depend' is not a required build step in these
files.

DPSRCS is overall unneeded.  DPSRCS already contains SRCS, so anything
which can safely be in SRCS should be.  DPSRCS is mostly just a way to
generate files that should not be linked into the final PROG/LIB.  For
headers and grammars it is safe for them to be in SRCS since they will
be excluded during linking and installation.

The only remaining uses of DPSRCS are for generating .c or .o files that
must be built before 'make depend' can run 'mkdep' on the SRCS c files
list.  A semi-proper example is in tests/sys/kern/acct/Makefile where a
checked-in .c file has an #include on a generated .c file.  The
generated .c file should not be linked into the final PROG though since
it is #include'd.  The more proper way here is just to build/link it in
though without DPSRCS.  Another example is in sys/modules/linux/Makefile
where a shell script runs to parse a DPSRCS .o file that should not be
linked into the module.  Beyond those, the need for DPSRCS is largely
unneeded, redundant, and forces 'make depend' to be ran.  Generally,
these Makefiles should avoid the need for DPSRCS and define proper
dependencies for their files as well.

An example of an improper usage and why this matters is in usr.bin/netstat.
nl_defs.h was only in DPSRCS and so was not generated during 'make all',
but only during 'make depend'.  The files including it lacked proper
depenencies on it, which forced running 'make depend' to workaround that
bug.  The 'make depend' target should mostly be used for incremental build
help, not to produce a working build.  This specific example was broken in
the meta build until r287905 since it does not run 'make depend'.

The gnu/lib/libreadline/readline case is fine since bsd.lib.mk has 'OBJS:
SRCS:M*.h' when there is no .depend file.

Sponsored by:	EMC / Isilon Storage Division
MFC after:	1 week
2015-11-25 20:38:17 +00:00
Enji Cooper
2b4bcea740 Use __MAKE_SHELL instead of HOST_SHELL when generating aton_ether_subr.c
(HOST_SHELL is used in NetBSD)

This fixes permission denied issues when gen_ether_subr is not executable

MFC after: 3 days
Reported by: José Pérez <fbl@aoek.com>
Suggested by: bdrewery, sjg
2015-11-23 07:57:41 +00:00
Enji Cooper
dc5c5b1da8 Do not print out errno if the call succeeded unexpectedly; this was a mistake
made in r290868

MFC after: 4 days
X-MFC with: r290563, r290868
Reported by: jilles
Sponsored by: EMC / Isilon Storage Division
2015-11-18 23:42:44 +00:00
Enji Cooper
f443c488b0 Add some initial tests for SLIST and STAILQ macros
MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division
2015-11-16 04:15:39 +00:00
Enji Cooper
bea1d37ed7 Disable -Wformat with scanfloat_test when compiling with gcc to avoid a
"use of assignment suppression and length modifier together in scanf format"
warning on line 90 (it's intentional)

MFC after: 1 week
X-MFC with: r290537, r290856, r290860
Sponsored by: EMC / Isilon Storage Division
2015-11-15 18:56:58 +00:00
Enji Cooper
0fc72683be Fix -Wformat issues
X-MFC with: r290563
MFC after: 1 week
Reported by: gcc
Sponsored by: EMC / Isilon Storage Division
2015-11-15 18:45:04 +00:00
Baptiste Daroussin
95631a07b2 Remove unused variables to fix building world 2015-11-15 12:48:42 +00:00
Enji Cooper
6157e90c35 Change WARNS to 2 across the board with all the libc testcases
This effectively "reverts" r290846

MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division
2015-11-15 05:21:58 +00:00
Enji Cooper
dd3d75ba5f Fix -Wmissing-braces warnings by adding braces around all the
testcase inputs

MFC after: 1 week
X-MFC with: r290572
Sponsored by: EMC / Isilon Storage Division
2015-11-15 05:13:33 +00:00
Enji Cooper
397f4a0de5 Fix -Wunused warnings
MFC after: 1 week
X-MFC with: r290572
Sponsored by: EMC / Isilon Storage Division
2015-11-15 05:02:41 +00:00
Enji Cooper
e426f1f48f Bump WARNS to 2
MFC after: 1 week
X-MFC with: r290532
Sponsored by: EMC / Isilon Storage Division
2015-11-15 04:51:14 +00:00
Enji Cooper
c384ef563e Remove unused variables; sort by alignment where needed
MFC after: 1 week
X-MFC with: r290532
Sponsored by: EMC / Isilon Storage Division
2015-11-15 04:50:54 +00:00
Enji Cooper
a244e42201 Polish up iswctype_test
- Split up the testcases into C locale and ja_JP.eucJP testcases.
- Avoid a segfault in the event that setlocale fails, similar to r290843
- Replace `sizeof(x) / sizeof(*x)` pattern with `nitems(x)`

MFC after: 1 week
X-MFC with: r290532
Sponsored by: EMC / Isilon Storage Division
2015-11-15 04:50:08 +00:00
Enji Cooper
cc4ac19cb0 Polish up the tests a bit more after projects/collation was merged to head
Provide more meaningful diagnostic messages if LC_CTYPE can't be set properly
instead of segfaulting, because setlocale returns NULL and strcmp(NULL, b) will
always segfault

Split up the testcases so one failing (in this case en_US.ISO8859-15) won't
cause the rest of the testcases to be skipped

Remove some unused variables

MFC after: 1 week
X-MFC with: r290532
Sponsored by: EMC / Isilon Storage Division
2015-11-15 04:33:14 +00:00
Enji Cooper
252f1a84f7 Fix the Indian numbering system (hi_IN.ISCII-DEV) tests
Submitted by: ache
X-MFC with: r290494 (if that ever happens)
Sponsored by: EMC / Isilon Storage Division
2015-11-15 03:56:09 +00:00
Enji Cooper
79346959a2 Add missing licensing boilerplate to test-fnmatch.c
Carry over licensing author info from fnmatch_test.c (jilles@)

MFC after: 1 week
X-MFC with: r290572
Sponsored by: EMC / Isilon Storage Division
2015-11-10 11:28:02 +00:00
Enji Cooper
fbf5b9f8a2 Integrate tools/regression/lib/libc/gen into the FreeBSD test suite
as lib/libc/tests/gen

The code in test-fnmatch that was used for generating:

- bin/sh/tests/builtins/case2.0
- bin/sh/tests/builtins/case3.0

has been left undisturbed. The target `make sh-tests` has been moved over
from tools/regression/lib/libc/gen/Makefile to
lib/libc/tests/gen/Makefile and made into a PHONY target

case2.0 and case3.0 test input generation isn't being done automatically.
This needs additional discussion.

MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division
2015-11-09 06:24:11 +00:00
Enji Cooper
233193f1e6 Fix some TAP -> ATF conversion errors
- Remove a leftover printf from when this was a TAP based testcase
- Catch mmap failures properly

MFC after: 3 days
Sponsored by: EMC / Isilon Storage Division
2015-11-09 06:16:38 +00:00
Enji Cooper
24732d675d Integrate tools/regression/lib/libc/net into the FreeBSD test suite
as lib/libc/tests/net

Also, fix eui64_aton_test:test_str(..). The test was comparing the result
of eui64_aton to a pointer of the expected result.

MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division
2015-11-08 23:06:40 +00:00
Enji Cooper
659f1d64bd Delete leftover printfs from when these were TAP tests
MFC after: 1 week
X-MFC with: r290532
Sponsored by: EMC / Isilon Storage Division
2015-11-08 21:57:35 +00:00
Enji Cooper
4c05e4ea85 Convert print_positional_test over to ATF
Somehow missed in r290537

X-MFC with: r290537
MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division
2015-11-08 21:38:46 +00:00
Enji Cooper
3e86c1081d printfloat_test and scanfloat_test need symbols from msun; these are automatically
provided on amd64, but not i386. Add libm to DPADD/LDADD to unbreak the i386
tinderbox

Pointyhat to: ngie
MFC after: 1 week
X-MFC with: r290538
Sponsored by: EMC / Isilon Storage Division
2015-11-08 08:27:51 +00:00
Enji Cooper
347267dcf8 Integrate tools/regression/lib/libc/string into the FreeBSD test suite
as lib/libc/tests/string

MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division
2015-11-08 07:53:31 +00:00
Enji Cooper
98682851f2 Integrate tools/regression/lib/libc/stdlib into the FreeBSD test suite
as lib/libc/tests/stdlib

- Make the code a bit more style(9) compliant
- Convert a sizeof(x)/sizeof(x[0]) to nitems

MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division
2015-11-08 07:03:17 +00:00
Enji Cooper
1ee0219205 Integrate tools/regression/lib/libc/stdio into the FreeBSD test suite
as lib/libc/tests/stdio

- Fix some whitespace
- Convert the testcases to ATF
- Convert "/dev/null" to _PATH_DEVNULL

MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division
2015-11-08 06:37:50 +00:00
Enji Cooper
9da7d79f25 Integrate tools/regression/lib/libc/locale into the FreeBSD test suite
as lib/libc/tests/locale

MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division
2015-11-08 02:06:17 +00:00
Enji Cooper
c5a5e42ca1 Add _test suffix to multiple tests in lib/libc to conform to the design noted
in the FreeBSD Test Suite wiki

MFC after: 3 days
Sponsored by: EMC / Isilon Storage Division
2015-11-02 01:29:01 +00:00
Enji Cooper
7f9f802421 Remove unused variable (SRCDIR)
MFC after: 3 days
Sponsored by: EMC / Isilon Storage Division
2015-11-02 01:23:04 +00:00
Sean Bruno
4d871c1e61 Not all targets support by clang have a tested or enabled ubsan yet.
Only enable h_raw on x86 targets for today so that a buildworld runs to
completion for clang enabled targets that are not x86.  This should be
removed when validation of the sanitizer has occured for all targets
supported by FreeBSD and clang.
2015-10-30 17:05:52 +00:00
Enji Cooper
ff44c5381d Disable h_raw/h_read with gcc
I forgot that these testcases fail with gcc 4.2.1; add a note to that effect

MFC after: never
Sponsored by: EMC / Isilon Storage Division
2015-10-30 08:06:24 +00:00
Enji Cooper
3f036df665 - Re-enable h_raw with clang 3.7.0+
- Fix the compiler check to allow the test to be compiled for gcc

PR: 196430
MFC after: never
Sponsored by: EMC / Isilon Storage Division
2015-10-30 07:48:03 +00:00
Enji Cooper
ebfe174ea8 Integrate contrib/netbsd-tests/lib/libc/rpc into the FreeBSD test suite
as lib/libc/rpc

This testcase requires rpcbind be up in running; otherwise the testcases
will time out and be skipped

MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division
2015-10-30 03:28:00 +00:00
Enji Cooper
b2d48be1bc Refactor the test/ Makefiles after recent changes to bsd.test.mk (r289158) and
netbsd-tests.test.mk (r289151)

- Eliminate explicit OBJTOP/SRCTOP setting
- Convert all ad hoc NetBSD test integration over to netbsd-tests.test.mk
- Remove unnecessary TESTSDIR setting
- Use SRCTOP where possible for clarity

MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Divison
2015-10-12 08:16:03 +00:00
Xin LI
b95523e859 In this context fclose() can never fail, so assert it in the test
case.
2015-09-29 17:54:28 +00:00
Bryan Drewery
660d1f65bb Add missing CLEANFILES.
MFC after:	1 week
Sponsored by:	EMC / Isilon Storage Division
2015-09-24 23:15:24 +00:00
Andrew Turner
b5e4c5c456 Enable mincore_test on arm64, we now have a working pmap_mincore.
PR:		202307
Obtained from:	ABT Systems Ltd
Sponsored by:	The FreeBSD Foundation
2015-09-08 18:44:12 +00:00
Konstantin Belousov
3cc31a047e Fix t_spawnattr test for attributes handling by posix_spawn(3).
Connect it to the build.

The code assumed that SCHED_* constants form a contiguous set of
numbers, remove the assumption by using schedulers[] array in
get_different_scheduler().  This is no-op on FreeBSD, but improves
code portability.

The selection of different priority used the min/max priority range of
the current scheduler class, instead of the priority to be changed to.
The bug caused the test failure.

Remove duplication of POSIX_SPAWN_SETSIGDEF flag and now unused
duplications of MIN/MAX definitions.

Reviewed by:	jilles, pho
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D3533
2015-09-01 12:47:11 +00:00
Ed Maste
5e3cac3e57 On arm64 disable three tests that hang or panic
Each issue has a PR open to track. This workaround allows us to run the
tests to investigate the failures and avoid any new regressions.

PR:		202304, 202305, 202307
Reviewed by:	ngie
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D3378
2015-08-17 23:19:36 +00:00