Commit Graph

12 Commits

Author SHA1 Message Date
Robert Watson
660f25118c Add two small tests to set and clear two file I/O flags using ioctl on
a fifo: FIONBIO, FIOASYNC.
2005-09-13 17:25:35 +00:00
Robert Watson
1c3c40d4c0 Restructure fifo_io event-related tests in order to support test cases
relating to O_RDWR file descriptors, which while not defined in POSIX,
are in fact used:

(1) Revise assumption that we have two file descriptors when testing I/O
    operations on a fifo.  Provide cleanup routines that handle either
    two or three file descriptors (including a kqueue descriptor).

(2) Add an openfifo_rw() routine to supplement openfifo().

(3) kqueue_setup() now configures an existing kqueue to monitor a new
    file descriptor, rather than allocating a new kqueue to monitor two
    existing file descriptors.

(4) Wrap all direct poll/select/kqueue/FIONREAD interactions in a single
    function, assert_status(), which takes a file descriptor, kqueue
    descriptor, assertion of read/writable/exception states, and
    test description, then tests the assertion.  This reduces the bulk
    of calls in many of the tests, making them shorter, more readable,
    and easier to determine correct.

(5) Add a new test_events_rdwr() function, which performs a basic create/
    write/read event test on a O_RDWR fifo file descriptor.  This is
    currently failed by our fifo code in HEAD due to a bug in FIONREAD
    handling.  Fix to be merged shortly.
2005-09-13 17:15:05 +00:00
Robert Watson
f8f8772ade Teach fifo_io how to use ioctl(FIONREAD) to determine if a fifo is
readable, and use that in addition to poll+select+kqueue to verify
appropriate readability.
2005-09-13 15:49:12 +00:00
Robert Watson
51c1fa5c31 Remove a debugging printf. 2005-09-13 10:33:32 +00:00
Robert Watson
456068c703 Comment test_lseek().
Add test_kqueue(), which registers and unregisters various kqueue filter
types on a fifo in order to make sure that EVFILT_READ, EVFILT_WRITE can
be registered, and that EVFILT_NETDEV can't be registered.  For now, we
don't test that EVFILT_VNODE can be registered on fifos, as that has been
broken at some point.
2005-09-12 19:31:16 +00:00
Robert Watson
1423f2f54c Further updates to fifo_io regression test:
- Teach fifo_io about kqueue monitoring of fifo file descriptor status,
  and add test cases for kqueue to match existing case for poll and
  select.  Add a new cleanup routine, cleanfifokq(), for use in tests that
  use kqueues.  kqueue_setup() sets up kqueue sessions, and kqueue_status()
  returns file descriptor status.

- Correct a bug in select handling relating to the nfds argument, which
  was incorrect so resulted in select occuring on the wrong file descriptor,
  and possible false positive/negative results.

- Clarify error reporting in one byte write+read tests to distinguish
  errors in the after case from the before case.
2005-09-12 17:05:48 +00:00
Robert Watson
062defcd30 Add fifo_misc, a regression test to hold misc. functional tests for fifos
that don't obviously fit into create, open, and io.  For now, add only a
regression test to make sure that lseek() fails with ESPIPE (which it
doesn't).
2005-09-12 11:58:14 +00:00
Robert Watson
76fe467ae4 Use different temporary directory templates for fifo_io and fifo_open so
that if the tests fail to GC their working spaces, it's clear which it is.
2005-09-12 11:43:51 +00:00
Robert Watson
baabf9536d Add fifo_io, a regression test for I/O operations on POSIX fifos. We
currently can't pass this regression test due to broken poll() and
select() support for fifos, but past the basic I/O operation tests.
2005-09-12 09:42:29 +00:00
Robert Watson
544cf87d83 After going to some trouble to create a temporary directory in which to run
fifo tests, chdir to it.
2005-09-11 17:41:32 +00:00
Robert Watson
9c40729fdf Add fifo_open, a basic regression test for opening fifos, which tests
the blocking and non-blocking forms of open based on the POSIX spec for
now O_NONBLOCK should be handled.
2005-09-11 13:03:36 +00:00
Robert Watson
c6c7bd16ce Add fifo_create, a simple regression test for mkfifo(2). 2005-09-10 21:09:26 +00:00