Commit Graph

118 Commits

Author SHA1 Message Date
Alan Somers
a8eb96d593 Replace the old unix_seqpacket and unix_seqpacket_exercise tests, which
were a little broken and not automatable, with unix_seqpacket_test.
It's coverage is a superset of the old tests and it uses ATF.  It
includes test cases for bugs kern/185813 and kern/185812.

PR:		kern/185812
PR:		kern/185813
Sponsored by:	Spectra Logic
MFC after:	2 weeks
2014-01-23 17:26:28 +00:00
Ed Maste
50185946a4 Add a sendfile regression test for transmit length > file size.
This test identified the issue fixed in FreeBSD-SA-13:11.sendfile.

Sponsored by:	The FreeBSD Foundation
Approved by:	re (glebius)
2013-09-10 13:51:19 +00:00
Sergey Kandaurov
b57181586c Major update for unix_cmsg from Andrey Simonenko.
Quoting the submitter:
- Added tests for SCM_BINTIME, LOCAL_PEERCRED, cmsghdr.cmsg_len
- Code that checks correctness of groups was corrected (getgroups(2) change)
- unix_cmsg.c was completely redesigned and simplified
- Use less timeout value in unix_cmsg.c for faster work
- Added support for not sending data in a message, not sending data and
  data array associated with a cmsghdr structure in a message
- Existent tests were improved
- unix_cmsg.t was redesigned and simplified

Correctness of unix_cmsg verified on 7.1-STABLE, 9.1-STABLE and 10-CURRENT.

PR:		bin/131567
Submitted by:	Andrey Simonenko <simon@comsys.ntu-kpi.kiev.ua>
MFC after:	2 weeks
2013-02-11 12:56:23 +00:00
Ed Maste
8f37d24bed Zero the whole struct not just the size of a pointer.
Found by: clang
2012-11-19 22:56:51 +00:00
Ed Maste
d701ebcb13 Use '%zd' format specifier for ssize_t
Found by: clang
2012-11-19 22:53:57 +00:00
Ed Maste
03aac27561 Use '%zd' printf format for ssize_t. 2012-11-19 22:46:17 +00:00
Eitan Adler
db702c59cf remove duplicate semicolons where possible.
Approved by:	cperciva
MFC after:	1 week
2012-10-22 03:00:37 +00:00
Bjoern A. Zeeb
e6f0fd5898 Add regression tests for the setsockopt(2) SO_SETFIB socket option.
Check that the expected domain(9) families all handle the socket option
correctly and do proper bounds checks.  This would catch bugs as fixed
in (r230938,)r230981.

Sponsored by:	Cisco Systems, Inc.
2012-02-17 03:25:26 +00:00
John Baldwin
f627c55e7e - Add a test for PR 151758.
- While here, make this compile and work on non-i386:
  - Use CMSG_SPACE(), CMSG_LEN(), and CMSG_FIRSTHDR() instead of ignoring
    padding between 'struct cmsghdr' and control message payloads.
  - Don't initialize the control message before calling recvmsg().
    Instead, check that we get a valid control message on return from
    recvmsg().
- Use errx() instead of err() for some errors that don't report failures
  that set errno.

Requested by:	kib (1)
2011-12-09 19:24:17 +00:00
Pawel Jakub Dawidek
76423e6e3c Allow to specify path to a file we want to test with sendfile(2).
This allows to specify selected file system and not only /tmp/.
2010-12-11 16:06:52 +00:00
Konstantin Belousov
b010326013 Extend the unix gc regression test to cover the case of r216150.
Requested and reviewed by:	rwatson
MFC after:	1 week
2010-12-03 16:17:53 +00:00
Robert Watson
1e4bf1e35f Correct several nits/problems in the unix_close_race regression test.
Submitted by:	Mikolaj Golub <to.my.trociny at gmail.com>
MFC after:	3 days
2010-05-27 15:28:55 +00:00
Robert Watson
07c2a9537e Add unix_close_race, a regresion test to catch ENOTCONN being returned
improperly from one of two instances of close(2) being called
simultaneously on both ends of a connected UNIX domain socket.  The test
tool is slightly tweaked to improve failure modes, and while often does
trigger the problem, doesn't do so consistently due to the nature of the
race.

PR:		kern/144061
Submitted by:	Mikolaj Golub <to.my.trociny@gmail.com>
MFC after:	3 days
2010-05-26 10:46:03 +00:00
Ulrich Spörlein
47e1a877c5 Always assign WARNS using ?=
- fix some nearby style bugs
- include Makefile.inc where it makes sense and reduces duplication

Approved by:	ed (co-mentor)
2010-03-02 16:58:04 +00:00
Ruslan Ermilov
9fd69f37d2 Fixed missing or broken library dependencies. 2010-02-25 14:42:26 +00:00
Rebecca Cran
8dd83f1e16 Update the sendfile regression test so that it outputs results in the
TAP format.
Add a checksum to verify that the data hasn't been corrupted between
being read from disk and being received.

Approved by:	rrs (mentor)
2010-02-24 23:00:16 +00:00
Robert Watson
9cad1429d6 A few regression tests for SOCK_SEQPACKET UNIX domain sockets.
Sponsored by:	Google
2009-10-05 15:27:01 +00:00
John Baldwin
0cab1e9602 - Remove a bogus test: setsockopt() doesn't return a length, getsockopt()
does.
- Use %z to printf a size_t to fix compile on 64-bit platforms.
2009-09-23 14:23:09 +00:00
Robert Watson
0ca4746bcb In UNIX domain socket GC regression test, after setting a socket
non-blocking, EINPROGRESS is an acceptable result from connect().
2009-03-08 21:06:02 +00:00
Robert Watson
cb824561e6 Add very simple regression test for fstat(2) on sockets: make sure it
returns success for various socket types.  It's easy to imagine this
being enhanced to validate the returned data, but...
2008-10-06 19:42:03 +00:00
Maxim Konovalov
4225b7d6fa o Correct a comment: a test file size is a four pages not three. 2008-09-10 09:32:25 +00:00
Robert Watson
9cf15e9671 Add unix_sorflush, a regression test for the following scenario:
- Process (a) is blocked in read on a socket waiting on data.
 - Process (b) is blocked in shutdown() on a socket waiting on (a).
 - Process (c) delivers a signal to (b) interrupting its wait.

When the signal is delivered, the kernel panics as sblock() fails in
sorflush().  Even if it didn't panic, shutdown() would block potentially
indefinitely waiting for recv() to succeeded.  Fixes to follow.

Reported by:	Jos Backus <jos at catnook dot com>
2008-01-30 13:23:34 +00:00
Robert Watson
c8c3fc568f Add regression tests for UNIX domain socket garbage collection. Should be
run from single-user mode, as they look at global open file and inflight
descriptor counts to check for leaks.
2007-12-31 16:45:27 +00:00
Robert Watson
9d3f3e9711 Add a regression test to detect if waiting on the I/O serialization lock
on socket buffers is interruptible or not, which detacts the regression I
introduced recently in 7-CURRENT (spotted by alfred).  This test passes
in older -CURRENT, and with the as-yet uncommitted sx_xlock_sig and
sblock fix patches.
2007-05-06 14:28:49 +00:00
Pawel Jakub Dawidek
d77f4f6a6f Test sending 0 bytes. 2007-04-20 19:01:42 +00:00
Pawel Jakub Dawidek
4b7e26d006 Fix length calculation. 2007-04-20 19:00:43 +00:00
Dag-Erling Smørgrav
f7754b09e2 Valid error codes for err() and errx() are 1..255.
The correct format specifier for ssize_t is %zd.
2007-04-19 07:59:30 +00:00
Pawel Jakub Dawidek
ed3d9b6e75 Add more tests to verify last sendfile(2) breakage: test sending more
than a page size and nbytes=0.
2007-04-19 06:01:08 +00:00
John Baldwin
1ce2bc9187 Fix a fd leak in socketpair():
- Close the new file objects created during socketpair() if the copyout of
  the new file descriptors fails.
- Add a test to the socketpair regression test for this edge case.
2007-04-02 19:15:47 +00:00
John Baldwin
c16551befc Add another fd leak test for accept() I used to test the fix in 1.234 of
sys/kern/uipc_syscall.c.
2007-04-02 16:02:50 +00:00
Robert Watson
0b71cfd780 Ignore EINPROGRESS error on TCP connect(), and pick up the result of the
non-blocking connect later using select().  This case didn't trigger on
my UP test box, but did on Peter's SMP test box.

Spotted by:	peter
2007-01-12 22:17:31 +00:00
Robert Watson
581f1f9421 Add a regression test for sending and writing zero bytes to sockets of
various types, as well as pipes and fifos for good measure.  RELENG_6
currently passes all of these tests, but 7-CURRENT fails 0-byte writes
and sends on all stream socket types (and fifos, as they are based on
stream sockets).

Bumped into by:	peter
Diagnosed by:	jhb
Problem of:	andre
2007-01-12 21:49:36 +00:00
Bruce M Simpson
a86ec33820 Drop all received data mbufs from a socket's queue if the MT_SONAME
mbuf is dropped, to preserve the invariant in the PR_ADDR case.

Add a regression test to detect this condition, but do not hook it
up to the build for now.

PR:             kern/38495
Submitted by:   James Juran
Reviewed by:    sam, rwatson
Obtained from:  NetBSD
MFC after:      2 weeks
2006-12-23 21:07:07 +00:00
Robert Watson
57c4583f70 Add a short regression test to try to exercise races in the non-atomic
nature of implied connect via sendto().  Oddly, uipc_usrreq.c implements
this for stream sockets, but doesn't set the flag in its protocol
definition so that it can actually be used.  As such, the stream test is
implemented but doesn't run for now.
2006-11-15 12:43:45 +00:00
Maxim Konovalov
8847579c57 o style.Makefile(5): WARNS= -> WARNS?=. 2006-07-09 11:51:14 +00:00
Maxim Konovalov
fd447da171 o Let getopt(3) report errors in command line arguments.
o If something is wrong with options, then output short usage help message.
o Output errstr returned from strtonum(3).

PR:		bin/98141
Submitted by:	Andrey Simonenko
2006-05-31 08:10:34 +00:00
Maxim Konovalov
5368db2726 o Add a collection of regression tests for ancillary (control)
data passing for unix domain sockets, stream and datagram.

There are 15 tests:

Test/Type of socket					STREAM	DGRAM
----------------------------------------------------------------------
Sending, receiving cmsgcred				   1      6
Receiving sockcred (listening socket has LOCAL_CREDS)	   2      n/a
Receiving sockcred (accepted socket has LOCAL_CREDS)	   3      n/a
Receiving sockcred					   n/a    7
Sending cmsgcred, receiving sockcred			   4      8
Sending, receiving timestamp				   5      9
Sending, receiving cmsgcred (no control data)		   10     13
Sending cmsgcred, receiving sockcred (no control data)	   11     14
Sending, receiving timestamp (no control data)		   12     15

Currently we pass 8 tests.  All the rest marked as TODO.

PR:		kern/90800
Submitted by:	Andrey Simonenko
2006-05-29 18:40:55 +00:00
Robert Watson
64ccf56136 Use WARNS and rely on rules rather than an explicit target for the
test binary.

Reported by:	maxim
2006-05-25 10:46:43 +00:00
Robert Watson
0fb57f87a3 Add a basic regression test for sendfile() over TCP, which sends varying
lengths of headers and data and makes sure it receives about the right
number of bytes.
2006-05-25 09:50:14 +00:00
Robert Watson
582954da16 Add a simple regression test that creates and tears down route sockets,
and confirms that only SOCK_RAW works with socket(), and nothing works
with socketpair().
2006-04-09 14:48:38 +00:00
Robert Watson
3d11b6c8f0 Add simple regression tests that creates UNIX domain sockets using
socket() and socketpair() of SOCK_STREAM and SOCK_DGRAM types.  It
also confirms that SOCK_RAW fails.
2006-04-09 14:30:11 +00:00
Ruslan Ermilov
6aebd02aa8 Style: NO_MAN doesn't need any value. 2006-03-15 10:46:38 +00:00
Robert Watson
794bf8edc7 Add unix_passfd, a simple set of regression tests for UNIX domain socket
file descriptor passing.  These tests are not all currently passed.
2005-11-09 21:41:20 +00:00
Robert Watson
d742e4abaf Add a regression test for listen()'s backlog argument, both at time of
creation and at time of update using an additional call to listen().
This test also exercises SO_LISTENQLIMIT, a forthcoming socket option
that allows the retrieval (but not setting) of the queue limit.

Discussed with:	andre
2005-09-18 13:42:19 +00:00
Maxim Konovalov
be875755ce Remove checks for shutdown(2) on non-connected socket. 2005-09-15 13:20:39 +00:00
Maxim Konovalov
bf6a2064bc o Add shutdown(2) regression tests. At the moment we cannot pass
shutdown-on-non connected socket test, kern/84761.
2005-09-12 14:12:09 +00:00
Maxim Konovalov
922a5d9c2b o setsockopt(2) cannot remove accept filter. [1]
o getsockopt(SO_ACCEPTFILTER) always returns success on listen socket
  even we didn't install accept filter on the socket.
o Fix these bugs and add regression tests for them.

Submitted by:	Igor Sysoev [1]
Reviewed by:	alfred
MFC after:	2 weeks
2005-06-11 11:59:48 +00:00
Robert Watson
868ee99ce3 Close the connect socket as well as the listen socket on completion.
Update copyright.
2005-05-16 00:53:38 +00:00
Robert Watson
d64ac531ac Check the return value of shutdown(). 2005-03-11 13:05:18 +00:00
Robert Watson
b27b61f9eb Add sigpipe, a simple UNIX domain socket and TCP regression test that is
intended to verify that SIGPIPE is delivered to a process writing or
sending on a socket that has been shut down for write.  If available,
SO_NOSIGPIPE is also tested.

This regression test is currently passed by RELENG_4, but not by HEAD or
RELENG_5, due to a bug in the write() code for sockets.  SO_NOSIGPIPE is not
present in RELENG_4, however, so is not tested there.

Reported by:	Mikko Tyolajarvi <mbsd at pacbell dot net>
PR:		78478
2005-03-11 12:47:14 +00:00
Robert Watson
9d62322505 Add a simple regression test for stream UNIX domain sockets and the
bind()/connect() system calls, which is intended to confirm that the
right successes and errors occur when rendezvousing via the file system
name space.
2005-02-20 22:21:53 +00:00
Robert Watson
20ef44d423 Use WARNS?= instead of WARNS= in Makefiles so that global warning
settings can override local ones.

Pointed out by:	ru
2005-01-22 22:42:39 +00:00
Maxim Sobolev
c520d61bc3 Add test which excersises problem with unability to change association of
already associated datagram unix domain socket by issuing connect() system
call.
2005-01-12 09:57:18 +00:00
Ruslan Ermilov
e653b48c80 Start the dreaded NOFOO -> NO_FOO conversion.
OK'ed by:	core
2004-12-21 08:47:35 +00:00
Nik Clayton
00e13b1d67 Switch over to a different, more flexible test output protocol that's
understood by Perl's Test::Harness module and prove(1) commands.

Update README to describe the new protocol.  The work's broken down into
two main sets of changes.

First, update the existing test programs (shell scripts and C programs)
to produce output in the ok/not ok format, and to, where possible, also
produce a header describing the number of tests that are expected to be
run.

Second, provide the .t files that actually run the tests.  In some cases
these are copies of, or very similar too, scripts that already existed.
I've kept the old scripts around so that it's possible to verify that
behaviour under this new system (in terms of whether or not a test fails)
is identical to the behaviour under the old system.

Add a TODO file.
2004-11-11 19:47:55 +00:00
Robert Watson
c6eea89879 Add a small regression test that opens a TCP socket, listens on it,
performs a non-blocking connect from another socket, and then closes
the listen socket rather than accepting.  This is intended to
exercise the close path in which connections are aborted due to a
close on the listen socket while the connection is in the listen
queue.
2004-11-02 17:59:12 +00:00
Ruslan Ermilov
a35d88931c For variables that are only checked with defined(), don't provide
any fake value.
2004-10-24 15:33:08 +00:00
Robert Watson
09745181fd Use errx() instead of fprintf()/exit() for conciseness.
Suggested by:	ru (some time ago)
2004-10-23 22:18:37 +00:00
Robert Watson
a09c60ffeb Use errx() instead of perror()/exit() for conciseness.
Suggested by:	ru (some time ago)
2004-10-23 22:11:35 +00:00
Robert Watson
54516c29e8 Modify accept_fd_leak regression test to generate "PASS" output, not
just "FAIL" output, in order to make it consistent with other tests in
the regression test tree.
2004-09-18 13:06:00 +00:00
Ruslan Ermilov
751d4065e6 Join the effort in simplifying this makefile. ;) 2004-09-03 06:18:52 +00:00
Robert Watson
accbe49470 Pass O_NONBLOCK directly to fcntl() rather than the pointer to an int
holding the value O_NONBLOCK.  This worked previously because I was
lucky.
2004-09-02 21:41:57 +00:00
Robert Watson
27b37d5cf2 Don't override the rule used to build a binary by providing our own
compiler line.
2004-09-02 21:37:50 +00:00
Robert Watson
cf03a9be9c Make sure to properly initialize 'size' to sizeof(sin) before passing
it into accept().  Depending on the initial value in memory, it is
otherwise possible to get EINVAL.
2004-08-24 04:59:26 +00:00
Robert Watson
62967fb0bb Add a basic kqueue + UNIX domain socket pair regression test to do some
elementary exercising of kqueues on datagram and stream sockets.  Note
that the datagram write kqueue case is left untested due to potentially
confusing behavior for the developer (me) that might require attention.
2004-08-24 04:02:41 +00:00
Robert Watson
07727c8333 Add minimal socketpair() regression test to confirm that we can create
(and close) PF_UNIX socket pairs, and that we can't create PF_INET
socket pairs.  More tests to follow.
2004-08-04 03:46:35 +00:00
Robert Watson
43cb0b2b09 Simple attachment regression test to attach the "accf_data" accept
filter to an inet socket and check at various points during the socket
life cycle that the filter can or cannot be attached, and that once
attached that the right one is attached and that it can be queried.
2004-07-26 03:53:47 +00:00
Robert Watson
90d6d28efa Add simple regression test to detect leakage of file descriptors when
accept() returns EAGAIN on a non-blocking listen socket.  This is the
tool I used to check that such a bug was resolved when merging accept()
locking.
2004-07-17 16:56:46 +00:00