tool:
- Use uname(3) to query the OS name to report in the HTTP headers.
This is probably more useful than hard-coding FreeBSD.
- If no path is specified, create a 1k temporary file and send that
instead. Pass a file descriptor into http_serve() rather than using
a global fd.
- Add more carriage returns to the HTTP headers to be a bit more
correct. (Suggested by: andre)
- Read to a buffer rather than a single character to reduce the number
of recv() system calls pulling in the HTTP request.
- Properly wait for two, not one, \n's on input.
- http is a lightweight, multithreaded HTTP query tool, which performs
a timed measurement of the rate at which it can download files using
single-fetch HTTP/1.0. Other than specifying the IP and a URL path,
it requires zero configuration.
- httpd is a lightweight, multithreaded HTTP server tool, which exports
a single file of choice to the HTTP client, and responds with it no
matter what the request. Other than specifying the file to export,
it requires zero configuration.
The goal of these tools is to measure the network costs associated with
HTTP serving, rather than file system, HTTP protocol parsing, error
handling, etc, and as such, parts relating to less interesting components
of HTTP testing are intentionally omitted. Both are linked against
libpthread by default.
there for scripts to use.
Create a noauto fstab entry for the configuration partition (/cfg).
Add NANO_TOOLS env-var to point to the nanobsd sources relative to
NANO_SRC.
Add -h argument which prints a usage.
Add -b argument which skips build steps and goes directly to install steps.
Complain about extraneous arguments, it's usually a forgotten '-c'
Add convenience function to register customization function.
Add some sample customization functions:
cust_comconsole
cust_allow_ssh_root
Rename setup_diskless() to setup_nanobsd(), it makes more sense.
Add various comments etc.
mdconfig(8), because we need a disk to work on.
o Extend the number of tests now that we have a disk.
o Simplify the driver. All parameters are ASCII strings now.
The testsuite is based on a simple driver program that builds a
request from the arguments passed to it and issues the request to
Geom. The driver emits FAIL with the error string or PASS depending
on whether the request completed with an error or not. A -v option
has been added to the driver and causes the request to be dumped.
The -v option to prove(1) controls the -v option to the driver.
The testsuite itself contains a hash of which the key constitutes
the arguments and the value is the expected result.
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
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.
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.
- 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.
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).
multicast group using a raw socket, then removing the interface on which
the group is found, and joining a multicast group using a udp socket,
then removing the interface on which the group is found. An if_disc
interface is used as the interface on which to attach.
NB: A panic currently results from running this regression test, so do
so with caution.
PR: 77665
Reported by: Gavin Atkinson <gavin dot atkinson at ury dot york dot ac dot uk>
Reported by: Brooks Davis <brooks at FreeBSD dot org>