Testing multi-threaded servers is tricky -- especially if
the server is running on an SMP architecture. Even a extensively
tested server can still crash during regular use.
Run your feature tests with a special "Madlib" background load.
- make a list of internal/external objects/data manipulated
by the server
- make a list of possible transactions -- ignore the data
because you want to try mkfifo() on a directory object
- create a pool of processes/threads that execute
random object/transaction pairs
- in the foreground, run your regular feature tests
- after testing, check for faulted servers/clients,
corrupted data, deadlocked servers, blocked clients