/******************************************************************************/
/*                                                                            */
/* Copyright (c) International Business Machines  Corp., 2007                 */
/*                                                                            */
/* This program is free software;  you can redistribute it and/or modify      */
/* it under the terms of the GNU General Public License as published by       */
/* the Free Software Foundation; either version 2 of the License, or          */
/* (at your option) any later version.                                        */
/*                                                                            */
/* This program is distributed in the hope that it will be useful,            */
/* but WITHOUT ANY WARRANTY;  without even the implied warranty of            */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See                  */
/* the GNU General Public License for more details.                           */
/*                                                                            */
/* You should have received a copy of the GNU General Public License          */
/* along with this program;  if not, write to the Free Software               */
/* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    */
/*                                                                            */
/******************************************************************************/

realtime tests is an open-source testsuite for testing real-time Linux.  It is
licensed under the GPL.  The latest version of this testsuite is available
from http://rt.wiki.kernel.org.  This testsuite is maintained by the IBM
Real-Time team.  Please send bug reports, contributions, questions to
the discussion list also available at: http://rt.wiki.kernel.org.

The testsuite contains some functional tests and a few performance
and latency measurement tests.  This is still a work in (early) progress!


DEPENDENCIES
============
The testsuite expects glibc ("C" library) (version 2.4 onwards) and
the underlying kernel (version 2.6.18 onwards) to support
Robust and Priority Inheritance (PI) Mutexes.

Most of the tests need the user to have a privileges that allow
him/her to create SCHED_FIFO threads of priorities upto 99

RUNNING TESTS THROUGH LTP
=========================
Simplest method to run realtime tests through LTP is:
The command will configure,build and run tests specified through
argument provided to the script.

Run command below from LTP root directory with argument:

        $./testscripts/test_realtime.sh -t $arg

        or

        $./test_realtime.sh -t $arg   # From $LTPROOT/testscripts directory

Here $arg takes values as :

        func =        all functional tests will be run "
        stress =      all stress tests will be run "
        perf =        all perf tests will be run "
        all =         all tests will be run "
        list =        all available tests will be listed "
        clean =       all logs deleted, make clean performed "
        test_name =   only test_name subdir will be run (e.g: func/pi-tests) "


BUILD
=====
To build the tests execute the following command:

		$make


RUNNING THE TESTS
==================
The top level script run.sh can be used to invoke all or a subset of tests.

1. Running the script with no arguments will list usage:

		$run.sh


2. Running the script with the list option will list the available tests.

		$run.sh -t list

   Note that the tests available are determined by the presence
   of a local script run_auto.sh in the individual test subdirectories
   at this time.


3. Individual tests can also be run. For example, to run the prio-wake tests
   for 20 iterations:

		$run.sh -t func/prio-wake -l 20

   Note, the test must be specified with the path relative to the test
   home (where run.sh lives).


4. Alternatively, you can run the individual tests from their local directory.
   For example, to run the prio-wake tests:

		$cd func/prio-wake
		$./run_auto.sh


5. You can also run sets of tests:

		$run.sh -t func

        will run all the functional tests once

		$run.sh -t perf -l 3

        will run all the perf tests (if any!) thrice

        Use the -h option to see the various arguments taken.

6. Or you can run the binaries...



RESULTS
=======
All the automated run scripts set up logging in the logs/ directory.  Not all
the tests have a clear PASS/FAIL outcome quite yet.  Work on parsing results
is ongoing.