63 lines
2.6 KiB
Plaintext
63 lines
2.6 KiB
Plaintext
|
Futex Test
|
||
|
==========
|
||
|
Futex Test is intended to thoroughly test the Linux kernel futex system call
|
||
|
API.
|
||
|
|
||
|
Functional tests shall test the documented behavior of the futex operation
|
||
|
code under test. This includes checking for proper behavior under normal use,
|
||
|
odd corner cases, regression tests, and abject abuse and misuse.
|
||
|
|
||
|
Futextest will also provide example implementation of mutual exclusion
|
||
|
primitives. These can be used as is in user applications or can serve as
|
||
|
examples for system libraries. These will likely be added to either a new lib/
|
||
|
directory or purely as header files under include/, I'm leaning toward the
|
||
|
latter.
|
||
|
|
||
|
Quick Start
|
||
|
-----------
|
||
|
# make
|
||
|
# ./run.sh
|
||
|
|
||
|
Design and Implementation Goals
|
||
|
-------------------------------
|
||
|
o Tests should be as self contained as is practical so as to facilitate sharing
|
||
|
the individual tests on mailing list discussions and bug reports.
|
||
|
o The build system shall remain as simple as possible, avoiding any archive or
|
||
|
shared object building and linking.
|
||
|
o Where possible, any helper functions or other package-wide code shall be
|
||
|
implemented in header files, avoiding the need to compile intermediate object
|
||
|
files.
|
||
|
o External dependencies shall remain as minimal as possible. Currently gcc
|
||
|
and glibc are the only dependencies.
|
||
|
o Tests return 0 for success and < 0 for failure.
|
||
|
|
||
|
Output Formatting
|
||
|
-----------------
|
||
|
Test output shall be easily parsable by both human and machine. Title and
|
||
|
results are printed to stdout, while intermediate ERROR or FAIL messages are
|
||
|
sent to stderr. Tests shall support the -c option to print PASS, FAIL, and
|
||
|
ERROR strings in color for easy visual parsing. Output shall conform to the
|
||
|
following format:
|
||
|
|
||
|
test_name: Description of the test
|
||
|
Arguments: arg1=val1 #units specified for clarity where appropriate
|
||
|
ERROR: Description of unexpected error
|
||
|
FAIL: Reason for test failure
|
||
|
# FIXME: Perhaps an " INFO: informational message" option would be
|
||
|
# useful here. Using -v to toggle it them on and off, as with -c.
|
||
|
# there may be multiple ERROR or FAIL messages
|
||
|
Result: (PASS|FAIL|ERROR)
|
||
|
|
||
|
Naming
|
||
|
------
|
||
|
o FIXME: decide on a sane test naming scheme. Currently the tests are named
|
||
|
based on the primary futex operation they test. Eventually this will become a
|
||
|
problem as we intend to write multiple tests which collide in this namespace.
|
||
|
Perhaps something like "wait-wake-1" "wait-wake-2" is adequate, leaving the
|
||
|
detailed description in the test source and the output.
|
||
|
|
||
|
Coding Style
|
||
|
------------
|
||
|
o The Futex Test project adheres to the coding standards set forth by Linux
|
||
|
kernel as defined in the Linux source Documentation/process/coding-style.rst.
|