Home | History | Annotate | only in /external/ltp
Up to higher level directory
NameDateSize
.travis.yml22-Oct-20202.1K
android/22-Oct-2020
Android.bp22-Oct-20202.7K
Android.mk22-Oct-2020642
build.sh22-Oct-20203.6K
configure.ac22-Oct-20205.4K
COPYING22-Oct-202017.7K
doc/22-Oct-2020
execltp.in22-Oct-202016K
gen.bp22-Oct-2020482.3K
IDcheck.sh22-Oct-20204.8K
include/22-Oct-2020
INSTALL22-Oct-202011.8K
lib/22-Oct-2020
ltpmenu22-Oct-202019K
m4/22-Oct-2020
Makefile22-Oct-20207.3K
Makefile.release22-Oct-20201.4K
MODULE_LICENSE_GPL22-Oct-20200
NOTICE22-Oct-202017.7K
OWNERS22-Oct-202072
pan/22-Oct-2020
README.kernel_config22-Oct-202010.7K
README.md22-Oct-20205K
runltp22-Oct-202036.9K
runtest/22-Oct-2020
scenario_groups/22-Oct-2020
scripts/22-Oct-2020
testcases/22-Oct-2020
testscripts/22-Oct-2020
TODO22-Oct-20201.3K
tools/22-Oct-2020
travis/22-Oct-2020
utils/22-Oct-2020
ver_linux22-Oct-20203K
VERSION22-Oct-20209

README.kernel_config

      1 ---------------------------------
      2 Enable CODE COVERAGE for your Kernel:
      3 ---------------------------------
      4 1) Apply kernel-gcov patch(s) against the corresponding Kernel. They are available here:
      5 http://ltp.cvs.sourceforge.net/viewvc/ltp/utils/analysis/gcov-kernel/linux-2.*.*-gcov.patch?view=log,
      6 2) Also enable the following options in your .config file before building the kernel
      7 CONFIG_GCOV_PROFILE=y
      8 CONFIG_GCOV_ALL=y
      9 CONFIG_GCOV_PROC=m
     10 CONFIG_GCOV_HAMMER=y
     11 
     12 ---------------------------------
     13 Enabling Kernel Configuration to test Containers/Namespaces
     14 ---------------------------------
     15 CONFIG_NAMESPACES=y
     16 CONFIG_UTS_NS=y
     17 CONFIG_IPC_NS=y
     18 CONFIG_USER_NS=y
     19 CONFIG_PID_NS=y
     20 CONFIG_NET_NS=y
     21 CONFIG_VETH=y
     22 CONFIG_MACVLAN=y
     23 
     24 The IPC namespaces do not automatically enable IPC, so you may
     25 also want to have:
     26 
     27 CONFIG_SYSVIPC=y
     28 CONFIG_SYSVIPC_SYSCTL=y
     29 CONFIG_POSIX_MQUEUE=y
     30 
     31 ---------------------------------
     32 Enabling Kernel Configuration to test Controllers
     33 ---------------------------------
     34 CONFIG_CGROUPS=y
     35 CONFIG_CGROUP_DEBUG=y
     36 CONFIG_CGROUP_NS=y
     37 CONFIG_GROUP_SCHED=y
     38 CONFIG_FAIR_GROUP_SCHED=y
     39 CONFIG_RT_GROUP_SCHED=y
     40 CONFIG_CGROUP_SCHED=y
     41 CONFIG_CGROUP_MEM_RES_CTLR=y
     42 CONFIG_LOCKDEP=y
     43 ---------------------------------
     44 Enabling Kernel Configuration to test Power Management features
     45 ---------------------------------
     46 CONFIG_CPU_FREQ=y
     47 CONFIG_CPU_FREQ_TABLE=y
     48 CONFIG_CPU_FREQ_DEBUG=y
     49 CONFIG_CPU_FREQ_STAT=y
     50 CONFIG_CPU_FREQ_STAT_DETAILS=y
     51 CONFIG_CPU_IDLE=y
     52 CONFIG_CPU_IDLE_GOV_LADDER=y
     53 CONFIG_CPU_IDLE_GOV_MENU=y
     54 CONFIG_SCHED_MC=y
     55 CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
     56 CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y
     57 CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
     58 CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
     59 CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y
     60 CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
     61 CONFIG_CPU_FREQ_GOV_POWERSAVE=y
     62 CONFIG_CPU_FREQ_GOV_USERSPACE=y
     63 CONFIG_CPU_FREQ_GOV_ONDEMAND=y
     64 CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
     65 ---------------------------------
     66 Enabling Kernel Configuration to test filecaps security feature
     67 ---------------------------------
     68 CONFIG_SECURITY_FILE_CAPABILITIES=y
     69 ---------------------------------
     70 Enabling Kernel Configuration to test SELinux security feature
     71 ---------------------------------
     72 Your Kernel should have been built with the following options to
     73 test SELinux:
     74 
     75 CONFIG_SECURITY=y
     76 CONFIG_SECURITY_NETWORK=y
     77 CONFIG_SECURITY_NETWORK_XFRM=y
     78 
     79 CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0
     80 This has to be set to a positive value if you want to test this check.
     81 Fedora kernels set it to 65536.
     82 
     83 CONFIG_SECURITY_SELINUX=y
     84 CONFIG_SECURITY_SELINUX_BOOTPARAM=y
     85 CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
     86 CONFIG_SECURITY_SELINUX_DEVELOP=y
     87 CONFIG_SECURITY_SELINUX_AVC_STATS=y
     88 CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
     89 CONFIG_SECURITY_SELINUX_ENABLE_SECMARK_DEFAULT=y
     90 
     91 CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX=y
     92 You don't want this one unless you are running Fedora 3 or 4.
     93 On anything newer, it will cause unnecessary policy expansion.
     94 
     95 CONFIG_SECURITY_SMACK=y
     96 CONFIG_SECURITY_SELINUX=y
     97 
     98 By default, if you boot with multiple LSMs compiled into the kernel, the
     99 kernel won't boot succesfully - there can be only one (aside from
    100 explicit internal "stacking" e.g. as is done for combining SELinux or
    101 Smack with capabilities).  Unless you use the security= option to select
    102 one at boot.  SELinux and Smack will honor the security= option.
    103 ---------------------------------
    104 ---------------------------------
    105 Enabling Kernel Configuration to test SMACK security feature
    106 ---------------------------------
    107 CONFIG_NETLABEL=y
    108 CONFIG_SECURITY=y
    109 CONFIG_SECURITY_NETWORK=y
    110 CONFIG_SECURITY_SMACK=y
    111 CONFIG_SECURITY_SELINUX should not be set
    112 
    113 For more information to build/install/run these tests, look through:
    114 ltp/testcases/kernel/security/smack/README
    115 ---------------------------------
    116 ---------------------------------
    117 Enablement for Enhancement to kexec/kdump for implementing the following features:
    118 - Backup/restore memory used by the original kernel before/after kexec.
    119 - Save/restore CPU state before/after kexec.
    120 Now, only the i386 architecture is supported. More from the following git logs:
    121 http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3ab83521378268044a448113c6aa9a9e245f4d2f,
    122 http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=89081d17f7bb81d89fa1aa9b70f821c5cf4d39e9,
    123 ---------------------------------
    124 CONFIG_X86_32=y
    125 CONFIG_RELOCATABLE=y
    126 CONFIG_KEXEC=y
    127 CONFIG_CRASH_DUMP=y
    128 CONFIG_PM=y
    129 CONFIG_HIBERNATION=y
    130 CONFIG_KEXEC_JUMP=y
    131 ---------------------------------
    132 Enabling HOTPLUG for your Kernels
    133 ---------------------------------
    134 CONFIG_HOTPLUG=y
    135 CONFIG_HOTPLUG_CPU=y
    136 CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
    137 CONFIG_ACPI_HOTPLUG_CPU=y
    138 CONFIG_HOTPLUG_PCI_PCIE=y
    139 CONFIG_HOTPLUG_PCI=y
    140 CONFIG_HOTPLUG_PCI_FAKE=y
    141 CONFIG_HOTPLUG_PCI_COMPAQ=y
    142 CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y
    143 CONFIG_HOTPLUG_PCI_IBM=y
    144 CONFIG_HOTPLUG_PCI_ACPI=y
    145 CONFIG_HOTPLUG_PCI_ACPI_IBM=y
    146 CONFIG_HOTPLUG_PCI_CPCI=y
    147 CONFIG_HOTPLUG_PCI_CPCI_ZT5550=y
    148 CONFIG_HOTPLUG_PCI_CPCI_GENERIC=y
    149 CONFIG_HOTPLUG_PCI_SHPC=y
    150 ---------------------------------
    151 Video For Linux Two API testing Requirements:
    152 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:
    153   -> Device Drivers
    154     -> Multimedia devices
    155       -> Video For Linux
    156         -> Video capture adapters
    157          -> Virtual Video Driver
    158 
    159 The tests also require CUnit Framework to be installed before compiling the tests. Download & Install the same from:
    160 http://sourceforge.net/projects/cunit/
    161 ---------------------------------
    162 ---------------------------------
    163 Native language support (nls) testsuite requirements
    164 ----------------------------------------------------
    165 CONFIG_NLS=m
    166 CONFIG_BLOCK=y
    167 ---------------------------------
    168 Enabling Controller area network (CAN) protocol support for your Kernels
    169 ---------------------------------
    170 CONFIG_NET=y
    171 CONFIG_CAN=m
    172 CONFIG_CAN_RAW=m
    173 CONFIG_CAN_BCM=m
    174 # CAN Device Drivers
    175 CONFIG_CAN_VCAN=m
    176 ---------------------------------
    177 Enabling Fault Injection Support for your kernel (version 2.6.29).
    178 Please check with the original kernel for the fault injection
    179 types it supports. Following supports will be available:
    180 
    181 /sys/kernel/debug/fail_io_timeout/interval
    182 /sys/kernel/debug/fail_io_timeout/probability
    183 /sys/kernel/debug/fail_io_timeout/reject-end
    184 /sys/kernel/debug/fail_io_timeout/reject-start
    185 /sys/kernel/debug/fail_io_timeout/require-end
    186 /sys/kernel/debug/fail_io_timeout/require-start
    187 /sys/kernel/debug/fail_io_timeout/space
    188 /sys/kernel/debug/fail_io_timeout/stacktrace-depth
    189 /sys/kernel/debug/fail_io_timeout/task-filter
    190 /sys/kernel/debug/fail_io_timeout/times
    191 /sys/kernel/debug/fail_io_timeout/verbose
    192 
    193 /sys/kernel/debug/fail_make_request/interval
    194 /sys/kernel/debug/fail_make_request/probability
    195 /sys/kernel/debug/fail_make_request/reject-end
    196 /sys/kernel/debug/fail_make_request/reject-start
    197 /sys/kernel/debug/fail_make_request/require-end
    198 /sys/kernel/debug/fail_make_request/require-start
    199 /sys/kernel/debug/fail_make_request/space
    200 /sys/kernel/debug/fail_make_request/stacktrace-depth
    201 /sys/kernel/debug/fail_make_request/task-filter
    202 /sys/kernel/debug/fail_make_request/times
    203 /sys/kernel/debug/fail_make_request/verbose
    204 
    205 /sys/kernel/debug/fail_page_alloc/ignore-gfp-highmem
    206 /sys/kernel/debug/fail_page_alloc/ignore-gfp-wait
    207 /sys/kernel/debug/fail_page_alloc/interval
    208 /sys/kernel/debug/fail_page_alloc/min-order
    209 /sys/kernel/debug/fail_page_alloc/probability
    210 /sys/kernel/debug/fail_page_alloc/reject-end
    211 /sys/kernel/debug/fail_page_alloc/reject-start
    212 /sys/kernel/debug/fail_page_alloc/require-end
    213 /sys/kernel/debug/fail_page_alloc/require-start
    214 /sys/kernel/debug/fail_page_alloc/space
    215 /sys/kernel/debug/fail_page_alloc/stacktrace-depth
    216 /sys/kernel/debug/fail_page_alloc/task-filter
    217 /sys/kernel/debug/fail_page_alloc/times
    218 /sys/kernel/debug/fail_page_alloc/verbose
    219 
    220 /sys/kernel/debug/failslab/ignore-gfp-wait
    221 /sys/kernel/debug/failslab/interval
    222 /sys/kernel/debug/failslab/probability
    223 /sys/kernel/debug/failslab/reject-end
    224 /sys/kernel/debug/failslab/reject-start
    225 /sys/kernel/debug/failslab/require-end
    226 /sys/kernel/debug/failslab/require-start
    227 /sys/kernel/debug/failslab/space
    228 /sys/kernel/debug/failslab/stacktrace-depth
    229 /sys/kernel/debug/failslab/task-filter
    230 /sys/kernel/debug/failslab/times
    231 /sys/kernel/debug/failslab/verbose
    232 
    233 when the below kernel config options are set:
    234 
    235 CONFIG_FAULT_INJECTION=y
    236 CONFIG_DEBUG_KERNEL=y
    237 CONFIG_FAILSLAB=y (Fault-injection capability for kmalloc)
    238 (CONFIG_SLAB=y || CONFIG_SLUB=y) if CONFIG_FAILSLAB=y
    239 CONFIG_FAIL_PAGE_ALLOC=y (Fault-injection capabilitiy for alloc_pages())
    240 CONFIG_FAIL_MAKE_REQUEST=y (Fault-injection capability for disk IO)
    241 CONFIG_BLOCK=y if CONFIG_FAIL_MAKE_REQUEST=y
    242 CONFIG_FAIL_IO_TIMEOUT=y (Faul-injection capability for faking disk interrupts)
    243 CONFIG_BLOCK=y if CONFIG_FAIL_IO_TIMEOUT=y
    244 CONFIG_FAULT_INJECTION_DEBUG_FS=y (Debugfs entries for fault-injection capabilities)
    245 (CONFIG_SYSFS=y && CONFIG_DEBUG_FS=y) if CONFIG_FAULT_INJECTION_DEBUG_FS=y
    246 CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y (stacktrace filter for fault-injection capabilities)
    247 (CONFIG_FAULT_INJECTION_DEBUG_FS=y && CONFIG_STACKTRACE_SUPPORT=y && !CONFIG_X86_64) if
    248 	CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
    249 
    250 For more information on Fault injection, please refer to:
    251 linux-2.6/Documentation/fault-injection/fault-injection.txt,
    252 
    253 You should also have made the following entries in your /etc/fstab file
    254 once the kernel is booted with the above CONFIG options set:
    255 
    256 debugfs		/sys/kernel/debug/		debugfs
    257 
    258 # How the Kernel Fault Injection works for LTP ?
    259 
    260 1) Build Kernel with all the above possible kernel CONFIG Options,
    261 2) Create the above entry in /etc/fstab file,
    262 3) Reboot in the new kernel,
    263 4) Goto LTPROOT. Build and Install LTP as per ltp/INSTALL file,
    264 5) Choose your own test(or default) to run with fault injection as follows:
    265 	./runltp -f <command_file> -F <LOOPS>,<FAULT_PROBABILITY>
    266 
    267 The algorithm functions like:
    268 loop (for each testcase)
    269 begin
    270 	execute_testcase(inside_stable_kernel)
    271 	begin
    272 		insert_fault_into_kernel()
    273 		loop X Times
    274 		begin
    275 			execute_testcase(inside_fault_kernel)
    276 		end
    277 		restore_kernel_to_normal()
    278 	end
    279 end
    280 
    281 # External TODOs:
    282 1) Add or modify testcases when relevant kernel functionality changes.
    283 ---------------------------------
    284 
    285 ---------------------------------
    286 Enabling Kernel Configuration to test ext4 new features
    287 ---------------------------------
    288 CONFIG_EXT4_FS=y
    289 CONFIG_EXT4DEV_COMPAT=y
    290 CONFIG_EXT4_FS_XATTR=y
    291 CONFIG_EXT4_FS_POSIX_ACL=y
    292 CONFIG_EXT4_FS_SECURITY=y
    293 
    294 Beside that, the following packages are necessary.
    295   e2fsprogs
    296   e2fsprogs-devel
    297   e2fsprogs-libs
    298 And the version of packages must be 1.41.4 or above.
    299 
    300 For more information to build/install/run these tests, look through:
    301 ltp/testcases/kernel/fs/ext4-new-features/README
    302 ---------------------------------
    303 

README.md

      1 Linux Test Project
      2 ==================
      3 
      4 Linux Test Project is a joint project started by SGI, OSDL and Bull developed
      5 and maintained by IBM, Cisco, Fujitsu, SUSE, Red Hat, Oracle and others. The
      6 project goal is to deliver tests to the open source community that validate the
      7 reliability, robustness, and stability of Linux.
      8 
      9 The LTP testsuite contains a collection of tools for testing the Linux kernel
     10 and related features. Our goal is to improve the Linux kernel and system
     11 libraries by bringing test automation to the testing effort. Interested open
     12 source contributors are encouraged to join.
     13 
     14 Project pages are located at: http://linux-test-project.github.io/
     15 
     16 The latest image is always available at:
     17 https://github.com/linux-test-project/ltp/releases
     18 
     19 The discussion about the project happens at ltp mailing list:
     20 http://lists.linux.it/listinfo/ltp
     21 
     22 The git repository is located at GitHub at:
     23 https://github.com/linux-test-project/ltp
     24 
     25 The patchwork instance is at:
     26 https://patchwork.ozlabs.org/project/ltp/list/
     27 
     28 Warning!
     29 ========
     30 
     31 **Be careful with these tests!**
     32 
     33 Don't run them on production systems. Growfiles, doio, and iogen in particular
     34 stress the I/O capabilities of systems and while they should not cause problems
     35 on properly functioning systems, they are intended to find (or cause) problems.
     36 
     37 Quick guide to running the tests
     38 ================================
     39 
     40 If you have git, autoconf, automake, m4, the linux headers and the common
     41 developer packages installed, the chances are the following will work.
     42 
     43 ```
     44 $ git clone https://github.com/linux-test-project/ltp.git
     45 $ cd ltp
     46 $ make autotools
     47 $ ./configure
     48 ```
     49 
     50 Now you can continue either with compiling and running a single test or with
     51 compiling and installing the whole testsuite.
     52 
     53 Shortcut to running a single test
     54 ---------------------------------
     55 
     56 If you need to execute a single test you actually does not need to compile
     57 whole LTP, if you want to run a syscall testcase following should work.
     58 
     59 ```
     60 $ cd testcases/kernel/syscalls/foo
     61 $ make
     62 $ PATH=$PATH:$PWD ./foo01
     63 ```
     64 
     65 Shell testcases are a bit more complicated since these need a path to a shell
     66 library as well as to compiled binary helpers, but generally following should
     67 work.
     68 
     69 ```
     70 $ cd testcases/lib
     71 $ make
     72 $ cd ../commands/foo
     73 $ PATH=$PATH:$PWD:$PWD/../../lib/ ./foo01.sh
     74 ```
     75 
     76 Open Posix Testsuite has it's own build system which needs Makefiles to be
     77 generated first, then compilation should work in subdirectories as well.
     78 
     79 ```
     80 $ cd testcases/open_posix_testsuite/
     81 $ make generate-makefiles
     82 $ cd conformance/interfaces/foo
     83 $ make
     84 $ ./foo_1-1.run-test
     85 ```
     86 
     87 Compiling and installing all testcases
     88 --------------------------------------
     89 
     90 ```
     91 $ make
     92 $ make install
     93 ```
     94 
     95 This will install LTP to `/opt/ltp`.
     96 * If you have a problem see `doc/mini-howto-building-ltp-from-git.txt`.
     97 * If you still have a problem see `INSTALL` and `./configure --help`.
     98 * Failing that, ask for help on the mailing list or Github.
     99 
    100 Some tests will be disabled if the configure script can not find their build
    101 dependencies.
    102 
    103 * If a test returns `TCONF` due to a missing component, check the `./configure`
    104   output.
    105 * If a tests fails due to a missing user or group, see the Quick Start section
    106   of `INSTALL`.
    107 
    108 To run all the test suites
    109 
    110 ```
    111 $ cd /opt/ltp
    112 $ ./runltp
    113 ```
    114 
    115 Note that many test cases have to be executed as root.
    116 
    117 To run a particular test suite
    118 
    119 ```
    120 $ ./runltp -f syscalls
    121 ```
    122 
    123 To run all tests with `madvise` in the name
    124 
    125 ```
    126 $ ./runltp -f syscalls -s madvise
    127 ```
    128 Also see
    129 
    130 ```
    131 $ ./runltp --help
    132 ```
    133 
    134 Test suites (e.g. syscalls) are defined in the runtest directory. Each file
    135 contains a list of test cases in a simple format, see doc/ltp-run-files.txt.
    136 
    137 Each test case has its own executable or script, these can be executed
    138 directly
    139 
    140 ```
    141 $ testcases/bin/abort01
    142 ```
    143 
    144 Some have arguments
    145 
    146 ```
    147 $ testcases/bin/fork13 -i 37
    148 ```
    149 
    150 The vast majority of test cases accept the -h (help) switch
    151 
    152 ```
    153 $ testcases/bin/ioctl01 -h
    154 ```
    155 
    156 Many require certain environment variables to be set
    157 
    158 ```
    159 $ LTPROOT=/opt/ltp PATH="$PATH:$LTPROOT/testcases/bin" testcases/bin/wc01.sh
    160 ```
    161 
    162 Most commonly, the path variable needs to be set and also `LTPROOT`, but there
    163 are a number of other variables, `runltp` usually sets these for you.
    164 
    165 Note that all shell scripts need the `PATH` to be set. However this is not
    166 limited to shell scripts, many C based tests need environment variables as
    167 well.
    168 
    169 Developers corner
    170 =================
    171 
    172 Before you start you should read following documents:
    173 
    174 * `doc/test-writing-guidelines.txt`
    175 * `doc/build-system-guide.txt`
    176 
    177 There is also a step-by-step tutorial:
    178 
    179 * `doc/c-test-tutorial-simple.txt`
    180 
    181 If something is not covered there don't hesitate to ask on the LTP mailing
    182 list. Also note that these documents are available online at:
    183 
    184 * https://github.com/linux-test-project/ltp/wiki/Test-Writing-Guidelines
    185 * https://github.com/linux-test-project/ltp/wiki/BuildSystem
    186 * https://github.com/linux-test-project/ltp/wiki/C-Test-Case-Tutorial
    187 
    188 Although we accept GitHub pull requests, the preferred way is sending patches to our mailing list.
    189