[LTP] [PATCH v3 00/31] Add sysfs sanity tests
Cyril Hrubis
chrubis@suse.cz
Thu Aug 27 13:21:26 CEST 2026
This is a first bach of the sysfs sanity tests I've been working on
recently.
The main goal of these tests is to make sure that these files contains
expected data, e.g. files that are supposes to be boolean are 0 or 1,
numeric files contain numbers, etc.
I've tried to make the code of the tests as clear as possible. Hence the
first addition in this patchset is a library that implements common
assertions for sysfs files to be done in a single line of a code.
Majority of these tests are just reading the files and checking that the
content is sane. The exceptions are loop device, veth, tap tests that
cerate virtual devices, which attributes can be changed freely.
v2:
Fixed all problems pointed out by Li and real problems by the LTP reviewer.
v3:
Fix for a CI compilation failure:
- sys_net04 compilation on Leap 42.2
Fixes for issues found by OpenQA run by Peter:
- sys_net04 use TST_RETRY_FUNC() for operstate
- sys_net02 use TST_RETRY_FUNC() for operstate
- sys_net01 make sure the we have a iface (directory) before run test
- sys_rtc01 use tst_is_virt() to multiply slack on VMs
- sys_cpu_topology02 use tst_is_virt() to relax package physical id checks
- sys_bdi01 max_bytes and min_bytes were added to 6.2
- sys_wakeup01 depend on CONFIG_PM_SLEEP=y
- sys_power01 In kernel lockdown disk state can be "disabled"
- sys_cpu_cache01 Report TCONF if no caches are exported
v4:
- Added TST_SYSFS_TRY_OPENDIR() that handles ENOENT and produces
TCONF and hopefully finally fixed all possible missing directories
(e.g. hugepages could have been missing on ppc64le if lpar was
configured without support for them)
- Fixed " vs `` in test doc spinx comments
- Fixed copy&paste errors in tst_sysfs_assert.h
- Fixed missing keywords in sys_cpu_vulnerabilities01 and sys_ata01
- Fixed >= 0 vs != -1 in sys_net04
Cyril Hrubis (31):
lib: Add tst_sysfs_assert
testcases: sysfs: Add sys_power01
testcases: sysfs: Add sys_kernel01
testcases: sysfs: Add sys_clocksource01
testcases: sysfs: Add sys_node01
testcases: sysfs: Add sys_cpu_topology01
testcases: sysfs: Add sys_cpu_topology02
testcases: sysfs: Add sys_cpu_vulnerabilities01
testcases: sysfs: Add sys_cpu_smt01
testcases: sysfs: Add sys_cpu_cache01
testcases: sysfs: Add sys_clockevents01
testcases: sysfs: Add sys_ata01
testcases: sysfs: Add sys_bdi01
testcases: sysfs: sys_hwmon01
testcases: sysfs: sys_leds01
testcases: sysfs: Add sys_wakeup01
testcases: sysfs: Add sys_rtc01
testcases: sysfs: Add sys_thermal01
tst_netdevice: Add two more helper macros
testcases: sysfs: Add sys_net01
testcases: sysfs: Add sys_net02
testcases: sysfs: Add sys_net03
testcases: sysfs: Add sys_net04
testcases: sysfs: Add sys_block_loop01
testcases: sysfs: Add sys_block_queue01
testcases: sysfs: Add sys_block_size01
testcases: sysfs: Add sys_hugepages01
testcases: sysfs: Add sys_hugepages02
testcases: sysfs: Add sys_ksm01
testcases: sysfs: Add sys_mm_swap01
testcases: sysfs: Add sys_thp01
doc/developers/api_c_tests.rst | 5 +
include/tst_netdevice.h | 20 +
include/tst_path_defs.h | 28 +
include/tst_sysfs_assert.h | 654 +++++++++++++
lib/tst_netdevice.c | 90 ++
lib/tst_sysfs_assert.c | 871 ++++++++++++++++++
runtest/sysfs | 29 +
testcases/kernel/Makefile | 1 +
testcases/kernel/sysfs/Makefile | 7 +
testcases/kernel/sysfs/block/.gitignore | 3 +
testcases/kernel/sysfs/block/Makefile | 7 +
.../kernel/sysfs/block/sys_block_loop01.c | 320 +++++++
.../kernel/sysfs/block/sys_block_queue01.c | 105 +++
.../kernel/sysfs/block/sys_block_size01.c | 101 ++
testcases/kernel/sysfs/class/Makefile | 7 +
.../kernel/sysfs/class/ata_device/.gitignore | 1 +
.../kernel/sysfs/class/ata_device/Makefile | 7 +
.../kernel/sysfs/class/ata_device/sys_ata01.c | 100 ++
testcases/kernel/sysfs/class/bdi/.gitignore | 1 +
testcases/kernel/sysfs/class/bdi/Makefile | 7 +
testcases/kernel/sysfs/class/bdi/sys_bdi01.c | 101 ++
testcases/kernel/sysfs/class/hwmon/.gitignore | 1 +
testcases/kernel/sysfs/class/hwmon/Makefile | 7 +
.../kernel/sysfs/class/hwmon/sys_hwmon01.c | 173 ++++
testcases/kernel/sysfs/class/leds/.gitignore | 1 +
testcases/kernel/sysfs/class/leds/Makefile | 7 +
.../kernel/sysfs/class/leds/sys_leds01.c | 69 ++
testcases/kernel/sysfs/class/net/.gitignore | 4 +
testcases/kernel/sysfs/class/net/Makefile | 7 +
testcases/kernel/sysfs/class/net/sys_net01.c | 145 +++
testcases/kernel/sysfs/class/net/sys_net02.c | 187 ++++
testcases/kernel/sysfs/class/net/sys_net03.c | 145 +++
testcases/kernel/sysfs/class/net/sys_net04.c | 212 +++++
.../kernel/sysfs/class/net/sys_net_common.h | 97 ++
testcases/kernel/sysfs/class/rtc/.gitignore | 1 +
testcases/kernel/sysfs/class/rtc/Makefile | 7 +
testcases/kernel/sysfs/class/rtc/sys_rtc01.c | 259 ++++++
.../kernel/sysfs/class/thermal/.gitignore | 1 +
testcases/kernel/sysfs/class/thermal/Makefile | 7 +
.../sysfs/class/thermal/sys_thermal01.c | 72 ++
.../kernel/sysfs/class/wakeup/.gitignore | 1 +
testcases/kernel/sysfs/class/wakeup/Makefile | 7 +
.../kernel/sysfs/class/wakeup/sys_wakeup01.c | 123 +++
testcases/kernel/sysfs/devices/Makefile | 7 +
.../kernel/sysfs/devices/system/Makefile | 7 +
.../devices/system/clockevents/.gitignore | 1 +
.../sysfs/devices/system/clockevents/Makefile | 7 +
.../system/clockevents/sys_clockevents01.c | 138 +++
.../devices/system/clocksource/.gitignore | 1 +
.../sysfs/devices/system/clocksource/Makefile | 7 +
.../system/clocksource/sys_clocksource01.c | 66 ++
.../sysfs/devices/system/cpu/.gitignore | 5 +
.../kernel/sysfs/devices/system/cpu/Makefile | 7 +
.../devices/system/cpu/sys_cpu_cache01.c | 107 +++
.../sysfs/devices/system/cpu/sys_cpu_smt01.c | 98 ++
.../devices/system/cpu/sys_cpu_topology01.c | 102 ++
.../devices/system/cpu/sys_cpu_topology02.c | 132 +++
.../system/cpu/sys_cpu_vulnerabilities01.c | 91 ++
.../sysfs/devices/system/node/.gitignore | 1 +
.../kernel/sysfs/devices/system/node/Makefile | 7 +
.../sysfs/devices/system/node/sys_node01.c | 129 +++
testcases/kernel/sysfs/kernel/.gitignore | 1 +
testcases/kernel/sysfs/kernel/Makefile | 7 +
testcases/kernel/sysfs/kernel/mm/Makefile | 7 +
.../sysfs/kernel/mm/hugepages/.gitignore | 2 +
.../kernel/sysfs/kernel/mm/hugepages/Makefile | 7 +
.../kernel/mm/hugepages/sys_hugepages01.c | 138 +++
.../kernel/mm/hugepages/sys_hugepages02.c | 86 ++
.../kernel/sysfs/kernel/mm/ksm/.gitignore | 1 +
testcases/kernel/sysfs/kernel/mm/ksm/Makefile | 7 +
.../kernel/sysfs/kernel/mm/ksm/sys_ksm01.c | 63 ++
.../kernel/sysfs/kernel/mm/swap/.gitignore | 1 +
.../kernel/sysfs/kernel/mm/swap/Makefile | 7 +
.../sysfs/kernel/mm/swap/sys_mm_swap01.c | 35 +
.../kernel/mm/transparent_hugepage/.gitignore | 1 +
.../kernel/mm/transparent_hugepage/Makefile | 7 +
.../mm/transparent_hugepage/sys_thp01.c | 85 ++
testcases/kernel/sysfs/kernel/sys_kernel01.c | 45 +
testcases/kernel/sysfs/power/.gitignore | 1 +
testcases/kernel/sysfs/power/Makefile | 7 +
testcases/kernel/sysfs/power/sys_power01.c | 70 ++
81 files changed, 5489 insertions(+)
create mode 100644 include/tst_sysfs_assert.h
create mode 100644 lib/tst_sysfs_assert.c
create mode 100644 runtest/sysfs
create mode 100644 testcases/kernel/sysfs/Makefile
create mode 100644 testcases/kernel/sysfs/block/.gitignore
create mode 100644 testcases/kernel/sysfs/block/Makefile
create mode 100644 testcases/kernel/sysfs/block/sys_block_loop01.c
create mode 100644 testcases/kernel/sysfs/block/sys_block_queue01.c
create mode 100644 testcases/kernel/sysfs/block/sys_block_size01.c
create mode 100644 testcases/kernel/sysfs/class/Makefile
create mode 100644 testcases/kernel/sysfs/class/ata_device/.gitignore
create mode 100644 testcases/kernel/sysfs/class/ata_device/Makefile
create mode 100644 testcases/kernel/sysfs/class/ata_device/sys_ata01.c
create mode 100644 testcases/kernel/sysfs/class/bdi/.gitignore
create mode 100644 testcases/kernel/sysfs/class/bdi/Makefile
create mode 100644 testcases/kernel/sysfs/class/bdi/sys_bdi01.c
create mode 100644 testcases/kernel/sysfs/class/hwmon/.gitignore
create mode 100644 testcases/kernel/sysfs/class/hwmon/Makefile
create mode 100644 testcases/kernel/sysfs/class/hwmon/sys_hwmon01.c
create mode 100644 testcases/kernel/sysfs/class/leds/.gitignore
create mode 100644 testcases/kernel/sysfs/class/leds/Makefile
create mode 100644 testcases/kernel/sysfs/class/leds/sys_leds01.c
create mode 100644 testcases/kernel/sysfs/class/net/.gitignore
create mode 100644 testcases/kernel/sysfs/class/net/Makefile
create mode 100644 testcases/kernel/sysfs/class/net/sys_net01.c
create mode 100644 testcases/kernel/sysfs/class/net/sys_net02.c
create mode 100644 testcases/kernel/sysfs/class/net/sys_net03.c
create mode 100644 testcases/kernel/sysfs/class/net/sys_net04.c
create mode 100644 testcases/kernel/sysfs/class/net/sys_net_common.h
create mode 100644 testcases/kernel/sysfs/class/rtc/.gitignore
create mode 100644 testcases/kernel/sysfs/class/rtc/Makefile
create mode 100644 testcases/kernel/sysfs/class/rtc/sys_rtc01.c
create mode 100644 testcases/kernel/sysfs/class/thermal/.gitignore
create mode 100644 testcases/kernel/sysfs/class/thermal/Makefile
create mode 100644 testcases/kernel/sysfs/class/thermal/sys_thermal01.c
create mode 100644 testcases/kernel/sysfs/class/wakeup/.gitignore
create mode 100644 testcases/kernel/sysfs/class/wakeup/Makefile
create mode 100644 testcases/kernel/sysfs/class/wakeup/sys_wakeup01.c
create mode 100644 testcases/kernel/sysfs/devices/Makefile
create mode 100644 testcases/kernel/sysfs/devices/system/Makefile
create mode 100644 testcases/kernel/sysfs/devices/system/clockevents/.gitignore
create mode 100644 testcases/kernel/sysfs/devices/system/clockevents/Makefile
create mode 100644 testcases/kernel/sysfs/devices/system/clockevents/sys_clockevents01.c
create mode 100644 testcases/kernel/sysfs/devices/system/clocksource/.gitignore
create mode 100644 testcases/kernel/sysfs/devices/system/clocksource/Makefile
create mode 100644 testcases/kernel/sysfs/devices/system/clocksource/sys_clocksource01.c
create mode 100644 testcases/kernel/sysfs/devices/system/cpu/.gitignore
create mode 100644 testcases/kernel/sysfs/devices/system/cpu/Makefile
create mode 100644 testcases/kernel/sysfs/devices/system/cpu/sys_cpu_cache01.c
create mode 100644 testcases/kernel/sysfs/devices/system/cpu/sys_cpu_smt01.c
create mode 100644 testcases/kernel/sysfs/devices/system/cpu/sys_cpu_topology01.c
create mode 100644 testcases/kernel/sysfs/devices/system/cpu/sys_cpu_topology02.c
create mode 100644 testcases/kernel/sysfs/devices/system/cpu/sys_cpu_vulnerabilities01.c
create mode 100644 testcases/kernel/sysfs/devices/system/node/.gitignore
create mode 100644 testcases/kernel/sysfs/devices/system/node/Makefile
create mode 100644 testcases/kernel/sysfs/devices/system/node/sys_node01.c
create mode 100644 testcases/kernel/sysfs/kernel/.gitignore
create mode 100644 testcases/kernel/sysfs/kernel/Makefile
create mode 100644 testcases/kernel/sysfs/kernel/mm/Makefile
create mode 100644 testcases/kernel/sysfs/kernel/mm/hugepages/.gitignore
create mode 100644 testcases/kernel/sysfs/kernel/mm/hugepages/Makefile
create mode 100644 testcases/kernel/sysfs/kernel/mm/hugepages/sys_hugepages01.c
create mode 100644 testcases/kernel/sysfs/kernel/mm/hugepages/sys_hugepages02.c
create mode 100644 testcases/kernel/sysfs/kernel/mm/ksm/.gitignore
create mode 100644 testcases/kernel/sysfs/kernel/mm/ksm/Makefile
create mode 100644 testcases/kernel/sysfs/kernel/mm/ksm/sys_ksm01.c
create mode 100644 testcases/kernel/sysfs/kernel/mm/swap/.gitignore
create mode 100644 testcases/kernel/sysfs/kernel/mm/swap/Makefile
create mode 100644 testcases/kernel/sysfs/kernel/mm/swap/sys_mm_swap01.c
create mode 100644 testcases/kernel/sysfs/kernel/mm/transparent_hugepage/.gitignore
create mode 100644 testcases/kernel/sysfs/kernel/mm/transparent_hugepage/Makefile
create mode 100644 testcases/kernel/sysfs/kernel/mm/transparent_hugepage/sys_thp01.c
create mode 100644 testcases/kernel/sysfs/kernel/sys_kernel01.c
create mode 100644 testcases/kernel/sysfs/power/.gitignore
create mode 100644 testcases/kernel/sysfs/power/Makefile
create mode 100644 testcases/kernel/sysfs/power/sys_power01.c
--
2.54.0
More information about the ltp
mailing list