Linux Test Project
(Maintained by: Subrata Modak<subrata@linux.vnet.ibm.com>)

The latest image is always available at http://ltp.sf.net


About the Linux Test Project

The Linux Test Project is a joint project with SGI, IBM, OSDL, and Bull with a
goal to deliver test suites to the open source community that validate the
reliability, robustness, and stability of Linux. The Linux Test Project is a
collection of tools for testing the Linux kernel and related features. Our goal
is to improve the Linux kernel by bringing test automation to the kernel testing
effort. Interested open source contributors are encouraged to join the project.


In the Package
--------------
Here is a short description of what is included in this package

INSTALL
	Installation documentation and quick start guide

README
	This document

CREDITS
	Credits to those who have contributed to the project.

COPYING
		 GNU General Public License

ChangeLog
	An incomplete list of changes to the project.  We will try harder to
	keep this up to date.

Makefile
		 Top level make file for LTP.

runalltests.sh
	A simple script to run all of the packaged tests in sequential order and
		 report the overall result.

diskio.sh
	A simple script to run all the diskio tests that pertain to the CD-ROM
	and floppy disk file systems.

networktests.sh
	A simple script to run all the network related tests that require
	another remote machine.

doc/*
	Documentation for the project including man pages for some of the
	tools & library functions, as well as descriptions of every test.


include/*
lib/*
	The include and lib directories contain headers and codes for common
	routines used by many of the tests.  We have tried to keep this to a
		 minimum.

testcases/*
	Contains all tests that run under the LTP as well as the "bin"
		 directory, which has hardlinks to all the test executables.

runtest/*
	It houses command lists that are used by pan for automated testing.

pan/*
	The pan directory contains a simple, lightweight test harness.  pan
	has the ability to run tests randomly and in parallel.  See pan's man
	page for more information.

scratch/*
	The scratch directory is a dumping ground for snippets and test cases
	that we found but haven't integrated into LTP yet.  Feel free to suggest
	new snippets to be added, or take one of these and finish it off.

testcases/kernel/containers/*
	Contains all the testcases related to container functionality ( e.g: sysvipc, utsname etc..)
	For further information on the each of the container functionality refer
	the following file: testcases/kernel/containers/README


Warning!
--------
Be careful with these tests!

Don't run them on production systems.  Growfiles, doio, and iogen in particular
stress the I/O capabilities of systems and while they should not cause problems
on properly functioning systems, they are intended to find (or cause) problems.


Contact Information and Updates
-------------------------------

URL: http://ltp.sf.net

Questions and comments should be sent to the LTP mailing list located on the
project page.

Using KDUMP test automation suite
---------------------------------
For more information on how to use the kdump test automation suite please refer
to file testcases/kdump/README.

Using NUMA test automation suite
---------------------------------
For more information on how to use the 'numa' test automation suite please refer
to file testcases/kernel/numa/README.

---------------------------------
Enable CODE COVERAGE for your Kernel:
---------------------------------
1) Apply kernel-gcov patch(s) against the corresponding Kernel. They are available here:
http://ltp.cvs.sourceforge.net/viewvc/ltp/utils/analysis/gcov-kernel/linux-2.*.*-gcov.patch?view=log,
2) Also enable the following options in your .config file before building the kernel
CONFIG_GCOV_PROFILE=y
CONFIG_GCOV_ALL=y
CONFIG_GCOV_PROC=m
CONFIG_GCOV_HAMMER=y

---------------------------------
Enabling Kernel Configuration to test Containers/Namespaces
---------------------------------
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y
CONFIG_VETH=y
CONFIG_MACVLAN=y


---------------------------------
Enabling Kernel Configuration to test Controllers
---------------------------------
CONFIG_CGROUPS=y
CONFIG_CGROUP_DEBUG=y
CONFIG_CGROUP_NS=y
CONFIG_GROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
CONFIG_RT_GROUP_SCHED=y
CONFIG_CGROUP_SCHED=y
CGROUP_MEM_RES_CTLR=y
---------------------------------
Enabling Kernel Configuration to test Power Management features
---------------------------------
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_CPU_IDLE_GOV_MENU=y
CONFIG_SCHED_MC=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
---------------------------------
Enabling Kernel Configuration to test filecaps security feature
---------------------------------
CONFIG_SECURITY_CAPABILITIES=y
---------------------------------
Enabling Kernel Configuration to test SELinux security feature
---------------------------------
Your Kernel should have been built with the following options to
test SELinux:

CONFIG_SECURITY=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_NETWORK_XFRM=y
CONFIG_SECURITY_FILE_CAPABILITIES=y

CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0
This has to be set to a positive value if you want to test this check.
Fedora kernels set it to 65536.

CONFIG_SECURITY_SELINUX=y
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
CONFIG_SECURITY_SELINUX_DEVELOP=y
CONFIG_SECURITY_SELINUX_AVC_STATS=y
CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
CONFIG_SECURITY_SELINUX_ENABLE_SECMARK_DEFAULT=y

CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX=y
You don't want this one unless you are running Fedora 3 or 4.  
On anything newer, it will cause unnecessary policy expansion.

CONFIG_SECURITY_SMACK=y
CONFIG_SECURITY_SELINUX=y

By default, if you boot with multiple LSMs compiled into the kernel, the
kernel won't boot succesfully - there can be only one (aside from
explicit internal "stacking" e.g. as is done for combining SELinux or
Smack with capabilities).  Unless you use the security= option to select
one at boot.  SELinux and Smack will honor the security= option.
---------------------------------
Enablement for Enhancement to kexec/kdump for implementing the following features:
- Backup/restore memory used by the original kernel before/after kexec.
- Save/restore CPU state before/after kexec.
Now, only the i386 architecture is supported. More from the following git logs:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3ab83521378268044a448113c6aa9a9e245f4d2f,
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=89081d17f7bb81d89fa1aa9b70f821c5cf4d39e9,
---------------------------------
CONFIG_X86_32=y
CONFIG_RELOCATABLE=y
CONFIG_KEXEC=y
CONFIG_CRASH_DUMP=y
CONFIG_PM=y
CONFIG_HIBERNATION=y
CONFIG_KEXEC_JUMP=y
---------------------------------
Enabling HOTPLUG for your Kernels
---------------------------------
CONFIG_HOTPLUG=y
CONFIG_HOTPLUG_CPU=y
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
CONFIG_ACPI_HOTPLUG_CPU=y
CONFIG_HOTPLUG_PCI_PCIE=y
CONFIG_HOTPLUG_PCI=y
CONFIG_HOTPLUG_PCI_FAKE=y
CONFIG_HOTPLUG_PCI_COMPAQ=y
CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y
CONFIG_HOTPLUG_PCI_IBM=y
CONFIG_HOTPLUG_PCI_ACPI=y
CONFIG_HOTPLUG_PCI_ACPI_IBM=y
CONFIG_HOTPLUG_PCI_CPCI=y
CONFIG_HOTPLUG_PCI_CPCI_ZT5550=y
CONFIG_HOTPLUG_PCI_CPCI_GENERIC=y
CONFIG_HOTPLUG_PCI_SHPC=y
---------------------------------
Video For Linux Two API testing Requirements:
You need to have a video device (i.e. webcam, tuner card, etc.) connected to your system and available under /dev/video0. If you don't have any hardware device available, you can still test the "Virtual Video Driver". To compile this you need to compile your kernel with CONFIG_VIDEO_VIVI=m under:
  -> Device Drivers
    -> Multimedia devices
      -> Video For Linux
        -> Video capture adapters
         -> Virtual Video Driver

The tests also require CUnit Framework to be installed before compiling the tests. Download & Install the same from:
http://sourceforge.net/projects/cunit/
---------------------------------
---------------------------------

Native language support (nls) testsuite requirements
----------------------------------------------------
CONFIG_NLS=m
CONFIG_BLOCK=y
