The runtest files contain a list of test cases to be executed.

File Format
-----------

Lines starting with a '#' are comments and blank lines are ignored.

Otherwise, lines start with a test name followed by white space, then some
shell script to be executed. For example

Test Name
|       Delimiter               Test case argument
|       |                       |
v       v                       v
splice02 seq 1 20000 | splice02 splice02-temp
         ^             ^                    ^
         |             |                    |
         |             Test case executable |
         -----------Shell script-------------

So the splice02 runtest entry pipes the output of seq into the splice02 test
executable. Most runtest entries are simpler than this, for example

splice03 splice03

Here the test name and executable have the same name and no arguments have
been supplied.

Run test files should start with a comment describing the tests they contain,
e.g.

#DESCRIPTION:Kernel system calls

Note that the LTP has absorbed a number of other projects. Some of these have
been fully converted to the LTP format, others have runtest files generated
for them during installation, while some use a shell script to integrate them
with the other tests.

Test suites
-----------

 - syscalls  (except epoll, see below)
 - fs
 - fsx
 - dio
 - mm
 - ipc
 - sched
 - math
 - pty

if run network tests flag is passed these additional tests are run
 - tcp_cmds
 - multicast
 - rpc
 - nfs

To test filesystem with LVM
- ltpfslvm.sh
w/o LVM
- ltpfsnolvm.sh

Device Mapper tests
 - ltpdmmapper.sh

Network tests
 - network.sh
 - testcases/network/sockets/ltpSockets.sh

other filesystem or disk type tests
 - autofs1.sh
 - autofs4.sh
 - diskio.sh
 - exportfs.sh
 - isofs.sh
 - sysfs.sh

AIO/DIO filesystem tests
 - ltp-aiodio.sh

Device driver tests (may not run on all platforms)
 - acpi
 - agp
 - base
 - drm
 - include
 - nls
 - pci
 - tbio
 - usb

Open_hpi_testsuite
 - run_tests

Open_posix_testsuite
 - run_tests


testcases/kernel/syscalls/epoll - The tests require additional installation files. See the README in the epoll directory.
