Test System
https://www.youtube.com/watch?v=NRywFwe0uwU
introduce multiple frameworks available to test your Embedded Linux System and compare the use-cases (2018)
Slide: https://elinux.org/images/0/08/Primer-Testing-Your-Embedded-System-What-is-a-ptest-Lava-Fuego-KernelCI-and...-Jan-Simon-Moeller-The-Linux-Foundation.pdf
runltp
filesystem stress tests
disk I/O tests
memory management stress tests
ipc stress
scheduler tests
commands functional varification tests
system call functional varification tests
networktests.sh
networking related tests
diskio.sh
tests related to floppy and CD-ROM drives
https://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/AM335X/linux/Foundational_Components_Kernel_LTP-DDT_Validation.html
LTP-DDT focuses on embedded device driver tests.
cd /linux/tools/testing/
fault-injection
ktest
kunit
nvdimm
radix-tree
scatterlist
selftests
vsock
make -C selftests
make -C selftests run_tests
"The magical fantasy land of Linux kernel testing" - Russell Currey (LCA 2020): https://www.youtube.com/watch?v=9Fzd6MapG3Y
xfs, ext2, ext4, cifs, btrfs, f2fs, reiserfs, gfs, jfs, udf, nfs, tmpfs
Group name | Description |
block | Block layer generic tests |
loop | Loopback device tests |
meta | blktests self tests |
nbd | Network block device driver tests |
nvme | NVMe driver tests |
nvmeof-mp | NVME-over-fabrics multipath tests |
scsi | SCSI layer tests |
srp | SCSI RDMA Protocol driver tests |
zbd | Zoned block device tests |
test suites used by 0-Day performance test and LKP test tool: https://01.org/lkp/documentation/0-day/lkp-test-suites-description
https://kernelci.org/ | Linux Foundation project
use LAVA with KernelCI: https://github.com/kernelci/kernelci-core/blob/main/doc/lava.md
Linaro Automated Validation Architecture | https://www.lavasoftware.org/
Source: https://git.lavasoftware.org/lava/lava
Docker: https://github.com/kernelci/lava-docker/
https://elinux.org/images/6/6c/Introduction-to-Fuego-JJ58-1.pdf
Fuego = (Jenkins + abstraction scripts + pre-packaged tests) inside a container
Introduction Videos:
https://tbot.tools/
https://github.com/Rahix/tbot
allow running tests in an automated setting (CI).
https://github.com/labgrid-project/labgrid#purpose
create an abstraction of the hardware control layer needed for testing of embedded systems, automatic software installation and automation during development
- pytest plugin to write tests for embedded systems connecting serial console or SSH
- remote client-exporter-coordinator infrastructure to make boards available from different computers on a network
- power/reset management via drivers for power switches or onewire PIOs
- upload of binaries via USB: imxusbloader/mxsusbloader (bootloader) or fastboot (kernel)
Labgrid itself is not a testing framework, but is intended to be combined with pytest (and additional pytest plugins).
https://github.com/ci-rt/r4d
r4d means 'Remote For Device-under-test' and is an infrastructure for power-control and console access for multiple Linux Boards that should be controlled by a test-infrastructure like jenkins.
https://wiki.yoctoproject.org/wiki/Ptest
Ptest (package test) is a concept for building, installing and running the test suites that are included in many upstream packages, and producing a consistent output format for the results.
Source: http://git.yoctoproject.org/clean/cgit.cgi/poky/tree/
OperatingSystem | Process | Dialogs / String | Telnet
kisskb
Olof's autobuilder: mainline and next for arm, arm64, powerpc
Olof's autobooter: mainline, next, arm-soc
Tegra builds: mainline
Buildbot by Mark Brown: x86_64, arm, arm64 (8 builds)
CKI - used by RedHat
Gentoo Kernel CI
hottest notes
Krzk Samsung-SoC
ktest
Labgrid
LKFT
Opentest
Phoronix
SLAV
syzbot (& syzkaller)
TCF
Xilinx test (aka regression_xlnx)
https://sparse.docs.kernel.org/en/latest/
the semantic parser, provides a compiler frontend capable of parsing most of ANSI C as well as many GCC extensions, and a collection of sample compiler backends, including a static analyzer also called sparse.
https://github.com/kernelslacker/trinity
a system call fuzzer which employs some techniques to pass semi-intelligent arguments to the syscalls being called.
https://www.kernel.org/doc/html/latest/dev-tools/kcov.html
kcov exposes kernel code coverage information in a form suitable for coverage- guided fuzzing (randomized testing)
Last modified 1yr ago