NetBSD/tests
kre 1cba94e3a4 This test makes (made) a false assumption about the way that
process scheduling works.   That a process (or in this case,
a thread) is no longer blocked at time T does not mean that it
will resume execution at time T.   The OS is free to devote
resources to other processes/threads instead - all we should
normally be able to expect is that if it is not unblocked before
time T, that it will not start running before then.

In general though, the pthread_cond_*wait() functions don't guarantee
even that - but for this test, the possibility of something else
randomly signalling the condvar isn't believable, so don't worry about
that possibility (but do fail without calling strerror(0) on the off
chance it does happen).

Once we cease testing that the process resumed running before some
particular time, we can stop dealing with qemu timekeeping issues,
it might (seem to) take qemu twice as long as was requested before
the thread resumes, but that's OK - the same thing could happen on
a loaded system for other reasons.

Beyond that, the test also has (had) a race condition.   When using
CLOCK_REALTIME though that clock needed to have advanced to T before
the ETIMEDOUT should happen, there is no guarantee that it will stay >T
(CLOCK_REALTIME is allowed to be reset backwards).   So, only test
that the current time (after ETIMEDOUT) >= T when we're using
CLOCK_MONOTONIC - for CLOCK_REALTIME the time might have stepped
back between when the ETIMEDOUT happened and when the thread
obtains the current clock reading.  For that case, all we can test
is that the ETIMEDOUT actually happens.

With much of what was there now gone, the code can be simplified,
we no longer need to do timespec arithmetic, just one comparison
(simpler to test that Tend >= Tstart+period than Tend-Tstart > period
as we need Tstart+period for the abstime value for the timeout anyway).

Note that this still tests for the issue reported in PR lib/47703
which is where the test came from in the first place.

ps: we seem to be missing pthread_cond_clockwait() which is the same
as pthread_cond_timedwait() except that the clock to use is passed
as a parameter, rather than as an attribute of the condition variable.
2022-12-11 10:02:53 +00:00
..
bin tests/dd: add more test cases for swapping bytes 2022-05-24 21:42:37 +00:00
crypto PR 56875: Bump timeout for the bignumber test to 2h, as suggested 2022-06-10 05:59:12 +00:00
dev Avoid explicitly naming the raw part device with a partition letter - use 2022-11-30 17:49:59 +00:00
fs Avoid explicitly naming the raw part device with a partition letter - use 2022-11-30 17:49:59 +00:00
games simplify: use two arguments again, suggested by kre@ 2020-10-11 18:43:50 +00:00
include Mask NULL + 0 LLVM UBSan reports in the ATF test: t_pslist.c 2020-05-31 16:36:07 +00:00
ipf s/endianess/endianness/ 2021-11-10 17:19:29 +00:00
kernel fix various typos in comment, documentation and log messages. 2022-05-24 20:50:17 +00:00
lib This test makes (made) a false assumption about the way that 2022-12-11 10:02:53 +00:00
libexec sort; it is the same list as in h_ifunc_static.c; perhaps it should be 2022-06-21 16:24:37 +00:00
modules requires pmap_private.h now. 2022-08-21 14:06:42 +00:00
net tests: fix Makefile and lists for MKRUMP=no 2022-12-01 04:24:37 +00:00
rump fix various typos in comments, docs and log messages. 2022-05-24 06:27:59 +00:00
sbin Simplify: avoid use of the explicit raw partition, MAKDEV does 2022-11-30 07:20:36 +00:00
share Fix C++ file suffix (.cpp -> .cc) 2020-08-14 06:23:49 +00:00
sys s/fucntion/function/ in comments. 2022-07-26 19:49:32 +00:00
usr.bin tests/lint: add more examples for 'extra bits set to 0' 2022-10-15 21:19:15 +00:00
usr.sbin fix warnings 2021-09-01 06:12:50 +00:00
Makefile
Makefile.inc Allow to set sanitizer flags for the rump build from the 2021-07-07 11:51:45 +00:00
README
h_macros.h

README

$NetBSD: README,v 1.4 2012/05/18 15:36:21 jruoho Exp $

When adding new tests, please try to follow the following conventions.

1. For library routines, including system calls, the directory structure of
   the tests should follow the directory structure of the real source tree.
   For instance, interfaces available via the C library should follow:

	src/lib/libc/gen -> src/tests/lib/libc/gen
	src/lib/libc/sys -> src/tests/lib/libc/sys
	...

2. Equivalently, all tests for userland utilities should try to follow their
   location in the source tree. If this can not be satisfied, the tests for
   a utility should be located under the directory to which the utility is
   installed. Thus, a test for env(1) should go to src/tests/usr.bin/env.
   Likewise, a test for tcpdump(8) should be in src/tests/usr.sbin/tcpdump,
   even though the source code for the program is located under src/external.

3. Otherwise use your own discretion.